탭 인터페이스에서 iptables로 패킷 필터링

탭 인터페이스에서 iptables로 패킷 필터링

게스트 컴퓨터가 인터넷에 액세스하지 못하도록 방화벽 규칙을 작성하려고 합니다. 서버(KVM을 사용하는 Ubuntu 서버 22.0)에는 라우터, 브리지 인터페이스(br0)에 연결된 물리적 연결(enp34s0)이 있고 게스트는 동일한 네트워크에 브리지되는 탭 장치(vnet0)를 사용하고 있습니다. br0. vnet0에 적용하려고 시도한 모든 규칙이 작동하지 않았습니다.

예를 들어 다음 명령을 사용하여 핑을 방지하려고 했습니다. iptables -I FORWARD -i vnet0 -o br0 -p icmp -j DROP iptables -I FORWARD -o vnet0 -i br0 -p icmp -j DROP iptables -I FORWARD -i vnet0 -o enp34s0 -p icmp -j DROP iptables -I FORWARD -o enp34s0 -i br0 -p icmp -j DROP

여전히 게스트와 핑을 보낼 수 있습니다. (https를 방지하기 위해 -p tcp --dport 443도 시도했습니다.) 제가 뭔가 잘못하고 있는 걸까요? TAP 장치라는 사실과 관련이 있는지, 웹에서 관련 내용을 찾지 못한 것인지 알 수 없습니다..

답변1

FORWARDICMP 트래픽을 캡처하기 위해 테이블 에 로깅 규칙을 추가하는 경우 ...

iptables -I FORWARD -p icmp -j LOG --log-prefix 'FORWARD_ICMP '

...입력 인터페이스가 TAP 장치가 아닌 브리지임을 알 수 있습니다.

Sep 09 19:19:20 fizzgig kernel: FORWARD_ICMP IN=virbr0 OUT=wlp0s20f3
PHYSIN=vnet1 MAC=52:54:00:f7:70:2a:52:54:00:18:f8:12:08:00 SRC=192.168.122.210
DST=8.8.8.8 LEN=84 TOS=0x00 PREC=0x00 TTL=63 ID=59668 DF PROTO=ICMP TYPE=8
CODE=0 ID=5 SEQ=1 

이는 귀하의 규칙이 -i vnet0결코 일치하지 않을 것임을 의미합니다.

속성 에서 TAP 장치를 볼 수 있습니다 PHYSIN. 다음과 같이 모듈 을 사용하여 이를 일치시킬 수 있습니다 physdev.

iptables -A FORWARD -m physdev --physdev-in vnet1 -j DROP

(다른 방향의 트래픽을 일치시켜야 하는 경우 --physdev-out 일치도 있습니다.)

관련 정보