Iptables
當linux伺服器有兩個IP地址時如何設置ipables重定向埠
我希望我的 Glassfish 網路伺服器為兩個不同的 IP 地址提供網頁。我要做的是設置 iptable 規則來轉換埠。
對於 IP #1
198.xxx.xxx.14:80 <-- redirected to --> port 8080 198.xxx.xxx.14:443 <-- redirected to --> port 8181
對於 IP #2
199.xxx.xxx.185:80 <-- redirected to --> port 9090 199.xxx.xxx.185:443 <-- redirected to --> port 9191
然後,在我的 Glassfish 伺服器上,我將擁有兩個虛擬伺服器:
- 一個監聽所有主機的埠 8080 和 8181 和
- 另一個監聽所有主機的埠 9090 和 9191。
我的 Debian 伺服器上只有一個 IP 地址的工作 iptables 規則如下:
iptables -t nat -A OUTPUT -o lo -p tcp --dport 80 -j REDIRECT --to-port 8080 iptables -t nat -A OUTPUT -o lo -p tcp --dport 443 -j REDIRECT --to-port 8181 iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080 iptables -t nat -A PREROUTING -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 8181
我的
/etc/hosts
文件包含兩個 IP 地址:... 198.xxx.xxx.14 subdomain.mydomain1.com myservername1 127.0.0.1 localhost.localdomain localhost # Auto-generated hostname. Please do not remove this comment. 199.xxx.xxx.185 mydomain2.org myservername2
並且
/etc/network/interfaces
已經包含了網路適配器綁定,如下:... auto venet0:0 iface venet0:0 inet static address 199.xxx.xxx.185 netmask 255.255.255.255 auto venet0:6 iface venet0:6 inet static address 198.xxx.xxx.14 netmask 255.255.255.255 ...
iptables -t nat -A PREROUTING -p tcp -m tcp -d 198.xxx.xxx.14 --dport 80 -j REDIRECT --to-ports 8080 iptables -t nat -A PREROUTING -p tcp -m tcp -d 198.xxx.xxx.14 --dport 443 -j REDIRECT --to-ports 8181 iptables -t nat -A PREROUTING -p tcp -m tcp -d 198.xxx.xxx.185 --dport 80 -j REDIRECT --to-ports 9090 iptables -t nat -A PREROUTING -p tcp -m tcp -d 198.xxx.xxx.185 --dport 443 -j REDIRECT --to-ports 9191
這將處理來自其他主機的傳入流量。對於本地訪問,我建議完全刪除 OUTPUT 規則並使用真實埠號以避免歧義。或者在連接到 127.0.0.1:80 或 127.0.0.1:443 時選擇您希望訪問的兩個埠,並為它們設置兩個 OUTPUT 規則。