linux基本网络配置(二)详解IP命令

目录

序、网络设置基本需求

0.1有哪些情况需要进行网络配置?

0.2 新上线一台服务器的步骤

0.3 与查看网络相关的命令

一、查看网络接口(网卡)信息

1.1 ip a

1.2 ip -x a

1.3 ip a(ddress) show ens37

1.4 ip -4 a show ens37

1.5 ip link ls up

1.6 ip a list ens37

二、修改网络接口(网卡)信息

2.1网卡相关

2.2路由表相关

2.3 arp表相关


序、网络设置基本需求

0.1有哪些情况需要进行网络配置?

a.上线并初始化一台新服务器时

b.在服务器上部署服务时(例如配置LVS)

c.服务器上网络变动(地址修改、路由修改、故障排查)时

  • 地址修改,如当服务器使用的三个运行商提供的网卡时
  • 故障排查,如出现丢包

 

0.2 新上线一台服务器的步骤

  • 指定唯一的ip地址与主机名
  • 确保启动时正确配置网络接口(通常会保存的静态配置文件内)。
  • 创建默认路由(例如一台服务器有可能有多个网卡,所以对于不同运营商的目的地址需要通过不同的出口出去)。
  • 指定DNS域名服务器以使设备能够连接到网络其他部分(DNS的作用:域名→IP地址)。

 

0.3 与查看网络相关的命令

  • ip 查看网络接口相关信息,yum install iproute2

  • ifconfig 显示网卡信息,yum install net-tools

 

两者的对比:

linux的ip命令和ifconfig类似,但前者功能更强大,并旨在取代后者。ifconfig是net-tools中已被废弃使用的一个命令,许多年前就已经没有维护了。iproute2套件里提供了许多增强功能的命令,ip命令即是其中之一。

linux基本网络配置(二)详解IP命令

 

一、查看网络接口(网卡)信息

1.1 ip a

查看所有网卡的接口信息。

在这里a不是选项是对象(OBJECT):address

