1. 程式人生 > >#20 ifconfig、route、netstat、ip、ss命令詳解與修改主機名與網卡配置文件

#20 ifconfig、route、netstat、ip、ss命令詳解與修改主機名與網卡配置文件

ifconfig、route、netstat、ip、ss命令詳解與修改主機名與網卡配置文件

網絡的結構:

硬件:計算機、互聯設備、網絡設備

軟件:操作系統、協議、應用程序、數據庫


網絡的功能:

資源共享:目的

數據通信:手段


網絡通信模型

ISO/OSI:

應用層

表示層

會話層

傳輸層

網絡層

數據鏈路層

為物理層


TCP/IP:

應用層

傳輸層

互聯網層

網絡訪問層


數據報文封裝格式:

對等通信:

應用層:數據流進程封裝;

傳輸層:數據段(TCP segment)或數據報(UDP data-prog);

最大的報文不能超過65535字節;

互聯網層:數據包或IP數據報(ip package);

最大的報文不能超過65535字節;

網絡訪問層:數據幀(ether frame)

最大的報文使用MTU定義,MTU=1500+首部+尾部

流式數據,0,1二進制的順序列;


通信界定地址;

物理地址:

在以太網中,物理地址被定義為Mac(media access control)地址;

實現真正的本地通信;

使用範圍,本地局域網並且不跨路由;


邏輯地址:

在TCP/IP協議棧中,邏輯地址被定義為IP地址;

界定主機到主機的通信:點對點通信

使用範圍:全球互聯網

註意:邏輯地址僅僅只作用主機定位,不用於真正的通信;


邏輯端口號:

界定進程

1-1023:固定

1024-45000+:半固定

其他:可自由分配


邏輯地址:邏輯端口號 —— 套接字(socket)

能夠界定特定主機上的特定進程;


如何讓主機加入到網絡中並能夠正常訪問網絡資源;

配置ip+netmask:當前廣播域內的通信;

網關(路由):跨廣播域通信;

DNS服務器地址:實現基於主機名的通信;


註意:ip地址必須和網關在同一邏輯網段中;




centos中網絡管理:

1.為網卡設置網絡屬性;

自動獲取:

在主機所在的網絡中,至少有一臺DHCP服務器;


手動配置(靜態指定):

a.使用命令

net-tools家族(ifcfg家族);

ifconfig(ipconfig)

查看網絡接口的配置信息;

配置網絡屬性;

管理接口狀態;

route:

查看路由信息;

配置路由信息(網關,靜態路由,靜態默認路由);

netstat:

狀態及統計數據的查看


iproute家庭:

ip OBJECT

其中OBJECT可以是:

addr:IP地址和掩碼的管理

link:物理接口的管理

route:路由管理


ss:

狀態及統計數據的查看;


註意:以上命令,在任何的Linux發行版中都適用;


nm家族:network manager

nmcli:命令行工具

nmtui:text-window的工具


nm家族只在centos7以上中能夠使用;


system-config-network

system-config-network-cmd

system-config-network-tui


上述三個工具都是setup的子命令;在centos6中可以使用上述命令;


b.修改配置文件,


2.網絡接口的命名方式;

思科的交換機:fastethernet0/1,gigabitethernet0/1

思科的路由器:Ethernet0/0,fastethernet0/0


Linux的接口命名的方式:

a.傳統的命名方式:

以太網:ethX,X從0開始的整數;如:eth0,eth1,...

PPP網絡:PPPoE,PPP over Ethernet

PPPX,X從0開始的整數;如:PPP0,PPP1,...

環回接口:lo,loopback;

在centos6及之前的發行版本中使用;


b.可預測的命名方案(centos7開始)

可以支持很多種的命名機制:

1)根據firmware進行命名:

每一臺計算機的網卡在其計算機的硬件固件中都有唯一的標識符,比如:MAC地址,廠商標識,電器編號;

2)根據物理拓撲結構:

每一臺計算機的主板上都有固定數量的插槽或接口,如主板上第二個插槽連接網卡的第一個物理接口等;


根據不同的命名機制,可以有如下的命名標準,

1)如果firmware或BIOS是主板上集成的設備提供的索引信息並且該信息可用,則根據此索引信息進行設備命名,如:enoX,eno1,eno16777736,...


