커널의 brctl과 route설정에 관한 질문 그리고 커널 네트워크 인터럽트

emax77의 이미지

다음과 같은 공유기가 있습니다.

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가 어디서 가능한지 궁금합니다.
저에게 길을 열어주실 고수님을 찾습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.