1. 程式人生 > >通過ssh轉發實現穩定連線海外伺服器

通過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遊戲等。

原文來自微信公眾號:雲技術實踐