如何通过树莓派同时为两个同IP路由器建立可区分的SSH隧道以实现远程配置
如何通过树莓派同时为两个同IP路由器建立可区分的SSH隧道以实现远程配置
没问题,这个场景我碰到过,核心思路是让树莓派用指定网卡去访问对应路由器——因为两个路由器分别连在不同的网卡上,只要能让树莓派发起连接时绑定到对应的网卡IP,就能区分开同IP的两个设备。下面给你两种简单可行的方案:
方案一:用socat在树莓派上做端口转发(推荐,简单直观)
这种方式不需要修改系统配置,临时使用或者长期用都很方便:
- 先确认树莓派上安装了
socat,如果没有的话,执行以下命令安装:sudo apt install socat - 查看树莓派两个网卡的IP,执行
ip addr show eth0和ip addr show wlan0,比如假设eth0的IP是192.168.1.10,wlan0是192.168.2.10,两个路由器的配置IP都是192.168.0.1。 - 在树莓派上启动两个本地转发进程,分别绑定不同网卡的IP访问路由器:
这里的# 绑定eth0网卡,把树莓派的8000端口转发到eth0连接的路由器443端口 socat TCP-LISTEN:8000,bind=127.0.0.1,fork TCP:192.168.0.1:443,bind=192.168.1.10 & # 绑定wlan0网卡,把树莓派的8001端口转发到wlan0连接的路由器443端口 socat TCP-LISTEN:8001,bind=127.0.0.1,fork TCP:192.168.0.1:443,bind=192.168.2.10 &bind=192.168.1.10就是指定树莓派用eth0的IP发起对路由器的连接,数据包会走eth0网卡找到对应设备;同理wlan0的命令对应另一个路由器。 - 从本地电脑建立两个SSH隧道:
# 第一个隧道:本地8090端口映射到树莓派的8000端口,对应eth0上的路由器 ssh -L 8090:localhost:8000 pi@the.rasberry.pi.address # 第二个隧道:本地8091端口映射到树莓派的8001端口,对应wlan0上的路由器 ssh -L 8091:localhost:8001 pi@the.rasberry.pi.address - 最后在本地浏览器分别访问
https://localhost:8090和https://localhost:8091,就能分别配置两个路由器了。
方案二:用策略路由+SSH动态转发(适合长期稳定使用)
如果不想每次都手动启动socat,可以给树莓派配置策略路由,让它根据源IP自动选择网卡访问路由器:
- 给树莓派添加自定义路由表:
# 新增eth0专用路由表 sudo bash -c 'echo "100 eth0route" >> /etc/iproute2/rt_tables' # 新增wlan0专用路由表 sudo bash -c 'echo "200 wlan0route" >> /etc/iproute2/rt_tables' - 添加路由规则,指定从eth0 IP出发的请求走eth0网卡访问路由器:
# 让从eth0 IP(192.168.1.10)发起的访问192.168.0.1的请求走eth0 sudo ip route add 192.168.0.1/32 dev eth0 table eth0route sudo ip rule add from 192.168.1.10 table eth0route # 同理配置wlan0 sudo ip route add 192.168.0.1/32 dev wlan0 table wlan0route sudo ip rule add from 192.168.2.10 table wlan0route - 现在可以直接通过SSH命令指定树莓派用哪个IP发起连接,不需要额外的转发进程:
这里的# 连接eth0路由器:用nc指定源IP,把本地8090转发到这个连接 ssh -L 8090:localhost:443 pi@the.rasberry.pi.address -t "nc -s 192.168.1.10 -l 127.0.0.1 443 -c 'nc 192.168.0.1 443'" # 连接wlan0路由器 ssh -L 8091:localhost:443 pi@the.rasberry.pi.address -t "nc -s 192.168.2.10 -l 127.0.0.1 443 -c 'nc 192.168.0.1 443'"-t参数是让SSH分配一个终端,保证nc进程能正常运行;nc -s指定源IP,确保树莓派用对应网卡发起连接。
注意事项
- 记得把命令里的IP替换成你实际的树莓派网卡IP和路由器配置IP。
- 如果需要让树莓派重启后策略路由依然生效,可以把路由规则添加到
/etc/rc.local或者用netplan(新版树莓派系统)配置。
备注:内容来源于stack exchange,提问作者Bernhard Bodenstorfer
相关产品推荐
相关产品推荐

