1. 程式人生 > >網路基礎之命令操作

網路基礎之命令操作

exce width have emp handle 依據 spa pat syn

Linux網絡配置(1)
在Linux系統中,網絡功能的實現被分成兩部分存放;
1.存放於內核空間中的協議棧;
包括:物理層、數據鏈路層、網絡層以及傳輸層協議;
實現通信子網的功能;
2.存放於用戶空間中應用程序協議;
包括:會話層、表示層、應用層協議;
實現資源子網的功能;

網絡接口的命名規格:
1.傳統的命名規則:
以太網網卡設備:ethX;X是從0開始的整數標識;例如:eth0,eth1,...
PPPX網絡設備:PPPoE(PPP over Ethernet),pppX,X是從0開始的整數標識;ppp0,ppp1,...
virt:虛擬網絡接口;
環回接口:Loopback,lo[X],X是從0開始的整數標識;lo,lo0,...

2.可預測的命名規則:(從CenOS 7開始)
1)根據Firmware進行命令:
每一臺計算機上的網卡設備在其計算機硬件固件中,都有唯一的標識符;比如:MAC地址,廠商標識,設備的電器編號等;

a)如果固件或者是BIOS是主板集成的設備所提供的索引信息並且該信息可以被引用,則根據索引信息進行設備命名;如:enoX;eno1,eno16777736等;
b)如果固件或BIOS是主板上擴展插槽所提供的索引信息,並且該信息可以被引用,則根據此索引信息進行設備命名;如:ensX;ens1,ens33,ens36,...
c)如果用戶顯示的定義可以使用諸如MAC地址之類的信息引用網絡設備,可以將設備命名為:
enx000c290005b4

2)根據設備在主板上的拓撲結構來命名;
每一臺計算機的主板上都有固定數量的插槽或接口,根據設備所插接的位置來唯一標識設備;比如:主板上第二個PCI插槽所插接的網卡的第一個接口;

a)如果硬件接口的物理拓撲位置信息存在並且可被引用,則根據此信息進行設備命名;如:enp1s0;

註意:在CentOS 7當中,如果上述命名規則都不可用,則延續傳統命名方式,對網絡設備進行命名;

在可預測的命名結構中,命名格式所表示的含義:
en:Ethernet,以太網;
wl:wlan,無線以太網;
www:wwan,無線廣域網;

o<index>:表示集成設備的索引編號;
s<index|slot>:擴展插槽的編號或擴展插槽的索引號;
x<string>:基於MAC地址進行命名的網絡接口;
p<bus>s<slot>:基於總線模型和擴展插槽的索引聯合索引編號;

在CentOS系統中,網絡管理方式:
1.為網卡設備設置網絡屬性參數;
自動設置:
當主機所在的網絡中至少有一臺DHCP服務器時,可以考慮使用此方法;
通過DHCP服務器可以獲取的網絡配置屬性參數包括:
IPv4/子網掩碼(主要參數)
可選參數:
默認網關
DNS服務器地址
主機域名後綴
TFTP服務器地址
WINS服務器地址
...
手動設置:
1)使用命令完成配置:

在所有的CentOS系統中,都可以使用的命令:
net-tools家族(ifcfg家族)
iproute2家族
僅在CentOS7中,可以完美使用的命令
nm家族

2)修改配置文件完成配置:

/etc/sysconfig/network-scripts/ifcfg-IF_NAME
/etc/sysconfig/network-scripts/route-IF_NAME
/etc/hosts/
/etc/host.conf
/etc/nsswitch.conf
/etc/resolv.conf
/etc/services
/etc/sysctl.conf

net-tools家族(ifcfg家族)
ifconfig
ifconfig - configure a network interface
格式:
ifconfig [-v] [-a] [-s] [interface]
查看網絡接口的配置屬性;
如果省略接口名稱則默認查看所有才處於UP狀態的接口的配置屬性;
-a:查看所有接口,即包括處於down狀態的接口;
-v:查看詳細信息;

ifconfig [-v] interface [aftype] options | address ...
設置網絡接口的屬性或IP地址信息;
[-]arp:在制定網絡接口上開啟或關閉ARP協議支持;
[-]promisc:在制定網絡接口上開啟或關閉混雜模式;
up:激活指定接口
down:關閉指定接口上的驅動;
netmask:明確的指定與IP地址相關的子網掩碼;格式必須為點分十進制;
address:將指定的地址設置在指定的網絡接口上;
route
route - show / manipulate the IP routing table
顯示或操縱路由表信息;
路由表是路由設備完成路由轉發的基礎依據,因此路由表的存在對於路由設備而言至關重要;

