我有两个通过USB连接的设备,在USB接口上有自己的网络10.1.1.0/24
。
从我的电脑,我通过Wifi连接到设备1。我的计算机和设备1都在网络192.168.42.0/24
上有一个地址。
我想要做的是能够与设备2进行通信,就好像它位于地址192.168.42.0/24
的{{1}}网络上一样。
我该怎么做?
答案 0 :(得分:0)
我看到两个解决方案:
使用当前设置,您可以使用192.168.42.1
地址和一些端口(例如80用于Web界面,22用于SSH,23用于telnet等)与device1通信。您可以通过在device1上配置port forwarding使设备2出现在同一IP(192.168.42.1
)上的本地子网中,但具有不同的端口集。因此,192.168.42.1:<specificPort>
的所有请求都将直接发送到device2,并由配置的一个覆盖。端口转发应该在每个路由器上开箱即用,所以唯一的麻烦就是完成配置。
如果您想使用192.168.42.2
使用设备2进行通信,则您需要本地子网中的某些物理设备响应此IP的数据包。因此,这种方式需要在192.168.42.2
上设置一些单独的设备,以用作将请求转发到设备2并回复PC的代理类型。 Linux机器在iptables中有一些基本规则,在发送之前重写src / dst输入数据包的IP地址就足够了。
答案 1 :(得分:0)
我终于使用一些NAT和伪装解决了我的问题。
我通过在Device 1上执行以下命令来实现它:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -d 192.168.42.2 -j DNAT --to-destination 10.1.1.2
iptables -t nat -A POSTROUTING -d 10.1.1.2 -j MASQUERADE
ip address add 192.168.42.2/24 dev eth0
然后将Device 1的dhcp服务器配置为不属性192.168.42.2。
让我挣扎最长时间的是需要在设备1的wifi接口(eth0)上设置额外的IP地址。