iptables 규칙이 예상대로 작동하지 않습니다

iptables 규칙이 예상대로 작동하지 않습니다

이 규칙이 제대로 작동하도록 할 수 없습니다.

내 인터페이스:

#WAN
auto wan0
iface wan0 inet dhcp

#LAN
auto lan0.7
iface lan0.7 inet static
    address 172.17.7.1
    netmask 255.255.255.0
    vlan-raw-device lan0

#DMZ
auto lan0.17
iface lan0.17 inet static
    address 172.17.17.1
    netmask 255.255.255.0
    vlan-raw-device lan0

문제가 있는 iptables 규칙은 다음과 같습니다.

iptables -A FORWARD -i lan0.17 -o lan0.7 -j DROP

여기서 목표는 DMZ 트래픽이 LAN으로 흐르는 것을 방지하는 것이지만 그 반대는 아닙니다. 위의 규칙은 LAN을 DMZ로 전환하기도 합니다. 내가 여기서 뭘 잘못하고 있는 걸까?

출력 iptables -nvL:

Chain INPUT (policy ACCEPT 578 packets, 70339 bytes)
 pkts bytes target     prot opt in     out     source               destination                                                                                                                                                                                                                                              

Chain FORWARD (policy ACCEPT 2062 packets, 173K bytes)
 pkts bytes target     prot opt in     out     source               destination                                                                                                                                                                                                                                              
  164 13776 DROP       0    --  lan0.17 lan0.7  0.0.0.0/0            0.0.0.0/0                                                                                                                                                                                                                                               

Chain OUTPUT (policy ACCEPT 402 packets, 33334 bytes)
 pkts bytes target     prot opt in     out     source               destination

답변1

트래픽은 특히 TCP의 경우 양방향입니다. lan0.7에서 lan0.17로 트래픽을 얻으려면 lan0.17에서 lan0.7로 응답 트래픽을 얻으려면 초기 응답: SYN/ACK에서 시작하여 허용되어야 합니다. 그렇지 않으면 통신을 진행할 수 없습니다. (LAN 클라이언트는 SYN-SENT 상태를 가지며 DMZ 서버는 SYN-RECV 상태를 갖습니다.) 그래서 사용국가 규칙문의넷필터 연결 추적(시스템에서 본 모든 흐름 상태 추적) 응답 트래픽(및 ICMP 오류와 같은 관련 트래픽)이 먼저 허용됩니다. 남은 것은 응답 트래픽이 아닙니다. 필요에 따라 필터링합니다. 예를 들어 lan0.17에서 lan0.7로 응답하지 않는 트래픽을 제거합니다(이전 규칙에서 허용됨).

iptables -A FORWARD -i lan0.17 -o lan0.7 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i lan0.17 -o lan0.7 -j DROP

실제로 conntrack 상태 규칙을 추가로 필터링할 이유가 없습니다. 이는 여러 동시 상황에 사용될 수 있으며 하나의 규칙이 모든 상황을 처리할 수 있습니다. 따라서 어떤 인터페이스에 적용되는지 명시하지 마십시오.

iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i lan0.17 -o lan0.7 -j DROP

관련 정보