커널의 brctl과 route설정에 관한 질문 그리고 커널 네트워크 인터럽트
다음과 같은 공유기가 있습니다.
eth0 : LAN
ra1 : 무선LAN
eth1 : WAN
일단 brctl로 br0라는 브릿지를 생성해서 eth0과 ra1을 묶습니다.
이제 네트워크는 br0와 eth1로 두개로 구성된 네트워크가 완성됬는데요..
이 상태로 IP를 할당받았습니다.
eth0는 192.168.123.xxx
이 상태의 네트워크 route 상태는 다음과 같습니다.
route
Destination gateway genmask Flags Metric Ref Use Iface
192.168.123.0 * 255.255.255.0 U 0 0 0 br0
239.0.0.0 * * 255.0.0.0 U 0 0 0 br0
그리고 LAN포트에 DHCPDISCOVER로 BROADCASTING을 했을때 IP(192.168.100.xxx)대역이 틀려도 br0에서 수신을 합니다.
예)
src MAC 임의의 MAC ip:192.168.100.100
dest MAC FF:FF:FF:FF:FF:FF ip:255.255.255.255
그런데 여기서 WAN 포트에 네트워크를 연결하면 문제가 발생합니다.
wan은 192.168.0.xxx로 할당 받습니다.
이 상태에서 네트워크 상태는 아래와 같습니다.
route
Destination gateway genmask Flags Metric Ref Use Iface
192.168.0.0 * 255.255.255.0 U 0 0 0 eth1
192.168.123.0 * 255.255.255.0 U 0 0 0 br0
239.0.0.0 * 255.0.0.0 U 0 0 0 br0
default 192.168.0.3 255.255.255.0 UG 0 0 0 eth1
default * 255.255.255.0 U 0 0 0 eth1
문제는 이상태에서 LAN에 아까 날렸던 DHCP패킷을 날릴경우 발생합니다.
예)
src MAC 임의의 MAC ip:192.168.100.100
dest MAC FF:FF:FF:FF:FF:FF ip:255.255.255.255
이 패킷을 아무데서도 받지 않습니다.
예상대로라면 LAN의 br0에서 받아서 자신의 서브넷과 같지 않으므로 WAN으로 forwarding해주지 않을까 생각했는데..
그런데 아무곳에서도 올라오지 않는 군요.
LAN WAN전부 커널의 네트워크 인터럽트 함수에서 패킷이 발생하는 것을 로그로 출력하도록 구성 되있습니다.
그런데 이상태에서 route add -net 192.168.100.0 netmask 255.255.255.0 dev br0로 설정하면
정상적으로 br0에서 받아서 처리하는군요.. 물론 커널에 인터럽트도 발생하구요.
brctl과 route명령어로 설정하더라도 실행되는 것은 결국에 커널 네트워크 인터럽트가 발생하고 난 이후 아닌가요?
아직 초보라 잘 모르는데 커널 인터럽트가 발생하고 그 패킷에 대해서 ip route가 발생하는 거 아닌가요?
그리고 brctl은 브릿지로 네트워크를 묶는다는 개념만 아는데 이 설정도 커널의 네트워크 인터럽트가 일어나기 전에
걸러지게 되는 개념아닌가요?
도대체 LAN으로 날린 패킷이 아무런 인터럽트를 발생시키지 않았다면 도대체 어디로 간것인지
discard가 되었다면 커널 인터럽트 이전에 discard가 어디서 가능한지 궁금합니다.
저에게 길을 열어주실 고수님을 찾습니다.
댓글 달기