Iptables
iptables 埠轉發只針對一定範圍的IP
我正在使用 LXC 容器。我的每個容器都有一個 10.0.3.0/24 的 IP 地址。我希望通過某個埠進入我的主機的數據包被重定向到一個容器,所以我使用這個規則:
iptables -t nat -A PREROUTING -p tcp --dport 3000 -j DNAT --to-destination 10.0.3.4:3000
這允許做(外部數據包)# –> HOST:3000 –> CONTAINER:3000
它工作得很好。但是,當我在一個容器內(不是上一條規則中使用的那個),並且我想訪問埠 3000 上的另一台主機(比如 HOST2)時,我的數據包被重定向到我的容器。它確實:
(容器包內)# –> HOST2:3000 –> HOST:3000 –> CONTAINER:3000
而不是(容器包內)# –> HOST2:3000 –> HOST:3000 –> HOST2:3000
我試圖將上面的規則更改為
iptables -t nat -A PREROUTING -s 10.0.3.0/24 -p tcp --dport 3000 -j DNAT --to-destination 10.0.3.4:3000
為了說:如果數據包來自容器,則不要應用規則,但這不起作用。任何幫助都會很棒,問候
這是我的 iptables 規則:
Chain PREROUTING (policy ACCEPT 154 packets, 29925 bytes) pkts bytes target prot opt in out source destination 4 240 DNAT tcp -- * * 10.0.3.0/24 0.0.0.0/0 tcp dpt:3000 to:10.0.3.5:3000 3 180 DNAT tcp -- * * 10.0.3.0/24 0.0.0.0/0 tcp dpt:3001 to:10.0.3.6:3001 Chain INPUT (policy ACCEPT 126 packets, 28400 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 25 packets, 1900 bytes) pkts bytes target prot opt in out source destination Chain POSTROUTING (policy ACCEPT 29 packets, 2140 bytes) pkts bytes target prot opt in out source destination 28 1525 MASQUERADE all -- * * 10.0.3.0/24 !10.0.3.0/24
不起作用我的意思是當我從一個容器中捲曲 3000 個主機時,我被重定向到我的容器:3000
-s
標誌只選擇與指定的主機或網路匹配的流量。如果要匹配除此之外的所有流量,請使用! -s 10.0.3.0/24
並且不要忘記
!
使用引號或反斜杠將其從 shell 中轉義。