ufw는 도커 컨테이너 간의 통신을 차단합니다.

ufw는 도커 컨테이너 간의 통신을 차단합니다.

Magento 인스턴스와 Redis 인스턴스에 대해 두 개의 도커 컨테이너를 설정했습니다. 현재는 특정 IP 주소만 사이트에 액세스하도록 허용하고 싶기 때문에 ufw를 활성화하고 몇 가지 항목을 추가했습니다. 문제는 Magento 인스턴스가 ufw 지원 Redis 인스턴스에 연결할 수 없다는 것입니다. 비활성화하면 모든 것이 잘 작동합니다. 이것은 내 ufw 항목입니다.

--                         ------      ----
7722/tcp                   ALLOW       Anywhere
443/tcp                    ALLOW       <censored>
Anywhere                   ALLOW       172.17.0.0/16
Anywhere                   ALLOW       <censored>
Anywhere                   ALLOW       172.20.0.0/16
Anywhere                   ALLOW       127.0.0.1
6379                       ALLOW       172.20.0.0/16
3306                       ALLOW       172.20.0.0/16
6379                       ALLOW       127.0.0.1
6379                       ALLOW       172.17.0.0/16
6379                       ALLOW       <censored>
6379                       ALLOW       172.20.0.5
6379                       ALLOW       172.20.0.7
Anywhere                   ALLOW       172.20.0.5
Anywhere                   ALLOW       172.20.0.7
Anywhere                   ALLOW       <censored>
Anywhere                   ALLOW       127.0.0.0/8
Anywhere                   ALLOW       172.16.0.0/16
6379/tcp                   ALLOW       Anywhere
7722/tcp (v6)              ALLOW       Anywhere (v6)
6379/tcp (v6)              ALLOW       Anywhere (v6)

Anywhere                   ALLOW OUT   172.17.0.0/16 on docker0

Aug 1 20:35:52 <censored> kernel: [14792.173011] [UFW BLOCK] IN=br-d212b7b554b0 OUT=br-d212b7b554b0 PHYSIN=veth9ca196b PHYSOUT=vethbce3637 MAC=<censored>:14:00:05:08:00 SRC=172.20.0.5 DST=172.20.0.7 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=35267 DF PROTO=TCP SPT=45680 DPT=6379 WINDOW=64240 RES=0x00 SYN URGP=0

어떤 아이디어가 있나요?

답변1

루스토바우,코드에서, 로드하여 br_netfiltersysctl 을 활성화합니다 net.bridge.bridge-nf-call-iptables = 1.

이를 통해 레이어 2 브리지 트래픽을 iptables 방화벽으로 보호할 수 있습니다. 하지만iptablesIPv4 패킷만 처리하고 br_netfilterIPv4 유형 이더넷 프레임을 패킷으로 변환하여 필터링할 수 있도록 합니다.

아래 이미지에는 일반적인 녹색 필드(IPv4 라우팅) 대신 파란색 필드(이더넷 브리징) 내에 녹색 상자(IPv4 필터링)가 있습니다.

일반 네트워크의 Netfilter 및 패킷 흐름

충돌이 발생할 수 있으므로 동일한 시스템에서 다른 네트워크 도구와 함께 Docker를 사용하지 않는 것이 가장 좋습니다.

거기에는 많은 부작용이 설명되어 있습니다.http://ebtables.netfilter.org/br_fw_ia/br_fw_ia.html

그 중에는:7. 프레임/패킷이 iptables PREROUTING, FORWARD 및 POSTROUTING 체인을 통과하는 두 가지 가능한 방법.

Docker와의 호환성을 위해서는 다음 권장 사항을 따라야 합니다. 항상 LAN에서 자체적으로 트래픽을 활성화합니다. 따라서 OP 로그를 해결하려면 다음을 수행하십시오.

ufw route allow from 172.20.0.0/16 to 172.20.0.0/16

이는 일반적으로 라우팅(전달)이 포함되지 않기 때문에 의미가 없습니다.섹션 7이므로 추가해야 합니다. 그리고 Docker가 관리하는 모든 LAN에 동일한 콘텐츠를 추가해야 합니다. 그렇지 않으면 UFW가 Docker가 수행하는 작업을 방해합니다. 물론 이러한 네트워크는 동적이며 UFW가 빠르게 제한될 수 있기 때문에 문제가 됩니다.

iptables이에 대한 특별한 일치 항목이 있습니다: physdev(실제로는 상황에 따라 다름 br_netfilter) -A는 다음으로 대체될 수 있으며 -IDocker 및 UFW의 구성에 따라 올바른 체인이 선택되지 않았습니다.

iptables -A choosetherightchain -m physdev --physdev-is-bridged -j ACCEPT

그러나 UFW와의 통합은 UFW를 UFW뿐만 아니라 낮은 수준의 스트레이트 하이브리드로 만들기 시작할 것입니다.iptables규칙 및 UFW 규칙.

또한 동일한 질문으로 이 Q/A를 참조하세요. 여기서 나는 그것을 결합하는 방법에 대답했습니다.nftables일반적인 상태를 유지하려고 노력하는 동안:nftables 화이트리스트 도커

관련 정보