通过ssh转发实现稳定连接海外服务器
来源:重庆热线 发布时间:2017-04-03 18:26
1
架构
2
说明
连接海外服务器网络非常的不稳定,这里我们通过某厂云私有网络的对等连接及iptables来实现稳定连接海外服务器。
3
实践
首先在上海区域购买一个私有网络(vpc),然后划分好网段,再购买一台服务器加入私有网络。同样的在香港区域再购买一个私有网络(vpc),然后划分好网段,再购买一台服务器加入私有网络。最后使用对等连接使香港vpc与上海vpc打通。这样上海云主机与香港云主机的内网打通。
在香港云主机部署一个tinyproxy作为代理,监听在10.168.0.2:8080。
在上海云主机加入如下防火墙:
iptables -A FORWARD -s hz_ip -d 10.168.0.2 -p tcp -m tcp --dport 8080 -j ACCEPTiptables -t nat -A PREROUTING -s hz_ip -d 192.168.0.2 -p tcp -m tcp --dport 8080 -j DNAT --to-destination 10.168.0.2:8080iptables -t nat -A POSTROUTING -d 10.168.0.2 -j SNAT --to-source 192.168.0.2
在北美、新加坡、韩国等机房的服务器上面加入防火墙,允许香港云主机访问其ssh端口(22)。
在公司跳板机加入防火墙,允许其访问上海云主机的8080端口。
在公司跳板机加入如下登录脚本:
系统CentOS 7
#!/bin/bashexport user=$USERif [[ $1 =~ ([0-9]{1,3}.){3}[0-9]{1,3} ]]; then/usr/bin/ssh -A -o StrictHostKeyChecking=no -o "ProxyCommand=/usr/bin/nc --proxy sh_ip:8080 %h %p" -l ${user} ${1} -p22else echo "ERR: $1 is not a ip!"fi
系统CentOS 6
#!/bin/bashexport user=$USERif [[ $1 =~ ([0-9]{1,3}.){3}[0-9]{1,3} ]]; then/usr/bin/ssh -A -o StrictHostKeyChecking=no -o "ProxyCommand=/usr/bin/nc -X connect -x sh_ip:8080 %h %p" -l ${user} ${1} -p22else echo "ERR: $1 is not a ip!"fi
保存登录脚本为login放到系统环境变量里面,例如,北美一个服务器ip为na_ip,直接执行:login na_ip。这样就可以登录北美服务器。
注意:
centos6与centos7登录脚本不同的原因为系统提供的nc不一样。centos6为nc,centos7为nmap-ncat。
在使用securecrt或者xshell时打开OpenSSH代理程序转发。
4
其他
利用我们在第三步搭建的上海云主机与香港云主机之间的专线,再加上iptables,我们可以实现向海外服务器快速分发文件,监控数据实时回传到大陆等工作。
scp也支持ProxyCommand功能。同ssh。可以仿照登录脚本,写个文件分发代理脚本。快速实现文件分发与回传。
王利淼,杭州电魂网络科技股份有限公司运维工程师,负责国内某端游、海外N个区手游、H5游戏等。
相关阅读:
高端私有云项目交流群,欢迎加入!
交流 分享 提升