일부 프로젝트를 더 잘 설정하거나 배우기 위해 Linux 기반 라우터(내 경우에는 OpenWRT)에서 패킷 라우팅이 어떻게 작동하는지 이해하려고 합니다. 아래 차트를 참고하여 두 가지 질문으로 나누어 보았습니다.
- iptables 외부(프로세스, 다른 종류의 라우팅 테이블 또는 편집할 수 있는 것 등)가 아래 노드에서 "라우팅 결정"을 내리거나 안내하는 일을 구체적으로 담당하는 것이 무엇인지 궁금합니다. 아래 다이어그램에서 iptables가 아니라 "Routing Decision"이라고 표시된 실제 노드에 대해 이야기하고 있다는 점에 유의하세요. IE 패킷이 NAT PREROUTING을 거친 후, 다음에 로컬 프로세스의 입력 필터 체인이나 전달 체인으로 이동하도록 패킷 날씨를 알려주는 무언가가 있어야 합니다. 그렇죠? 이 질문의 두 부분 모두에서 하위 노드에 더 많은 가능성과 프로세스가 포함되어 있다고 생각하기 때문에 최상위 "라우팅 결정" 노드를 고수할 수 있다고 말하고 싶습니다.
- 추가적으로/또는 대안으로 결정은 어떻게 이루어 집니까? 간단하지 않습니까? 들어오는 패킷의 대상이 들어오는 인터페이스 IP(예: LAN 연결의 192.168.1.1)인 경우 이 시스템 자체로 들어가서 입력 테이블을 통해 보내야 합니다. 그렇지 않으면 외부 네트워크(이 경우 인터넷만)에 액세스하려면 다른 인터페이스로 전달되어야 하므로 전달을 허용하는 다른 인터페이스로 전달하세요. 또는 인터넷 연결의 인터페이스로 직접 전달하는 대신 DNS 서버와 같은 일부 프로세스에서 처리되도록 패킷을 라우터로 보내는 다른 가능한 방법이 있습니까?
답변1
들어오는 패킷을 로컬 시스템으로 라우팅해야 하는지 여부는 대상 IP 주소가 로컬 시스템의 인터페이스에 있는 IP 주소 중 하나인지 여부에 따라 달라집니다. 패킷이 어떤 인터페이스에 들어가는지는 중요하지 않습니다. eth0
IP 주소가 있는 인터페이스와 해당 인터페이스에 추가 IP 주소가 있을 수 있습니다 192.168.1.1
. 대상 주소에 도착하는 패킷은 로컬로 처리됩니다.192.168.1.2
lo
192.168.1.2
eth0
라우팅 결정은 IP 라우팅 규칙 테이블과 결합된 IP 라우팅 테이블을 기반으로 이루어집니다. 이 테이블은 인터페이스에서 IP 주소를 설정할 때 자동으로 채워집니다.
ip rule show
라우팅 규칙은 다음 명령(축약 가능)을 사용하여 볼 수 있습니다.
$ ip ru sh
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
다음 명령어 ip route show table xxx
(축약 가능)를 사용하여 각 라우팅 테이블을 확인할 수 있습니다. 이 local
표는 로컬 시스템으로 전송되어야 하는 패킷을 나타냅니다.
$ ip ro sh table local
broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1
local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1
local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1
broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
broadcast 192.168.1.0 dev eth0 proto kernel scope link src 192.168.1.1
local 192.168.1.1 dev eth0 proto kernel scope host src 192.168.1.1
broadcast 192.168.1.255 dev eth0 proto kernel scope link src 192.168.1.1
테이블은 main
사용할 때 일반적으로 표시되는 것이므로 route
( 에서와 같이 더 이상 사용되지 않음 ifconfig
) 이름을 지정할 필요가 없습니다.
$ ip ro sh
default via 192.168.1.254 dev eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.1
이 default
테이블은 일반적으로 비어 있지만 예를 들어 게이트웨이가 여러 개인 경우 기본 경로를 저장하는 데 사용할 수 있습니다.
더 많은 정보를 원하시면 읽어주세요정책 라우팅 북