Linux命令 网络管理

10. 网络管理

10.1 ifconfig

 Linux ifconfig命令用于显示或设置网络设备。ifconfig可设置网络设备的状态,或是显示目前的设置。

ifconfig [网络设备][down up -allmulti -arp -promisc][add<地址>][del<地址>][<hw<网络设备类型><硬件地址>][io_addr<I/O地址>][irq<IRQ地址>][media<网络媒介类型>][mem_start<内存地址>][metric<数目>][mtu<字节>][netmask<子网掩码>][tunnel<地址>][-broadcast<地址>][-pointopoint<地址>][IP地址]

  • add<地址> 设置网络设备IPv6的IP地址。
  • del<地址> 删除网络设备IPv6的IP地址。
  • down 关闭指定的网络设备。
  • hw<网络设备类型><硬件地址> 设置网络设备的类型与硬件地址。
  • io_addr 设置网络设备的I/O地址。
  • irq 设置网络设备的IRQ。
  • media<网络媒介类型> 设置网络设备的媒介类型。
  • mem_start<内存地址> 设置网络设备在主内存所占用的起始地址。
  • metric<数目> 指定在计算数据包的转送次数时,所要加上的数目。
  • mtu<字节> 设置网络设备的MTU。
  • netmask<子网掩码> 设置网络设备的子网掩码。
  • tunnel<地址> 建立IPv4与IPv6之间的隧道通信地址。
  • up 启动指定的网络设备。
  • broadcast<地址> 将要送往指定地址的数据包当成广播数据包来处理。
  • pointopoint<地址> 与指定地址的网络设备建立直接连线,此模式具有保密功能。
  • promisc 关闭或启动指定网络设备的promiscuous模式。
  • IP地址 指定网络设备的IP地址。
  • 网络设备 指定网络设备的名称。

案例

