您的位置:首页 > 理论基础 > 计算机网络

linux网络参数设置

2017-07-15 10:39 381 查看

0.目录

目录

网络参数设置ifcfg命令家族
1命令ifconfig用于管理IP相关属性
11 显示网卡信息

12 管理IP地址

2 命令route用于管理本地路由表
21 显示本地路由表

22 在本地路由表添加删除路由条目

3 命令netstat用于网络状态查看数据统计
31 显示路由信息

32 查看网络连接

网络参数设置iproute命令家族
1 命令ip用于管理网络参数
11 管理IP地址

12 管理网卡

13 管理本地路由表

14 管理网络名称空间

2 命令ss用于网络状态查看数据统计

网络相关的配置文件
1 网卡配置文件路径及命名
11 路径

12 网卡命名
121 传统命名

122 可预测命名机制

2 通过网卡配置文件设置网络参数

3 各网卡关于路由条目的配置文件

主机名设置

1.网络参数设置(ifcfg命令家族)

1.1命令ifconfig,用于管理IP相关属性

1.1.1 显示网卡信息

不指定任何参数默认显示所有已激活(启用)的网卡信息1,也可显示指定网卡:

[root@localhost ~]% ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:0C:29:05:75:B2                 # HWaddr为MAC地址
inet addr:192.168.0.131  Bcast:192.168.0.255  Mask:255.255.255.0      # IPv4地址、广播地址、掩码
inet6 addr: fe80::20c:29ff:fe05:75b2/64 Scope:Link            # IPv6地址
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1            # 状态、特性
RX packets:366 errors:0 dropped:0 overruns:0 frame:0          # 接收、接收错误、接收时丢失等的数据包数
TX packets:227 errors:0 dropped:0 overruns:0 carrier:0        # 发送、发送错误、发送时丢失等的数据包数
collisions:0 txqueuelen:1000
RX bytes:34937 (34.1 KiB)  TX bytes:27677 (27.0 KiB)


该网卡当前的状态、特性用大写单词显示:

字符串意义
UP已启用
BROADCAST支持广播
RUNNING正在运行
MULTICAST支持组播
MTU最大传输单元(Maximum Transmission Unit),这里指的是数据链路层最大传输单元(帧),一般是1500字节

1.1.2 管理IP地址

启用与禁用网卡eth1:

[root@localhost ~]% ifconfig eth1 down             # 禁用
[root@localhost ~]% ifconfig eth1 up               # 启用


配置网卡eth1的IP和掩码为192.168.0.0/24:

[root@localhost ~]% ifconfig eth1 192.168.0.1/24               # 使用IP后直接跟掩码的方式,掩码可写成长度24,也可写成完整的“255.255.255.0”
[root@localhost ~]% ifconfig eth1 | grep "inet addr"
inet addr:192.168.0.1  Bcast:192.168.0.255  Mask:255.255.255.0

[root@localhost ~]% ifconfig eth1 172.16.0.1 netmask 255.255.0.0   # 使用关键字netmask指定掩码,只能写成完整的,不能使用长度
[root@localhost ~]% ifconfig eth1 | grep "inet addr"
inet addr:172.16.0.1  Bcast:172.16.255.255  Mask:255.255.0.0


删除IP地址,把IP指定为“0”即可:

[root@localhost ~]% ifconfig eth1 0
[root@localhost ~]% ifconfig eth1                          # 可看到该网卡没有IPv4地址了
eth1      Link encap:Ethernet  HWaddr 00:0C:29:05:75:BC
inet6 addr: fe80::20c:29ff:fe05:75bc/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:1920 errors:0 dropped:0 overruns:0 frame:0
TX packets:15 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:531526 (519.0 KiB)  TX bytes:1962 (1.9 KiB)


此外,若需为一个网卡配置多个IP,则需使用网卡别名2,格式为“网卡名:数字”:

[root@localhost ~]% ifconfig eth1 192.168.0.100
[root@localhost ~]% ifconfig eth1:0 192.168.100.1          # 网卡eth1现在有两IP地址


1.2 命令route,用于管理本地路由表

1.2.1 显示本地路由表

不加任何参数,显示本地路由表:

[root@localhost ~]% route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.100.0   *               255.255.255.0   U     0      0        0 eth1
172.16.0.0      192.168.0.131   255.255.255.0   UG    0      0        0 eth0
192.168.0.0     *               255.255.255.0   U     0      0        0 eth0
192.168.0.0     *               255.255.255.0   U     0      0        0 eth1
link-local      *               255.255.0.0     U     1002   0        0 eth0
default         192.168.0.131   0.0.0.0         UG    0      0        0 eth0


