通過ssh轉發實現穩定連線海外伺服器
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 ACCEPT
iptables -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:8080
iptables -t nat -A POSTROUTING -d 10.168.0.2 -j SNAT –to-source 192.168.0.2
在北美、新加坡、韓國等機房的伺服器上面加入防火牆,允許香港雲主機訪問其ssh埠(22)。
在公司跳板機加入防火牆,允許其訪問上海雲主機的8080埠。
在公司跳板機加入如下登入指令碼:
系統CentOS 7
#!/bin/bash
export user=$USER
if [[ $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} -p22
else
echo “ERR: $1 is not a ip!”
fi
系統CentOS 6
#!/bin/bash
export user=$USER
if [[ $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} -p22
else
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遊戲等。
原文來自微信公眾號:雲技術實踐