我正在使用netplan
来配置 Ubuntu 18.04 上的接口,但存在一些问题。首先,metric
由于设置为 0,它似乎不起作用。其次,一旦我使用,networkd
整个网络似乎就瘫痪了!
设置如下:
Internet Internet
(local-link) / /
Dev1 |-----| |-----| |-----| - Dev11 (192.168.0.5)
----------------| eno | | tun | | usb | ---- (AP) -------|
Dev2 |_____| |_____| |_____| 192.168.0.1 - Dev12 (192.168.0.6)
(172.168.0.6) 172.168.0.2 192.168.0.2
|------------------PC ------------------|
该YAML
文件是:
network:
version: 2
renderer: networkd
ethernets:
enp60s1:
match:
macaddress: 3b:2d:x:x:x
addresses: [192.168.0.2/24]
dhcp4: no
optional: true
gateway4: 192.168.0.1
set-name: usb
nameservers:
addresses: [192.168.0.1,8.8.8.8]
mtu: 8192
routes:
- to: 0.0.0.0/0
via: 192.168.0.1
metric: 50
table: 101
routing-policy:
- from: 192.168.0.0/24
table: 101
我希望使用NetworkManager
,但似乎不支持非默认路由。然后我运行
sudo netplan generate
sudo netplan apply
sudo service systemd-networkd restart
但route -n
给出:
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 usb
0.0.0.0 10.100.80.1 0.0.0.0 UG 20000 0 0 wlan
10.8.0.0 0.0.0.0 255.255.255.0 U 0 0 0 tun
10.100.80.0 0.0.0.0 255.255.248.0 U 600 0 0 wlan
172.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eno
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 usb
然后主机(PC)变得无法访问(通过远程连接ssh
)。
metric
既然在文件中已定义,为什么没有设置YAML
?我希望连接到 AP 的开发人员能够通过 AP 访问互联网,因此我尝试了,ping -w 1 8.8.8.8 -I usb
结果导致 100% 数据包丢失。
答案1
您正在设置:
gateway4: 192.168.0.1
和:
routes:
- to: 0.0.0.0/0
via: 192.168.0.1
metric: 50
table: 101
gateway4
是默认路由的简写。您不应将两者组合在一起。这几乎肯定是您的度量被破坏的原因,因为设置gateway4
是覆盖性的。度量 0 实际上不是问题,因为度量 0 的优先级甚至高于度量 50,但您的所有路由表设置也将被破坏,这可能是更严重的问题。
答案2
使用 DHCP 连接多个接口 : “通过为通过 DHCP 检索的路由指定度量,可以实现通过 DHCP 所需的精确路由,这将确保某些路由优先于其他路由。在此示例中,‘enred’ 优先于‘engreen’,因为它具有较低的路由度量:”
network:
version: 2
ethernets:
enred:
dhcp4: yes
dhcp4-overrides:
route-metric: 100
engreen:
dhcp4: yes
dhcp4-overrides:
route-metric: 200