2)如果firmware或BIOS是主板上擴展插槽所提供的索引信息並且該信息可用,則根據此索引信息進行設備命名,如:ensX,ens0,ens2,...


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


4)如果用戶顯示的定義,可以根據諸如MAC地址進行命名;如enx


5)如果上述可預測命名皆不可用,則延用傳統命名方式對網絡設備進行命名;


命名的格式組成:

en:Ethernet

wl:WLAN

ww:wwan


名稱的類型:

o<index>:集成設備的索引編號;

s<slot_num>:擴展插槽的索引編號;

x<mac>:基於MAC地址進行命名:

p<bus>s<slot>:基於總線+擴展插槽的索引聯合索引編號;


net-tools家族(ifcfg家族):

1.ifconfig命令

ifconfig - configure a network interface


ifconfig [-v] [-a] [-s] [interface]:用於查看網絡接口的配置信息;

如果執行ifconfig命令,不帶任何接口做參數,則顯示所有處於激活狀態的網絡接口信息;

如果執行ifconfig命名,帶有特定接口名稱作為參數,


ifconfig interface address:用於配置指定接口的網絡參數:

ifconfig interface ip/[prefix_len] [up|down]

ifconfig interface ip/netmask subnet_mask [up|down]


示例:

ifconfig eth1 172.16.100.125

ifconfig eth1 172.16.100.125/24

ifconfig eth1 172.16.100.125 netmask 255.255.255.192

ifconfig eth1 up|down


常用選項:

-a:顯示所有的網絡接口,無論其是否處於激活狀態;


示例:

ifconfig -a


2.route命令:查看和管理路由信息;

路由表中的路由條目,可能包括下列幾種類型;

1.主機路由:目標地址是特定的單個IP地址;

2.網絡路由:子網路由;主網路由;超網路由(CIDR,聚合路由)

子網路由:10.10.10.0/24

主網路由:192.168.1.0/24

超網路由:192.168.0.0/16

3.默認路由:目標地址為0.0.0.0/0的路由條目;到達任意地址的路由;


常用選項:

-n:以數字化顯示主機名(IP地址)和端口


設置路由信息:

route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]


route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]


設置默認網關的方法:default === -net 0.0.0.0 netmask 0.0.0.0

route add default gw 192.168.100.1

route add default gw 192.168.100.1 dev eth2


刪除默認網關的方法:

route del default

route del default gw 172.16.0.1


添加靜態路由的方法:

route add -net 10.0.0.0/8 gw 192.168.220.100 [dev eth2]


刪除靜態路由的方法:

route del -net 10.0.0.0/8

route del -net 10.0.0.0/8 gw 192.168.220.100


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]:

[--raw|-w]:顯示與裸套接字相關的網絡連接

[--listening|-l]:顯示處於LISTEN狀態的TCP連接

[--all|-a]:查看所有狀態的任意連接

[--numeric|-n]:數字化顯示結果中的主機名、端口號、用戶ID等信息;

[--numeric-hosts]

[--numeric-ports]

[--numeric-users]

[--extend|-e[--extend|-e]]:以擴展格式顯示結果

[--program|-p]:顯示與該網絡連接相關的應用程序及進程ID


TCP的有限狀態機(TCP FSM):

State

The state of the socket. Since there are no states in raw mode and usually no states used in UDP and UDPLite, this column may be left blank. Normally this can be one of several values:


ESTABLISHED

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, -tnlp, -unlp, -tunlp


Print routing tables

{--route|-r}:顯示路由表信息

[--numeric|-n]:數字化信息

[--extend|-e]:顯示擴展信息


常用的選項組合:

-rn, -rne


Print interface statistics:

{--interfaces|-I|-i}

[--all|-a]

[--extend|-e]

[--verbose|-v]

[--program|-p]

[--numeric|-n]


Print Protocol statistics:

{--statistics|-s}:顯示詳細的各個協議的統計信息;

[--tcp|-t]

[--udp|-u]

[--udplite|-U]

[--sctp|-S]

[--raw|-w]


iproute家族:

ip:show / manipulate routing, devices, policy routing and tunnels

ip [ OPTIONS ] OBJECT { COMMAND | help }


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



ip link COMMAND

COMMAND: add, delete, set, show, help


ip link set - 修改網絡設備的配置參數

ip link set [dev] IFACE_NAME { up | down }:激活或禁用網絡接口;

