br0
두 인터페이스 모두에 "연결된" 브리지를 설정했습니다 .
eth0
, 내 물리적 인터페이스가 실제 LAN에 연결되어 있습니다.vnet0
, KVM 가상 인터페이스(Windows VM에 연결됨).
순방향 체인에 방화벽 규칙이 있습니다.
iptables -A FORWARD -j REJECT
이제 유효한 유일한 핑은 VM에서 호스트로 보내는 것입니다.
이 br0
인터페이스는 내 호스트의 IP 주소를 보유합니다. 호스트의 관점에서 볼 때 eth0
어떤 IP도 "소유"하지 않습니다. vnet0
Windows VM에는 고정 IP 구성이 있습니다.
iptables
규칙을 변경하면 ACCEPT
(또는 더 제한적인 규칙을 사용하면 iptables -A FORWARD -o br0 -j ACCEPT
) 모든 것이 잘 작동합니다! (즉, 가상 머신에서 어떤 LAN 컴퓨터든 ping할 수 있으며 그 반대의 경우도 마찬가지입니다.)
모든 IP 전달 커널 옵션이 비활성화됩니다(예: net.ipv4.ip_forward = 0
).
그렇다면 넷필터 방화벽은 활성화되지도 않은 것을 어떻게 차단합니까?
또한 VM-LAN 트래픽은 eth0
및 만 나타내야 합니다 vnet0
. 그러나 "유효한" 전달 트래픽을 허용하는 것 같습니다 -o br0
(다시 확인하지는 않았지만).
답변1
이것논평Stéphane Chazelas가 답에 대한 힌트를 제공합니다.
~에 따르면Bridge-nf FAQbridge-nf를 사용하면 iptables, ip6tables 또는 arptables를 사용하여 브리지 트래픽을 볼 수 있습니다.
커널 버전 2.6.1부터 5가지가 있습니다.시스템 제어 항목bridge-nf 동작 제어의 경우:
bridge-nf-call-arptables
- 브리지된 ARP 트래픽을 FORWARD arptable 체인으로 전달합니다.bridge-nf-call-iptables
- 브리지된 IPv4 트래픽을 iptables에 전달하는 체인입니다.bridge-nf-call-ip6tables
- 브리지된 IPv6 트래픽을 ip6tables 체인으로 전달합니다.bridge-nf-filter-vlan-tagged
- 브리지된 VLAN 태그가 지정된 ARP/IP 트래픽을 arptables/iptables로 전달합니다.net.bridge.bridge-nf-filter-pppoe-tagged
- 브리지된 pppoe 태그가 지정된 IP/IPv6 트래픽을 {ip,ip6} 테이블로 전달합니다.
다음 명령을 사용하여 netfilter 방화벽 차단을 비활성화할 수 있습니다:
# sysctl -w net.bridge.bridge-nf-call-iptables=0
# sysctl -w net.bridge.bridge-nf-call-ip6tables=0