本文簡單梳理總結一下Linux網絡基本管理的經常使用命令,主要的目的是加深記憶吧。vim
網絡的基本概念這裏就很少說,從Linux主機接入網絡,以CentOS 7系統爲主,先簡單從網絡接口開始。bash
傳統的命名方式通常有下面兩種:服務器
(1) 以太網:ethX, [0,1, …],例如eth0, eth1, ...網絡
(2) PPP網絡:pppX, [0,1, ...], 例如ppp0, ppp1, ...socket
在CentOS 7 上,網絡接口的命名方式發生了變化,再也不是以往的風格了,它用一種可預測的方案來命名,命名規則以下:tcp
(1) 若是Firmware或BIOS爲主板上集成的設備提供的索引信息可用,則根據此索引進行命名,如eno1, eno2, ...編輯器
(2) 若是Firmware或BIOS爲PCI-E擴展槽所提供的索引信息可用,且可預測,則根據此索引進行命名,如ens1, ens2, ...ide
(3) 若是硬件接口的物理位置信息可用,則根據此信息命名,如enp2s0, ...工具
(4) 若是用戶顯式定義,也可根據MAC地址命名,例如enx122161ab2e10,...ui
(5) 上述均不可用,則仍使用傳統方式命名
命名格式由傳輸的介質類型和物理接口類型組成:
按傳輸介質類型分:
en : ethernet 以太網
wl : wlan 無線局域網
ww : wwan 無線廣域網
物理接口類型分:
o<index>: 集成設備的設備索引號
s<slot>: 擴展槽的索引號
x<MAC>: 基於MAC地址命名
p<bus>s<slot>: 基於總線及槽的拓撲結構進行命名
說完接口命名,接下來開始具體說明經常使用工具的使用。
配置一臺Linux主機接入網絡,一是把主機設置爲動態獲取,須要依賴本地的DHCP服務;二是手動靜態配置。
與設置相關的命令有不少,下面大概梳理一下:
下面分別介紹這三個家族命令的使用。
ifconfig命令:設置網絡接口
做用:接口及地址查看和管理
查看的查看的用法:
# ifconfig -a //顯示全部接口,包括inactive狀態的接口 # ifconfig [INTERFACE] //查看指定接口的狀態信息 [root@localhost~]# ifconfig eno33554984
設定的經常使用用法:
# ifconfig INTERFACEIP/PREFIXLEN [up|down] [root@localhost ~]# ifconfigeno33554984 172.16.1.2/16 [root@localhost ~]# ifconfigeno33554984 172.16.1.2/16 up #ifconfig INTERFACE IP netmask NETMASK [root@localhost ~]# ifconfigeno33554984 172.16.1.2 netmask 255.255.0.0 #ifconfig INTERFACE [-]promisc [root@localhost ~]# ifconfigeno33554984 promisc //開啓混雜模式 [root@localhost ~]# ifconfigeno33554984 -promisc //關閉混雜模式 # ifconfigINTERFACE_LABEL IPADDR/NETMASK [root@localhost ~]# ifconfigeno33554984:0 192.168.137.5/24 //labelipaddress
管理IPv6地址:
add addr/prefixlen del addr/prefixlen
每條命令都會當即送往內核中的TCP/IP協議棧,並會當即生效。
route命令:路由查看及管理
路由條目類型:
主機路由:目標地址爲單個IP;
網絡路由:目標地址爲IP網絡;
默認路由:目標爲任意網絡,0.0.0.0/0.0.0.0
查看:
# route -n
添加:
# route add [-net|-host] target [netmask Nm] [gw GW] [[dev] If] # route add-net 10.0.0.0/8 gw 192.168.10.1 dev eth1 # route add -net 0.0.0.0/0.0.0.0 gw 192.168.10.1 # route add default gw 192.168.10.1
刪除:
# route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If] # route del -net 10.0.0.0/8 gw 192.168.10.1 # route del default
查看結果中各個字段的含義以下:
Destination 表示路由的目標IP地址
Gateway 表示網關使用的主機名或者IP地址,「*」 表示沒有網關
Genmask 表示路由的網絡掩碼,在把它與路由的目標地址進行比較以前,內核經過Genmask和數據包的IP地址進行按位「與」操做來設置路由。
Flags 表示路由的標誌。可用的標誌及其意義:U 表示路由在啓動,H 表示target是一臺主機,G 表示使用網關,R 表示對動態路由進行復位設置,D 表示動態路由, M 表示修改路由,! 表示拒絕路由
Metric 表示路由的單位開銷
Ref 表示依賴本路由現狀的其餘路由數目
Use 表示路由表條目被使用的數目
Iface 表示路由所發送的包的目的網絡
netstat命令:查看網絡鏈接狀態
做用:netstat主要用於Linux查看自身的網絡情況,如開啓的端口、在爲哪些用戶服務,以及服務的狀態等,此外,它還顯示系統路由表、網絡接口狀態等。可用說,它是一個綜合性的網絡狀態查看工具。
顯示路由表:
# 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(Finate State Machine)
-u:UDP相關的鏈接
-w:raw socket相關的鏈接
-l:處於監聽狀態的鏈接
-a:全部狀態
-n:以數字格式顯示IP和Port;
-e:擴展格式
-p:顯示相關的進程及PID;
經常使用組合選項:-tan, -uan, -tnl, -unl, -tunlp
顯示接口的統計數據:
# netstat {--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e][--verbose|-v] [--program|-p] [--numeric|-n]
全部接口:netstat-i
指定接口:netstat-I<IFace>
ifup/ifdown命令:激活/禁用網絡設備
用法:
# ifup <INTERFACE> # ifup eno33554984 # ifdown <INTERFACE> # ifdown eno33554984
說明:一般使用以保存的配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE來識別接口並完成配置。若是要修改網卡MAC地址,修改以前要禁用網絡設備,應使用ifdown 命令,不然系統會報錯。
hostname命令:配置主機名
查看當前主機名:
# hostname
配置主機名:
# hostname HOSTNAME
說明:在一個局域網中,每臺機器都有一個主機名,使得主機與主機之間便於區分。能夠根據每臺機器的功能來爲其命名。hostname設置的主機名在系統重啓後將失效,要想永久生效,應該手動修改配置文件/etc/hosts(Redhat/Fedora或以此爲基礎打包的發行版)。
hostnamectl命令: CentOS 7 專用
# hostnamectlstatus : 顯示當前主機名信息 # hostnamectlset-hostname : 設定主機名,永久有效
ip命令:網絡集成設置工具
做用:ip命令是iproute2軟件包裏面的一個強大的網絡配置工具,它可以替代一些傳統的網絡管理工具,例如:ifconfig、route等。幾乎全部的Linux發行版本都支持ip命令。
經常使用的幾個用法:
# ip [ OPTIONS] OBJECT { COMMAND | help } OBJECT = {link | addr | route | netns }
說明:全部的對象名均可以簡寫,例如address能夠簡寫爲addr,還能夠按「Tab」鍵進行命令補全。
OBJECT經常使用選項:
ip link:屬性配置
# ip link set: [root@localhost ~]# ip link seteno50332208 up //激活網卡 [root@localhost ~]# ip link seteno50332208 down //禁用網卡 [root@localhost ~]# ip link set eno50332208multicast on //啓用多播功能 [root@localhost ~]# ip link seteno50332208 multicast off //禁用多播功能 [root@localhost ~]# ip link seteno50332208 name NI1 //重命名接口 [root@localhost ~]# ip link seteno50332208 mtu 1500 //設置MTU的大小,默認1500 [root@localhost ~]# ip link seteno50332208 netns newns //將接口移動到newns網絡名稱空間 # ip link show //displaydevice attributes # ip link help //顯示簡要使用幫助;
ip netns:網絡名稱空間配置
[root@localhost~]# ip netns list //列出全部的netns [root@localhost~]# ip netns add newns2 //建立指定的netns [root@localhost~]# ip netns del newns2 //刪除newns2 exec NS_NAME COMMAND:在指定的netns中運行命令 [root@localhost ~]# ip netns exec newnsip link show eno50332208
ip addr:接口ip地址管理
# ip addr show //顯示每一個接口的ip地址 # ip addr add //添加ip地址 [root@localhost~]# ip addr add 192.168.150.137/24 dev eno33554984 //添加ip地址 [root@localhost~]# ip addr add 192.168.210.10/24 dev eno33554984 label eno33554984:0 broadcast192.168.210.255 scope link //[label NAME]:爲額外添加的地址指明接口別名 //[broadcast ADDRESS]:廣播地址,會根據IP和NETMASK自動計算獲得; //[scope SCOPE_VALUE]: global:全局可用 link:接口可用 host:僅本機可用 # ip addr delete //刪除地址 [root@localhost~]# ip addr del 192.168.210.10/24 dev eno33554984 # ip addr show // look at protocol addresses [root@localhost~]# ip addr show eno33554984 //顯示接口的地址 # ip addr flush // flush protocol addresses [root@localhost~]# ip addr flush dev eno33554984
ip route:路由表管理
# ip route // routing table management //ip route show- display route //iproute add - add new route //iproute change - change route //iproute replace - change or add new one # ip route add TYPE PREFIX via GW [dev IFACE] [src SOURCE_IP] [root@localhost~]# ip route add 192.168.0.0/24 via 10.0.0.1 dev eth1 src 10.0.20.100 [root@localhost~]# ip route add default via GW # ip route del // delete route # ip route del TYPE PRIFIX [root@localhost ~]# ip route delete192.168.1.0/24 # iproute show // list routes TYPE PRIFIX # iproute flush // flush routing tables TYPE PRIFIX # iproute get // get a single route # iproute get TYPE PRIFIX [root@localhost ~]# ip route get192.168.0.0/24
ss命令:顯示網絡狀態信息
做用:ss相似netstat,能顯示網絡狀態信息。
用法:
# ss [options] [ FILTER ]
options:
-t:TCP協議的相關鏈接
-u:UDP相關的鏈接
-w:raw socket相關的鏈接
-l:監聽狀態的鏈接
-a:全部狀態的鏈接
-n:數字格式
-p:相關的程序及其PID
-e:擴展格式信息
-m:內存用量
-o:計時器信息
FILTER: [ state TCP-STATE ] [ EXPRESSION ]
TCP FSM:
LISTEN:監聽
ESTABLISHED:創建的鏈接
FIN_WAIT_1
FIN_WAIT_2
SYN_SENT
SYN_RECV
CLOSED
EXPRESSION:
dport=
sport=
示例:'( dport = :22 orsport = :22)'
[root@localhost~]# ss -tan '( dport = :22 or sport =:22 )' [root@localhost~]# ss -tan state ESTABLISHED
配置文件
/etc/sysconfig/network-scripts/route-INTERFACE //路由的配置文件
支持兩種配置方式,但不可混用
(1) 每行一個路由條目:
TARGET via GW
(2) 每三行一個路由條目:
ADDRESS#=TARGET
NETMASK#=MASK
GATEWAY#=NEXTHOP
/etc/sysconfig/network-scripts/ifcfg-INTERFACE // IP/NETMASK/GW/DNS/等屬性的配置文件
配置文件/etc/sysconfig/network-scripts/ifcfg-INTERFACE經過大量參數來定義接口的屬性,可用vim等文本編輯器直接修改,也可使用專用的命令的進行修改(CentOS 6:system-config-network (setup),CentOS 7: nmtui)
ifcfg-INTERFACE配置文件參數說明:
DEVICE:此配置文件對應的設備的名稱
ONBOOT:在系統引導過程當中,是否激活此接口
UUID:此設備的唯一標識
IPV6INIT:是否初始化IPv6
BOOTPROTO:激活此接口時使用什麼協議來配置接口屬性,經常使用的有dhcp、bootp、static、none
TYPE:接口類型,常見的有Ethernet,Bridge
DNS1:第一DNS服務器指向
DNS2:備用DNS服務器指向
DOMAIN:DNS搜索域
IPADDR: IP地址
NETMASK:子網掩碼;CentOS 7支持使用PREFIX以長度方式指明子網掩碼
GATEWAY:默認網關
USERCTL:是否容許普通用戶控制此設備
PEERDNS:若是BOOTPROTO的值爲「dhcp」,是否容許dhcpserver分配的dns服務器指向覆蓋本地手動指定的DNS服務器指向;默認爲容許
HWADDR:設備的MAC地址
NM_CONTROLLED:是否使用NetworkManager服務來控制接口
爲別名添加配置文件
DEVICE=IFACE_LABEL
BOOTPROTO:別名不支持動態獲取地址,只能指定爲static或none
注意:能夠直接複製一份其餘網卡的配置文件,再在裏面作修改
例如:
[root@localhost~]# cd /etc/sysconfig/network-scripts [root@localhost network-scripts]# cp ifcfg-eno33554984 ifcfg-eno33554984:0 [root@localhost network-scripts]# vim ifcfg-eno33554984:0 DEVICE="eno33554984:0" ONBOOT=yes NETBOOT=yes IPV6INIT=no IPADDR=172.16.2.2 PREFIX=24 BOOTPROTO=none TYPE=Ethernet