路由表中可能存在的路由條目的類型:
1.主機路由:目的地址為特定單個IP地址的路由條目;
172.16.72.1/32

2.網絡路由
1)子網路由:目標地址是子網地址的路由條目;
172.16.72.0/24
10.1.1.4/30
2)主網路由:目標地址為主網地址的路由條目;
192.168.0.0/24
172.16.0.0/16
10.0.0.0/8
3)超網路由(CIDR):目標地址為CIDR的路由條目;或稱為聚合路由或匯總路由;
192.168.0.0/16
172.16.0.0/12
3.默認路由:目標地址為0.0.0.0/0的路由條目;
0.0.0.0/0表示整個IP地址占中所有的IPv4地址;
默認路由意思是:到達任意主機的路由;

通常情況下,路由表條目匹配的順序為"首項匹配域";匹配範圍最小的優先級最高;


route命令的格式:
route [-CFvnNee] [-A family |-4|-6]
查看內核中的IP路由表;
-n:不講IP地址反解為主機名,而是以數字化的IP地址顯示主機標識;

route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
route del [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
操縱路由表:
[root@localhost ~]# route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.1.0 dev eth0
[root@localhost ~]# route add default eno16777736
[root@localhost ~]# route add -host 192.168.2.1 eno16777736
[root@localhost ~]# route del -host 192.168.2.1

netstat
netstat - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships


Print network connections:
[--tcp|-t]:僅顯示與TCP協議相關的會話連接的信息;
[--udp|-u]:僅顯示與UDP協議相關的會話連接的信息;
[--udplite|-U]:僅顯示UDPLITE協議相關的會話連接的信息;
[--sctp|-S]:僅顯示與SCTP相關的會話連接的信息;
[--raw|-w]:僅顯示與裸套接字相關的會話連接;
[--listening|-l]:僅顯示當前主機上處於listen狀態的TCP連接的信息;
[--all|-a]:查看所有狀態的任意協議的連接信息;
[--numeric|-n]:數字化顯示查詢結果中的主機名,端口號,用戶ID等信息;
[--numeric-hosts]:僅數字化顯示主機名;
[--numeric-ports]:僅數字化顯示端口號;
[--numeric-users]:僅數字化顯示用戶ID;
-p, --program:顯示與該網絡會話連接相關的應用程序進程信息;

TCP有限狀態機:
ESTABLISHED
The socket has an established connection.

SYN_SENT
The socket is actively attempting to establish a connection.

The socket has an established connection.

SYN_SENT
The socket is actively attempting to establish a connection.

SYN_RECV
A connection request has been received from the network.

FIN_WAIT1
The socket is closed, and the connection is shutting down.

FIN_WAIT2
Connection is closed, and the socket is waiting for a shutdown from the remote end.

TIME_WAIT
The socket is waiting after close to handle packets still in the network.

CLOSE The socket is not being used.

CLOSE_WAIT
The remote end has shut down, waiting for the socket to close.

LAST_ACK
The remote end has shut down, and the socket is closed. Waiting for acknowledgement.

LISTEN The socket is listening for incoming connections. Such sockets are not included in the output unless you specify the --listening (-l) or --all (-a) option.

CLOSING
Both sockets are shut down but we still don't have all our data sent.

UNKNOWN
The state of the socket is unknown.

常用的選項組合:
-tan,-uan,-tnl,-unl,-tnl,-tnlp,-unlp,-tunlp



Print routing tables:
{--route|-r}:顯示內核路由表;
[--numeric|-n]:數字化顯示相應的信息;
[--numeric-hosts]:
[--numeric-ports]:
[--numeric-users]:
[--extend|-e[--extend|-e]]:顯示擴展信息;

常用選項組合:
-rn,-rne

print interface statistics:
{--interfaces|-I|-i}:顯示接口的狀態統計信息;
[--all|-a]
[--extend|-e]
[--verbose|-v]
[--program|-p]
[--numeric|-n]
[--numeric-hosts]
[--numeric-ports]
[--numeric-users]

常用的選項組合:
-i,-ie

print Protocol statistics:
{--statistics|-s}:顯示各協議的詳細的統計信息;
[--tcp|-t]
[--udp|-u]
[--udplite|-U]
[--sctp|-S]
[--raw|-w]

iproute2家族:
ip
ip - show / manipulate routing, devices, policy routing and tunnels
格式:
ip [ OPTIONS ] OBJECT { COMMAND | help }

OBJECT := { link | addr | route | netns }

OPTIONS := { -V[ersion] | -s[tatistics] | -n[etns] name }

COMMAND :={ add | delete | set | show | list | help }


1)link:
ip link :
ip-link - network device configuration

