跳到主要內容

如何在 NAT 主機設定 iptables 導向內網主機。

設定方式一:在 NAT 主機設定將 80,443 port 導向內網主機 IP 10.1.1.130[code]iptables -I FORWARD 1 -j ACCEPTiptables -t nat -I PREROUTING 1 -p tcp --dport 80 -j DNAT --to-destination 10.1.1.130:80iptables -t nat -I PREROUTING 1 -p tcp --dport 443 -j DNAT --to-destination 10.1.1.130:443[/code]注意,假設 NAT 主機的內網 IP 為 10.1.1.2 則 .130 主機的 default gateway 必須指向為 .2 的 NAT 主機。在 .130 設定 default gateway IP 10.1.1.2[code]route add default gw 10.1.1.2[/code]說明:[ol][*]這個方式在 .130 的 httpd log 記錄的 remote ip 為 client 端的實際 IP,在 PHP 可以使用 $_SERVER[HTTP_X_FORWARDED_FOR] 取得。[*]如果要封鎖某個 client IP 可以直接在 .130 下 iptables DROP 指令封鎖。[code]iptables -I INPUT 1 -j DROP -s xxx.xxx.xxx.xxx/32或ipset add DropIP xxx.xxx.xxx.xxxipset add DropNet xxx.xxx.xxx.xxx/24[/code][*]因為主機 .130 將 default gateway 指向 .2 會導致 .130 對外讀取所有 http,https 的連線都會導向回自己 .130。[/ol]

如何在 NAT 主機設定 iptables 導向內網主機。
設定方式一:在 NAT 主機設定將 80,443 port 導向內網主機 IP 10.1.1.130
[code]
iptables -I FORWARD 1 -j ACCEPT
iptables -t nat -I PREROUTING 1 -p tcp --dport 80 -j DNAT --to-destination 10.1.1.130:80
iptables -t nat -I PREROUTING 1 -p tcp --dport 443 -j DNAT --to-destination 10.1.1.130:443
[/code]
注意,假設 NAT 主機的內網 IP 為 10.1.1.2 則 .130 主機的 default gateway 必須指向為 .2 的 NAT 主機。

在 .130 設定 default gateway IP 10.1.1.2
[code]
route add default gw 10.1.1.2
[/code]

說明:
[ol]
[*]這個方式在 .130 的 httpd log 記錄的 remote ip 為 client 端的實際 IP,在 PHP 可以使用 $_SERVER["HTTP_X_FORWARDED_FOR"] 取得。
[*]如果要封鎖某個 client IP 可以直接在 .130 下 iptables DROP 指令封鎖。
[code]
iptables -I INPUT 1 -j DROP -s xxx.xxx.xxx.xxx/32

ipset add DropIP xxx.xxx.xxx.xxx
ipset add DropNet xxx.xxx.xxx.xxx/24
[/code]
[*]因為主機 .130 將 default gateway 指向 .2 會導致 .130 對外讀取所有 http,https 的連線都會導向回自己 .130。
[/ol]