br0
두 개의 인터페이스에 “연결된” 브리지를 설정했습니다 .
eth0
실제 인터페이스는 실제 LAN에 연결되어 있습니다.vnet0
, KVM 가상 인터페이스 (Windows VM에 연결됨).
그리고 순방향 체인 에이 단일 방화벽 규칙이 있습니다.
iptables -A FORWARD -j REJECT
이제 작동하는 유일한 Ping은 VM에서 호스트까지입니다.
br0
인터페이스 내 호스트 시스템의 IP 주소를 소유하고있다. eth0
및 vnet0
보기의 호스트의 관점에서, 어떤 IP를 “소유”하지 않습니다. Windows VM에는 고정 IP 구성이 있습니다.
내 iptables
규칙을로 변경 ACCEPT
하거나 더 제한적으로 사용하면 iptables -A FORWARD -o br0 -j ACCEPT
모든 것이 잘 작동합니다! (즉, VM에서 LAN 시스템을 핑 (ping) 할 수 있으며 다른 방법으로도 핑할 수 있음)
모든 IP 전달 커널 옵션이 비활성화됩니다 (예 net.ipv4.ip_forward = 0
:).
그렇다면 넷 필터 방화벽은 어떻게 활성화되지 않은 것을 차단할 수 있습니까?
또한 VM-LAN 트래픽은 eth0
및을 암시해야합니다 vnet0
. 그러나 -o br0
“works”로 FORWARD 트래픽을 허용하는 것처럼 보입니다 (매우 신중하게 확인하지는 않았습니다).
답변
Stéphane Chazelas 의 의견 은 답변에 대한 힌트를 제공합니다.
Bridge-nf FAQ 에 따르면 bridge-nf는 iptables, ip6tables 또는 arptables가 브리지 된 트래픽을 볼 수 있도록합니다.
커널 버전 2.6.1부터 bridge-nf 동작 제어를위한 5 개의 sysctl 항목 이 있습니다 .
bridge-nf-call-arptables
-브리지 된 ARP 트래픽을 arptables의 FORWARD 체인으로 전달하십시오.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} 테이블로 전달
다음을 사용하여 넷 필터 방화벽 차단을 비활성화 할 수 있습니다.
# sysctl -w net.bridge.bridge-nf-call-iptables=0
# sysctl -w net.bridge.bridge-nf-call-ip6tables=0