ip link { add | delete | set | show/list }

ip link set ...
ip link set [dev] IF_NAME { up | down }
激活或關閉指定的網絡接口;
[root@localhost ~]# ip link set lo up
[root@localhost ~]# ip link set lo down

ip link set [dev] IF_NAME { arp {on | off }}
是否允許在指定接口上使用arp協議;

ip link set [dev] IF_NAME name NEWNAME
修改網絡接口的名稱,前提需要將改名的接口down掉,才可以修改;

ip link set [dev] IF_NAME { netns PID | netns NETNSNAME}
將指定的網絡接口添加到指定的網絡命名空間中;

ip link show/list ...
列表顯示所有的網絡接口,只顯示網絡接口的數據鏈路層的屬性信息;

ip link help
獲取簡短的幫助信息;

netns:僅在CentOS 7 中可用;
ip-netns - process network namespace management
處理內核中的網絡命名空間;
ip netns { list | show }
查看內核中所有的自定義的網絡命名空間;

ip netns add NETNSNAME
創建網絡命名空間;
[root@localhost ~]# ip netns add xwl

ip netns exec [ NETNSNAME ] command...
在指定的網絡命名空間中執行命令;
[root@localhost ~]# ip link set dev lo netns xwl
[root@localhost ~]# ip netns exec xwl ip link show

ip [-all] netns del [ NETNSNAME ]
刪除指定的命名空間,或者刪除所有的網絡命名空間;
[root@localhost ~]# ip netns del xwl

address:
ip-address - protocol address management
格式:
ip [ OPTIONS ] address { COMMAND | help }

ip address { add | del } IP_ADDR dev IF_NAME
在網絡接口上,添加IP地址或者從網路接口上刪除IP地址;

[root@localhost ~]# ip addr add 192.168.110.110/24 dev virbr0-nic
[root@localhost ~]# ip addr del 192.168.110.110/24 dev virbr0-nic

ip address {show | list} [dev] [IF_NAME]
查看指定或所有接口上的地址屬性信息;

ip address flush [ dev IF_NAME ]
將指定接口或所有接口上通過ip命令添加配置的IP地址全部清除;
註意:此命令在執行之前,必須確保不能影響全部網絡接口,不能阻止遠程管理的進行;

ip address add IF_ADDR dev IF_NAME label LABEL_NAME
ifconfig LABLE_NAME IF_NAME
給網絡接口添加新的IP地址時,指定將IP地址應用於接口的某一個標簽上,其目的是為了能夠讓ifconfig命令查看同一接口上不同的IP地址配置;

一般來講,接口的標簽都會使用"IF_NAME:#"的格式來表示;

route:靜態路由管理
ip-route - routing table management
ip route { add | del | change | append | replace } ROUTE

ROUTE := TARGET/NETMASK via NEXT_HOP [dev IF_NAME]

[root@localhost ~]# ip route add 192.168.100.0/24 via 172.16.0.1 dev lo
[root@localhost ~]# ip route del 192.168.100.0/24


ss
ss - another utility to investigate sockets
ss [options] [ FILTER ]
常用選項:
-t, --tcp:僅顯示與TCP協議相關的會話連接狀態統計信息;
-u, --udp:僅顯示與UDP協議相關的會話連接狀態統計信息;
-w, --raw:僅顯示與裸套接字相關的會話連接狀態統計信息;
-l, --listening:僅顯示處於監聽狀態的套接字狀態統計信息;
-a, --all:顯示所有的套接字會話連接的狀態統計信息;
-n, --numeric:數字化顯示結果;
-p, --processes:顯示與鏈接會話相關的應用程序進程及進程ID;
-e, --extended:顯示詳細的擴展信息;
-m, --memory:顯示套接字占用的內存數量;
-o, --options:顯示計時器信息;

常用的選項組合:
-tan,-uan,-tnl,-unl,-tnlp,-unlp,-tunlp