[[email protected] ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    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: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:d2:ca:67 brd ff:ff:ff:ff:ff:ff
    inet 172.16.230.224/24 brd 172.16.230.255 scope global noprefixroute dynamic ens33
       valid_lft 82828sec preferred_lft 82828sec
    inet6 fe80::4e92:349a:6f19:ff18/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:d2:ca:71 brd ff:ff:ff:ff:ff:ff
    inet 172.16.230.251/24 brd 172.16.230.255 scope global noprefixroute dynamic ens37
       valid_lft 82828sec preferred_lft 82828sec
    inet6 fe80::3eae:dcdd:5ed8:5736/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

需要清楚的点:

1.1.1 lo是linux中的虚拟网络接口

同一台机器的不同进程进行通信时会用到。实现了同一台机器的进程之间的socket通信。虚拟网络接口不需要驱动程序。

 

1.1.2 link/ether是二层协议

mac地址:00:0c:29:d2:ca:67

广播地址:ff:ff:ff:ff:ff:ff

 

1.1.3 inet(v4)是三层协议

ip地址:172.16.230.224/24

广播地址:172.16.230.255

 

1.1.4 inet6是三层协议

ipv6地址:fe80::4e92:349a:6f19:ff18/64

 

1.2 ip -x a

只显示网络接口与ipvx相关的信息

[[email protected] Lee ~]# ip -6 a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
    inet6 fe80::4e92:349a:6f19:ff18/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
    inet6 fe80::3eae:dcdd:5ed8:5736/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[[email protected] ~]# ip -4 a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    inet 172.16.230.224/24 brd 172.16.230.255 scope global noprefixroute dynamic ens33
       valid_lft 82486sec preferred_lft 82486sec
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    inet 172.16.230.251/24 brd 172.16.230.255 scope global noprefixroute dynamic ens37
       valid_lft 82486sec preferred_lft 82486sec

 

1.3 ip a(ddress) show ens37

显示指定网卡的信息

[[email protected] ~]# ip a show ens37
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:d2:ca:71 brd ff:ff:ff:ff:ff:ff
    inet 172.16.230.251/24 brd 172.16.230.255 scope global noprefixroute dynamic ens37
       valid_lft 82450sec preferred_lft 82450sec
    inet6 fe80::3eae:dcdd:5ed8:5736/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
#更整齐
[[email protected] ~]# ifconfig ens37
ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.16.230.251  netmask 255.255.255.0  broadcast 172.16.230.255
        inet6 fe80::3eae:dcdd:5ed8:5736  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:d2:ca:71  txqueuelen 1000  (Ethernet)
        RX packets 4648  bytes 454522 (443.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 15  bytes 1410 (1.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 

1.4 ip -4 a show ens37

显示具体接口ipv4的信息

[[email protected] Lee ~]#  ip -4 a show ens37
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    inet 192.168.0.128/24 brd 192.168.0.255 scope global noprefixroute dynamic ens37
       valid_lft 5612sec preferred_lft 5612sec

 

1.5 ip link ls up

查看正在运行的接口的相关信息

ip link ls down(反之)

[[email protected] ~]# ip link ls up
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:d2:ca:67 brd ff:ff:ff:ff:ff:ff
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 00:0c:29:d2:ca:71 brd ff:ff:ff:ff:ff:ff

 

1.6 ip a list ens37

与ip a show ens37效果一样

 

二、修改网络接口(网卡)信息

2.1网卡相关

2.1.1 给某个具体接口配置,也就是给网卡配ip。(需要有IP地址和对应的掩码。)

  • ip a(ddress) add 192.168.0.128/255.255.255.0 dev ens37

  • ip a(ddress) add 192.168.0.128/24 dev ens37

  • ifconfig ens37 192.168.0.128/24

  • ifconfig ens37 192.168.0.128 netmask 255.255.255.0

 

2.1.2 删除某个网络接口(网卡)

  • ip a(ddress) del 192.168.0.129/255.255.255.0 dev ens37

 

但是重复对同一个网络接口(网卡)配置ip地址时往往不会覆盖。

[[email protected] Lee ~]# ip a add 192.168.0.129/255.255.255.0 dev ens37 
[[email protected] Lee ~]# ip a show ens37
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:d2:ca:71 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.128/24 brd 192.168.0.255 scope global noprefixroute dynamic ens37
       valid_lft 5323sec preferred_lft 5323sec
    inet 192.168.0.129/24 scope global secondary ens37
       valid_lft forever preferred_lft forever
    inet6 fe80::3eae:dcdd:5ed8:5736/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

所以需要先删除先前配置好的IP地址。(或者选择一个删除)

[[email protected] Lee ~]# ip address del 192.168.0.129/255.255.255.0 dev ens37
[[email protected] Lee ~]# ip a show ens37
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:d2:ca:71 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.128/24 brd 192.168.0.255 scope global noprefixroute dynamic ens37
       valid_lft 5263sec preferred_lft 5263sec
    inet6 fe80::3eae:dcdd:5ed8:5736/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

 

2.1.3 禁用或启用网络接口(网卡)

  • ip link set dev ens3 up

  • ip link set dev ens37 down

  • ifconfig ens37 down

  • ifconfig ens37 up

[[email protected] Lee ~]# ip link set ens37 down
[[email protected] Lee ~]# ip link ls up
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:d2:ca:67 brd ff:ff:ff:ff:ff:ff
[[email protected] Lee ~]# ip link set ens37 up
[[email protected] Lee ~]# ip link ls up       
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:d2:ca:67 brd ff:ff:ff:ff:ff:ff
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 00:0c:29:d2:ca:71 brd ff:ff:ff:ff:ff:ff

 

2.1.4 设置网卡的传输队列

ip link set txqueuelen 10000 dev ens37

[[email protected] Lee ~]# ifconfig |grep -n "txqu"
4:        ether 00:0c:29:d2:ca:67  txqueuelen 1000  (Ethernet)
13:        ether 00:0c:29:d2:ca:71  txqueuelen 1000  (Ethernet)
22:        loop  txqueuelen 1  (Local Loopback)
[[email protected] Lee ~]# ip link set txqueuelen 10000 dev ens37
[[email protected] Lee ~]# ifconfig |grep -n "txqu"
4:        ether 00:0c:29:d2:ca:67  txqueuelen 1000  (Ethernet)
13:        ether 00:0c:29:d2:ca:71  txqueuelen 10000  (Ethernet)
22:        loop  txqueuelen 1  (Local Loopback)
[[email protected] Lee ~]# ip link set txqueuelen 1000 dev ens37 

 

2.1.5 设置网卡的最大传输单元(默认是1500字节)

ip link set mtu 9000 dev ens37

修改的方式相同,不做演示

[[email protected] Lee ~]# ifconfig |grep -n "mtu" 
1:ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
10:ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
19:lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536

巨型帧:

是帧长大于1522字节的以太网帧。这是一种厂商标准的超长帧格式,专门为千兆以太网而设计。巨型帧的长度各厂商有所不同,从9000字节~64000字节不等。采用巨型帧能够令千兆以太网性能充分发挥,使数据传输效率提高50%~100%。在网络存储的应用环境中,巨型帧更具有非同寻常的意义。

 

2.2路由表相关

2.2.1 添加默认网关

ip route add 192.168.0.127 via 192.168.0.1 dev ens33

ip route add 目的网段 via 下一跳 dev 初接口

注意,这个是无法瞎设置的,生效前命令会检查网关是否可达或正确。

[[email protected] Lee ~]# ip route add 192.168.0.127 via 192.168.2.0 dev ens33 
RTNETLINK answers: Network is unreachable
[[email protected] Lee ~]# ip route add 192.168.0.127 via 192.168.0.0 dev ens33 
RTNETLINK answers: Invalid argument
[[email protected] Lee ~]# ip route add 192.168.0.127 via 192.168.0.1 dev ens33

添加了局域网的网关后我是可以ping通我的树莓派的

[[email protected] Lee ~]# ping -I ens33 myRaspberry     
PING myRaspberry (192.168.0.127) from 192.168.0.116 ens33: 56(84) bytes of data.
64 bytes from myRaspberry (192.168.0.127): icmp_seq=1 ttl=64 time=3.77 ms
64 bytes from myRaspberry (192.168.0.127): icmp_seq=2 ttl=64 time=3.92 ms
^C
--- myRaspberry ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 3.770/3.847/3.925/0.099 ms

通常还需要设置子网掩码

例如:

A主机拥有两个运营商的ip:(telecom)202.116.128.222/24,(unicom)100.10.10.10/24

B主机拥有两个运营商的ip:(telecom)100.116.128.222/24,(unicom)200.20.20.10/24

当机器有多个IP且ISP不一样,就需要有明细路由。

 

在A主机中:ip route add default via 100.10.10.1 ,这样设置的话A主机在访问telecom运营商的网络时仍然用了unicom的网关100.10.10.1,跨网访问就有可能出现高延迟和丢包等问题。

 

在A主机中:ip route add 100.116.128.0 via 202.116.128.1 ,这样设置的话A主机在访问telecom运营商的网络时就用了telecom的网关202.116.128.1,不需要进行跨网。

 

2.2.2 删除默认网关

ip route del 192.168.0.127 via 192.168.0.1 dev ens33

可以看到删除后该条明细路由就消失了。

[[email protected] Lee ~]# ip route del 192.168.0.127 via 192.168.0.1 dev ens33 
[[email protected] Lee ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    100    0        0 ens33
0.0.0.0         192.168.0.1     0.0.0.0         UG    101    0        0 ens37
192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 ens33
192.168.0.0     0.0.0.0         255.255.255.0   U     101    0        0 ens37

 

2.2.3 查看路由表

  • route -n 更友好

  • ip route show
[[email protected] Lee ~]# ip route show
default via 192.168.0.1 dev ens33 proto dhcp metric 100 
default via 192.168.0.1 dev ens37 proto dhcp metric 101 
192.168.0.0/24 dev ens33 proto kernel scope link src 192.168.0.116 metric 100 
192.168.0.0/24 dev ens37 proto kernel scope link src 192.168.0.128 metric 101 
[[email protected] ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         	172.16.230.1    0.0.0.0        	  UG    100    0        0 ens33
0.0.0.0         	172.16.230.1    0.0.0.0         	  UG    101    0        0 ens37
172.16.230.0    0.0.0.0         	255.255.255.0   U       100    0        0 ens33
172.16.230.0    0.0.0.0         	255.255.255.0   U       101    0        0 ens37

对于route -n这里各字段的说明:

Destination:目的地址

Gateway:默认网关

Genmask:目标ip对应的掩码(用于确定最精细的下一跳)

Flags:标签

Metric:开销

Use

Iface:下一跳的初接口

 

2.2.4 添加和删除具体路由

ip route add 192.168.1.0/24 dev ens33

ip route del 192.168.1.0/24 dev ens33

 

2.3 arp表相关

arp是局域网内实现ip地址到mac地址的转换。因为局域网内的端到端通信用mac地址(局域网内用二层通信)。

#linux中
[[email protected] ~]# ip neighbor show
172.16.230.233 dev ens33 lladdr 04:50:da:08:28:59 STALE
172.16.230.216 dev ens33 lladdr 9c:2e:a1:93:c8:c9 STALE
172.16.230.223 dev ens33 lladdr b8:81:98:65:be:81 DELAY
172.16.230.1 dev ens33 lladdr 00:12:7f:04:33:46 STALE
172.16.230.1 dev ens37 lladdr 00:12:7f:04:33:46 STALE

#同一网段windows中
windows中无线局域网适配器 WLAN:

   连接特定的 DNS 后缀 . . . . . . . :
   描述. . . . . . . . . . . . . . . : Intel(R) Dual Band Wireless-AC 3165
   物理地址. . . . . . . . . . . . . : B8-81-98-65-BE-81
   DHCP 已启用 . . . . . . . . . . . : 是
   自动配置已启用. . . . . . . . . . : 是
   本地链接 IPv6 地址. . . . . . . . : fe80::1cd5:52f7:7452:3394%4(首选)
   IPv4 地址 . . . . . . . . . . . . : 172.16.230.223(首选)
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   获得租约的时间  . . . . . . . . . : 2019年1月12日 14:25:15
   租约过期的时间  . . . . . . . . . : 2019年1月13日 15:17:21
   默认网关. . . . . . . . . . . . . : 172.16.230.1
   DHCP 服务器 . . . . . . . . . . . : 172.16.230.1
   DHCPv6 IAID . . . . . . . . . . . : 62423448
   DHCPv6 客户端 DUID  . . . . . . . : 00-01-00-01-1F-02-98-D9-C8-5B-76-23-D2-6C
   DNS 服务器  . . . . . . . . . . . : 114.114.114.114
   TCPIP 上的 NetBIOS  . . . . . . . : 已启用

 

2.3.1 查看arp表信息

ip neighbor show

[[email protected] Lee ~]# ip neighbor show
192.168.0.127 dev ens33 lladdr b8:27:eb:c0:fa:23 STALE
192.168.0.103 dev ens33 lladdr 78:67:d7:9c:19:85 STALE
192.168.0.1 dev ens33 lladdr f4:83:cd:17:cb:49 DELAY
192.168.0.127 dev ens37 lladdr b8:27:eb:c0:fa:23 STALE
192.168.0.109 dev ens33 lladdr b8:81:98:65:be:81 DELAY

是查看arp表缓存中已有的ip地址和mac地址对应的信息。

而不是发请求广播请求获取mac地址。

 

2.3.2 看具体接口下的arp缓存条目

ip neighbor show dev ens33

 

2.3.3 看具体某个网段的arp缓存条目

ip neighbor show 192.168.0.0/24

[[email protected] Lee ~]# ip neighbor show 192.168.0.0/24
192.168.0.127 dev ens33 lladdr b8:27:eb:c0:fa:23 STALE
192.168.0.103 dev ens33 lladdr 78:67:d7:9c:19:85 STALE
192.168.0.1 dev ens33 lladdr f4:83:cd:17:cb:49 STALE
192.168.0.127 dev ens37 lladdr b8:27:eb:c0:fa:23 STALE
192.168.0.109 dev ens33 lladdr b8:81:98:65:be:81 REACHABLE

 

2.3.4 在arp缓存中写一个永久的他条目

ip neighbor add 192.168.0.0/24 lladdr 00:c0:7d:00:c8 dev ens37 nud permanent

ip neighbor add 192.168.0.0/24 lladdr mac地址 dev 对应接口 nud 是否永久

  • 需要注意的是,在写入同一目标网段对应的mac地址信息时不是覆盖式的

  • 所以需要先删除或者用ip neighbor change命令

  • 删除指的是对应的mac地址删掉,ip地址还在

 

2.3.5 添加arp代理

ip neighbor add proxy 192.168.0.1 dev ens37

http://blog.51cto.com/chenxinjie/1961255

 

2.3.6 arp刷新

若发现缓存被污染或不正确了

ip neighbor flush dev ens33

刷新前:

[[email protected] Lee ~]# ip neighbor show
192.168.0.127 dev ens33 lladdr b8:27:eb:c0:fa:23 STALE
192.168.0.103 dev ens33 lladdr 78:67:d7:9c:19:85 STALE
192.168.0.1 dev ens33 lladdr f4:83:cd:17:cb:49 DELAY
192.168.0.127 dev ens37 lladdr b8:27:eb:c0:fa:23 STALE
192.168.0.109 dev ens33 lladdr b8:81:98:65:be:81 DELAY

刷新后:

mac地址就没有了,需要重新学习

[[email protected] Lee ~]# ip neighbor show 
192.168.0.127 dev ens33  FAILED
192.168.0.103 dev ens33  FAILED
192.168.0.1 dev ens33  FAILED
192.168.0.127 dev ens37 lladdr b8:27:eb:c0:fa:23 STALE
192.168.0.109 dev ens33 lladdr b8:81:98:65:be:81 REACHABLE