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会查看所有网络接口的信息:
开启或关闭某个网络接口:
1
2
|
[root@localhost ~]
# ifconfig eno16777736 down
[root@localhost ~]
# ifconfig eno16777736 up
|
设置IP地址:ifconfig INTERFACE IP/MASK
1
|
[root@localhost ~]
# ifconfig eno16777736 192.168.1.108/24
|
注意:这个操作会覆盖旧的IP;
启用或关闭混杂模式,用于网络监控:
ifconfig INTERFACE -promisc
ifconfig INTERFACE promisc
注意:使用ifconfig修改的内容会立即生效,但不会永久生效,若想永久生效,须修改配置文件。
2. route 路由管理命令
直接在shell中输入route命令,会显示所有路由信息:
1
2
3
4
5
|
[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添加主机路由:
1
2
3
4
5
6
7
8
9
|
[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添加网络路由:
1
2
3
4
5
6
7
8
9
10
|
[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
# 最后一条为新加;
|
添加默认路由:
1
2
3
4
5
6
7
8
9
10
11
|
[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
|
删除一条路由:
1
2
3
4
5
6
7
|
[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:查看处于监听状态的连接
常用选项组合:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
[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常用于开启或关闭某个网络接口,及显示其信息:
1
2
3
4
|
[root@localhost ~]
# ip link set dev eno16777736 up
[root@localhost ~]
# ip link show dev eno16777736
2: eno16777736:
qlen 1000 link
/ether
00:0c:29:
df
:39:4e brd ff:ff:ff:ff:ff:ff
|
ip addr常用于查看IP地址,增加IP地址,删除IP地址
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
[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:
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:
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:
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 是路由管理命令:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
[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用法差不多,请自行测试吧