You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过树莓派同时为两个同IP路由器建立可区分的SSH隧道以实现远程配置

如何通过树莓派同时为两个同IP路由器建立可区分的SSH隧道以实现远程配置

没问题,这个场景我碰到过,核心思路是让树莓派用指定网卡去访问对应路由器——因为两个路由器分别连在不同的网卡上,只要能让树莓派发起连接时绑定到对应的网卡IP,就能区分开同IP的两个设备。下面给你两种简单可行的方案:

方案一:用socat在树莓派上做端口转发(推荐,简单直观)

这种方式不需要修改系统配置,临时使用或者长期用都很方便:

  1. 先确认树莓派上安装了socat,如果没有的话,执行以下命令安装:
    sudo apt install socat
    
  2. 查看树莓派两个网卡的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。
  3. 在树莓派上启动两个本地转发进程,分别绑定不同网卡的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的命令对应另一个路由器。
  4. 从本地电脑建立两个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
    
  5. 最后在本地浏览器分别访问https://localhost:8090和https://localhost:8091,就能分别配置两个路由器了。

方案二:用策略路由+SSH动态转发(适合长期稳定使用)

如果不想每次都手动启动socat,可以给树莓派配置策略路由,让它根据源IP自动选择网卡访问路由器:

  1. 给树莓派添加自定义路由表:
    # 新增eth0专用路由表
    sudo bash -c 'echo "100 eth0route" >> /etc/iproute2/rt_tables'
    # 新增wlan0专用路由表
    sudo bash -c 'echo "200 wlan0route" >> /etc/iproute2/rt_tables'
    
  2. 添加路由规则,指定从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
    
  3. 现在可以直接通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 15:43:13