字段意义
Destination目标地址。默认情况下,如能反解成主机名,则以主机名显示
Gateway网关(下一跳)。如果一个条目没有网关(*号),则表示目标地址与当前主机在同一网段,报文无需发至网关
Genmask掩码
Flags标记。U表示启用(up),G表示网关(Gateway)。注意网关可以有多个,默认网关只有1个。默认网关是目标地址为default(0.0.0.0)那个条目
Iface表示到达指定目标地址,由本机的哪个网卡发送报文
当条目众多时,把目标地址反解为主机名可能会消耗很多时间。所以最好使用选项“-n”使其全用数字表示:

[root@localhost ~]% route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.100.0   0.0.0.0         255.255.255.0   U     0      0        0 eth1
172.16.0.0      192.168.0.131   255.255.255.0   UG    0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0    # 169.254.X.X就是link-local
0.0.0.0         192.168.0.131   0.0.0.0         UG    0      0        0 eth0    # 0.0.0.0就是default
# 网关也由*号变为0.0.0.0


1.2.2 在本地路由表添加、删除路由条目

格式:
route add [-net|-host] target [netmask Nm] [gw Gw]  [[dev] If]


其中net、host表示添加的目标地址是主机还是某网络;dev用来指定到达目标地址的报文用本机哪个网卡发送(可不手动指定让系统默认选择)。其他都很好理解。

举两例:

添加一个路由条目,到达网络172.18.0.0/16的报文,下一跳是192.168.0.200,且由网卡eth0发出;

添加一个路由条目,到达主机192.168.80.1的报文,下一跳是192.168.0.220,且由网卡eth1发出

[root@localhost ~]% route add -net 172.18.0.0/16 gw 192.168.0.200 dev eth0
[root@localhost ~]% route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.80.1    192.168.0.220   255.255.255.255 UGH   0      0        0 eth1    # 添加的主机路由
192.168.100.0   0.0.0.0         255.255.255.0   U     0      0        0 eth1
172.16.0.0      192.168.0.131   255.255.255.0   UG    0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
172.18.0.0      192.168.0.200   255.255.0.0     UG    0      0        0 eth0    # 添加的网络路由
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
0.0.0.0         192.168.0.131   0.0.0.0         UG    0      0        0 eth0


删除路由条目格式:
route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]


参数只要能确定要删除的条目即可,未必要全列出。

比如,删除目标地址为网络192.168.0.0的路由条目:

[root@localhost ~]% route -n | grep 192.168.0.0                            # 有2个符合要求的条目
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
[root@localhost ~]% route del -net 192.168.0.0/24
[root@localhost ~]% route -n | grep 192.168.0.0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
[root@localhost ~]% route del -net 192.168.0.0/24
[root@localhost ~]% route -n | grep 192.168.0.0                            # 可以看出这个命令每次只删除1个条目,删2次才全删掉
[root@localhost ~]%
# 如只想准确的删除其中一个,应把dev指定上


默认网关的添加和删除,只需将网络路由中的参数变为0.0.0.0/0.0.0.0即可;或不再使用-net指定,直接使用default也一样。

[root@localhost ~]% route del default
[root@localhost ~]% route add default gw......


1.3 命令netstat,用于网络状态查看、数据统计

1.3.1 显示路由信息

使用该命令的“-r”选项用于显示本地路由表,效果类似直接使用命令route:

[root@localhost ~]% netstat -r -n                  # 同样使用选项“-n”显示为数字形式,否则默认反解为主机名
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.0.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U         0 0          0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
0.0.0.0         192.168.0.131   0.0.0.0         UG        0 0          0 eth0


1.3.2 查看网络连接

查看网络连接的各选项:

选项意义
–tcp或-t查看基于tcp的已建立的连接
–udp或-u查看基于udp的已建立的连接
–listening或-l查看处于监听状态的连接(比如等待访问的服务,还没有客户端与之建立连接时)
–program或-p当使用-l查看监听状态的连接时,此选项可显示发起监听的相关进程及其PID
–all或-a查看所有状态的连接
–numeric或-nIP和端口使用数字格式显示3。IP和端口默认都会反解,IP会反解为主机名,端口被反解为服务名,比如22号端口被表示为ssh
-e使用扩展格式查看。扩展格式额外显示user字段(表示哪个用户连接的),inode字段(表示当前连接对应的套接字文件的inode号)
比如,查看基于tcp的网络连接:

