使用ssh隧道做三层流量代理( 二 )


【使用ssh隧道做三层流量代理】也许你会收到如下的报错:
使用ssh隧道做三层流量代理文章插图
在新版本中默认安装的iproute2工具包也支持操作tun/tap的功能 , 可能tun/tap功能已经默认编译进内核 。
使用ssh隧道做三层流量代理文章插图
怕是重名的功能 , 我特别去看了看它的源码是不是确实用了这个功能 , 发现确实tun/tap功能 。
使用ssh隧道做三层流量代理文章插图
使用ssh隧道做三层流量代理文章插图
使用ssh隧道做三层流量代理文章插图
No.7
过程
首先需要获取到目标的root权限 , 使用root账号带-w参数登录我们的vps(当然也可以不返回shell) 。
使用ssh隧道做三层流量代理文章插图
-w any:any时 , 系统自动选择下一个可用tun序号 , 当然也可以收到指定可用的tun序号 , 比如-w 0:0 。
乍一看 , 可能会觉得在目标使用root登录我们的vps有点危险 , 不过让他不返回shell之后 , 目标进入我们的当前的会话应该也无法从已有的隧道spawn一个shell出来 , 并且在命令行参数中也无法看到密码 , 不考虑泄露ip的风险的话 , 实际上的风险是可控的 。
然后是配置网卡 , 在我们的vps执行如下命令 , 设置本地网卡地址为1.1.1.1 , 掩码32位 , 因为是要建立一个点对点的连接 , 所以设置对端地址为1.1.1.2:
使用ssh隧道做三层流量代理文章插图
在目标执行执行如下命令 , 设置本地ip为1.1.1.2 , 32位掩码 , 同样是点对点连接 , 设置对面ip为1.1.1.1 。
使用ssh隧道做三层流量代理文章插图
随后分别把目标和vps的网卡启动 。
使用ssh隧道做三层流量代理文章插图
使用ssh隧道做三层流量代理文章插图
因为我们要将流量代理进目标内网 , 所以我们要在目标上开启内核流量转发功能 , 并且通过iptables把来自1.1.1.2的流量转发到eth0网卡上去 。
使用ssh隧道做三层流量代理文章插图
然后在vps设置一个路由 , 把网关设置成对端的ip(也就是目标上的tun0的本地ip) , 把发向目标内网网段的流量通过点对点连接 , 也就是tun0转发进去 。
使用ssh隧道做三层流量代理文章插图
至此 , 整个配置过程就结束了 , 理论上讲对端ip可以是任意的(任意一个用不到的ip) , 但本地ip一定是正确 , 因为会影响你接收ICMP error的数据包 。
我在本地打开另一台win10机器 。
使用ssh隧道做三层流量代理文章插图
在vps上ping一下它 , 成功ping通 。
使用ssh隧道做三层流量代理文章插图
使用nc监听一个端口并传输数据 , 确定是本地机器 。
使用ssh隧道做三层流量代理文章插图


推荐阅读