FILTER := [ state STATE-FILTER ] [ EXPRESSION ]
STATE-FILTER:
All standard TCP states:
established, syn-sent, syn-recv, fin-wait-1, fin-wait-2, time-wait, closed, close-wait, last-ack, listen and closing

all - for all the states

connected - all the states except for listen and closed

synchronized - all the connected states except for syn-sent

bucket - states, which are maintained as minisockets, i.e. time-wait and syn-recv

big - opposite to bucket

EXPRESSION:
dport = :port
sport = :port
示例:
'( dport = :80 or dport = :22 )'

net-tools家族和iproute2家族:
特點:所有能夠完成網絡參數配置的命令,在進行網絡參數的配置之後,其配置結果會立即生效;但是,只要重新啟動網絡設備或者刷新內核參數,其配置就立即丟失;Linux網絡配置(1)
在Linux系統中,網絡功能的實現被分成兩部分存放;
1.存放於內核空間中的協議棧;
包括:物理層、數據鏈路層、網絡層以及傳輸層協議;
實現通信子網的功能;
2.存放於用戶空間中應用程序協議;
包括:會話層、表示層、應用層協議;
實現資源子網的功能;

網絡接口的命名規格:
1.傳統的命名規則:
以太網網卡設備:ethX;X是從0開始的整數標識;例如:eth0,eth1,...
PPPX網絡設備:PPPoE(PPP over Ethernet),pppX,X是從0開始的整數標識;ppp0,ppp1,...
virt:虛擬網絡接口;
環回接口:Loopback,lo[X],X是從0開始的整數標識;lo,lo0,...

2.可預測的命名規則:(從CenOS 7開始)
1)根據Firmware進行命令:
每一臺計算機上的網卡設備在其計算機硬件固件中,都有唯一的標識符;比如:MAC地址,廠商標識,設備的電器編號等;

a)如果固件或者是BIOS是主板集成的設備所提供的索引信息並且該信息可以被引用,則根據索引信息進行設備命名;如:enoX;eno1,eno16777736等;
b)如果固件或BIOS是主板上擴展插槽所提供的索引信息,並且該信息可以被引用,則根據此索引信息進行設備命名;如:ensX;ens1,ens33,ens36,...
c)如果用戶顯示的定義可以使用諸如MAC地址之類的信息引用網絡設備,可以將設備命名為:
enx000c290005b4

2)根據設備在主板上的拓撲結構來命名;
每一臺計算機的主板上都有固定數量的插槽或接口,根據設備所插接的位置來唯一標識設備;比如:主板上第二個PCI插槽所插接的網卡的第一個接口;

a)如果硬件接口的物理拓撲位置信息存在並且可被引用,則根據此信息進行設備命名;如:enp1s0;

註意:在CentOS 7當中,如果上述命名規則都不可用,則延續傳統命名方式,對網絡設備進行命名;

在可預測的命名結構中,命名格式所表示的含義:
en:Ethernet,以太網;
wl:wlan,無線以太網;
www:wwan,無線廣域網;

o<index>:表示集成設備的索引編號;
s<index|slot>:擴展插槽的編號或擴展插槽的索引號;
x<string>:基於MAC地址進行命名的網絡接口;
p<bus>s<slot>:基於總線模型和擴展插槽的索引聯合索引編號;

在CentOS系統中,網絡管理方式:
1.為網卡設備設置網絡屬性參數;
自動設置:
當主機所在的網絡中至少有一臺DHCP服務器時,可以考慮使用此方法;
通過DHCP服務器可以獲取的網絡配置屬性參數包括:
IPv4/子網掩碼(主要參數)
可選參數:
默認網關
DNS服務器地址
主機域名後綴
TFTP服務器地址
WINS服務器地址
...
手動設置:
1)使用命令完成配置:

在所有的CentOS系統中,都可以使用的命令:
net-tools家族(ifcfg家族)
iproute2家族
僅在CentOS7中,可以完美使用的命令
nm家族

2)修改配置文件完成配置:

/etc/sysconfig/network-scripts/ifcfg-IF_NAME
/etc/sysconfig/network-scripts/route-IF_NAME
/etc/hosts/
/etc/host.conf
/etc/nsswitch.conf
/etc/resolv.conf
/etc/services
/etc/sysctl.conf