[root@localhost ~]% netstat -t
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 192.168.0.131:ssh           192.168.0.101:57215         ESTABLISHED


各字段意义
Proto该连接基于什么协议
Recv-Q接收队列报文数量
Send-Q发送队列报文数量
Local Address连接的本地主机的IP地址
Foreign Address连接的远端主机的IP地址及端口
State连接状态4
其他选项也可如此使用以查看对应的连接,不过更常用的是它们的一些组合,比如:

查看基于TCP(-t)或UDP(-u),且处于监听状态(-l)的服务,并显示发起监听的进程号及其PID,使用数字格式(-n)显示:

[root@localhost ~]% netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      1662/rpcbind
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1937/sshd
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      1758/cupsd
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      2039/master
tcp        0      0 0.0.0.0:53274               0.0.0.0:*                   LISTEN      1720/rpc.statd
tcp        0      0 :::45837                    :::*                        LISTEN      1720/rpc.statd
tcp        0      0 :::111                      :::*                        LISTEN      1662/rpcbind
tcp        0      0 :::22                       :::*                        LISTEN      1937/sshd
tcp        0      0 ::1:631                     :::*                        LISTEN      1758/cupsd
tcp        0      0 ::1:25                      :::*                        LISTEN      2039/master
udp        0      0 0.0.0.0:989                 0.0.0.0:*                               1662/rpcbind
udp        0      0 0.0.0.0:111                 0.0.0.0:*                               1662/rpcbind
udp        0      0 0.0.0.0:631                 0.0.0.0:*                               1758/cupsd
udp        0      0 127.0.0.1:659               0.0.0.0:*                               1720/rpc.statd
udp        0      0 0.0.0.0:68                  0.0.0.0:*                               1766/dhclient
udp        0      0 0.0.0.0:58567               0.0.0.0:*                               1720/rpc.statd
udp        0      0 :::989                      :::*                                    1662/rpcbind
udp        0      0 :::111                      :::*                                    1662/rpcbind
udp        0      0 :::58685                    :::*                                    1720/rpc.statd


常用的组合还有tan5、uan、tnl等等,可根据需要进行组合(其实大不了写全tuanlpe。。。)。

2.网络参数设置(iproute命令家族)

ifcfg命令家族很古老了,应该会被更强大的iproute命令家族逐步取代。iproute程序包包含很多工具,此处仅列出命令“ip”和“ss”。

2.1 命令ip,用于管理网络参数

格式:
ip [ OPTIONS ] OBJECT { COMMAND | help }


其选项不常用,不同OBJECT可以实现不同功能,各OBJECT有各自子命令(可使用help查看)。

各OBJECT和其子命令均可用其前若干个字母进行简写(只要能唯一识别即可)。

2.1.1 管理IP地址

addr项目用来管理地址,常用子命令:

子命令使用格式意义
show或listip addr show [dev STRING]查看所有网卡或STRING网卡的IP
addip addr add ADDR dev STRING把地址ADDR添加给设备STRING添加路由示例
delip addr del ADDR dev STRING把地址ADDR从设备STRING上删除删除路由示例
fluship addr flush [dev STRING]一次性删除所有网卡的所有IP,或一次性删除一个网卡的所有IP
各命令示例:

查看网卡eth0的IP:

[root@localhost ~]% ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:05:75:b2 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.131/24 brd 192.168.0.255 scope global eth0
inet6 fe80::20c:29ff:fe05:75b2/64 scope link
valid_lft forever preferred_lft forever


可以看到它也显示了各状态、特性(ifconfig说明过不再赘述),且有IPv4、IPv6地址。

添加IP地址192.168.10.10/24给网卡eth1:

[root@localhost ~]% ip addr add 192.168.10.10/24 dev eth1
[root@localhost ~]% ip addr show eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:05:75:bc brd ff:ff:ff:ff:ff:ff
inet 192.168.10.10/24 scope global eth1


再分别添加地址172.19.100.1/16、192.168.10.99/24给eth1:

