Iptables

lxc 容器 <-> 外部網際網路,我錯過了什麼?

  • April 5, 2016

我的機器(enp0s10)上有連接到真實網路的乙太網,並且我有收集 lxc 容器的 lxcbr0 乙太網橋。我想提供一個 lxc 容器。

所以我寫道:

IFACE=enp0s10
echo "allow inet for lxc"
iptables -t nat -A POSTROUTING -o $IFACE -j MASQUERADE
iptables -A FORWARD -i $IFACE -o lxcbr0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i lxcbr0 -o $IFACE -j ACCEPT

echo "allow web for lxc"
iptables -A PREROUTING -t nat -i $IFACE -p tcp --dport 19980 -j DNAT --to 172.20.0.5:80
iptables -A INPUT -p tcp -m state --state NEW --dport 19980 -i $IFACE -j ACCEPT

第一組規則在 lxc 容器內配置網際網路,第二組規則可以連接 lxc 容器內的 Web 伺服器,如果我使用 url “ http://machine-ip:19980 ”。所有作品。但後來我想讓它更安全,並通過以下方式結束規則:

iptables -N logdrop
iptables -A logdrop -m limit --limit 5/m --limit-burst 10 -j LOG
iptables -A logdrop -j DROP

iptables -A INPUT -p tcp -m state --state NEW -j logdrop
iptables -A INPUT -j logdrop
iptables -A FORWARD -j logdrop

所以我以明確的方式記錄並刪除我不允許的所有內容。之後我進入日誌:

IN=enp0s10 OUT=lxcbr0 MAC=xxx SRC=192.168.1.1 DST=172.20.0.5 LEN=60 TOS=0x00 PREC=0x00 TTL=62 ID=57331 DF PROTO=TCP SPT=58432 DPT=80 WINDOW=29200 RES=0x00 SYN URGP=0 

所以我不允許在從 enp0s10 到 lxcbr0 的途中發生某些事情和數據包停止,但我到底錯過了什麼以及需要修復什麼?

在這裡找到:https ://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/4/html/Security_Guide/s1-firewall-ipt-fwd.html

如果您的 FORWARD 鏈中有 DROP 的預設策略,則必須附加一條規則以允許轉發傳入的 HTTP 請求,以便可以進行目標 NAT 路由。為此,請執行以下命令:

iptables -A FORWARD -i eth0 -p tcp --dport 80 -d 172.31.0.23 -j ACCEPT

引用自:https://unix.stackexchange.com/questions/274293