〖Linux〗SSH_VPN配置指南

背景

开发不能连接测试部22网段的测试机器,这导致自动化测试不方便执行

并且之前搭建的一个pptpd vpn让开发连接到测试22网段的测试设备也禁止了

经过一番搜索,于是才我找到了这个相对安全的SSH_VPN这个搭建VPN的方法

若你的英文水平还行,建议你直接阅读官方的帮助文档:SSH_VPN


以下所描述的是基于我自身的背景,而做的一次实际的SSH_VPN搭建

正如官方帮助文档所述,SSH_VPN并不是很好的东西:SSH基于TCP而上层传输又是TCP。

简单的说,tcp over tcp,原来tcp就有了三次握手过程,这么一折腾下来,一次tcp数据传输就有9次握手。。。

废话不多说了,直接来下场景:

开发机器 SSH_VPN client 123.123.52.223/22
测试机器 SSH_VPN server 123.123.108.235/22 --> 能够连接 22.22.136.0/22 

现在目标是:期望通过测试机器,使开发能连接到测试部的22网段测试设备

原理

在测试与开发使用SSH_VPN连接(使用 tun0 网口),测试机器充当Server,开发机器充当Client

操作步骤

涉及创建网口(interface),需要Root权限,以下所有操作都以Root执行

Server表示测试的123.123.108.235

Client表示开发的123.123.52.223

  • 先允许Server的ssh创建tun网口,修改配置

    vi /etc/ssh/sshd_config # 修改或添加配置
    PermitRootLogin yes
    PermitTunnel yes
    AllowTcpForwarding yes
    
    service ssh restart # 重启sshd
    
  • Client通过-w参数,创建tun0网口

    ssh -NTCfw 0 [email protected]
    

    各参数含义: -N 不执行远程命令 -T 关闭pseudo-tty分配 -C 压缩传输,可以降低宽带占用,网络慢时可以提速 -f ssh在后台执行 -w 指定tun0作为interface

    此时,tun0网口已可以通过 ifconfig tun0 查看

    看着有点兴奋吧,先不着急,这时候你还不能使用滴

    我们接下来要给Server和Client的tun0都要分配一个同网段的IP,如10.0.0.0/24之类的,它们才能建立起通信

  • 为Server和Client和tun网口分配IP地址

    Server:

    sudo ip link set tun0 up
    sudo ip addr add 10.0.0.100/32 peer 10.0.0.200 dev tun0 # 地址为10.0.0.100
    

    Client:

    sudo ip link set tun0 up
    sudo ip addr add 10.0.0.200/32 peer 10.0.0.100 dev tun0 # 地址为10.0.0.200
    

    此时,测试机器有一个新IP是10.0.0.100,开发机器有一个新IP是10.0.0.200; 在开发机器上执行 ping 10.0.0.100 发现Ping成功了!

  • 服务器配置转发规则

    目前开发也只能ping下10.0.0.0/24这个网段的机器,要让开发机机器能通过测试的服务器访问22网段,还需要配置下转发规则

    arp -sD 10.0.0.200 eth0 pub # 呃,这样子数据就能返回给开发机器了(而不是只出来,未返回给开发机器)
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # 嗯,数据最终还是得从eth0出去的,NAT转发一下
    iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE # 再加一条iptables tun0网口 NAT转发规则
    
  • 客户端配置路由规则

    很简单,只有一行:

    route add -net 22.22.0.0/16 tun0 # 通过tun0,开发机器上就可以访问测试的22网段啦!

 

参考资料:

  [1] https://help.ubuntu.com/community/SSH_VPN

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。