net-tools家族(ifcfg家族)
ifconfig
ifconfig - configure a network interface
格式:
ifconfig [-v] [-a] [-s] [interface]
查看網絡接口的配置屬性;
如果省略接口名稱則默認查看所有才處於UP狀態的接口的配置屬性;
-a:查看所有接口,即包括處於down狀態的接口;
-v:查看詳細信息;

ifconfig [-v] interface [aftype] options | address ...
設置網絡接口的屬性或IP地址信息;
[-]arp:在制定網絡接口上開啟或關閉ARP協議支持;
[-]promisc:在制定網絡接口上開啟或關閉混雜模式;
up:激活指定接口
down:關閉指定接口上的驅動;
netmask:明確的指定與IP地址相關的子網掩碼;格式必須為點分十進制;
address:將指定的地址設置在指定的網絡接口上;
route
route - show / manipulate the IP routing table
顯示或操縱路由表信息;
路由表是路由設備完成路由轉發的基礎依據,因此路由表的存在對於路由設備而言至關重要;

路由表中可能存在的路由條目的類型:
1.主機路由:目的地址為特定單個IP地址的路由條目;
172.16.72.1/32

2.網絡路由
1)子網路由:目標地址是子網地址的路由條目;
172.16.72.0/24
10.1.1.4/30
2)主網路由:目標地址為主網地址的路由條目;
192.168.0.0/24
172.16.0.0/16
10.0.0.0/8
3)超網路由(CIDR):目標地址為CIDR的路由條目;或稱為聚合路由或匯總路由;
192.168.0.0/16
172.16.0.0/12
3.默認路由:目標地址為0.0.0.0/0的路由條目;
0.0.0.0/0表示整個IP地址占中所有的IPv4地址;
默認路由意思是:到達任意主機的路由;

通常情況下,路由表條目匹配的順序為"首項匹配域";匹配範圍最小的優先級最高;


route命令的格式:
route [-CFvnNee] [-A family |-4|-6]
查看內核中的IP路由表;
-n:不講IP地址反解為主機名,而是以數字化的IP地址顯示主機標識;

route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
route del [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
操縱路由表:
[root@localhost ~]# route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.1.0 dev eth0
[root@localhost ~]# route add default eno16777736
[root@localhost ~]# route add -host 192.168.2.1 eno16777736
[root@localhost ~]# route del -host 192.168.2.1

netstat
netstat - Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships


Print network connections:
[--tcp|-t]:僅顯示與TCP協議相關的會話連接的信息;
[--udp|-u]:僅顯示與UDP協議相關的會話連接的信息;
[--udplite|-U]:僅顯示UDPLITE協議相關的會話連接的信息;
[--sctp|-S]:僅顯示與SCTP相關的會話連接的信息;
[--raw|-w]:僅顯示與裸套接字相關的會話連接;
[--listening|-l]:僅顯示當前主機上處於listen狀態的TCP連接的信息;
[--all|-a]:查看所有狀態的任意協議的連接信息;
[--numeric|-n]:數字化顯示查詢結果中的主機名,端口號,用戶ID等信息;
[--numeric-hosts]:僅數字化顯示主機名;
[--numeric-ports]:僅數字化顯示端口號;
[--numeric-users]:僅數字化顯示用戶ID;
-p, --program:顯示與該網絡會話連接相關的應用程序進程信息;

TCP有限狀態機:
ESTABLISHED
套接字有一個已建立的連接。

SYN_SENT
The socket is actively attempting to establish a connection.

The socket has an established connection.

SYN_SENT
The socket is actively attempting to establish a connection.

SYN_RECV
A connection request has been received from the network.

FIN_WAIT1
The socket is closed, and the connection is shutting down.

FIN_WAIT2
Connection is closed, and the socket is waiting for a shutdown from the remote end.

TIME_WAIT
The socket is waiting after close to handle packets still in the network.

CLOSE The socket is not being used.

CLOSE_WAIT
The remote end has shut down, waiting for the socket to close.

LAST_ACK
The remote end has shut down, and the socket is closed. Waiting for acknowledgement.

LISTEN The socket is listening for incoming connections. Such sockets are not included in the output unless you specify the --listening (-l) or --all (-a) option.

CLOSING
Both sockets are shut down but we still don't have all our data sent.

UNKNOWN
The state of the socket is unknown.

常用的選項組合:
-tan,-uan,-tnl,-unl,-tnl,-tnlp,-unlp,-tunlp



Print routing tables:
{--route|-r}:顯示內核路由表;
[--numeric|-n]:數字化顯示相應的信息;
[--numeric-hosts]:
[--numeric-ports]:
[--numeric-users]:
[--extend|-e[--extend|-e]]:顯示擴展信息;

常用選項組合:
-rn,-rne

print interface statistics:
{--interfaces|-I|-i}:顯示接口的狀態統計信息;
[--all|-a]
[--extend|-e]
[--verbose|-v]
[--program|-p]
[--numeric|-n]
[--numeric-hosts]
[--numeric-ports]
[--numeric-users]

常用的選項組合:
-i,-ie

print Protocol statistics:
{--statistics|-s}:顯示各協議的詳細的統計信息;
[--tcp|-t]
[--udp|-u]
[--udplite|-U]
[--sctp|-S]
[--raw|-w]

iproute2家族:
ip
ip - show / manipulate routing, devices, policy routing and tunnels
格式:
ip [ OPTIONS ] OBJECT { COMMAND | help }

OBJECT := { link | addr | route | netns }

OPTIONS := { -V[ersion] | -s[tatistics] | -n[etns] name }

COMMAND :={ add | delete | set | show | list | help }


1)link:
ip link :
ip-link - network device configuration

