lxc 컨테이너 <-> 외부 인터넷, 내가 무엇을 놓치고 있나요?

lxc 컨테이너 <-> 외부 인터넷, 내가 무엇을 놓치고 있나요?

내 컴퓨터(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 컨테이너 내부의 인터넷을 구성하고 두 번째 규칙 세트는 URL을 사용하는 경우 lxc 컨테이너 내부의 웹 서버에 연결할 수 있습니다.http://머신 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으로 가는 도중에 특정 항목과 패킷이 중지되는 것을 허용하지 않습니다. 그런데 정확히 무엇을 놓치고 있으며 무엇을 수정해야 합니까?

답변1

여기에서 찾으세요:https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/4/html/Security_Guide/s1-firewall-ipt-fwd.html

FORWARD 체인에 기본 DROP 정책이 있는 경우 대상 NAT 라우팅을 달성할 수 있도록 수신 HTTP 요청이 전달되도록 허용하는 규칙을 추가해야 합니다. 이렇게 하려면 다음 명령을 실행하십시오.

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

관련 정보