[root@localhost ~]% ip addr add 172.19.100.1/16 dev eth1
[root@localhost ~]% ip addr add 192.168.10.99/24 dev eth1
[root@localhost ~]% ip addr show eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:05:75:bc brd ff:ff:ff:ff:ff:ff
inet 192.168.10.10/24 scope global eth1                      # 192.168.10.0网段内的主地址
inet 172.19.100.1/16 scope global eth1
inet 192.168.10.99/24 scope global secondary eth1            # 192.168.10.0网段内的备用地址


可以看到eth1有了3个地址,并且192.168.10.0网段内区分了主备地址6。先添加的为主地址。

上述是直接添加的地址,也可像命令ifconfig,为网卡的别名添加地址。意思是一样的,都是为同一网卡添加多个地址:

[root@localhost ~]% ip addr add 192.168.100.35/24 dev eth1 label eth1:0            # 使用关键字“label”来添加别名,同时添加地址
[root@localhost ~]% ip addr show eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:05:75:bc brd ff:ff:ff:ff:ff:ff
inet 192.168.10.10/24 scope global eth1
inet 172.19.100.1/16 scope global eth1
inet 192.168.100.35/24 scope global eth1:0                                  # 效果也是给这个网卡新添加了一个地址
inet 192.168.10.99/24 scope global secondary eth1


删除IP,语法同添加,关键字改为delete即可:

[root@localhost ~]% ip addr show | grep "192.168.100.35"
inet 192.168.100.35/24 scope global eth1:0
[root@localhost ~]% ip addr delete 192.168.100.35/24 dev eth1      # 从eth1删除地址192.168.100.35/24
[root@localhost ~]% ip addr show | grep "192.168.100.35"
[root@localhost ~]%


清空一个网卡的所有IP,语法同上,关键字改为flush即可:

[root@localhost ~]% ip addr show eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:05:75:bc brd ff:ff:ff:ff:ff:ff
inet 192.168.10.10/24 scope global eth1
inet 172.19.100.1/16 scope global eth1
inet 192.168.10.99/24 scope global secondary eth1
[root@localhost ~]% ip addr flush eth1
[root@localhost ~]% ip addr show eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:05:75:bc brd ff:ff:ff:ff:ff:ff                        # eth1没有任何IP了


2.1.2 管理网卡

link项目,用于管理网卡。

常用子命令子子命令意义
show显示所有网卡(包括未启用的)的属性信息(数据链路层信息,比如MAC、MTU,但不显示IP等)
setup/down用于启用、禁用网卡
multicast on/off用于启用、禁用网卡的多播功能
name重命名网卡
mtu设定mtu,默认是1500字节
netns把网卡添加至指定网络名称空间
除添加网卡至指定网络名称空间,其他都很好理解,不再演示效果。添加网卡至网络名称空间示例

2.1.3 管理本地路由表

route项目用于管理路由,各子命令:

子命令格式及意义
add7常用格式为
add [type] TARGET [dev DEVICE] via NEXT_HOP [src ADDR]
,表示添加一个路由条目,目标地址是TARGET,由网卡DEVICE发出,下一跳(即网关)是NEXT_HOP。如果该网卡有多个IP,可指明源地址使用ADDR8
delete删除路由条目,格式同add。实际使用的格式更简单,未必要列出所有参数。系统会删除一个满足所列参数的条目。
show显示路由条目。默认显示所有的,也可通过指定参数,仅显示符合所列参数的条目。
flush清空路由条目。不指定任何参数表示清空所有路由条目。
示例:

添加路由条目及需注意:

[root@localhost ~]# ip route show                                  # 查看当前所有路由条目
default via 192.168.0.131 dev eth0  proto static
[root@localhost ~]# ip route add 172.16.0.0 via 192.168.0.131
[root@localhost ~]# ip route add 172.16.0.0 via 192.168.0.131      # 由于添加内容一样,所以提示已存在
RTNETLINK answers: File exists
[root@localhost ~]# ip route add 172.16.0.0/16 via 192.168.0.131   # 但是只要加上掩码,系统就会认为不一样,虽然意义一样
[root@localhost ~]# ip route show
172.16.0.0 via 192.168.0.131 dev eth0
172.16.0.0/16 via 192.168.0.131 dev eth0                            # 被认为是两路由条目
default via 192.168.0.131 dev eth0  proto static


[root@localhost ~]# ip route add 192.168.100.1/24 via 192.168.0.131        # 如果目标地址是主机,则不能加掩码
RTNETLINK answers: Invalid argument
[root@localhost ~]# ip route add 192.168.100.1 via 192.168.0.131
[root@localhost ~]# ip route show
192.168.100.1 via 192.168.0.131 dev eth0
172.16.0.0/16 via 192.168.0.131 dev eth0  scope link
default via 192.168.0.131 dev eth0  proto static