ip link { add | delete | set | show/list }

ip link set ...
ip link set [dev] IF_NAME { up | down }
激活或關閉指定的網絡接口;
[root@localhost ~]# ip link set lo up
[root@localhost ~]# ip link set lo down

ip link set [dev] IF_NAME { arp {on | off }}
是否允許在指定接口上使用arp協議;

ip link set [dev] IF_NAME name NEWNAME
修改網絡接口的名稱,前提需要將改名的接口down掉,才可以修改;

ip link set [dev] IF_NAME { netns PID | netns NETNSNAME}
將指定的網絡接口添加到指定的網絡命名空間中;

ip link show/list ...
列表顯示所有的網絡接口,只顯示網絡接口的數據鏈路層的屬性信息;

ip link help
獲取簡短的幫助信息;

netns:僅在CentOS 7 中可用;
ip-netns - process network namespace management
處理內核中的網絡命名空間;
ip netns { list | show }
查看內核中所有的自定義的網絡命名空間;

ip netns add NETNSNAME
創建網絡命名空間;
[root@localhost ~]# ip netns add xwl

ip netns exec [ NETNSNAME ] command...
在指定的網絡命名空間中執行命令;
[root@localhost ~]# ip link set dev lo netns xwl
[root@localhost ~]# ip netns exec xwl ip link show

ip [-all] netns del [ NETNSNAME ]
刪除指定的命名空間,或者刪除所有的網絡命名空間;
[root@localhost ~]# ip netns del xwl

address:
ip-address - protocol address management
格式:
ip [ OPTIONS ] address { COMMAND | help }

ip address { add | del } IP_ADDR dev IF_NAME
在網絡接口上,添加IP地址或者從網路接口上刪除IP地址;

[root@localhost ~]# ip addr add 192.168.110.110/24 dev virbr0-nic
[root@localhost ~]# ip addr del 192.168.110.110/24 dev virbr0-nic

ip address {show | list} [dev] [IF_NAME]
查看指定或所有接口上的地址屬性信息;

ip address flush [ dev IF_NAME ]
將指定接口或所有接口上通過ip命令添加配置的IP地址全部清除;
註意:此命令在執行之前,必須確保不能影響全部網絡接口,不能阻止遠程管理的進行;

ip address add IF_ADDR dev IF_NAME label LABEL_NAME
ifconfig LABLE_NAME IF_NAME
給網絡接口添加新的IP地址時,指定將IP地址應用於接口的某一個標簽上,其目的是為了能夠讓ifconfig命令查看同一接口上不同的IP地址配置;

一般來講,接口的標簽都會使用"IF_NAME:#"的格式來表示;

route:靜態路由管理
ip-route - routing table management
ip route { add | del | change | append | replace } ROUTE

ROUTE := TARGET/NETMASK via NEXT_HOP [dev IF_NAME]

[root@localhost ~]# ip route add 192.168.100.0/24 via 172.16.0.1 dev lo
[root@localhost ~]# ip route del 192.168.100.0/24


