作为一项研究,我使用 VirtualBox 和 Debian 8 来学习桥接模式下接口的网络基础知识。
我在以下位置停用了dhcp
网络接口:eth0
/etc/network/interfaces
# ...
# iface eth0 inet manual
现在我正在自己配置界面:
# ifconfig eth0 192.168.0.99/24
然后,我测试了我的网关(192.168.0.1),ping
它工作得很好。
然后我将默认网关添加到我的路由表中:
# route add default gateway 192.168.0.1 netmask 255.255.255.0 dev eth0
经过一些测试、下载等后,我发现一切正常。
然后决定学习如何删除路由并使用我的默认网关进行测试。有用。
这是我的问题
在尝试使用上面的同一行再次添加我的网关后,我得到了“SIOCADDRT:网络无法访问“ 错误。
我试图解决什么问题?
ifdown
和ifup
我的界面;ifconfig
使用;重新配置接口- 重新启动
networking
守护进程。
唯一有效的是重新启动机器。
有没有办法在不需要重新启动机器的情况下再次添加我的路线?
答案1
我已在我自己的服务器上重现了您的问题
需要注意的重要一点是,无需添加到网络的路由,因为接口配置会为您完成此操作。即使您需要永久进行此更改,您也可以将其放在 /etc/network/interfaces 中,并使用“gateway”选项指定您的网络的网关。这样您甚至不必为您的网络添加默认的 gw 路由。
设置:家庭 PC -> 添加静态 IP 192.169.3.2 目标是从连接在同一交换机上的服务器到达该 IP(虚拟交换机或物理交换机相同)
服务器初始配置
root@raspberrypi:~# ifconfig -a
eth0 Link encap:Ethernet HWaddr b8:27:eb:fd:73:1b
inet addr:192.169.1.2 Bcast:192.169.1.255 Mask:255.255.255.0
inet6 addr: fe80::d89e:52c:aa96:d2b5/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3883499 errors:0 dropped:46 overruns:0 frame:0
TX packets:5939416 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:580337982 (553.4 MiB) TX bytes:1486713518 (1.3 GiB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:370 errors:0 dropped:0 overruns:0 frame:0
TX packets:370 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:29124 (28.4 KiB) TX bytes:29124 (28.4 KiB)
root@raspberrypi:~# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
link-local * 255.255.0.0 U 202 0 0 eth0
192.169.1.0 * 255.255.255.0 U 0 0 0 eth0
我现在将创建一个接口来获取电脑IP(192.169.3.2)
接口创建和验证
root@raspberrypi:~# ifconfig eth0:1 192.169.3.5/24
root@raspberrypi:~# ifconfig eth0:1
eth0:1 Link encap:Ethernet HWaddr b8:27:eb:fd:73:1b
inet addr:192.169.3.5 Bcast:192.169.3.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
在不添加任何路由的情况下 Ping 我的家庭电脑
root@raspberrypi:~# ping 192.169.3.2
PING 192.169.3.2 (192.169.3.2) 56(84) bytes of data.
64 bytes from 192.169.3.2: icmp_seq=1 ttl=128 time=32.3 ms
64 bytes from 192.169.3.2: icmp_seq=2 ttl=128 time=2.95 ms
^C
--- 192.169.3.2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 2.956/17.642/32.329/14.687 ms
检查实际路由表
root@raspberrypi:~# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
link-local * 255.255.0.0 U 202 0 0 eth0
192.169.1.0 * 255.255.255.0 U 0 0 0 eth0
192.169.3.0 * 255.255.255.0 U 0 0 0 eth0
正如您所看到的,通过接口 eth0 的路由 192.169.3.0/24 已自动添加到路由表中,如果我删除该路由,我将无法访问该网络,也无法通过该网络添加默认路由
删除路由并检查可达性
root@raspberrypi:~# route del -net 192.169.3.0/24 dev eth0
root@raspberrypi:~# route
root@raspberrypi:~# ping 192.169.3.2
PING 192.169.3.2 (192.169.3.2) 56(84) bytes of data.
^C
--- 192.169.3.2 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1005ms
检查接口配置
root@raspberrypi:~# ifconfig eth0:1
eth0:1 Link encap:Ethernet HWaddr b8:27:eb:fd:73:1b
inet addr:192.169.3.5 Bcast:192.169.3.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
正如你所看到的,接口配置正确,但网络无法访问,因为我已经从路由表中手动删除了该路由......所以内核不知道将包发送到哪里
检查路由表
root@raspberrypi:~# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
link-local * 255.255.0.0 U 202 0 0 eth0
192.169.1.0 * 255.255.255.0 U 0 0 0 eth0
root@raspberrypi:~#
如果我再次手动添加路由,网络将可达并且我将能够 ping 通。