通過nginx轉發ssh請求,實現一個公網ip連接多個華爲雲服務器

問題引出

華爲搞活動,送了多臺虛擬服務器,但只給了兩個彈性公網ip,沒有贈送NAT網關。一個彈性公網ip只能綁定到一個虛擬服務器,在本地控制服務器、部署環境的時候,很不方便。最後研究了很久終於實現了,把不同服務器的ssh映射的到一個彈性公網ip的不同端口上。主要實現原理,在綁定了公網ip的服務器上安裝nginx實現ssh轉發。

解決過程

vpc準備

  1. 在華爲雲官網控制檯建立虛擬私有云VPC

     

    建立虛擬私有云

  2. 將各服務器加入剛剛建立的vpc,並設置服務器ip在vpc下的同一個子網裏。主要是各服務器通過局域網ip可以相互訪問到。

     

    切換vpc

nginx部署和stream轉發

1.安裝make

yum -y install gcc automake autoconf libtool make

2.安裝c++編譯環境,若已安裝則跳過

yum install gcc gcc-c++

3.安裝OpenSSL

cd /usr/local/src
wget https://www.openssl.org/source/openssl-1.1.1b.tar.gz
tar -zxvf openssl-1.1.1b.tar.gz
cd openssl-1.1.1b
./config && make && make install

4.安裝PCRE庫
作用是讓 Nginx 支持 Rewrite 功能

cd /usr/local/src
wget https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.gz 
tar -zxvf pcre-8.40.tar.gz
cd pcre-8.40
./configure && make && make install

5.安裝zlib庫

cd /usr/local/src
wget http://zlib.net/zlib-1.2.11.tar.gz
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure && make && make install

6.安裝Nginx

cd /usr/local/src
wget http://nginx.org/download/nginx-1.15.10.tar.gz
tar -zxvf nginx-1.15.10.tar.gz
cd nginx-1.15.10
# 注意--with-stream參數,這裏一定要有
./configure --with-stream && make && make install

配置轉發,啓動nginx

1.查詢nginx的安裝位置

whereis nginx

 

2.修改配置文件,添加stream轉發

vi  /usr/local/nginx/conf/nginx.conf

在裏面添加轉發代碼

worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}
# ssh的地址
stream {
upstream ssh {
server  192.168.0.6:22;
}
upstream ssh2 {
server  192.168.0.3:22;
}
upstream ssh3 {
server  192.168.0.7:22;
}
upstream ssh4 {
server  192.168.0.2:22;
}
## 多個轉發服務
server { 
listen       33;
proxy_pass ssh;
proxy_connect_timeout 1h;
proxy_timeout 1h;
}

server { 
listen       44;
proxy_pass ssh2;
proxy_connect_timeout 1h;
proxy_timeout 1h;
}
server {
listen       55;
proxy_pass ssh3;
proxy_connect_timeout 1h;
proxy_timeout 1h;
}
server { #裏面可以有多個監聽服務,配置監聽端口和代理的ip和端口就可以進行tcp代理了
listen       66;
proxy_pass ssh4;
proxy_connect_timeout 1h;
proxy_timeout 1h;
}

}

http {# 後面的配置一般不用改

3.啓動nginx

sudo /usr/local/nginx/sbin/nginx

4.打開防火牆上的轉發端口

firewall-cmd --zone=public --add-port=33/tcp --permanent
firewall-cmd --zone=public --add-port=44/tcp --permanent
firewall-cmd --zone=public --add-port=55/tcp --permanent
firewall-cmd --zone=public --add-port=66/tcp --permanent
firewall-cmd --reload

華爲雲安全組配置

注意,只配置centos的防火牆可能還不夠,要設置你的每個服務器的使用的安全組的出入規則,需要允許這些接口訪問。

 

安全組設置

配置完成

現在通過工具ssh同一公網ip的33、44、55、66接口,就可以分別控制不同的服務器了

重點回顧

回顧這麼長的過程,關鍵點就是兩點

1.安裝 nginx時安裝stream模塊

./configure --with-stream && make && make install

2.nginx的配置文件中設置各ssh的轉發規則和端口

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章