ss
ss - another utility to investigate sockets
ss [options] [ FILTER ]
常用選項:
-t, --tcp:僅顯示與TCP協議相關的會話連接狀態統計信息;
-u, --udp:僅顯示與UDP協議相關的會話連接狀態統計信息;
-w, --raw:僅顯示與裸套接字相關的會話連接狀態統計信息;
-l, --listening:僅顯示處於監聽狀態的套接字狀態統計信息;
-a, --all:顯示所有的套接字會話連接的狀態統計信息;
-n, --numeric:數字化顯示結果;
-p, --processes:顯示與鏈接會話相關的應用程序進程及進程ID;
-e, --extended:顯示詳細的擴展信息;
-m, --memory:顯示套接字占用的內存數量;
-o, --options:顯示計時器信息;

常用的選項組合:
-tan,-uan,-tnl,-unl,-tnlp,-unlp,-tunlp

FILTER := [ state STATE-FILTER ] [ EXPRESSION ]
STATE-FILTER:
All standard TCP states:
established, syn-sent, syn-recv, fin-wait-1, fin-wait-2, time-wait, closed, close-wait, last-ack, listen and closing

all - for all the states

connected - all the states except for listen and closed

synchronized - all the connected states except for syn-sent

bucket - states, which are maintained as minisockets, i.e. time-wait and syn-recv

big - opposite to bucket

EXPRESSION:
dport = :port
sport = :port
示例:
'( dport = :80 or dport = :22 )'

net-tools家族和iproute2家族:
特點:所有能夠完成網絡參數配置的命令,在進行網絡參數的配置之後,其配置結果會立即生效;但是,只要重新啟動網絡設備或者刷新內核參數,其配置就立即丟失


nm家族:僅限於Centos 7發行版;
nmcli:
nmcli - command-line tool for controlling NetworkManager
格式:
nmcli [OPTIONS...] OBJECT {COMMAND}

OBJECT:={general | networking | radio | connection | device | agent}

connection:
COMMAND {show | up | down | modify | add | edit | clone | delete | monitor | reload | load | import | export}

show:顯示所有的或指定的網絡連接的屬性信息;
up|down:啟用|關閉指定的網絡連接;
add:添加一個網絡連接;(創建網絡接口的配置文件)
autoconnect yes|no:是否自動啟動此連接,相當於在配置文件中指明 ONBOOT={yes|no}
ifname IF_NAME:指定要創建連接的目標網絡接口的設備名稱;
con-name CON_NAME:為指定的網絡及接口設備創建一個設備名稱
type TYPE:指定網絡設備設備的接口類型;
delete:刪除一個網絡連接,刪除網絡接口的配置文件,參數為con-name;
reload:不重啟網絡接口,但重新加載接口的配置文件中所定義的配置信息;
modify:
modify [--temporary] [id | uuid | path] ID {[+|-]setting.property value}...
setting.property
connection.autoconnect yes|no
connection.addresses
connection.dns
connection.method [auto,link-local,manual,shared,disabled]
connection.gateway

註意:通過nmcli命令設置的網絡連接的配置,默認會直接存放在網絡接口的配置文件中;因此配置不會立即生效,如果想要配置文件中的配置屬性;
1.重啟全部網絡接口
# systemctl restate network.service
2.重啟指定的網絡接口;
ifdown IF_NAME ; ifup IF_NAME
3.不重啟接口啟動配置文件;
nmcli connection reload CON_NAME

device:
COMMAND {status | show | set | connect | reapply | modify | disconnect | delete | monitor | wifi | lldp}



[root@localhost ~]# nmcli connection show
[root@localhost ~]# nmcli connection show ens33
[root@localhost ~]# nmcli connection down ens33
[root@localhost ~]# nmcli connection modify eno33 ipv4.addresses 172.12.1.13/16
nmtui:(必須交互的完成,腳本中不能用)

與nmtui相似的Centos 6的命令:
# system-config-network[-tui]
# setup --> [network configuration,網絡配置]

註意:上述操作完成之後,必須重啟網絡接口,才能使新配置信息生效;
7 systemctl restart network.service | 6 service network restart

ifdown connection ; ifup connection
nmcli connection reload CON_NAME


hostnamectl set-hostname HOSTNAME
localhost.localdomain(主機默認值)
/etc/hostname

Bonding的監控時長:
miimon=Number

用miimon來監控鏈路狀態;在指定的時間內(Number,單位ms)時間內,如果某個接口的測試結果為不能聯通,則將此接口標識為失效,此時需要進行故障倒換;

