
나는 br_netfilter
Linux 커널 모듈이 정확히 무엇을 하는지 명확하게 이해하려고 노력하고 있습니다(네트워킹과 관련이 있다는 것을 알고 있습니다).
여기서 제가 묻는 간단한 질문은 다음과 같습니다.
이 모듈을 활성화하면 수행할 수 있지만 이 모듈을 비활성화하면 수행할 수 없는 작업에 대한 예를 들어주세요. 나는 이것이 그것과 관련이 있다고 생각했지만 iptables
모듈을 비활성화/활성화할 때 항상 동일한 iptables
명령을 실행할 수 있습니다.
참고: 커널 모듈을 비활성화해도 컴퓨터가 종료되지 않을지 확신할 수 없으므로 이를 테스트하기 위해 테스트 AWS EC2 인스턴스를 만들었습니다.
편집: 명확히 하기 위해 내가 보고 싶은 것은 X,Y,Z 명령 실행이라고도 하는 간단한 단계 집합입니다. 활성화하면 시스템이 예상대로 실행되고 비활성화하면 그렇지 않습니다.
답변1
먼저, 이 모듈을 유용하게 사용하려면 먼저 다음을 수행해야 합니다.브리징둘 이상의 네트워크 인터페이스(물리적 또는 가상) 간의 트래픽입니다.
예를 들어, 시스템에서 QEMU/KVM 가상 머신을 실행하고 가상 머신을 별도의 IP 주소로 네트워크에 제공할 수 있는 경우(= 가상 머신에서 서비스를 설정하는 데 포트 전달이 필요하지 않음) 호스트 시스템의 물리적 네트워크를 실행할 수 있습니다. 인터페이스와 가상 머신의 가상 네트워크 인터페이스 사이의 브리지입니다.
hostapd
또는 자체 WiFi 액세스 포인트를 실행하고 무선 네트워크가 별도의 IP 서브넷이 되는 것을 원하지 않는 경우 유선 및 무선 네트워크 인터페이스 간에 브리지를 실행할 수 있습니다.
brctl show
기본적으로 or 의 출력이 ip link show type bridge
빈 목록이 아니면 ebtables
MAC 주소를 기반으로 브리지를 통과하는 트래픽에 대한 제한을 설정할 수 있습니다.
이 두 명령에 출력이 표시되지 않으면 필터링을 수행할 하위 시스템을 br_netfilter
사용하고 있지 않기 때문에 아무 소용이 없습니다 . br_netfilter
비록 그들이하다출력을 보면 브리지의 MAC 기반 필터링만 필요한 경우에도 br_netfilter
이 모듈이 전혀 필요하지 않습니다.
하지만 브리지에서 IP 주소나 TCP/UDP 포트를 기준으로 필터링하려면 어떻게 해야 할까요? 그런 다음 실행할 수 있습니다 echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
.br_netfilter
이것이 모듈이 활성화된 이유입니다.iptables
브리지된 트래픽에 규칙을 적용할 수 있습니다 .
내가 올바르게 이해했다고 가정하면 테스트되지 않은 예입니다.
vifX
호스트에서 볼 수 있듯이 명명된 가상 네트워크 인터페이스를 사용하여 KVM 가상 머신을 실행하는 가상화 호스트를 실행 중입니다 . 가상 네트워크는 물리적 인터페이스 와 가상 인터페이스 br0
로 연결된 브리지를 통해 구현됩니다 . VM의 IP 주소/마스크는 10.6.6.6/24입니다. 직접 액세스를 통해 액세스할 수 있는 동일한 네트워크 세그먼트에는 IP 주소/마스크가 10.6.6.100/24인 또 다른 물리적 서버가 있습니다.eno1
vifX
eno1
처음에는 SSH 연결을 10.6.6.100에서 10.6.6.6으로 또는 그 반대로 설정할 수 있습니다. 10.6.6.100에서 10.6.6.6으로의 연결을 허용하지만 10.6.6.6에서 나가는 SSH 연결을 차단하려고 합니다.
네트워크 인터페이스를 통해 표준 연결 추적 iptables FORWARD 규칙을 만들 수 있습니다.
iptables -A FORWARD -i vifX -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i vifX -p tcp --dport 22 -j DROP
하지만 처음에는 작동하지 않습니다. 왜냐하면 당신이 아니기 때문입니다.라우팅가상 머신과 외부 세계 간의 트래픽입니다.브리징. 따라서 브리지된 트래픽에도 규칙을 br_netfilter
적용 할 수 있습니다.iptables
echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
이제 물리적 호스트 10.6.6.100은 VM 10.6.6.6에 SSH로 연결할 수 있지만 VM은 어디에서나 포트 22로 나가는 SSH 연결을 설정할 수 없습니다. 동일한 네트워크 세그먼트에 있는 다른 호스트의 경우에도 마찬가지입니다.
자세한 내용은 여기를 참조하세요 ebtables
.https://ebtables.netfilter.org/index.html
구체적으로 br_netfilter
활성화하는 방법은 다음과 같습니다.https://ebtables.netfilter.org/documentation/bridge-nf.html