Linux:连接到具有相同 IP 范围的两个不同网络

Linux:连接到具有相同 IP 范围的两个不同网络

当您打开 GoPro 摄像机的 WiFi 功能时,GoPro 摄像机会创建一个 WiFi 热点。无法让它们使用不同的 IP 范围,并且我需要同时连接到多个 GoPro(使用多个无线接口)。

GoPro 将在两个网络上的 IP 10.5.5.9 上可用。

如何将 wlan1 的 IP 地址转换为不同的范围?例如,wlan1 上的弥补地址 10.5.5.* 可以用作 10.1.1.* 吗?

这将允许我访问一台位于 10.1.1.9 的 GoPro 和另一台位于 10.5.5.9 的 GoPro。

答案1

首先,我没有办法真正测试这个,所以我肯定会有一些细节错误,但本质上你需要特殊的路由来使地址 10.5.5.9 的一些数据包出去 wlan1 ,而其他一些数据包则出去走出 wlan0(我假设),您需要 DNAT 和 SNAT 规则才能在 10.5.5.9 和 10.1.1.9 之间进行转换。

后者将是如下规则:

# iptables -t nat -A OUTPUT -d 10.1.1.9 -j DNAT --to-destination 10.5.5.9
# iptables -t nat -A INPUT -i wlan1 -j SNAT --to-source 10.1.1.9

对于路由,我假设 10.5.5.9 数据包首先在 wlan0 上发出。因此,您需要一个替代路由表来启动,以便将数据包发送到 10.1.1.9(也经过 DNAT 处理)。该表可以设置如下

# ip route add table 26 dev wlan1
# ip route add table 26 10.5.5.9 dev wlan1
# ip rule add priority 10000 fwmark 26 table 26

最后一条规则使表 26 用于标记为 26 的数据包,这需要另一条规则:

# iptables -t mangle -A OUTPUT -d 10.1.1.9 -j MARK --set-mark 26

我假设设置是在 wlan1 和 wlan0 启动后完成的,并且它们的地址都在 10.5.5.0/24 上。之前的设置应该通过 wlan0 路由到直接 10.5.5.9 数据包(从而使 wlan1 连接未使用)。

在此解决方案中,网络路径为:首先标记发送至 10.1.1.9 的数据包,然后进行 DNAT 发送至 10.5.5.9。该标记激活路由表 26,它将 10.5.5.9 数据包定向到 wlan1。返回数据包均经过 SNAT 处理,来自 10.1.1.9。

理论上有效:-)

相关内容