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命令,會顯示所有路由信息:
[root@localhost ~]# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default 192.168.1.33 0.0.0.0 UG 100 0 0 eno16777736 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eno16777736
使用route添加主機路由:
[root@localhost ~]# route add -host 192.168.1.3 gw 192.168.1.33 dev eno16777736 # -host:添加主機路由;gw:gatway;eno16777736:網絡接口名; [root@localhost ~]# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default 192.168.1.33 0.0.0.0 UG 100 0 0 eno16777736 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eno16777736 192.168.1.3 192.168.1.33 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 Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default 192.168.1.33 0.0.0.0 UG 100 0 0 eno16777736 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eno16777736 192.168.1.3 192.168.1.33 255.255.255.255 UGH 0 0 0 eno16777736 198.162.2.0 192.168.1.33 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 Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default 192.168.1.1 0.0.0.0 UG 0 0 0 eno16777736 # 上一條為新加; default 192.168.1.33 0.0.0.0 UG 100 0 0 eno16777736 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eno16777736 192.168.1.3 192.168.1.33 255.255.255.255 UGH 0 0 0 eno16777736 198.162.2.0 192.168.1.33 255.255.255.0 UG 0 0 0 eno16777736
刪除一條路由:
[root@localhost ~]# route del -host 192.168.1.3 [root@localhost ~]# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default 192.168.1.33 0.0.0.0 UG 100 0 0 eno16777736 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eno16777736 198.162.2.0 192.168.1.33 255.255.255.0 UG 0 0 0 eno16777736
注意: route命令修改的內容也是臨時有效,重啟失效。
3. netstat命令
netstat命令用于查看網絡狀態,常用選項有:
-t: 查看tcp連接
-u:查看udp連接
-n:以數字方式查看端口和IP
-a:顯示所有狀態
-l:查看處于監聽狀態的連接
常用選項組合:
[root@localhost ~]# netstat -tan 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 0 192.168.1.105:22 192.168.1.104:49415 ESTABLISHED tcp 0 52 192.168.1.105:22 192.168.1.104:54643 ESTABLISHED tcp 0 0 192.168.1.105:22 192.168.1.104:54637 ESTABLISHED tcp 0 0 192.168.1.105:22 192.168.1.104:54499 ESTABLISHED tcp6 0 0 :::80 :::* LISTEN tcp6 0 0 :::22 :::* LISTEN tcp6 0 0 ::1:25 :::* LISTEN [root@localhost ~]# netstat -tnl Active Internet connections (only servers) 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 tcp6 0 0 :::80 :::* LISTEN tcp6 0 0 :::22 :::* LISTEN tcp6 0 0 ::1:25 :::* LISTEN [root@localhost ~]# netstat -uan Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State udp 0 0 0.0.0.0:68 0.0.0.0:* udp 0 0 0.0.0.0:123 0.0.0.0:* udp 0 0 127.0.0.1:323 0.0.0.0:* udp 0 0 0.0.0.0:35178 0.0.0.0:* udp6 0 0 :::123 :::* udp6 0 0 :::21826 :::* udp6 0 0 ::1:323 :::* [root@localhost ~]# netstat -unl Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State udp 0 0 0.0.0.0:68 0.0.0.0:* udp 0 0 0.0.0.0:123 0.0.0.0:* udp 0 0 127.0.0.1:323 0.0.0.0:* udp 0 0 0.0.0.0:35178 0.0.0.0:* udp6 0 0 :::123 :::* udp6 0 0 :::21826 :::* udp6 0 0 ::1:323 :::*
4. ip命令的使用方法:
ip [ OPTIONS ] OBJECT { COMMAND | help }
常用的OBJECT有:link,addr,route;
每個OBJECT對應不同的COMMAND;
可以對每個OBJECT查看其man手冊,也可以查看其幫助:
eg:man ip link;
ip link help;
ip link常用于開啟或關閉某個網絡接口,及顯示其信息:
[root@localhost ~]# ip link set dev 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 addr add 192.168.1.108/24 dev eno16777736. # 添加一個IP用于測試;添加完成后本機有2個IP地址; [root@localhost ~]# ip route add 192.168.1.111 via 192.168.1.33 src 192.168.1.108 # 指定新加的主機路由的源IP是本機新加的IP; # 此為ip route add的第二種格式,最后加上了src參數; [root@localhost ~]# ip route replace 192.168.1.109 via 192.168.1.33 src 192.168.1.105 # 修改一個路由信息; [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
ss與netstat用法差不多,請自行測試吧。
(后面超過字數限制,轉接Linux下的網絡配置方法(二)。)
原創文章,作者:Jacen,如若轉載,請注明出處:http://www.www58058.com/9928
介紹的很詳細,專業,贊