连接无线局域网时如何自动添加路由?

连接无线局域网时如何自动添加路由?

我有一个使用 Debian 9.9 Linux 的 Beaglebone Black 设备(没有 UI,我使用终端来实现)。 (Beaglebone Black 的最新图片https://beagleboard.org/latest-images

我使用 conmannctl 启用并成功连接到 wifi。 (https://fis.gatech.edu/how-to-configure-bbw-wifi/

当我连接到 wifi 时,我无法从外部 ping 通(8.8.8.8 或 www.google.com)。

我需要通过以下方式手动添加路线: ip 路由通过 192.168.1.1 dev wlan0 添加默认值 并且它将能够连接外部。我家里的 IP 范围是 192.168.1.x

我想在具有不同 WLAN IP 范围的地方进行实验和使用它,例如 192.168.10.x,这样,我需要运行 ip 路由通过 192.168.10.1 dev wlan0 添加默认值

我正在寻找一种方法,能够连接到具有不同 WLAN IP 范围的另一个地方,而无需输入和添加 ip 路由。

我从昨天开始就一直在研究这个问题,但似乎我无法仅向 ip route add 命令提供接口,并且始终需要提供 IP。 (或者也许我没有找到正确的谷歌关键字。)

有没有办法在我连接到接口(无线局域网)时自动配置路由?我也尝试过,将USB连接到LAN,并且我还需要手动发出ip router命令才能外部连接。

目前,我正在考虑创建一个python脚本来对ifconfig输出进行正则表达式解析,并获取wlan0上IP的前三个数字(例如192.168.10),然后添加.1,然后我将使用它来执行python 中的 ip Route add 命令。

不过,我在想是否有一个内置的 Linux 进程可以做到这一点,因为当我在 Ubuntu 机器上连接到 Wifi(使用 UI)时,一旦 Wi-Fi 连接,我就可以立即浏览互联网。

答案1

解决此问题的常用方法是在每个 LAN 网段上运行 DHCP 服务器,并在连接到该 LAN 网段的每台计算机上运行 DHCP 客户端。

DHCP协议允许您分发默认网关等路由信息以及要使用的 DNS 服务器等其他信息。

由于它在您的 Ubuntu 计算机上运行,​​因此可能有一个 DHCP 服务器在 WLAN 网段上运行(很可能在 AP 上)。

因此,尝试在 Beaglebone 上运行 DHCP 客户端(无论 Beaglebone 发行版使用什么,dhclient通常在发行版中使用),看看是否能得到一些结果。

然后将您的 Beaglebone 配置为在连接时自动执行此操作(有多种方法可以执行此操作,具体取决于 Beaglebone 发行版上运行的其他内容)。

相关内容