其他子命令不再赘述。

2.1.4 管理网络名称空间

项目netns用于管理网络名称空间(此功能目前仅centos7支持)。

一个网络名称空间可看作一个主机(虚拟机),一主机上可建立多个网络名称空间。

可把当前主机上的指定网卡,移动至指定网络名称空间。通过这种方式,可以构建出复杂的虚拟网络。

netns各子命令:

子命令意义
show或list列出当前主机的所有网络名称空间
add添加网络名称空间
delete删除指定网络名称空间。如果此网络名称空间,有之前从当前主机移动至的网卡,则这些网卡又会回到本机
exec相当于“远程连接”到了网络名称空间,可在其中执行网络管理命令
示例:

添加一个网络名称空间:

[root@localhost ~]% ip netns add ns1
[root@localhost ~]% ip netns list
ns1


把网卡ens33移至网络名称空间ns1,并分别在本机和网络名称空间查看网卡设备:

[root@localhost ~]% ip link show                                           # 本机有2网卡设备
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:b7:6c:86 brd ff:ff:ff:ff:ff:ff
3: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether 00:0c:29:b7:6c:90 brd ff:ff:ff:ff:ff:ff

[root@localhost ~]% ip link set ens33 netns ns1                            # 把网卡
[root@localhost ~]% ip link show                                           # 此时查看,本机只有1个网卡了
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
3: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether 00:0c:29:b7:6c:90 brd ff:ff:ff:ff:ff:ff

[root@localhost ~]% ip netns exec ns1 ip link show                         # 此时使用netns的exec子命令,“连接”至网络命名空间ns1,并在其后直接执行网卡查看命令。可以看到其中的网卡ens33
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
2: ens33: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 1000
link/ether 00:0c:29:b7:6c:86 brd ff:ff:ff:ff:ff:ff

[root@localhost ~]% ip netns delete ns1                                    # 删除网络命名空间ns1
[root@localhost ~]% ip link show                                           # 可看到网卡ens33又回到本机
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:b7:6c:86 brd ff:ff:ff:ff:ff:ff
3: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether 00:0c:29:b7:6c:90 brd ff:ff:ff:ff:ff:ff


2.2 命令ss,用于网络状态查看、数据统计

常用选项同命令netstat,不再列出。性能优于netstat。

下面是在centos7上的显示结果。

[root@localhost ~]% ss -tanlpe
State      Recv-Q Send-Q                  Local Address:Port                                 Peer Address:Port
LISTEN     0      128                                 *:22                                              *:*                   users:(("sshd",pid=977,fd=3)) ino:17353 sk:ffff880037748000 <->
LISTEN     0      100                         127.0.0.1:25                                              *:*                   users:(("master",pid=1715,fd=13)) ino:18941 sk:ffff8800377487c0 <->
LISTEN     0      128                                :::22                                             :::*                   users:(("sshd",pid=977,fd=4)) ino:17355 sk:ffff880039ce0000 v6only:1 <->
LISTEN     0      100                               ::1:25                                             :::*                   users:(("master",pid=1715,fd=14)) ino:18942 sk:ffff880039ce0880 v6only:1 <->


此外,ss支持筛选。只需在选项后跟
state [ TCP_state ][expression]


其中TCP_state是TCP连接所处的状态,expression是一些特定条件组成的表达式。

比如:

[root@localhost ~]% ss -tanl state established                     # 仅查看TCP的状态为已建立的连接
Recv-Q Send-Q                       Local Address:Port                                      Peer Address:Port
0      52                           192.168.0.104:22                                       192.168.0.101:51339


expression的条件限定有多种,比如源端口号(sport)、目标端口号(dport)等,可在man文档中查看。

3.网络相关的配置文件

命令设置的网络参数、路由条目等都是立即生效但不是永久有效;配置文件设置的都是永久有效,但不会立即生效。

配置文件设置完成如需生效则应重启network服务,或重启主机。

3.1 网卡配置文件路径及命名

3.1.1 路径

对于红帽系列来说,系统上所有网卡的配置文件为/etc/sysconfig/network-scripts/目录下,名为ifcfg-NETWORK_NAME的文件,其中NETWORK_NAME为各网卡名,lo为本地回环。

