Linux 網絡管理介紹
- 以太網:ethX, [0,oo),例如eth0, eth1, .....數字默認從0開始,1表示第二塊網卡
- PPP網絡:pppX, [0,...], 例如,ppp0, ppp1, ...
- 如果Firmware或BIOS為主板上集成的設備提供的索引信息可用,則根據此索引進行命名,如eno1, eno2, ...
- 如果Firmware或BIOS為PCI-E擴展槽所提供的索引信息可用,且可預測,則根據此索引進行命名,如ens1, ens2, ...
- 如果硬件接口的物理位置信息可用,則根據此信息命名,如enp2s0, ...
- 如果用戶顯式定義,也可根據MAC地址命名,例如enx122161ab2e10, ...
- 命名格式的組成:
- en:ethernet 以太網
- wl:wlan 無線局域網
- ww:wwan 無線廣域網
- 名稱類型:
- o:集成設備的設備索引號;
- s:擴展槽的索引號;
- x s:基於MAC地址的命名;
- p s:PCI擴展總線;
ifconfig系列介紹
ifconfig是linux中用於顯示或配置網絡設備(網絡接口卡)的命令,英文全稱是network interfaces configuring。
參數說明:
add<地址> 設置網絡設備IPv6的IP地址。
del<地址> 刪除網絡設備IPv6的IP地址。
down 關閉指定的網絡設備。
<hw<網絡設備類型><硬件地址> 設置網絡設備的類型與硬件地址。io_addr<I/O地址> 設置網絡設備的I/O地址。
irq<IRQ地址> 設置網絡設備的IRQ。
media<網絡媒介類型> 設置網絡設備的媒介類型。
mem_start<內存地址> 設置網絡設備在主內存所占用的起始地址。
metric<數目> 指定在計算數據包的轉送次數時,所要加上的數目。
mtu<字節> 設置網絡設備的MTU。
netmask<子網掩碼> 設置網絡設備的子網掩碼。
tunnel<地址> 建立IPv4與IPv6之間的隧道通信地址。
up 啟動指定的網絡設備。
-broadcast<地址> 將要送往指定地址的數據包當成廣播數據包來處理。-pointopoint<地址> 與指定地址的網絡設備建立直接連線,此模式具有保密功能。
-promisc 關閉或啟動指定網絡設備的promiscuous模式。
[IP地址] 指定網絡設備的IP地址。
[網絡設備] 指定網絡設備的名稱。
1、獲取幫助
[root@localhost ~]# man ifconfig
2、顯示配置信息
[root@localhost ~]# ifconfig -a
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
開啟,支持廣播,運行,組播多播,每幀最大1500字節
inet 192.168.1.102 netmask 255.255.255.0 broadcast 192.168.1.255
ip 子網掩碼 廣播地址
inet6 fe80::f1e9:399f:8eb3:d324 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:58:d6:d7 txqueuelen 1000 (Ethernet)
mac地址 穿出隊列長度
RX packets 247849 bytes 87577060 (83.5 MiB)
這次網卡激活後接收到的報文數量 大小
RX errors 0 dropped 0 overruns 0 frame 0
錯誤數量 丟包 溢出
TX packets 83818 bytes 22088307 (21.0 MiB)
穿出 包個數 大小
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
穿出錯誤 丟包
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 220 bytes 16382 (15.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 220 bytes 16382 (15.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
3、配置
啟用
[root@localhost ~]# ifconfig ens33 192.168.1.103/24 up
[root@localhost ~]# ifconfig ens34 192.168.1.103 netmask 255.255.255.0 up
停用
[root@localhost ~]# ifconfig ens33 192.168.1.103/24 down
[root@localhost ~]# ifconfig ens34 192.168.1.103 netmask 255.255.255.0 down
[root@node1 ~]# ifconfig ens34 0 #刪除ip信息
4、 特性開始關閉 以混雜模式為例
#開啟
[root@localhost ~]# ifconfig ens33 promisc
#關閉
[root@localhost ~]# ifconfig ens33 -promisc
route配置
1、查看 ?-n ?以數字方式顯示,默認會反解路由,顯示主機名等 ??
[root@localhost network-scripts]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 100 0 0 ens33
到達任意地址用192.168.1.1這個網關轉發
192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
到達192.168.1.0這個段的網絡,用ip與255.255.255.0子網掩碼做運算
參數說明
Destination:目標網絡或者目標主機
Gateway:網關或者*不設置
Genmask:Destination的子網掩碼,主機用255.255.255.255 ,默認路由0.0.0.0
Flags:
U:路由啟用
H:主機路由
G:用網關
R:回復動態路由
D:守護進程或者重定向 動態加載
M: 守護進程或者重定向 修改
A:installed by addrconf
C:緩存
!:拒絕路由
Metric:與目標的距離(通常以跳數計算)
Ref:非內核引用這條路由次數
Use:路由查詢計數
Iface:發送接口
2、添加路由
[root@localhost ~]# route add -net 172.16.86.0/24 gw 192.168.1.101 dev ens33
[root@localhost ~]# route add -net 0.0.0.0/0 gw 192.168.1.1 dev ens33
[root@localhost ~]# route add -net default gw 192.168.1.1 dev ens33
3、刪除 ?centos7 默認網關,無法添加回來,需要重啟網絡,centos6則可以添加回來
[root@localhost ~]# route del -net 0.0.0.0/0
netstat網絡狀態工具
常用參數說明
-a或--all 顯示所有連線中的Socket。
-A<網絡類型>或--<網絡類型> 列出該網絡類型連線中的相關地址。
-c或--continuous 持續列出網絡狀態。
-C或--cache 顯示路由器配置的快取信息。
-e或--extend 顯示網絡其他相關信息。
-F或--fib 顯示FIB。
-g或--groups 顯示多重廣播功能群組組員名單。
-h或--help 在線幫助。
-i或--interfaces 顯示網絡界面信息表單。
-l或--listening 顯示監控中的服務器的Socket。
-M或--masquerade 顯示偽裝的網絡連線。
-n或--numeric 直接使用IP地址,而不通過域名服務器。
-N或--netlink或--symbolic 顯示網絡硬件外圍設備的符號連接名稱。
-o或--timers 顯示計時器。
-p或--programs 顯示正在使用Socket的程序識別碼和程序名稱。
-r或--route 顯示Routing Table。
-s或--statistice 顯示網絡工作信息統計表。
-t或--tcp 顯示TCP傳輸協議的連線狀況。
-u或--udp 顯示UDP傳輸協議的連線狀況。
-v或--verbose 顯示指令執行過程。
-V或--version 顯示版本信息。
-w或--raw 顯示RAW傳輸協議的連線狀況。
-x或--unix 此參數的效果和指定"-A unix"參數相同。
--ip或--inet 此參數的效果和指定"-A inet"參數相同。
常用組合
[root@node1 network-scripts]# netstat -antup
Active Internet connections (servers and established)
Proto(協議) Recv-Q(接收隊列) Send-Q(發送隊列) Local Address(表示本地IP地址) Foreign Address (遠程IP地址) State(狀態) PID/Program name(進程號/名稱)
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1060/sshd
上述狀態說明
LISTEN:監聽
ESTABLISEHD:建立的連接
FIN_WAIT_1: 客戶端斷開
FIN_WAIT_2:服務端斷開
SYN_SENT:同步發送信號
SYN_RECV:同步接收信號
CLOSED:結束
ip系列網絡配置
link(設備屬性管理)
1、顯示設備信息
[root@node1 ~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
廣播 多播 隊列 先進先出 隊列長度
link/ether 00:0c:29:58:d6:d7 brd ff:ff:ff:ff:ff:ff
2、開啟關閉【設備|屬性】
ip link set - change device attributes
dev NAME (default):指明要管理的設備,dev關鍵字可省略;
up和down:
multicast on或multicast off:啟用或禁用多播功能;
name NAME:重命名接口
mtu NUMBER:設置MTU的大小,默認為1500;
netns PID:ns為namespace,用於將接口移動到指定的網絡名稱空間;
[root@node1 ~]# ip link set dev ens34 up #down
命名空間選項
#命名空間
[root@node1 ~]# ip netns help
Usage: ip netns list
ip netns add NAME
ip netns set NAME NETNSID
ip [-all] netns delete [NAME]
ip netns identify [PID]
ip netns pids NAME
ip [-all] netns exec [NAME] cmd ...
ip netns monitor
ip netns list-id
#添加命名空間
[root@node1 ~]# ip netns add mynet
[root@node1 ~]# ip netns list
mynet
#把ens34 設備移動到mynet的空間下
[root@node1 ~]# ip link set ens34 netns mynet
[root@node1 ~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether 00:0c:29:58:d6:d7 brd ff:ff:ff:ff:ff:ff
#在mynet空間下查看
[root@node1 ~]# ip netns exec mynet ip link show
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
3: ens34: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000
link/ether 00:0c:29:58:d6:e1 brd ff:ff:ff:ff:ff:ff
#刪除命名空間,裏面的設備釋放到最外層
[root@node1 ~]# ip netns del mynet
[root@node1 ~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether 00:0c:29:58:d6:d7 brd ff:ff:ff:ff:ff:ff
3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether 00:0c:29:58:d6:e1 brd ff:ff:ff:ff:ff:ff
addr(協議地址管理)
1、顯示
[root@node1 ~]# ip addr show #list
2、添加
[root@node1 ~]# ifconfig ens34 0
[root@node1 ~]# ip addr add 172.16.86.131/24 dev ens34
[root@node1 ~]# ip addr show ens34
3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:58:d6:e1 brd ff:ff:ff:ff:ff:ff
inet 172.16.86.131/24 scope global ens34
valid_lft forever preferred_lft forever
inet6 fe80::f6c5:56ff:bace:e204/64 scope link
valid_lft forever preferred_lft forever
#在添加一個
[root@node1 ~]# ip addr add 172.16.86.132/24 dev ens34
[root@node1 ~]# ip addr show ens34
3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:58:d6:e1 brd ff:ff:ff:ff:ff:ff
inet 172.16.86.131/24 scope global ens34
valid_lft forever preferred_lft forever
inet 172.16.86.132/24 scope global secondary ens34
valid_lft forever preferred_lft forever
inet6 fe80::f6c5:56ff:bace:e204/64 scope link
valid_lft forever preferred_lft forever
#以上2個添加用ifconfig顯示只能看到第一個 添加label可以讓ifconfig也顯示
[root@node1 ~]# ip addr add 172.16.86.133/24 dev ens34 label ens34:1
[root@node1 ~]# ifconfig
ens34:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.16.86.133 netmask 255.255.255.0 broadcast 0.0.0.0
ether 00:0c:29:58:d6:e1 txqueuelen 1000 (Ethernet)
......
3、刪除
[root@node1 ~]# ip addr del 172.16.86.133/24 dev ens34
4、清空
[root@node1 ~]# ip addr flush dev ens34
3: ens34: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:58:d6:e1 brd ff:ff:ff:ff:ff:ff
ip route配置
1、路由添加
ip route add - add new route
ip route change - change route
ip route replace - change or add new one
[root@node1 ~]# ip route add 172.16.86.0/24 via 172.16.86.132 dev ens34
[root@node1 ~]# ip route add 172.16.86.0/24 via 172.16.86.132 dev ens34 src 172.16.86.133
[root@node1 ~]# ip route list
172.16.86.0/24 via 172.16.86.132 dev ens34 src 172.16.86.133
到達172.16.86.0/24這個網段的地址 是由本機ens34上面的172.16.86.133這個網卡出去 下一跳是172.16.86.132
[root@node1 ~]# ip route add 172.16.86.0/24 via 192.168.1.103 dev ens33 src 192.168.1.102
2、刪除
[root@node1 ~]# ip route delete 172.16.86.0/24
[root@node1 ~]# ip route delete 172.16.86.0/24 dev ens34
#清空
[root@node1 ~]# ip route flush dev ens34
3、展示
[root@node1 ~]# ip route show
default via 192.168.1.1 dev ens33 proto static metric 100
default via 172.16.86.2 dev ens34 proto static metric 101
192.168.1.0/24 dev ens33 proto kernel scope link src 192.168.1.102 metric 100
[root@node1 ~]# ip route get 192.168.1.0/24
broadcast 192.168.1.0 dev ens33 src 192.168.1.102
cache <local,brd>
ss網絡狀態工具
參數說明
-h:顯示幫助信息;
-V:顯示指令版本信息;
-n:不解析服務名稱,以數字方式顯示;
-a:顯示所有的套接字;
-l:顯示處於監聽狀態的套接字;
-o:顯示計時器信息;
-m:顯示套接字的內存使用情況;
-p:顯示使用套接字的進程信息;
-i:顯示內部的TCP信息;
-4:只顯示ipv4的套接字;
-6:只顯示ipv6的套接字;
-t:只顯示tcp套接字;
-u:只顯示udp套接字;
-d:只顯示DCCP套接字;
-w:僅顯示RAW套接字;
-x:僅顯示UNIX域套接字。
相比netstat強大之處,多了條件過濾功能
[root@node1 network-scripts]# ss -tuanp ‘( dport = :22 or sport = :22 )‘
以上均屬於臨時配置
網卡的配置文件:/etc/sysconfig/network-scripts/ifcfg-ethX。設置ip地址、子網掩碼、默認網關等。
TYPE=Ethernet #接口類型,常見的有Ethernet, Bridge;
BOOTPROTO=static #激活此接口時使用什麽協議來配置接口屬性,常用的有dhcp、bootp、static、none;
IPADDR=192.168.1.102
DNS1=8.8.8.8 #最多指定3個,防止主機跟dns服務連接不上時候備用
DNS2=114.114.114.114
GATEWAY=192.168.1.1 #網關
NETMASK=255.255.255.0 #子網掩碼;CentOS 7支持使用PREFIX以長度方式指明子網掩碼; PREFIX=24
IPV4_FAILURE_FATAL=no
IPV6INIT=no #是否初始化IPv6;
NAME=ens33
UUID=c17bccf7-ae71-4e7c-8022-5196ebbf771e #設備唯一碼
DEVICE=ens33 #跟文件名ifcfg-ens33必須保持一致
ONBOOT=no #在系統引導過程中,是否激活此接口;
dns指定配置文件
[root@node1 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search localdomain zander.com
nameserver 172.16.86.2
nameserver 8.8.8.8
nameserver 114.114.114.114
配置附加網絡 /etc/sysconfig/network-scripts/ifcfg-ensX:Y
[root@node1 network-scripts]# cat ifcfg-ens33:0
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.1.106
NETMASK=255.255.255.0
NAME=ens33:0
DEVICE=ens33:0
ONBOOT=yes
[root@node1 network-scripts]# ifconfig
ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.106 netmask 255.255.255.0 broadcast 192.168.1.255
ether 00:0c:29:58:d6:d7 txqueuelen 1000 (Ethernet)
指定路由添加
[root@node1 network-scripts]# cat /etc/sysconfig/network-scripts/route-ens33
172.16.86.0/24 via 192.168.1.103
# 到達172.16.86.0這個網絡段 由dev ens33這個網卡出去 下一跳是192.168.1.103
以上配置文件修改之後需要手動重啟生效
CentOS 6:# service network restart
CentOS 7:# systemctl restart network.service
Linux 網絡管理介紹