桥接连接:Ubuntu 不断修改路由表

桥接连接:Ubuntu 不断修改路由表

我已经建立了一个桥接连接,从通过 USB 连接到运行 Ubuntu 12.04 的笔记本电脑的手机到通过以太网电缆连接的另一台计算机。因此,桥接连接了usb0eth0我通过在笔记本电脑上输入以下命令来设置它:

$ ifconfig usb0 0.0.0.0 promisc up
$ brctl addbr br0
$ brctl addif br0 usb0 eth0
$ ifconfig br0 up

现在另一台计算机(通过以太网连接到我的笔记本电脑)可以连接到互联网。我现在使用以下命令恢复笔记本电脑上的互联网连接:

$ ifconfig br0 192.168.42.200 up
$ route del default
$ route add default gw 192.168.42.129 br0

该操作完成后,route会打印出以下内核ip路由表:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.42.129  0.0.0.0         UG    0      0        0 br0
link-local      *               255.255.0.0     U     1000   0        0 usb0
192.168.42.0    *               255.255.255.0   U     0      0        0 br0
192.168.42.0    *               255.255.255.0   U     1      0        0 usb0

一切正常,两台计算机都可以连接到互联网,但突然我的笔记本电脑失去了连接。

我发现发生这种情况是因为内核 IP 路由表被修改了。route现在给出以下输出:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.42.129  0.0.0.0         UG    0      0        0 usb0
link-local      *               255.255.0.0     U     1000   0        0 usb0
192.168.42.0    *               255.255.255.0   U     1      0        0 usb0

显然,Ubuntu 不喜欢通过 连接br0,因此切换回usb0。不过,可以通过再次重置路由表来恢复连接:

$ route del default
$ route add default gw 192.168.42.129 br0

不幸的是,过了一会儿,连接又断开了。有一次,它甚至持续了 5 分钟,然后 Ubuntu 决定再次将其关闭。

如何防止 Ubuntu 修改内核 IP 路由表?

答案1

好的,如果其他人遇到同样的问题,下面是我解决问题的方法:我只需通过输入以下命令来禁用网络管理器:

$ stop network-manager

请注意,网络管理器在退出之前会清除路由表并关闭所有连接,因此您必须重新启动所需的所有接口。

我必须另外输入以下命令才能使我的桥再次工作:

$ ifconfig usb0 up
$ ifconfig eth0 up

我需要进一步编辑/etc/resolv.conf以使地址解析恢复工作。我添加了以下几行,将 Google DNS 服务器设置为名称服务器:

nameserver 8.8.8.8
nameserver 8.8.4.4

现在一切都按预期运行,两台计算机都已连接互联网。

相关内容