如centos6的:

[root@localhost ~]% ls /etc/sysconfig/network-scripts/ifcfg*
/etc/sysconfig/network-scripts/ifcfg-eth0  /etc/sysconfig/network-scripts/ifcfg-lo


centos7的路径也一样,只是命名不同:

[root@localhost ~]% ls /etc/sysconfig/network-scripts/ifcfg*
/etc/sysconfig/network-scripts/ifcfg-ens33  /etc/sysconfig/network-scripts/ifcfg-lo


3.1.2 网卡命名

3.1.2.1 传统命名

传统命名:

类别命名
以太网eth#。其中“#”为数字,由0开始依次向后。
PPP网络ppp#。其中“#”为数字,由0开始依次向后。

3.1.2.2 可预测命名机制

从红帽7开始出现可预测命名机制。由网络类型、命名类型相结合。

网络类型易理解,只是和传统命名稍有不同:

网络类别命名
以太网(ethernet)en
无线局域网(wlan)wl
无线广域网(wwan)ww
分割线————————

命名类型命名
以集成设备o#。其中“#”为集成设备的设备索引号9,是由系统生成的以数字组成的字符串。
以扩展槽设备s#。其中“#”为扩展槽索引号,也是由系统生成的以数字组成的字符串。
以确定总线的扩展槽设备p#s#。p后的“#”为总线索引号;s后的“#”为扩展槽索引号。所以表示的意义是哪个总线上的哪个扩展槽设备。
以MAC地址命名x#。其中“#”为网卡的MAC地址。
上述如均无法使用,则仍使用传统命名。

系统在使用可预测机制命名时,上述规则的使用有一定的优先级,本文不关心。

比如仍以上述列出的centos7的网卡为例:

[root@localhost ~]% ls /etc/sysconfig/network-scripts/ifcfg*
/etc/sysconfig/network-scripts/ifcfg-ens33  /etc/sysconfig/network-scripts/ifcfg-lo

# ens33,表示网络类型是以太网,是扩展槽设备,索引号是33


3.2 通过网卡配置文件设置网络参数

网卡配置文件中各参数及意义:

参数意义
DEVICE设备名称。最好设置的与网卡名一致以便识别
ONBOOT系统启动时是否激活此网卡
NETBOOT是否支持网络引导
UUID设备唯一标识。由于是设备固定的标识,如不知道就不要乱指定,不设置即可
IPV6INIT是否初始化IPV6协议栈。如不使用IPV6,这项就选择“no”
BOOTPROTO系统启动时使用什么协议获取地址。可选的有dhcp、static、none等,其中static和none都表示使用静态地址。
TYPE该网卡的借口类型。可选的有Ethernet、bridge等
DNS1、DNS2、DNS3第1、2、3DNS服务器指向设置。DNS指向也可在/etc/resolv.conf10中设置
DOMAIN当前主机所在的DNS搜索域
DEFROUTE该网卡是否是默认路由使用的接口(一般不用设置)
GATEWAY默认网关
IPADDR设置IP地址
NETMASK掩码,须使用点分十进制表示。在centos7中是PREFIX,须使用长度表示。
USERCTL是否允许普通用户控制此设备
PEERDNS当BOOTPROTO为dhcp时,此选项表示是否允许dhcp服务器分配过来的dns服务器地址覆盖本地手动指定的dns服务器地址。默认是允许
NM_CONTROLLED是否允许NetworkManager服务控制网卡。centos7版本之前的NetworkManager服务不完善,此项最好选择no,并禁用NetworkManager服务,仍仅由network服务进行管理
HWADDRMAC地址。由于MAC地址是固定的,如不知道,就不要在此处乱指定,不设置即可
注意,如果配置文件中为网卡别名设置了IP地址,则BOOTPROTO只能为static或none,因为网卡别名的地址不支持动态获取,只能静态指定。

除了直接编辑配置文件外,也有专门的命令用于修改配置文件,这样可以避免在配置文件中的语法错误。centos6使用的是命令system-config-network(简化的是setup);centos7使用的是nmtui11

这两命令都是打开一个配置窗口进行设置,很简单不再赘述。

3.3 各网卡关于路由条目的配置文件

各网卡用于配置路由条目的配置文件为/etc/sysconfig/network-scripts/route-NETWORK_NAME(如没有则自行创建)。

