sshhuttle 实现 子网代理功能

发布时间 2023-06-29 11:18:38作者: vx_guanchaoguo0

首先实现讲本地流量转发远程指定的网段

  • 将本地的子网 192.168.3.1/24 和 10.172.0.12/24 转发到远程主机 172.16.37.208 的端口 5004。
  • 远程主机必须是访问通过的主机 IP

实现方式

sshuttle -r root@172.16.37.208:5004 192.168.3.1/24 10.172.0.12/24 

原理

  • 使用 ssh 隧道将 127.0.0.1:12300 流量转转发到172.16.37.208:5004
  • 使用 iptable 或者 pfctl 将通过代理 将子网 192.168.3.1/24 和 10.172.0.12/24转到 127.0.0.1:12300

实验验证

  • 下载 shuttle 源码
git clone  https://github.com/sshuttle/sshuttle.git
cd sshuttle
python  __main__.py  -r root@172.16.37.208:5004 192.168.3.1/24 10.172.0.12/24 -v
  • 查看输出日志

核心代码

  • 监听服务 sshuttle/client.py:934 MultiListener
  • 转发流量设置 sshuttle/firewall.py:298 method.setup_firewall