一、route 使用
route 命令用于显示和操作IP路由表
执行 route 命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失效了
IP地址与掩码做按位与,可以得到网络号
路由表,根据配置文件 IPADDR 和 NETMAS,生成的自己的局域网路由条目;根据配置文件 GATEWAY,生成默认网关条目
路由表 用来支持下一跳的
1.命令
route [add|del] [-net|-host] target [netmask] [gw] [[dev] If]
其中:
- add : 添加一条路由规则
- del : 删除一条路由规则
- -net : 目的地址是一个网络
- -host : 目的地址是一个主机
- target : 目的网络或主机
- netmask : 目的地址的网络掩码
- gw : 路由数据包通过的网关
- dev : 为路由指定的网络接口
2.显示路由表
route -n
route 命令的输出项说明
- Destination 目标网段或者主机
- Gateway 网关地址
- Genmask 网络掩码
- Flags 标记。一些可能的标记如下:
U — 路由是活动的
H — 目标是一个主机
G — 路由指向网关
R — 恢复动态路由产生的表项
D — 由路由的后台程序动态地安装
M — 由路由的后台程序修改
! — 拒绝路由 - Iface 该路由表项对应的输出接口
结果:
/ # ifconfig
eth0 Link encap:Ethernet HWaddr 02:42:AC:11:00:02
inet addr:172.17.0.2 Bcast:172.17.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:35 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:4416 (4.3 KiB) TX bytes:0 (0.0 B)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
/ # route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.17.0.1 0.0.0.0 UG 0 0 0 eth0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
Destination 为 0.0.0.0,表示没有明确制定的意思,即默认路由。路由匹配会按照掩码长度由长到短开始匹配。所以,一般默认路由的目标子网掩码为 0.0.0.0,表示最后才匹配的意思。同时 Flags 中的 G 标志,表示使用路由。
Gateway 为 0.0.0.0,表示没有,无效的意思。即,本条路由不经网关。换句话说,命中网关是 0.0.0.0 的报文,它的目标是可能是同一网络下的其它目标地址。这时候走的是二层直连,需要发起 ARP 请求换取 MAC 地址进行发送。
3.添加主机路由
route add -host 192.168.1.2 dev eth0
route add -host 192.168.1.3 gw 172.17.0.1
对于主机路由可以不用指定netmask,因为其默认是255.255.255.255
而网关不指定的话,则默认为0.0.0.0
4.删除主机路由
route del -host 192.168.1.2
route del -host 192.168.1.3
5.添加网络路由
route add -net 192.168.3.0 netmask 255.255.255.0 dev eth0
route add -net 192.168.4.0 netmask 255.255.255.0 gw 172.17.0.1
6.删除网络路由
route del -net 192.168.3.0 netmask 255.255.255.0
route del -net 192.168.4.0 netmask 255.255.255.0 gw 172.17.0.1
7.添加默认网关
route add default gw 172.17.0.1
8.删除默认网关
route del default gw 172.17.0.1
9.添加拒绝路由
route add -host 192.168.5.1 reject
route add -net 192.168.6.0 netmask 255.255.255.0 reject
10.删除拒绝路由
route del -host 192.168.5.1 reject
route del -net 192.168.6.0 netmask 255.255.255.0 reject
结果:
/ # route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.17.0.1 0.0.0.0 UG 0 0 0 eth0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
192.168.1.2 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
192.168.1.3 172.17.0.1 255.255.255.255 UGH 0 0 0 eth0
192.168.3.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.4.0 172.17.0.1 255.255.255.0 UG 0 0 0 eth0
192.168.5.1 0.0.0.0 255.255.255.255 !H 0 0 0 *
192.168.6.0 0.0.0.0 255.255.255.0 ! 0 0 0 *
二、traceroute 使用
traceroute 指令让你追踪网络数据包的路由途径,预设数据包大小是 40Byte
安装 traceroute:
apt-get install inetutils-traceroute
# traceroute www.baidu.com
traceroute to www.a.shifen.com (180.101.50.242), 64 hops max
1 172.17.0.1 0.009ms 0.008ms 0.014ms
2 192.168.1.1 8.497ms 1.945ms 2.558ms
3 192.168.0.1 2.644ms 4.299ms 5.390ms
4 192.168.1.1 2.927ms 2.886ms 2.482ms
5 115.205.64.1 18.101ms 7.742ms 29.013ms
6 * * *
三、nmcli 使用
nmcli 命令赋予你直接在 Linux 命令行操作 NetworkManager 工具的能力
安装 nmcli:
apt install network-manager
检查设备状态:
zxm@zxm-pc:~$ nmcli device status
DEVICE TYPE STATE CONNECTION
wlp1s0 wifi 已连接 danger_wifi 1
docker0 bridge 已连接 docker0
显示设备详情:
zxm@zxm-pc:~$ nmcli device show wlp1s0
GENERAL.DEVICE: wlp1s0
GENERAL.TYPE: wifi
GENERAL.HWADDR: E4:AA:EA:D0:1C:99
GENERAL.MTU: 1500
GENERAL.STATE: 100(已连接)
GENERAL.CONNECTION: danger_wifi 1
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/8
IP4.ADDRESS[1]: 192.168.1.105/24
IP4.GATEWAY: 192.168.1.1
IP4.ROUTE[1]: dst = 0.0.0.0/0, nh = 192.168.1.1, mt = 600
IP4.ROUTE[2]: dst = 192.168.1.0/24, nh = 0.0.0.0, mt = 600
IP4.ROUTE[3]: dst = 169.254.0.0/16, nh = 0.0.0.0, mt = 1000
IP4.DNS[1]: 192.168.0.1
IP4.DNS[2]: 192.168.1.1
IP6.ADDRESS[1]: fe80::d23:93de:8e39:5146/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 600
四、IP、Netmask、Gateway
1.IP
IP地址的长度为32位(共有2^32个IP地址),分为4段,每段8位,用十进制数字表示,每段数字范围为0~255,段与段之间用句点隔开。
IP地址可分两部分组成,一部分为网络地址,另一部分为主机地址。
IP地址有:
A类 10.0.0.0--10.255.255.255
B类 172.16.0.0--172.31.255.255
C类 192.168.0.0--192.168.255.255
网络号是网段中的第一个地址, 广播地址是网段中的最后一个地址,这两个地址是不能配置在计算机主机上的。
主机号全为1时表示该网络 广播地址,全为0时表示该网络的 网络号。
例如在192.168.0.0,255.255.255.0这样的 网段中,网络号是192.168.0.0, 广播地址是192.168.0.255。
主机地址就只有192.168.0.1至192.168.0.254可以配置在计算机上了。
2.Netmask
子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成 网络地址和 主机地址两部分。
子网掩码的长度也是32位,左边是网络位,用 二进制数字“1”表示,1的数目等于网络位的长度;右边是主机位,用二进制数字“0”表示,0的数目等于主机位的长度。
对于A类地址来说,默认的子网掩码是255.0.0.0;
对于B类地址来说默认的子网掩码是255. 255.0.0;
对于C类地址来说默认的子网掩码是255.255.255.0。
3.Gateway
网关(Gateway)就是一个网络连接到另一个网络的“关口”。
一个用于 TCP/IP 协议的 配置项,是一个可直接到达的 IP 路由器的 IP 地址。
默认 网关的意思是一台 主机如果找不到可用的网关,就把 数据包发给默认指定的 网关,由这个网关来处理数据包。
现在 主机使用的网关,一般指的是默认网关。
比如有网络A和网络B,网络A的IP 地址范围为 "192.168.1.1~192. 168.1.254", 子网掩码为 255.255.255.0;网络B的IP地址范围为 “192.168.2.1~192.168.2.254”,子网掩码为 255.255.255.0。在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的,即使是两个网络连接在同一台 交换机(或 集线器)上,TCP/IP协议也会根据子网掩码(255.255.255.0)判定两个网络中的 主机处在不同的网络里。而要实现这两个网络之间的通信,则必须通过 网关。
如果网络A中的 主机发现 数据包的目的主机不在本地网络中,就把数据包转发给它自己的 网关,再由 网关转发给网络B的 网关,网络B的网关再转发给网络B的某个主机。
网关的IP地址是具有 路由功能的设备的IP地址,具有路由功能的设备有 路由器、启用了 路由协议的服务器(实质上相当于一台路由器)、 代理服务器(也相当于一台路由器)。
如果没有匹配就使用 default(0.0.0.0)。