大家今天好时光!
我有这样的问题:我需要使用 Debian Buster 笔记本电脑上的 NetworkManager 通过 DHCP 配置的非永久网络来配置对子网的访问。所以我可以在连接的 IPv4 设置 -> 路由中添加路由。我不知道网关及其更改的任何连接,因此我无法添加任何现场网关。但是,如果我将网关保留为空,则会创建到设备的连接,没有网关且具有链接范围
хх.хх.0.0/16 dev wwp0s20f0u5u6i3 proto static scope link metric 1
我需要将什么粘贴到网关字段才能获取连接的 DHCP 分配网关的路由?像这样
хх.хх.0.0/16 via yy.yy.yy.yy dev wwp0s20f0u5u6i3
坦克!
答案1
OpenVPN 支持特殊网关,例如 OpenVPN 动态替换的“net_gateway”。
NetworkManager 不支持这一点。这是一个缺失的功能。
如果连接是点对点链接(例如 VPN),那么 0.0.0.0 可能适合您(网关并不重要)。
作为解决方法,您可以将调度程序脚本放置到/etc/NetworkManager/dispatcher.d
,请参阅man NetworkManager
amd 的“pre-up”事件。该脚本可以通过添加路线ip route add
。
一般来说,如果你想配置手动路由,你确实知道你所连接的网络的参数。因此,您将在 NetworkManager 中拥有不同的连接配置文件,并根据您所在的位置激活正确的连接配置文件。
答案2
坦克前往塔勒;你让我们发现了 NetworkManager 的宝藏。如果没有你的建议,我可能永远不会花时间阅读这个人和这个解决方法。因此,现在为了避免浪费你的时间在这个人的过时信息上,请注意,在这个人中提出的环境变量 IP4_GATEWAY 永远不会被评估,无论你在/etc/NetworkManager/dispatcher.d/子目录。幸运的是,当这些脚本运行时,例如在 pre-up 模式下,接口已经启动,并且 DHCP 服务器提供的网关也已经在那里。所以具体的解决办法是:
1]把你的额外路线放进去让我们说: /etc/NetworkManager/DHCP_additional_routes 例子:
8.8.4.4 32 enp6s18
8.8.8.8 32 enp6s19
(目标掩码接口)
2]在脚本中我们说 管理附加路由在下面/etc/NetworkManager/dispatcher.d/pre-up.d/ 您将能够获得 IP4_GATEWAY 的值:
#!/bin/bash
INTERFACE="$1"
ACTION="$2"
DEFROUTE=`ip route show | grep $INTERFACE | grep default`
IP4_GATEWAY=`echo $DEFROUTE | awk '{print $3}'`
grep "$INTERFACE" /etc/NetworkManager/DHCP_additional_routes| while read LINE0
do
P1=`echo $LINE0| awk '{print $1}'`
P2=`echo $LINE0| awk '{print $2}'`
P3=`echo $LINE0| awk '{print $3}'`
ip route add $P1/$P2 via $IP4_GATEWAY
done
我需要它来管理从 DHCP 服务器获取地址的 2 个 wan 接口之间的故障转移。使用“canary”方法:您可以在 DHCP_additionnal_route 中描述的目标上测试 ping,该目标可以由上面给出的接口专门路由,因此您可以知道接口是打开还是关闭