fro*_*rli 2 networking routing iptables nat
当您打开 wifi 功能时,GoPro 摄像机会创建一个 wifi 热点。无法让它们使用不同的 IP 范围,我需要同时连接到多个 GoPro(使用多个无线接口)。
GoPro 将在两个网络上的 IP 10.5.5.9 上可用。
如何将 IP 地址从 wlan1 转换为不同的范围?例如,wlan1 上的化妆地址 10.5.5.* 可用作 10.1.1.*?
这将允许我在 10.1.1.9 上访问一个 GoPro,在 10.5.5.9 上访问另一个 GoPro。
小智 5
首先,我没有真正测试这个的选项,所以我肯定会有一些细节错误,但基本上你需要特殊的路由来为地址 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
Run Code Online (Sandbox Code Playgroud)
对于路由,我假设最初 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
Run Code Online (Sandbox Code Playgroud)
最后一条规则使表 26 用于标记为 26 的数据包,这需要另一个规则:
# iptables -t mangle -A OUTPUT -d 10.1.1.9 -j MARK --set-mark 26
Run Code Online (Sandbox Code Playgroud)
我假设设置是在 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。并且返回的数据包都是来自 10.1.1.9 的 SNAT-ted。
理论上有效:-)