显示所有网卡信息
[root@master01 ~]# ifconfig
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450
        inet 172.17.7.1  netmask 255.255.255.0  broadcast 172.17.7.255
        inet6 fe80::42:eeff:fe6d:570b  prefixlen 64  scopeid 0x20<link>
        ether 02:42:ee:6d:57:0b  txqueuelen 0  (Ethernet)
        RX packets 45  bytes 4919 (4.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 62  bytes 4736 (4.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.5.100  netmask 255.255.255.0  broadcast 192.168.5.255
        inet6 fe80::56d2:664e:e6f6:82db  prefixlen 64  scopeid 0x20<link>
        ether 0c:54:a5:01:7c:5b  txqueuelen 1000  (Ethernet)
        RX packets 15724030  bytes 3085207447 (2.8 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 16417165  bytes 3228395397 (3.0 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

flannel.1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450
        inet 172.17.7.0  netmask 255.255.255.255  broadcast 0.0.0.0
        inet6 fe80::ec2e:1dff:fea3:e33e  prefixlen 64  scopeid 0x20<link>
        ether ee:2e:1d:a3:e3:3e  txqueuelen 0  (Ethernet)
        RX packets 60  bytes 7875 (7.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 68  bytes 5195 (5.0 KiB)
        TX errors 0  dropped 8 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 14094691  bytes 3311043347 (3.0 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 14094691  bytes 3311043347 (3.0 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

veth5db34eb: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450
        inet6 fe80::e88d:90ff:fe4d:4cd6  prefixlen 64  scopeid 0x20<link>
        ether ea:8d:90:4d:4c:d6  txqueuelen 0  (Ethernet)
        RX packets 26  bytes 4079 (3.9 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 44  bytes 3364 (3.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0



显示指定网卡信息
root@leco:~# ifconfig enp3s0
enp3s0    Link encap:以太网  硬件地址 74:27:ea:b0:aa:2c  
          inet 地址:192.168.5.110  广播:192.168.5.255  掩码:255.255.255.0
          inet6 地址: fe80::7627:eaff:feb0:aa2c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  跃点数:1
          接收数据包:318562 错误:0 丢弃:0 过载:0 帧数:0
          发送数据包:219695 错误:0 丢弃:0 过载:0 载波:0
          碰撞:0 发送队列长度:1000 
          接收字节:23933588 (23.9 MB)  发送字节:243692185 (243.6 MB)

网卡开启和关闭
ifconfig eth0 down
ifconfig eth0 up

用ifconfig修改MAC地址
ifconfig eth0 down # 关闭网卡
ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE # 修改MAC地址
ifconfig eth0 up # 启动网卡
ifconfig eth1 hw ether 00:1D:1C:1D:1E # 关闭网卡并修改MAC地址 
ifconfig eth1 up # 启动网卡

配置IP地址
ifconfig eth0 192.168.1.56 # 给eth0网卡配置IP地址
ifconfig eth0 192.168.1.56 netmask 255.255.255.0 # 给eth0网卡配置IP地址,并加上子掩码
# 给eth0网卡配置IP地址,加上子掩码,加上个广播地址
ifconfig eth0 192.168.1.56 netmask 255.255.255.0 broadcast 192.168.1.255 

开启和关闭arp
ifconfig eth0 arp   # 开启
ifconfig eth0 arp   # 关闭

设置最大的传输单元
ifconfig eth0 mtu 1500 # 设置能通过的最大数据包大小为 1500 bytes

10.2 ifup

  ifup命令用于激活指定的网络接口。ifup命令会去读取/etc/sysconfig/network-scripts/目录下的相关网络接口的配置文件,并根据配置文件的内容来激活该网络接口。

ifup [网络接口]
  • 网络接口: 要激活的网络接口

激活网络接口eth0:

root@leco:~# ifup eth0

10.3 ifdown

  用法和ifup一样,只是ifdownifup用法相反。

10.4 route

  route命令用于显示和操作IP路由表。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux系统中,设置路由通常是为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的IP地址设置为Linux机器的默认路由。要注意的是,直接在命令行下执行route命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失效了;要想永久保存,可以保存到配置文件。linux默认只支持一条默认路由,当重新启动网口时,会把其他默认路由去掉,只剩下一条该网口生成的默认路由。当然可以通过route命令手动添加多条默认路由,如果多条路由一样,则选择最开始找到的路由(排在前面的路由)。

route [-CFvnee]

route [-v] [-A family] add [-net|-host] target [netmask Nm] [gw Gw] [metric N] 
      [mss M] [window W] [irtt I] [reject] [mod] [dyn] [reinstate] [[dev] If]
route [-v] [-A family] del [-net|-host] target [gw Gw] [netmask Nm] [metric N] [[dev] If]
route [-V] [--version] [-h] [--help]
选项

参数 说明
-C 显示路由缓存。
-F 显示发送信息
-v 显示详细的处理信息。
-n 不解析名字。
-ee 使用更详细的资讯来显示
-V 显示版本信息。
-net 到一个网络的路由表。
-host 到一个主机的路由表。

参数

参数 说明
add 增加路由记录。
del 删除路由记录。
target 目的网络或目的主机。
gw 设置默认网关。gateway 的简写,后续接的是 IP 的数值。
mss 设置TCP的最大区块长度(MSS),单位MB。
window 指定通过路由表的TCP连接的TCP窗口大小。
dev 如果只是要指定由那一块网路卡连线出去,则使用这个设定,后面接 eth0 等。
reject 设置到指定网络为不可达,避免在连接到这个网络的地址时程序过长时间的等待,直接就知道该网络不可达。
  • 添加和删除路由
route {add | del } [-net|-host] [网域或主机] netmask [mask] [gw|dev]

增加 (add) 与删除 (del) 路由的相关参数:
 -net :表示后面接的路由为一个网域。
 -host :表示后面接的为连接到单部主机的路由。
 netmask :与网域有关,可以设定 netmask 决定网域的大小。
 gw :gateway 的简写,后续接的是 IP 的数值,与 dev 不同。
 dev :如果只是要指定由那一块网路卡连线出去,则使用这个设定,后面接 eth0 等
  • 查询路由信息
route -nee

(a) -n:不要使用通讯协定或主机名称,直接使用 IP 或 port number。
(b) -ee:使用更详细的资讯来显示。
  • 添加/删除默认网关路由
route {add | del } default gw {IP-ADDRESS} {INTERFACE-NAME}

(a) IP-ADDRESS:用于指定路由器(网关)的IP地址。
(b) INTERFACE-NAME:用于指定接口名称,如eth0。

例1:route add default gw 192.168.1.1 eth0
例2:route del default gw 192.168.1.1 eth0
  • 添加/删除到指定网络的路由规则
route {add | del } -net {NETWORK-ADDRESS} netmask {NETMASK} dev {INTERFACE-NAME}

(a) NETWORK-ADDRESS:用于指定网络地址。
(b) NETMASK:用于指定子网掩码。
(c) INTERFACE-NAME:用于指定接口名称,如eth0。


例1:route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0
例2:route del -net 192.168.1.0 netmask 255.255.255.0 dev eth0
  • 添加/删除路由到指定网络为不可达
设置到指定网络为不可达,避免在连接到这个网络的地址时程序过长时间的等待,直接就知道该网络不可达。

route {add | del } -net {NETWORK-ADDRESS} netmask {NETMASK} reject

(a) NETWORK-ADDRESS:用于指定网络地址。
(b) NETMASK:用于指定子网掩码。


例1:route add -net 10.0.0.0 netmask 255.0.0.0 reject
例2:route del -net 10.0.0.0 netmask 255.0.0.0 reject
  • 查看路由信息
root@ubuntu:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.144.2   0.0.0.0         UG    100    0        0 ens33
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 ens33
192.168.144.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33

route命令输出的路由表字段含义如下:

字段 说明
Destination 目标网络或目标主机。Destination 为 default(0.0.0.0)时,表示这个是默认网关,所有数据都发到这个网关。
Gateway 网关地址,0.0.0.0 表示当前记录对应的 Destination 跟本机在同一个网段,通信时不需要经过网关。如果没有就显示星号(*)。
Genmask Destination 字段的网络掩码,Destination 是主机时需要设为 255.255.255.255,是默认路由时会设置为 0.0.0.0
Flags 标记
● U 该路由可以使用。
● H 该路由是到一个主机,也就是说,目的地址是一个完整的主机地址。如果没有设置该标志,说明该路由是到一个网络,而目的地址是一个网络地址:一个网络号,或者网络号与子网号的组合。
● G 该路由是到一个网关(路由器)。如果没有设置该标志,说明目的地 是直接相连的。● R 恢复动态路由产生的表项。
● D 该路由是由改变路由(redirect)报文创建的。
● M 该路由已被改变路由报文修改。
● ! 这个路由将不会被接受。
Metric 路由距离,到达指定网络所需的中转数,是大型局域网和广域网设置所必需的。
Ref 路由项引用次数 。
Use 此路由项被路由软件查找的次数。
Iface 网卡名字,例如 eth0。

  案例: 默认路由

  我们通过路由表可以知道有两条相同默认路由可以选择,由于先找到192.168.144.2 网关路由,所以最后选择了192.168.144.2 网关.

查看默认路由
root@ubuntu:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.144.2   0.0.0.0         UG    100    0        0 ens33
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 ens33
192.168.144.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33
root@ubuntu:~# traceroute www.baidu.com
traceroute to www.baidu.com (180.101.49.12), 30 hops max, 60 byte packets
 1  _gateway (192.168.144.2)  1.451 ms  1.332 ms  1.157 ms
 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  * * *

  删除原先路由,重新添加路由

路由
root@ubuntu:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.144.2   0.0.0.0         UG    100    0        0 ens33
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 ens33
192.168.144.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33
root@ubuntu:~# route del default gw 192.168.144.2
root@ubuntu:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 ens33
192.168.144.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33
root@ubuntu:~# ping -c1 www.baidu.com
connect: Network is unreachable
root@ubuntu:~# route add default gw 192.168.144.2
root@ubuntu:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.144.2   0.0.0.0         UG    0      0        0 ens33
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 ens33
192.168.144.0   0.0.0.0         255.255.255.0   U     100    0        0 ens33
root@ubuntu:~# ping -c1 www.baidu.com
PING www.a.shifen.com (180.101.49.11) 56(84) bytes of data.
64 bytes from 180.101.49.11 (180.101.49.11): icmp_seq=1 ttl=128 time=4.36 ms

--- www.a.shifen.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 4.362/4.362/4.362/0.000 ms

10.5 arp

  arp指令用来管理系统的arp缓冲区,可以显示、删除、添加静态mac地址。ARP以各种方式操纵内核的ARP缓存。主要选项是清除地址映射项并手动设置。为了调试目的,ARP程序还允许对ARP缓存进行完全转储。

选项 说明
--help 显示帮助文档
--version 显示命令版本
-H type
--hw-type**type
-t** type
在设置或读取ARP缓存时,这个可选参数告诉ARP应该检查哪类条目。
此参数的默认值为**ether**(即IEEE 802.3 10 Mbps以太网的硬件代码0x01)。
其他可能的值有,如**ARCnet**(Arcnet)、PROnet(PRINET)、AX.25(Axis 25)和**Net/ROM**(Netrom)。
-a[hostname] | --all [hostname] 显示本机的arp缓冲区内容
-d**hostname
--delete**hostname
从缓冲区删除指定的地址类型
-D | -use-device 使用指定接口的mac地址
-e 使用Linux风格显示
-i if | --device if 显示指定设备的arp缓冲区
**-s**hostnamehw_addr 设置指定主机的mac地址映射
-f filename
--file filename
类似于-s选项,只是这次地址信息是从filename设置的。
数据文件的名称通常是“/etc/ether”,但这不是正式的。
如果没有指定文件名“/etc/ether”作为默认值。
该文件的格式很简单;
它只包含带有硬件地址和由空格分隔的主机名的ASCII文本行。
此外,还可以使用**pub**、**temp**和**netmask**标志。
-n | --numeric 使用数字方式显示
-v | --verbose 显示执行过程

在所有需要主机名的地方,人们也可以用虚线小数点表示法输入IP地址。作为兼容性的特例,主机名和硬件地址的顺序可以交换。ARP缓存中的每个完整条目都将被标记为C标志。永久条目用M标记,已发布的条目带有P标志。

添加静态映射

root@ubuntu:~# arp -a
? (192.168.144.254) at 00:50:56:e4:d0:a0 [ether] on ens33
? (192.168.144.1) at 00:50:56:c0:00:08 [ether] on ens33
_gateway (192.168.144.2) at 00:50:56:e9:19:24 [ether] on ens33

root@ubuntu:~# arp -i ens33 -s 192.168.5.10 ff:ee:ee:ee:ee:ee 
root@ubuntu:~# arp -a
? (192.168.144.254) at 00:50:56:e4:d0:a0 [ether] on ens33
? (192.168.144.1) at 00:50:56:c0:00:08 [ether] on ens33
? (192.168.5.10) at ff:ee:ee:ee:ee:ee [ether] PERM on ens33
_gateway (192.168.144.2) at 00:50:56:e9:19:24 [ether] on ens33

root@ubuntu:~# arp -vn
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.144.254          ether   00:50:56:e4:d0:a0   C                     ens33
192.168.144.1            ether   00:50:56:c0:00:08   C                     ens33
192.168.5.10             ether   ff:ee:ee:ee:ee:ee   CM                    ens33
192.168.144.2            ether   00:50:56:e9:19:24   C                     ens33
Entries: 4  Skipped: 0  Found: 4

root@ubuntu:~# arp -e
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.5.11             ether   ff:ee:ee:ee:ee:e1   CM                    ens33
192.168.144.254          ether   00:50:56:e4:d0:a0   C                     ens33
192.168.144.1            ether   00:50:56:c0:00:08   C                     ens33
192.168.5.12             ether   ff:ee:ee:ee:ee:e2   CM                    ens33
192.168.5.10             ether   ff:ee:ee:ee:ee:ee   CM                    ens33
_gateway                 ether   00:50:56:e9:19:24   C                     ens33


删除某个arp
root@leco:~# arp -a
? (192.168.5.55) 位于 f8:bc:12:a8:41:f9 [ether] 在 enp3s0
? (192.168.5.1) 位于 00:1c:54:57:84:9e [ether] 在 enp3s0
? (192.168.5.108) 位于 74:27:ea:5f:72:e4 [ether] 在 enp3s0
root@leco:~# arp -d 192.168.5.108
root@leco:~# arp -a
? (192.168.5.55) 位于 f8:bc:12:a8:41:f9 [ether] 在 enp3s0
? (192.168.5.1) 位于 00:1c:54:57:84:9e [ether] 在 enp3s0

清空arp表
root@leco:~# arp -n|awk '/^[1-9]/{print "arp -d  " $1}'|sh -x
+ arp -d 192.168.5.55
+ arp -d 192.168.5.1
root@leco:~# arp -a
? (192.168.5.1) 位于 00:1c:54:57:84:9e [ether] 在 enp3s0

10.6 ip

10.7 netstat

10.8 ss

10.9 ping

10.10 traceroute

10.11 arpinp

10.12 telnet

10.13 nc

10.14 ssh

10.15 wget

10.16 mailq

10.17 mail

10.18 nslookup

10.19 dig

10.20 nmap

10.21 tcpdump