1. 程式人生 > >網絡配置命令,綁定,接口命名以及配置文件的詳解

網絡配置命令,綁定,接口命名以及配置文件的詳解

網絡配置命令 綁定 接口命名 配置文件

一:三大命令家族

當我們在centos中管理網絡時需要為網卡設置網絡屬性,有自動獲取和手動配置兩種,自動獲取需要在主機所在的網絡中至少有一臺DHCP服務器,而手動配置即靜態指定則可以使用命令或者修改配置文件,首先著重說一下使用命令,命令包括net-tools家族(ifcfg家族)、iproute家族、nm家族:Network Manager,這三個工具都是setup的子命令,在centos6中可以使用上述命令。

具體命令的總結為:

net-tools家族(ifcfg家族)

ifconfig接口配置命令

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

配置網絡屬性

管理接口狀態

route

查看路由信息

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

netstat

狀態及統計數據的查看


iproute家族:

ip OBJECT

其中OBJERT可以是:

addr:IP地址和掩碼的管理

link:物理接口的管理

route:路由管理

ss:

狀態和統計數據的查看


註意:以上命令可以在任何的linux發行版中都適用


nm家族: Network Manager

nmcli:命令行工具

nmtui:text-window的工具

nm家族只在centos7中能夠使用


首先詳細的介紹一下net-tools家族(ifcfg家族)的三個命令:

1.ifconfig命令

ifconfig - configure a network interface配置一個網絡接口

1)ifconfig [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.105

# ifconfig eth1 172.16.100.105/24

# ifconfig eth1 172.16.100.105 netmask 255.255.255.192

# ifconfig eth1 up|down

常用選項:

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

示例:ifconfig -a


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

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

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

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

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

常用選項:

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

設置路由信息:

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

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

設置默認網關的方法:default 等於 -net 0.0.0.0/0 netmask 0.0.0.0

route add default gw 192.168.100.1

刪除默認網關的方法:

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


3.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

常用的選項組合:

-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


二:網絡接口的命名

Linux中每個網絡接口都有一個名稱,可以使用ifconfig命令來查詢當前系統中的接口。那麽這些接口命名時是否有要求或者限制呢,比如格式或者長度限制。從表面上看似乎沒有限制可以隨意命名,在一般應用場景中也可以正常工作,當在特殊應用場合中就會因為接口名稱的原因出現莫名其妙的問題。所以需要有命名規範:

思科的交換機: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地址進行命名,如:enx000c290045b3

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


命名的格式組成:

en:Ethernet

wl:wlan

ww:wwan


名稱的類型:

0<index>:集成設備的索引號

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

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

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


三:網絡的配置文件

當我們需要配置網絡的時候另一種方式就是修改配置文件,在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和CentOS基本相同,多出了下列幾項:

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

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

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


四:Bonding —— 綁定

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


本文出自 “12657170” 博客,請務必保留此出處http://12667170.blog.51cto.com/12657170/1945955

網絡配置命令,綁定,接口命名以及配置文件的詳解