Bonding的配置:
1.創建虛擬接口,其名稱通常為bond0,bond1....;
2.選擇miimon的監測時間;
3.選擇bonding的工作模式;
4.選擇用於此次bonding的物理接口(slave接口);

nmcli,nmtui,vim

配置方式:
1.虛擬接口的配置(Master接口)
# vim /etc/sysconfig/network-scripts/ifcfg-bond0


2.物理接口的配置(Slave接口)
# vim /etc/sysconfig/network-scripts/ifcfg-eth0

所有物理接口,進行類似配置:DEVICE的值一定要和物理接口保持一致;

在Centos 7 中除了Bonding之外,還引入了一個新的概念,網絡組(Network Teaming)
網絡組:將多個網絡接口設備聚合在一起的方案,可以實現網絡接口的冗余和高可用,提高吞吐量;

網絡組和bonding相比,具有更好的性能以及更好的可擴展性;建議在Centos7中使用網絡組而不是bonding;

在Centos 7中所選擇的內核中支持網絡組;網絡組就是其內核中的一個內核驅動和一個名為teamd的守護進程;

在bonding中能夠使用的工作模式,網絡組都可以支持;並且網絡組使用運行器(runner)來實現這些功能;
loadbalance
activebackup
broadcast
roundrobin
lacp(802.3ad,Link Aggregation Control Protocol)

網絡組的特點:
1.啟動網絡組接口不會自動啟動網絡組中的其他的port接口;
2.啟動網路組的port接口,也不會自動啟動網絡組接口;
3.禁用網絡組接口,則會立即禁用網絡組中的所有的port接口;
4.對於沒有添加任何port接口的網絡組而言,只能配置靜態IP地址,不能設置從DHCP獲取IP地址;如果對於此類的網絡組接口設置了DHCP配置,這樣的網絡組接口就一直不啟動,一直等待有其他的port接口加入此網絡組;

網絡組的配置方法:
1.創建網絡組接口
nmcli connection add type team con-name TEAM_CON_NAME ifname IF_NAME config JSON
JSON是用來指定runner的,其格式為:
'{"runner": {"name": "METHOD"}}'

示例:
# nmcli connection add type team con-name class18 ifname class18 config '{"runner": {"name": "loadbalance"}}'

2.創建port接口:
nmcli connection add type team-slave [con-name CON_NAME] ifname IF_NAME master TEAM_NAME

註意:如果不指定con-name,默認的con-name為:team-slave-IF_NAME

示例:
# nmcli connection add type team-slave ifnamae eno33 master class18
# nmcli connection add type team-slave ifnamae eno22 master class18


# nmcli connection up class18
# nmcli connection up eno22
# nmcli connection up eno33

# nmcli device disconnect eno22
# nmcli device disconnect eno33

註意:
1.所有的port接口不需要配置IP地址,子網掩碼,網關,DNS服務器等屬性;次類配置屬性僅在網絡組接口中配置即可;配置的方法,可以直接修改其配置文件,也可以使用nmcli connection modify ...
2.配置完成之後,需要重啟網絡服務;
# systemctl restart network.service

建議:
在Centos 6中使用Bonding
在Centos 7中使用Networking Teaming

網絡檢測工具:
ping | hping
traceroute
arp

ping命令:
ping, ping6 - 向網絡主機發送ICMP回顯請求(ECHO_REQUEST)分組
格式:
ping [-c count] [-i wait] [-l preload] [-p pattern] [-s packetsize]

常用選項:
-c #:此次目標主機是否在線,發送#個報文數量;
-I interface|addresss:
如果參數是IP地址,則此次測試操作的源IP地址即為此處指明的IP地址;
如果參數是接口名稱,則此次測試操作,經由該接口發送出去;
-t ttl:設置此次測試時的報文的TTL值;
-W timeout:設置接受響應報文的超時時間;


hping3
--fast
--faster
--flood

traceroute:
Windows:tracert
traceroute - print the route packets trace to network host
僅返回TTL值為1時的路由表

arp
arp - manipulate the system ARP cache
查看或修改arp緩存中的內容

-n

網絡客戶端工具:
ftp,lftp,lftpget,wget

wget
Wget - The non-interactive network downloader.

wget [option] [URL]

常用選項:
-O file:
--limit-rate=amount:限速
-nH
-np



網路基礎之命令操作