===============================================
2019/2/14_第1次修改 ccb_warlock
===============================================
由於業務中個別TCP的服務需要做遷移,而該服務目前又是不是集群的方式對外提供服務,為了盡可能的縮短服務的中斷,在部署完新服務后,原服務器的端口需要轉發TCP的流量到新的服務器,經過一段時間后用戶更新了配置,流量大體上直接向新服務器跑時,再將老服務器的端口撤掉。
在網上找了些資料,針對centos7的TCP端口轉發找到2種途徑:
1)firewalld
優:系統自帶的防火牆,不需要配置其他軟件就能實現TCP流量的轉發;
缺:必須是firewalld運行的時候才能轉發,但是有些服務的運行不適合開啟firewalld,或者原先設計就是關閉服務器自身的防火牆而依靠外部的防火牆(比如雲服務商的安全組);
2)rinetd
優:不管防火牆是否開啟,都可以使用該服務實現端口轉發(當然防火牆得開放這個端口);
缺:需要裝服務,而且是一個最后更新時間是2003年的工具,面對十幾年的系統網絡發展會不會有風險需要大量試驗后才能知道;
一、firewalld
# 允許防火牆偽裝IP
firewall-cmd --add-masquerade
# 增加80、8080端口的映射到192.168.13.1的80、8080端口
firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.13.1:toport=80 --permanent
firewall-cmd --add-forward-port=port=8080:proto=tcp:toaddr=192.168.13.1:toport=8080 --permanent
二、rinetd
# 獲取rinetd源碼包到/opt目錄下
cd /opt wget http://www.boutell.com/rinetd/http/rinetd.tar.gz tar -zxvf rinetd.tar.gz
# 進入rinetd目錄
cd rinetd
# 設置轉發端口的范圍
sed -i 's/65536/65535/g' rinetd.c
# 創建目錄
mkdir -p /usr/man
# 編譯並安裝
make && make install
# 編輯配置文件
vi /etc/rinetd.conf
# 表示將所有發往本機80、8080端口的請求轉發到192.168.13.1的80、8080端口(0.0.0.0表示本機綁定所有可用地址)
# 將下面的內容添加到rinetd.conf文件內,wq保存。
0.0.0.0 80 192.168.13.1 80 0.0.0.0 8080 192.168.13.1 80
# 啟動rinetd
rinetd -c /etc/rinetd.conf