默认路由(即默认网关)可在网卡配置文件中进行设置,所以此处的路由条目主要配置非默认路由(指定的网络路由或主机路由)。

在这些配置文件中可使用2种方式配置路由条目(但不可混用):

1、每行一个路由条目,格式为:“目标地址 via 下一跳”

2、每3行一个路由条目,格式为(#为数字用以区隔各条目):

ADDRESS#=目标地址

NETMASK#=掩码

GATEWAY#=下一跳

以第1种为例:

[root@localhost ~]% ip route show
192.168.0.0/24 dev eth0  proto kernel  scope link  src 192.168.0.131  metric 1
172.14.0.0/16 via 192.168.0.200 dev eth0  proto static
default via 192.168.0.131 dev eth0  proto static                    # 显示当前路由条目

[root@localhost ~]% ip route delete 172.14.0.0/16                  # 删除目标网络为172.14.0.0/16的路由条目
[root@localhost ~]% ip route show
192.168.0.0/24 dev eth0  proto kernel  scope link  src 192.168.0.131  metric 1
default via 192.168.0.131 dev eth0  proto static

[root@localhost ~]% cat << EOF > /etc/sysconfig/network-scripts/route-eth0     # 把目标网络为172.16.0.0/16,下一跳是192.168.0.200的路由条目添加至eth0的路由配置文件中
> 172.16.0.0/16 via 192.168.0.200
> EOF
[root@localhost ~]% service network restart                                        # 重启网络服务
Shutting down interface eth0:  Device state: 3 (disconnected)
[  OK  ]
Shutting down loopback interface:                          [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface eth0:  Active connection state: activated
Active connection path: /org/freedesktop/NetworkManager/ActiveConnection/5
[  OK  ]

[root@localhost ~]% ip route show                                              # 可看到重启后该路由条目生效
192.168.0.0/24 dev eth0  proto kernel  scope link  src 192.168.0.131  metric 1
172.16.0.0/16 via 192.168.0.200 dev eth0  proto static
default via 192.168.0.131 dev eth0  proto static


默认路由为192.168.0.131在网络服务重启后也生效了,因为笔者机器的网卡配置文件中设置的默认网关是这个,和本例无关。

4.主机名设置

这里说的主机名,只是主机的一个标示,并不是指FQDN。

命令hostname用于显示和修改主机名。

[root@localhost ~]% hostname
localhost.localdomain
[root@localhost ~]% hostname local
[root@localhost ~]% hostname
local


命令修改立即生效但不是永久有效。如需永久有效,需在配置文件/etc/sysconfig/network中编辑HOSTNAME这个变量。

在centos7中还可使用命令hostnamectl。这个命令修改结果是永久有效的(修改了配置文件)

其子命令status用于显示主机名;子命令set用于设置主机名等。

(完)

选项“-a”可显示包括未激活网卡在内的所有网卡。
实际就是同一个网卡,只是用一个别名对应一个IP而已。
也可仅把IP用数字表示,或是仅把端口用数字表示,使用选项[–numeric-hosts]、[–numeric-ports]等,具体可使用man文档查看,这个不赘述。
基于UDP的连接是没有状态的。

TCP有3次握手、4次断开,期间连接状态会随之变化。这里显示的就是当前状态。
“netstat -tan”就相当于“netstat -tn”和“netstat -tln”,因为“-a”表示所有状态,包括已建立的和处于监听状态的。
因为一个网卡不能同时使用同一网段的两地址,所以有主、备。

命令ifconfig显示的只是主地址(其他地址是通过网卡别名),而命令ip是直接显示该网卡所有地址。
命令change、replace,使用格式同add。前者表示修改已存在的路由条目;后者表示替换路由条目(如果有旧的就替换、没有就添加)。

这应该不常用,路由条目的修改和替换一般是先删除再创建即可,所以不列出了。
type为路由类型,可省是因为ip命令会自动判断是何种路由类型。如确实需指定可在man文档中查看(除了常用的主机类型、网络类型,还有其他多种类型)。

如手动指明源地址ADDR,显然它要和下一跳处于同一网段。不指明系统会使用默认。
索引号是系统如何生成的本文不述,只需了解命名规则即可。下同。
其中在nameserver后直接填写DNS服务器IP地址即可,也是可以写3个。windows的DNS指向只能写俩。
nmtui是打开一个编辑窗口设置,nmcli是使用命令行设置。nm家族命令只有centos7有。本文不述。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux 网络