Haproxy용 iptables 구성

Haproxy용 iptables 구성

2개의 네트워크 카드(1개는 WAN(wan0)에 연결되고 다른 하나는 LAN(lan0)에 연결됨)으로 haproxy를 실행하는 Ubuntu 시스템입니다. 모든 체인이 DROP 트래픽으로 설정되었습니다.

# Masquerade traffic from LAN to WAN
-A POSTROUTING -o wan0 -s 192.168.x.x/24 -j MASQUERADE

# Allow traffic from LAN to WAN
iptables -I FORWARD -i lan0 -o wan0 -j ACCEPT

# Allow HTTP traffic in/out both interfaces
-A INPUT -p tcp --dport 80 -j ACCEPT
-A OUTPUT -p tcp --sport 80 -j ACCEPT

*** Is below rule needed? ***
# -A FORWARD -i wan0 -o lan0 -p tcp –dport 80 -j ACCEPT

WAN에서 haproxy가 백엔드 서버로 라우팅할 LAN으로의 HTTP(포트 80) 트래픽을 허용하고 싶습니다. 내가 읽은 문서에는 다음과 같은 내용이 나와 있습니다.

"INPUT, FORWARD 및 OUTPUT은 별개입니다. 패킷은 세 체인 중 하나만 도달합니다."

인터페이스 간에 HTTP(포트 80) 트래픽을 라우팅하는 iptable 규칙이 누락되었습니까?

답변1

말씀하신 대로 기본 체인 정책이 DROP. 따라서 ACCEPT허용하려는 각 트래픽 유형에 대해 명시적인 규칙이 있어야 합니다 .

다음 규칙은 lan0인터페이스에서 들어오고 인터페이스에서 나가는 상자를 통과하는 트래픽을 허용합니다 wan0.

iptables -I FORWARD -i lan0 -o wan0 -j ACCEPT

또한 다음과 같은 규칙을 사용하여 RELATED 및 ESTABLISHED와 같은 다른 유형의 트래픽을 허용하는 것이 좋습니다.

iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

이는 응답 트래픽이 통과하도록 허용하는 데 필요합니다. 체인 INPUT에 대해서도 비슷하게 수행합니다 OUTPUT.

그것은 실제로 귀하의 필요와 허용하고 거부하려는 사항에 따라 다릅니다.

문장은 다음과 같습니다.

"INPUT, FORWARD 및 OUTPUT은 별개입니다. 패킷은 세 체인 중 하나만 도달합니다."

그래 이건 사실이야. 패킷이 도달합니다:

  1. INPUT로컬 시스템으로 향하는 경우 체인.
  2. OUTPUT로컬 시스템에서 시작된 경우 체인입니다.
  3. FORWARD그렇지 않으면 체인을 연결합니다(다른 시스템에서 수신하여 다른 시스템으로 전달해야 함).

관련 정보