ip link set [dev] IFACE_NAME [ arp { on | off } ]:是否允許此網絡接口使用ARP協議;

ip link set [dev] IFACE_NAME name IFACE_NEW_NAME:更改網絡接口名稱,需要將設備先down掉;

ip link set [dev] IFACE_NAME [ mtu MTU ]:修改網絡接口的MTU數值;

ip link set [dev] IFACE_NAME [ netns PID ]:

ip link set [dev] IFACE_NAME [ netns NAME ]:將指定的網絡接口加入到指定的網絡名稱空間中;


ip link { show | list }:列表顯示所有的鏈路接口;只顯示鏈路層信息;

ip link help:獲得簡短的幫助信息


ip netns COMMAND - 設置內核中的網絡名稱空間;

ip netns list:列表顯示所有的自定義的名稱空間;

ip netns add NS_NAME:創建名稱空間;

ip netns exec NS_NAME cmd:在指定的名稱空間中使用命令;

ip netns delete NS_NAME:刪除指定的名稱空間;


ip addr COMMAND - 查看和設置三層邏輯網絡地址;

ip addr add IFADDR dev IFACE_NAME:為指定的網絡接口添加IP地址;

ip addr del IFADDR dev IFACE_NAME:將IP地址從指定的網絡接口上刪除;

ip addr flush dev IFACE_NAME:將指定接口上配置的所有IP地址全部清除;

ip addr { show | list } [dev IFACE_NAME]:顯示網絡接口上配置的IP地址;


為網絡接口增加多個IP地址,並能夠使用ifconfig查看;

ip addr add IFADDR dev IFACE_NAME label IFACE_NAME_LABEL


ifconfig IFACE_NAME_LABEL IFADDR


IFACE_NAME_LABEL : IFACE_NAME:#


ip route COMMAND - 查看和設置路由表信息

ip route { add | del } TARGET/PREFIX via NEXT_HOP [dev IFACE_NAME]

ip route list


ss - another utility to investigate sockets

ss [options] [ FILTER ]


常用選項:

-t:TCP協議相關的連接狀態

-u:UDP協議相關的連接

-w:raw socket相關的連接

-l:處於監聽狀態的連接

-a:所有的狀態的套接字連接

-n:數字化顯示結果

-p:顯示相關的應用程序及PID

-e:顯示詳細的擴展信息

-m:顯示內存使用量

-o:計時器信息


常用的選項組合:

-tan, -uan, -tnl, -unl, -tulp, -unlp


FILTER := [ state TCP-STATE ] [ EXPRESSION ]


TCP-STATE:TCP協議有限狀態機中的所有可用狀態;


EXPRESSION:

dport= :port

sport= :port


EXPRESSION示例:

‘( dport = :22 or sport = :22 )‘


net-tools

iproute

特點:使用命令配置網絡參數以後,網絡參數會立即生效;但是,只要重新啟動或重新激活網絡接口,其配置的網絡參數立即丟失;


上述命令的配置結果,並沒有影響或修改網絡設備的配置文件;


配置文件:

CentOS6中:

跟IP、MASK、GATEWAY、DNS Server相關的配置文件:

/etc/sysconfig/network-scripts/ifcfg-IFACE_NAME

DEVICE:此網絡接口的名稱

TYPE:此網絡接口的類型,比較常見的是Ethernet,Bridge,Token Ring,...

HWADDR:此設備的物理地址,在以太網中是MAC地址;

ONBOOT:在系統引導的過程中,是否激活此設備;

NETBOOT:是否可以使用此設備進行網絡引導;

BOOTPROTO:激活此接口時使用何種協議來配置此接口的屬性;

動態配置:dhcp,bootp

靜態配置:static,none

IPV6INIT:是否在此接口上初始化IPV6協議;

USERCTL:是否允許普通用戶能夠管理此接口;推薦取值為no;

IPADDR:指定此接口的固定IP地址,前提是BOOTPROTO應該是static或none;

NETMASK:設置IP地址對應的子網掩碼;如:255.255.255.0

PREFIX:設置IP地址的網絡前綴的位數;如:24

GATEWAY:設置默認網關

DNS1:首選DNS服務器的地址指向;

DNS2:備用DNS服務器的地址指向;

DNS3:第三DNS服務器的地址指向;

