iptables 實現(中繼/中轉/端口轉發)加速


iptables 實現(中繼、中轉、端口轉發)加速

2019年03月04日
Server IP:172.16.10.10/24
系統版本:CentOS Linux release 7.5.1804

參考文檔

https://lighti.me/2540.html


1. 適用場景

經常會遇到本地訪問遠端服務時速度很慢。比如:ssh 或者 remotedesktop 國外的服務器、使用SS科學上網時速度慢延遲高 等等
這時可以用一台機器做跳板,來轉發你的數據
前提是這台機器 到你本地網絡 和 到達遠端服務器網絡 狀態良好。
舉例:你在北京遠程桌面美國的一台服務器延遲高經常掉線,而香港的vps到北京和美國的網絡都很快,此時你就可以選擇香港的vps來做中轉。
iptables 可以簡單快速的實現這一功能。

2. 開啟ipv4路由轉發

Linux的防火牆功能是通過netfilter實現的,iptables和firewalld則是netfileter的管理工具
這里使用iptables來實現中轉功能

首先要啟用 linux 的 ipv4 路由轉發功能

# echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
# sysctl -p

3. 安裝並啟用iptables

# yum install -y iptables iptables-services
# systemctl enable iptables
# systemctl restart iptables

4. 編寫iptables規則

假設:HK-vps IP 1.1.1.1,US-vps IP 2.2.2.2,服務端口 TCP-3389

# iptables -t nat -A PREROUTING -p tcp --dport 3389 -j DNAT --to-destination 2.2.2.2:3389
# iptables -t nat -A POSTROUTING -p tcp -d 2.2.2.2 --dport 3389 -j SNAT --to-source 1.1.1.1

但實際上大多數vps只會配置一個內網地址,然后再和你的公網地址一對一映射
比如 HK-vps 上 ifconfig 得到 IP 172.16.10.10
所以實際你應該這樣寫

# iptables -t nat -A PREROUTING -p tcp --dport 3389 -j DNAT --to-destination 2.2.2.2:3389
# iptables -t nat -A POSTROUTING -p tcp -d 2.2.2.2 --dport 3389 -j SNAT --to-source IP 172.16.10.10

然后當你需要連接 US-vps 的 tcp-3389時

# telnet 2.2.2.2 3389

當然你也可以不必讓中轉端口和實際目的端口號一樣
比如當你 telnet 1.1.1.1 666 實際連接的是 2.2.2.2 3389

# iptables -t nat -A PREROUTING -p tcp --dport 666 -j DNAT --to-destination 2.2.2.2:3389
# iptables -t nat -A POSTROUTING -p tcp -d 2.2.2.2 --dport 3389 -j SNAT --to-source IP 172.16.10.10

iptables規則寫完后,若驗證失敗,檢查iptables是否啟動,或者查看vps安全策略是否放行匹配流量。

5. 保存iptables配置

# service iptables save


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM