我有一台低功耗双核赛扬机器,运行 Ubuntu 19.04,充当我的路由器。它还使用PiHole for DNS运行lxd
虚拟机。
这一切都运作良好,并且已经持续了几个月。Ubuntu 19.10 现在已经发布了,我在另一台机器上发现我一直在使用的配置,它具有在 19.10 中lxd
设置所需的网桥/etc/network/interfaces
,不再适用于 19.10。我已经成功地将另一台具有类似网桥配置的机器移到了 NetPlan,但我似乎无法弄清楚如何为路由器这样做。我希望这里有人可以告诉我哪里出错了。
这是原始和当前工作的/etc/network/interfaces
文件:
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
# The WAN interface.
auto ethwan
iface ethwan inet dhcp
dns-nameservers 208.67.222.222 208.67.220.220
# The (old) LAN interface.
iface eth0 inet manual
# The new LAN interface, on the new USB-to-Ethernet connection.
iface ethlan inet manual
# The *new* LAN interface.
auto br0
iface br0 inet static
address 192.168.1.1
netmask 255.255.255.0
dns-nameservers 208.67.222.222 208.67.220.220
bridge-ifaces ethlan
bridge-ports ethlan
up ifconfig ethlan up
/etc/netplan/01-network-manager-all.yaml
在注释掉除上面两行之外的所有行之后,这是我尝试使用的内容lo
:
# Let NetworkManager manage all devices on this system
network:
version: 2
#renderer: NetworkManager
renderer: networkd
ethernets:
# eth0 isn't used, as the hardware isn't reliable
eth0:
match:
macaddress: f4:4d:30:67:0a:6c
dhcp4: yes
dhcp6: yes
set-name: eth0
ethlan:
match:
macaddress: 00:e0:4c:6a:03:3f
set-name: ethlan
dhcp4: no
dhcp6: no
ethwan:
match:
macaddress: 78:32:1b:a8:cc:1c
dhcp4: yes
dhcp6: yes
set-name: ethwan
bridges:
br0:
interfaces: [ethlan]
dhcp4: no
dhcp6: no
addresses: [192.168.1.1/24]
#gateway4: 192.168.1.1
#nameservers:
# addresses:
# - 192.168.1.11
名称服务器是通过提供的dnsmasq
。
有了这个设置,路由器机器可以毫无问题地访问互联网——但lxd
虚拟机根本无法访问大多数站点(当我在它上面运行sudo apt update
时,它说它命中http://security.ubuntu.com/ubuntu
,但似乎无法访问http://archive.ubuntu.com/ubuntu
),网络上其他地方的机器也有类似的问题(我无法访问 Google 或 DuckDuckGo,但我妻子可以在她的 iPad 上访问 Facebook)。我怀疑它可以到达的那些是由于沿线某处的DNS缓存。
我试过取消注释这gateway4
行和三个名称服务器行,一起和分开。网关线似乎根本阻止它工作(我不确定内部细节,但这似乎是有道理的);名称服务器行似乎没有任何效果。我也尝试过使用 NetworkManager 作为渲染器,这似乎也导致它根本不起作用。
任何人都可以看到我哪里出错了,或者提出一个可以解决它的改变吗?谢谢!
更新:
ip route
具有工作/etc/network/interfaces
设置的数据:
default via 45.74.106.33 dev ethwan
default dev eth0 scope link metric 1002 linkdown
default dev ethlan scope link metric 1003
default dev wlp2s0 scope link metric 1005 linkdown
45.74.106.32/27 dev ethwan proto kernel scope link src 45.74.106.51
169.254.0.0/16 dev eth0 proto kernel scope link src 169.254.5.39 linkdown
169.254.0.0/16 dev wlp2s0 proto kernel scope link src 169.254.8.207 linkdown
169.254.0.0/16 dev ethlan proto kernel scope link src 169.254.4.254
169.254.0.0/16 dev ethwan scope link metric 1000
192.168.1.0/24 dev br0 proto kernel scope link src 192.168.1.1
相同的数据,netplan
设置:
default via 45.74.106.33 dev ethwan
default via 198.2.97.225 dev ethwan proto dhcp src 198.2.97.228 metric 100
default dev ethlan scope link metric 1003
default dev wlp2s0 scope link metric 1005 linkdown
45.74.106.32/27 dev ethwan proto kernel scope link src 45.74.106.51
169.254.0.0/16 dev wlp2s0 proto kernel scope link src 169.254.8.207 linkdown
169.254.0.0/16 dev ethlan proto kernel scope link src 169.254.4.254
192.168.1.0/24 dev br0 proto kernel scope link src 192.168.1.1
198.2.97.224/27 dev ethwan proto kernel scope link src 198.2.97.228
198.2.97.225 dev ethwan proto dhcp scope link src 198.2.97.228 metric 100
我认为新198.2.97.225
地址是我的 ISP 在我尝试期间分配的附加地址。除此之外,还有线条的重新排列,在我看来几乎是一样的,但我对该命令的输出知之甚少。
然而,在尝试它时,我有了一个非常奇怪的发现。当我使用netplan
上面的配置时,本地网络上的机器可以访问除TLS/SSL 站点之外的任何站点。curl -v http://google.com
返回 301 重定向数据,curl -v https://google.com
到达显示的行,* TLSv1.3 (OUT), TLS handshake, Client hello (1):
然后它就停止了。我相信这解释了为什么有些网站可以工作,而其他网站则不能。
我认为这可能是一个iptables
问题,除了它在/etc/network/interfaces
设置下工作正常。
现在更迷茫了。:-?