Linux網絡屬性管理
linux的網絡配置方法有多種,而且隨發行版及版本而略微不同。我目前的測試環境為CentOS6和CentOS7。
常用的網絡配置命令或方法有:ifconfig,route,netstat,ip,ss,nmcli,配置文件。
首先:命令方法介紹
一、命令簡介
ifconfig:是個比較傳統的命令,可以配置網絡接口的啟用及關閉,IP地址等等;
route:主要用于配置路由;
netstat:主要用于查看網絡狀態;
ip:是個功能更全面的命令,可以管理網絡接口以及路由,可以取代ifconfig和route命令;
ss:同netstat一樣主要用于查看網絡狀態,但能提供更多的信息;
nmcli:NetworkManager command line,功能不斷得到完善的命令,主要用于管理網絡接口,WIFI,藍牙等等。
二、詳細用法
1. ifconfig
直接輸入ifconfig或者ifconfig -a會查看所有網絡接口的信息:
開啟或關閉某個網絡接口:
[root@localhost ~]# ifconfig eno16777736 down
[root@localhost ~]# ifconfig eno16777736 up
設置IP地址:ifconfig INTERFACE IP/MASK
[root@localhost ~]# ifconfig eno16777736 192.168.1.108/24
注意:這個操作會覆蓋舊的IP;
啟用或關閉混雜模式,用于網絡監控:
ifconfig INTERFACE -promisc
ifconfig INTERFACE promisc
注意:使用ifconfig修改的內容會立即生效,但不會永久生效。
2. route 路由管理命令
直接在shell中輸入route -n 命令,會顯示所有路由信息:
[root@localhost ~]# 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 eno16777736
192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 eno16777736
使用route添加主機路由:
[root@localhost ~]# route add -host 192.168.10.3 gw 192.168.1.1 dev eno16777736
# -host:添加主機路由;gw:gatway;eno16777736:網絡接口名;
[root@localhost ~]# 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 eno16777736
192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 eno16777736
192.168.10.3 192.168.1.1 255.255.255.255 UGH 0 0 0 eno16777736
# 最后一條為新加的路由;
使用route添加網絡路由:
[root@localhost ~]# route add -net 198.162.2.0/24 gw 192.168.1.33 dev eno16777736
# -net:網絡路由;198.162.2.0/24:IP/MASK;注意添加網絡路由需要附帶子網掩碼MASK;
[root@localhost ~]# 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 eno16777736
192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 eno16777736
192.168.2.0 192.168.1.1 255.255.255.0 UG 0 0 0 eno16777736
# 最后一條為新加網絡路由;
添加默認路由:
[root@localhost ~]# route add default gw 192.168.1.1 dev eno16777736
# 注意使用default選項;最后應加上dev名;
刪除一條路由:
[root@localhost ~]# route del -host 192.168.1.3
刪除網絡路由,默認路由同理
注意: route命令修改的內容也是臨時有效,重啟失效。
3. netstat命令
netstat命令用于查看網絡狀態,常用選項有:
-t: 查看tcp連接
-u:查看udp連接
-n:以數字方式查看端口和IP
-a:顯示所有狀態
-l:查看處于監聽狀態的連接
常用選項組合:
[root@localhost ~]# netstat -tan 查看所有TCP連接狀態
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 52 192.168.1.200:22 192.168.1.108:5141 ESTABLISHED
tcp6 0 0 :::22 :::* LISTEN
tcp 0 0 ::1:25 :::* LISTEN
[root@localhost ~]# netstat -uan 查看所有UDP連接狀態
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 127.0.0.1:323 0.0.0.0:*
udp6 0 0 ::1:323 :::*
4. ip命令的使用方法:
ip [ OPTIONS ] OBJECT { COMMAND | help }
常用的OBJECT有:link,addr,route;
每個OBJECT對應不同的COMMAND;
可以對每個OBJECT查看其man手冊,也可以查看其幫助:
如:man ip link;
ip link help;
ip link常用于開啟或關閉某個網絡接口,及顯示其信息:
[root@localhost ~]# ip link set eno16777736 up
[root@localhost ~]# ip link show dev eno16777736
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT
qlen 1000 link/ether 00:0c:29:df:39:4e brd ff:ff:ff:ff:ff:ff
ip addr常用于查看IP地址,增加IP地址,刪除IP地址
[root@localhost ~]# ip addr add 192.168.1.108/24 dev eno16777736
# 為eno16777736增加一個IP;
# 注意使用了ip addr下的次級命令add,add后面是IP/MASK,最后是dev+網絡接口號;
[root@localhost ~]# ip addr show dev eno16777736
# ip addr show dev INTERFACE命令用于查看特定INTERFACE的信息;
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:df:39:4e brd ff:ff:ff:ff:ff:ff
inet 192.168.1.105/24 brd 192.168.1.255 scope global dynamic eno16777736
valid_lft 4694sec preferred_lft 4694sec
inet 192.168.1.108/24 scope global secondary eno16777736
# 注意此條IP是新加的;
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fedf:394e/64 scope link
valid_lft forever preferred_lft forever
[root@localhost ~]# ip addr del 192.168.1.108/24
# 刪除IP,后面不帶INTERFACE參數是不能刪除IP的,因為沒有操作對象;
Not enough information: "dev" argument is required.
[root@localhost ~]# ip addr del 192.168.1.108/24 dev eno16777736
# 此為刪除IP的正確操作;
[root@localhost ~]# ip addr show
# 這條命令最后不帶INTERFACE參數,默認顯示所有INTERFACE的信息;
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:df:39:4e brd ff:ff:ff:ff:ff:ff
inet 192.168.1.105/24 brd 192.168.1.255 scope global dynamic eno16777736
valid_lft 4599sec preferred_lft 4599sec
inet6 fe80::20c:29ff:fedf:394e/64 scope link
valid_lft forever preferred_lft forever
ip route 是路由管理命令:
[root@localhost ~]# ip route add 192.168.1.109 via 192.168.1.33
# 使用格式1:ip route add 主機路由IP via 網關
[root@localhost ~]# ip route show
# 查看路由;
default via 192.168.1.33 dev eno16777736 proto static metric 100
192.168.1.0/24 dev eno16777736 proto kernel scope link src 192.168.1.105 metric 100
192.168.1.109 via 192.168.1.33 dev eno16777736
# 添加網絡路由;
[root@localhost ~]# ip route add 192.168.2.0/24 via 192.168.1.33
# 刪除一條主機路由;
[root@localhost ~]# ip route delete 192.168.1.111
# 刪除一條網絡路由;
[root@localhost ~]# ip route delete 192.168.2.0/24
注意:IP命令的修改同樣也非永久有效。
5. ss 與netstat用法差不多。
ss [OPTION]… [FILTER]
選項:
-t: tcp協議相關
-u: udp協議相關
-w: 裸套接字相關
-x:unix sock相關
-l: listen狀態的連接
-a: 所有
-n: 數字格式
-p: 相關的程序及PID
-e: 擴展的信息
-m:內存用量
-o:計時器信息
FILTER := [ state TCP-STATE ] [ EXPRESSION ]
如:[root@localhost ~]# ss state established 'dport = :ssh or sport = :ssh'
[root@localhost ~]# ss state established 'dport = :22 or sport = :22'
[root@localhost ~]# ss state time-wait
6.nmcli命令:NetworkManager Command Line,此命令所做的修改會永久有效,不需要再修改配置文件。
nmcli [ OPTIONS ] OBJECT { COMMAND | help }
其中,OPTIONS不常用。
OBJECT是必須項,常用的有:
1)、general 注意用于查看網絡狀態,主機名等
nmcli general help:查看nmcli general幫助;
[root@localhost network-scripts]# nmcli general
# 查看網絡接口狀態;
STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN
connected full enabled enabled enabled enabled
[root@localhost network-scripts]# nmcli g status
# general可以簡寫為g;
STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN
connected full enabled enabled enabled enabled
[root@localhost ~]# nmcli general hostname
# 查看主機名
localhost.localdomain
[root@localhost ~]# nmcli general hostname mylinux
# 修改主機名,注意將要修改的主機名作為參數傳遞進來;會永久生效
2)、connection
nmcli conn help 查看幫助
nmcli conn show 顯示所有連接
[root@localhost ~]# nmcli conn modify eno16777736 ipv4.addresses 192.168.1.108/24 修改一個IP及MASK;
[root@localhost ~]# nmcli conn modify eno16777736 +ipv4.addresses 192.168.1.108/24 添加一個IP及MASK;
[root@localhost ~]# nmcli conn modify eno16777736 -ipv4.addresses 192.168.1.108/24 減去一個IP及MASK;
說明:ipv4.addresses為<setting>.<property>格式,可以man nm-settings查看所有可用組合格式。
注意:對connection所做的所有修改,均需重啟connection生效,重啟方法:
[root@localhost ~]# nmcli con down eno16777736; nmcli con up eno16777736
3)、device 主要用于查看網絡信息
[root@mylinux ~]# nmcli device status
DEVICE TYPE STATE CONNECTION
eno16777736 ethernet connected eno16777736
lo loopback unmanaged —
[root@mylinux ~]# nmcli device show
GENERAL.DEVICE: eno16777736
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 00:0C:29:DF:39:4E
GENERAL.MTU: 1500
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: eno16777736
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/8
WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.1.105/24
IP4.ADDRESS[2]: 192.168.1.108/24
IP4.GATEWAY: 192.168.1.33
IP4.DNS[1]: 10.64.101.209
IP4.DNS[2]: 10.64.102.209
IP6.ADDRESS[1]: fe80::20c:29ff:fedf:394e/64
IP6.GATEWAY:
GENERAL.DEVICE: lo
GENERAL.TYPE: loopback
GENERAL.HWADDR: 00:00:00:00:00:00
GENERAL.MTU: 65536
GENERAL.STATE: 10 (unmanaged)
GENERAL.CONNECTION: —
GENERAL.CON-PATH: —
IP4.ADDRESS[1]: 127.0.0.1/8
IP4.GATEWAY:
IP6.ADDRESS[1]: ::1/128
# 注意status和show命令顯示的信息不一樣。
4)、networking 網絡總開關
nmcli networking on 或者 off。
Linux除了提供命令行來管理網絡接口之外,還提供了圖形界面管理網絡接口:
你可以直接在命令行中輸入命令名稱打開其操作界面。
常用的有:
nmtui
system-config-network-tui
這兩個工具就不詳細介紹了~~~
其次:使用配置文件方法介紹
linux下配置網絡的方法還可以通過修改配置文件和使用nmcli命令來完成:
1. 修改配置文件:
1)、網絡接口的配置文件為:/etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME
配置文件中可以修改的項有:
DEVICE: 此配置文件應用到的設備, 應于IFACE名一致
HWADDR: MAC地址
BOOTPROTO: 激活設備地址配置協議, dhcp, static, none, bootp
NM_CONTROLLED: NM是networkmanager的縮寫; 此網卡是否接受NM控制; CentOS 6上建議為no
ONBOOT: 系統引導時是否激活此設備; yes|no
TYPE: 接口類型; Ethernet, Bridge;
UUID: 設備唯一標識
IPADDR: 指明IP地址(主地址)
NETMASK: 子網掩碼
GATWAY: 默認網關
DNS1: 第一個DNS服務器地址
DNS2:
DNS3:
USERCTL: 普通用戶是否可控制此設備; 盡量不允許
PEERDNS: 如果BOOPPROTO的值為dhcp, 是否運行dhcp服務器分配的DNS直接覆蓋配置文件的設置
2)、路由配置文件:/etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME
兩種定義方式:
1. TARGET via GW
TARGET:目標IP
GW:網關
2. 每三行定義一條路由
ADDRESS#=TARGET
NETMASK#=mask
GATEWAY#=GW
注:#為數字,表示第#組配置。
修改完成配置文件需要重啟網絡服務才能生效:service network restart。
原創文章,作者:chrony,如若轉載,請注明出處:http://www.www58058.com/16819