每臺計算機主機連入internet都必須給主機設定以個合法的IP地址。這些IP參數大概包括IP地址、子網掩碼、網關、路由、DNS等。在Linux中,大多數命令配置網絡配置都是臨時生效,想要網絡服務永久有效就必須寫入配置文件中,所以有時候更改配置重啟主機是為了讓內核重讀配置文件到內核中,因為配置文件屬于用戶空間的文件。大多數網絡配置都是臨時生效。下面我們來了解一些關于Linux中的常用的網絡配置命令和配置文件。
IP的相關參數包括
IP/Netmask主要用于確定自身所處的網絡,以及對方主機是否與本主機同在一個網絡當中。
Gateway(網關)主要用于與外部Internet通信傳輸口。
Route:(路由)建立網絡層通信條目,分為三種類型
(1)、網絡路由:目標是一個網絡
(2)、主機路由:目標是一個主機
(3)、默認路由:目標是所有非本地網絡。
注意:下一跳地址必須是同一網段的地址中。
DNS服務器是用于域名解析。它的數據庫中是域名對應的IP地址,來增強網絡的通用性。Linux默認有三個
(1)、主DNS服務器
(2)、備用DNS服務器
(3)、第三備用服務器
網絡配置方式分為靜態指定(靜態IP)和動態指定(DHCP服務器分配)。
靜態配置地址的方法有以下幾種
ifcfg: ifconfig, route, netstat
ip: object {link, addr, route}, ss,
system-config-network-tui(setup)
配置文件
CentOS 7:網絡配置工具
nmcli, nmtui, nm-connection-editor
ifcfg命令家族:ifocnfig,route,netstat
ifconfig命令:
ifconfig [interface]
# ifconfig -a:顯示所有接口,包括inactive狀態的接口
ifconfig interface [iftype] options | address …
#ifconfig IFACE IP/MASK [up]
#ifconfig IFACE IP netmask NETMASK
option
[-]promisc #混雜模式
注意:立即送往內核中的TCP/IP協議棧,并生效。
管理IPv6地址
add addr/prefixlen
del addr/refixlen
ifconfig eth0 10.1.36.6/16 down
ifconfig eth0 192.168.100.1 netmask 255.255.255.0 (netmask是關鍵字,必須完整格式。立即生效)
ifconfig eth1 promisc #開啟混雜模式
ifconfig eth1 -promisc #關閉混雜模式
[root@clod ~]#ifconfig eth0 192.168.100.123/24 #配置IP地址 [root@clod ~]#ifconfig eth0 192.168.100.123 netmask 255.255.255.0 #配置IP地址 都可以
[root@clod ~]#ifconfig eth0 down #斷開網卡連接 (相當于拔網線,IP地址只能本機使用) [root@clod ~]#ifconfig eth0 up #啟用連接網卡連接 (相當于拔網線,IP地址只能本機使用)
[root@clod ~]#ifconfig eth0 down #怒拔網線 [root@clod ~]#ifconfig eth0 #查看信息,顯示未RUNNING eth0 Link encap:Ethernet HWaddr 00:0C:29:00:07:39 inet addr:10.1.36.6 Bcast:10.1.255.255 Mask:255.255.0.0 BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:2406 errors:0 dropped:0 overruns:0 frame:0 TX packets:121 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:144360 (140.9 KiB) TX bytes:8098 (7.9 KiB)
[root@clod ~]#ifconfig eth1 #顯示單個網卡信息 eth1 Link encap:Ethernet HWaddr 00:0C:29:00:07:43 inet addr:192.168.200.6 Bcast:192.168.200.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe00:743/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:6915 errors:0 dropped:0 overruns:0 frame:0 TX packets:4745 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:586838 (573.0 KiB) TX bytes:574276 (560.8 KiB)
[root@clod ~]#ifconfig -a #顯示所有網卡接口信息 eth0 Link encap:Ethernet HWaddr 00:0C:29:00:07:39 inet addr:10.1.36.6 Bcast:10.1.255.255 Mask:255.255.0.0 inet6 addr: fe80::20c:29ff:fe00:739/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2210 errors:0 dropped:0 overruns:0 frame:0 TX packets:93 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:132600 (129.4 KiB) TX bytes:5906 (5.7 KiB) eth1 Link encap:Ethernet HWaddr 00:0C:29:00:07:43 inet addr:192.168.200.6 Bcast:192.168.200.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe00:743/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:6698 errors:0 dropped:0 overruns:0 frame:0 TX packets:4613 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:568471 (555.1 KiB) TX bytes:557962 (544.8 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:63 errors:0 dropped:0 overruns:0 frame:0 TX packets:63 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:5888 (5.7 KiB) TX bytes:5888 (5.7 KiB)
[root@clod ~]#ifdown eth0 #禁用接口 [root@clod ~]#ifconfig eth0 #查看禁用接口 eth0 Link encap:Ethernet HWaddr 00:0C:29:00:07:39 BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:2214 errors:0 dropped:0 overruns:0 frame:0 TX packets:93 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:132840 (129.7 KiB) TX bytes:5906 (5.7 KiB)
fiup/ifdown
ifup - bring a network interface up #啟用接口 (相當于直接禁用TCP/IP協議,無IP地址) ifdown - take a network interface down #禁用接口 (相當于直接禁用TCP/IP協議,無IP地址)
SYNOPSIS
ifup IFACE [boot]
ifdown IFACE
[root@clod ~]#ifdown eth0 [root@clod ~]#ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:0C:29:00:07:39 BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:2406 errors:0 dropped:0 overruns:0 frame:0 TX packets:111 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:144360 (140.9 KiB) TX bytes:7370 (7.1 KiB)
截取的一段網卡信息來做詳細解析
eno16777736: flags=4163<UP(開啟狀態),BROADCAST(支持廣播功能),RUNNING(運行當中),MULTICAST(支持組播/多播功能>mtu 1500(最大傳輸單元) inet 10.1.36.7 netmask 255.255.0.0 broadcast 10.1.255.255 inet6 fe80::20c:29ff:fe97:7e0f prefixlen 64 scopeid 0x20<link> ether(硬件地址) 00:0c:29:97:7e:0f txqueuelen(傳輸隊列長度) 1000 (Ethernet) RX packets(接收到的報文數量) 422649 bytes 39102077 (37.2 MiB) RX errors(??!接收時的錯誤個數?。。?nbsp;0 dropped 475(??!丟包的數量!?。?nbsp; overruns 0(溢出) frame 0 TX packets(傳出的報文數量) 13518 bytes 1015076 (991.2 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
route命令:路由查看及管理
路由條目類型:
主機路由:目標地址為單個ip;
網絡路由:目標地址為IP網絡
默認路由:目標為任意主機,0.0.0.0/0.0.0.0
查看:route -n :以數字格式查看ip地址,不反解
[root@clod ~]#route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.200.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 eth1
添加:
route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
-net 指定網段
-host:指定主機
target:目標主機
netmask:子網掩碼
gw Gw:網關
dev:設備
if:接口
route add -net 10.0.0.0/8 gw 192.168.10.1 dev eth1(可寫可不寫)
route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.10.1
route add -net 0.0.0.0/0.0.0.0 gw 192.168.10.1
route add defaults gw 192.168.10.1 效果同上
刪除:
route del [-net|-host] target [gw Gw] [netmask Nm]
示例: route del -net 10.0.0.0/8 [gw 192.168.10.1]#刪除指定網關
route del default :刪除默認網關
netstat命令
Print network connections, routing tables, interface statis-tics, masquerade connections, and multicast memberships
顯示網絡連接,路由表,接口統計數據、偽裝鏈接和多播成員關系!
顯示路由表 netstat -rn
-r:顯示內核路由表
-n:數字格式
顯示網絡連接:
netstat [–tcp|-t] [–udp|-u] [–udplite|-U] [–sctp|-S] [–raw|-w] [–listening|-l] [–all|-a]
[–numeric|-n] [–extend|-e[–extend|-e]] [–program|-p]
-t:#TCP協議的相關連接,鏈接均有其狀態; FSM(Final State Machine)
-u:#UDP協議相關的鏈接
-w:#raw socket相關的鏈接
-l:#處于監聽狀態的鏈接
-a:#所有狀態
-p:#顯示相關進程及PID
常用組合:
-tan, -uan, -tnl, -unl, -tunlp
傳輸層協議:
tcp:面向連接的協議;通信開始之前,要建立一個虛鏈路,通信完成后還要拆除連接
udp:無連接的協議;直接發送數據報文
ip: object {link, addr, route}, ss
ip – show / manipulate routing, devices, policy routing and tunnels
ip命令 :查看及管理 路由、設備、策略路由以及隧道
ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT := { link | addr | route | netns | neigh | } #常用OBJECT
注意:OBJECT大多可以簡寫,如果不知道格式也可以用tab鍵補全命令??!
注意:OBJECT可簡寫,各OBJECT有
常用的有
ip link:
ip link show-display device attrubutes:查看二層鏈路信息
ip link help #顯示簡要使用幫助
ip link :network device configuration #網絡設備配置
ip link set -change device attributes #設置設備屬性
dev NAME(default):指明要管理的設備,dev關鍵字可省略
up和down #啟用和禁用
multicast on/off :啟用或禁用多播功能
name NAME:重命名
mtu NUMBER:設置MTC的大小,默認為1500
netns PID:ns為namespace,用于將接口移動到指定的網絡名稱空間
例句:
ip link set dev eth1 ip/down 開啟關閉eth1網卡
ip link set eth1 multicast off/on:多播
ip link set DEVICE name eno000011 :改名要down了再改
ip netns add mynaet (CentOS 7 用)
ip link set eno3355985 netns mynet(show eno3)將不可見了
ip netns exec mynet ip link show:查看mynet信息!!!
ip netns del mynet:刪除netns, eno將重現了
ip netns:ip -manage network namespaces:
ip netns list:列出所有的netns
ip netns add NAME:創建指定的netns
ip netns del NAME:刪除指定的netns
ip netns exec NAME COMMAND:在指定的netns中運行命令
ip addr -protocol address management.#ip網絡層管理
ip addr add -add new protocol address #增加新的協議
ip addr add IFADDR dev IFACE #新增一個備用地址
[label] NAME:為額外添加的地址指明接口別名;
有別名 ifconfig 就能顯示得到
[broadcast] ADDRESS:廣播地址;會根據IP和NETMASJ自動計算得到
[scope SCOPE_VALIE]:
global:全局可用;
link:接口可用
host:僅主機可用;
例句:
ip addr add 192.168.10.100/24 dev eth1
ip addr show eth1
ip addr list eth1
ip addr add 10.0.0.100/8 deb eth1
ip addr add 10.1.1.10/8 dev eth1 label eth1:0
ip addr add 10.0.10.100/8 dev eth1 #加ip
ip addr add 10.0.20.100/8 dev eth1 #加ip
ip address delete -delete protocol address 刪除
ip ddr delete IFADDR dev IFACE
例
ip addr del 10.0.10.100/8 dev eth1
ip addr show/list -look at protocol address 顯示網卡接口信息
[IFACE]:僅顯示指定接口的地址 dev可加可不加
ip address flush-flush protocol address 清空所有ip地址
ip addr flush dev eth1 #清空eth1 的所有ip地址
ip route -routing table management #路由表管理
ip route add -add new route : #新增路由
ip route change – change route #更改路由
ip route replace – change or add new one #從置路由
ip route add TYPE PREFIX via GW [dev IFACE] [src SOURCE_IP]
例句:
ip route add 192.168.0.0/24 via 10.0.0.1 dev eth1 #新增路由
ip route add 192.168.1.0/24 via 10.0.0.1 dev eth1 src 10.0.20.100#新增路由
ip route add default via 172.16.0.1 dev eth1 #默認路由
ip route add 192.168.0.0/24 via 10.0.0.1 dev eth1 src 10.0.20.100#新增路由
ip route add default via GW #默認路由
ip route list 查看路由信息
ip route delete – delete route #刪除路由條目
ip route del TYPE PREFIX
示例
ip route delete 192.168.1.0/24
ip route show – list routes #查看路由
TYPE PREFIX
例句
ip route show
ip route show src 172.16.100.6
ip route show 192.168.200.0/24
ip route get -get single route #獲取路由信息
ip route get TYPE PRIFIX
例句
ip route get 192.168.0.0/24
ip route flush – flush routing tables #清空路由表
示例
ip route flush
ip route flush 10/8
ip route flush 169.254/16 : 169開頭子碼為16的刪除
ip route flush 192.
ss命令 跟netstat用法一直,就不多做介紹了
– another utility to investigate sockets
ss [options] [FILTER]
選項:
-t: TCP協議的相關連接
-u: UDP相關的鏈接
-w:raw socket相關的鏈接
-l:監聽狀態的鏈接
-a:所有狀態的鏈接
-n:數字格式
-p:相關的程序及其PID
-e:擴展格式信息
-m:內存用量
-o:計時器信息
FILTER:=[state TCP-STAT] [EX[RESSION]
TCP的常見狀態:
TCP FSM:
LISTEN:監聽
ESTABLISEHD:建立的連接
FIN_WAIT_1:
FIN_WAIT_2:
SYN_SENT:
SYN_RECV:
CLOSED:
EXPRESSION
dport=目標端口
sport=源端口
示例:'(dport=:22 or sport=:22)'
ss -tan '( dport = :22 or sport = :22 )' 過濾tcp 源端口目標端口為22的
ss -tan state ESTABLISHED
ss -o state established '( dport = :ssh or sport = :ssh )' 顯示所有已建立的ssh連接
ss -o state established '( dport = :http or sport = :http )' 顯示所有已建立的HTTP連接
原創文章,作者:ladsdm,如若轉載,請注明出處:http://www.www58058.com/47382