Linux에서 두 개의 브리지 분할

Linux에서 두 개의 브리지 분할

저는 현재 Linux(더 구체적으로는 Archlinux)를 사용하여 홈 네트워크용 라우터를 설정하려고 합니다. 제가 사용하고 있는 임베디드 보드에는 wan0, 라는 LAN 인터페이스 3개와 Wi lan0- lan1Fi 카드 2개가 있습니다 . 나는 두 개의 별도 네트워크를 갖고 싶습니다. 하나는 손님용이고 다른 하나는 나와 내 가족용입니다. 내 현재 설정은 다음과 같습니다.wifi0wifi1

                   +-------+
                   | wifi0 +----------------+
                   +-------+           +----+---+
                                       |  brg0  |
                   +-------+           +----+---+
                   | eth0  +----------------+
                   +-------+


                   +-------+
                   | wifi1 +----------------+
                   +-------+           +----+---+
                                       |  brg1  |
                   +-------+           +----+---+
                   | eth1  +----------------+
                   +-------+

lan0나는 IP 주소가 포함된 및 wifi0이름이 포함된 브리지 brd0192.168.10.1/24IP 주소가 포함된 및 이름이 지정된 브리지를 구성했습니다. On이고 dnsmasq는 dhcpd 모드에서 실행되어 해당 범위 및 범위의 클라이언트에 IP 주소를 전파합니다. 이 네트워크는 내 게스트 네트워크이자 홈 네트워크입니다.lan1wifi1brd1192.168.20.1/24brd0brd1192.168.10.50-125brd0192.168.20.50-125brd1192.168.20.1/24192.168.10.1/24

지금까지는 이 설정이 작동합니다. 그런데 한 가지 놀랐습니다. 그러나 게스트 네트워크와 홈 네트워크는 서로 다른 두 개의 서브넷에 있으므로 둘 사이의 트래픽도 별개입니다. 하지만 게스트 네트워크에 연결하면 고정 라우터를 설정하거나 전달하지 않고도 홈 네트워크의 서비스와 컴퓨터에 액세스할 수 있습니다. (반대로). 나는 이것이 Linux에서 브리지 장치가 작동하는 방식과 관련이 있다고 생각합니다.

내 질문은 두 네트워크를 서로 분리되도록 라우터를 어떻게 구성합니까? 트래픽 필터링 규칙을 사용해야 합니까? 에테이블을 사용하여 이를 달성할 수 있습니까? 아니면 내 설정이 어떤 식으로든 손상되어 한 네트워크에서 다른 네트워크로 서비스를 제공할 수 없어야 합니까?

답변1

귀하의 인터페이스 이름이 그림과 텍스트 사이에 일치하지 않기 때문에 텍스트를 참조로 사용하겠습니다.

이것라우터brd0IP가 있는 모든 인터페이스 (홈), brd1(게스트) 및 wan0(그림에 추가하는 것을 잊었음) 사이를 라우터가 예상하는 대로 라우팅합니다 .

brd0wan0이후 사이에 라우팅 해야 하므로 단순히 라우팅을 비활성화 brd1할 수는 없습니다 wan0. 각 방향에 하나씩 두 개의 iptables 규칙을 사용하여 FORWARD이 경로를 금지 할 수 있습니다.

iptables -A FORWARD -i brd0 -o brd1 -j DROP
iptables -A FORWARD -i brd1 -o brd0 -j DROP

홈 네트워크가 게스트 네트워크에 액세스할 수 있도록 하고 그 반대의 경우에는 상태 저장 규칙을 사용하여 이 작업을 수행할 수 있습니다.

iptables -A FORWARD -i brd1 -o brd0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i brd1 -o brd0 -j DROP

첫 번째 규칙은 인터페이스 이름을 제거하여 향후 유사한 규칙에서 "분해"될 수 있습니다.

iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

참고: 한 네트워크의 시스템은 라우팅되지 않아 이러한 규칙을 통과하지 않기 때문에 다른 네트워크에 속하는 라우터 IP(예: from , 성공할 것)에 대해 192.168.20.2여전히 핑을 보낼 수 있지만 , 이 문제를 해결하기에는 다소 과도한 작업이 될 수 있습니다(사용 올바른 규칙) 체인에서). 그냥 댓글로 남겨봅니다.ping 192.168.10.1FORWARDINPUT

참고 2: 이 답변에서는 브리지라는 사실을 다루지 않습니다 brd0. brd1라우팅에 관한 모든 것입니다.

관련 정보