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