PEERDNS:是否允許從DHCP服務器獲得的DNS服務器的地址指向替代此配置文件中的DNS服務器的地址指向;默認值為允許;

NM_CONTROLLED:是否允許NetworkManager服務管理網絡接口;此服務在CentOS6中非常不完善,所以建議不使用此服務進行網絡接口的管理;而且最好將此服務永久關閉,執行下列兩條命令即可;

# service NetworkManager stop

# chkconfig NetworkManager off


主機名稱的配置文件:/etc/sysconfig/network

HOSTNAME:當前Linux系統使用的主機名稱


# hostname 查看當前系統的FQDN

# hostname NEW_HOSTNAME

註銷後重新登錄,即可生效


CentOS7中:

跟IP、MASK、GATEWAY、DNS Server相關的配置文件:

/etc/sysconfig/network-scripts/ifcfg-IFACE_NAME

多數的配置語句與Center6相同,多出了下列幾項:

UUID:全局唯一標識符,用來唯一標識此網絡接口;

NAME:此網絡接口的顯示名稱;

DEFROUTE:是否允許此網絡接口運行默認路由;


主機名稱的配置文件:/etc/sysconfig/network


# hostnamectl set-hostname NEW_HOSTNAME


本地解析配置文件:/etc/hosts

格式為: IP地址 主機名(多個主機名之間使用空白字符隔開)


解析器文件:/etc/resolv.conf

search DOMAIN_NAME

nameserver DNS_SERVER_IP_ADDRESS


靜態路由的配置文件:/etc/sysconfig/network-scripts/route-IFACE_NAME


IFACE_NAME:必須為此次路由出站接口的名稱;

兩種風格的寫法:

1.每條路由信息占用一行;

TARGET via NEXT_HOP [dev IFACE_NAME]


示例:

10.0.0.0/8 via 192.168.100.254


2.每條路由信息占用多行;

ADDRESS#=TARGET

NETMASK#=MASK

GATEWAY#=NEXT_HOP


示例:

ADDRESS0=172.16.0.0

NETMASK0=255.255.0.0

GATEWAY0=192.168.10.254


Bonding —— 綁定

就是將多塊網卡(多個網絡接口設備)綁定同一IP地址,對外提供網絡服務;這些網卡之間可以實現負載均衡或高可用技術;


通過bonding,虛擬一個網卡對外提供服務及網絡連接,所有的物理網卡都被修改為相同的MAC地址;


Bonding的工作模式:

Mode 0——負載均衡解決方案,其負載均衡的算法為balance-rr(round robin, 輪詢);輪詢策略意味著:從頭到尾順序的在每個slave接口上面發送數據包;該模式可以提供負載均衡以及容錯的能力;


Mode 1——主備解決方案,(active-backup, master-backup),在此模式中,只有一個slave被激活,用於正常數據傳輸;而其他的接口都監視此接口的工作狀態;當且僅當活動的slave接口失敗的時候,才會從其他備份的接口中選擇一個用於激活;該模式只能實現容錯,無法進行負載均衡;


Mode 3——全廣播解決方案,在所有的slave接口上傳輸全部報文;


miimon用來進行鏈路監測。如果miimon=100,則系統每100ms監測一次鏈路連接的狀態;如果某個網絡接口在miimon監測的結果為不連通,則進行故障倒換;


使用Bonding的時候,我們需要配置:

1.創建虛擬接口

2.選擇miimon的監測時間及Bonding的工作模式;

3.選擇用於此次Bonding的物理接口;


在/etc/sysconfig/network-scripts/ifcfg-bond0文件中指定Bonding的特性即可:

DEVICE=bond0

ONBOOT=yes

NM_CONTROLLED=no

BOOTPROTO=none

BONDING_OPTS="miimon=100 mode=0"

IPADDR=172.16.100.135

PREFIX=16


修改物理網卡的配置文件:/etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1

BOOTROTO=none

MASTER=bond0

SLAVE=yes

USERCTL=no


修改物理網卡的配置文件:/etc/sysconfig/network-scripts/ifcfg-eth2

DEVICE=eth2

BOOTROTO=none

MASTER=bond0

SLAVE=yes

USERCTL=no


Bonding最好在CentOS6中實現。


在CentOS7中使用網絡組來實現更加強大的容錯;

nmcli


#20 ifconfig、route、netstat、ip、ss命令詳解與修改主機名與網卡配置文件