범용 라우팅에서 소스 라우팅으로 전환하는 방법은 무엇입니까?

범용 라우팅에서 소스 라우팅으로 전환하는 방법은 무엇입니까?

나는해야 해소스 라우팅더 복잡한 설정에 들어가기 전에 일반 경로(네트워크 설정에 의해 마술처럼 생성된 경로)를 소스 경로 경로로 전환하여 이것이 어떻게 작동하는지 이해하고 싶습니다.

목표는 특정 라우팅 테이블을 만들고 ip rule이 라우팅 테이블을 통해 내 IP에서 트래픽을 라우팅하는 방법을 설정하는 것입니다(내가 아는 한 default이 테이블에서는 이런 일이 발생합니다). 이것은 Debian 8에 있으며 IP가 할당된 인터페이스가 있습니다 192.168.1.107.

문제는 이 복제가 작동하지 않는다는 것입니다.

처음에 새 항목을 만들었습니다./etc/iproute2/rt_tables

200 NORMAL

그런 다음 현재 라우팅 테이블을 덤프했습니다. - 작업 네트워크용

root@debian-testing:~# ip route show table all
default via 192.168.1.1 dev eth0
169.254.0.0/16 dev eth0  scope link  metric 1000
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.107
broadcast 127.0.0.0 dev lo  table local  proto kernel  scope link  src 127.0.0.1
local 127.0.0.0/8 dev lo  table local  proto kernel  scope host  src 127.0.0.1
local 127.0.0.1 dev lo  table local  proto kernel  scope host  src 127.0.0.1
broadcast 127.255.255.255 dev lo  table local  proto kernel  scope link  src 127.0.0.1
broadcast 192.168.1.0 dev eth0  table local  proto kernel  scope link  src 192.168.1.107
local 192.168.1.107 dev eth0  table local  proto kernel  scope host  src 192.168.1.107
broadcast 192.168.1.255 dev eth0  table local  proto kernel  scope link  src 192.168.1.107

192.168.1.107실제 인터페이스( )와 관련된 항목을 테이블로 옮겼습니다. (아래는 나중에 파싱할 파일 내용입니다 . NORMAL)t.txt

root@debian-testing:~# cat t.txt
local 127.0.0.0/8 dev lo  table local src 127.0.0.1
local 127.0.0.1 dev lo  table local  src 127.0.0.1
local 192.168.1.107 dev eth0  table NORMAL src 192.168.1.107
192.168.1.0/24 dev eth0 src 192.168.1.107 table NORMAL
broadcast 127.0.0.0 dev lo  table local src 127.0.0.1
broadcast 127.255.255.255 dev lo  table local  src 127.0.0.1
broadcast 192.168.1.0 dev eth0  table NORMAL src 192.168.1.107
broadcast 192.168.1.255 dev eth0  table NORMAL src 192.168.1.107
default via 192.168.1.1 dev eth0 table NORMAL

그런 다음 기존 경로 항목을 모두 플러시하고 위 ​​항목을 로드한 다음, 들어오는 패킷이 192.168.1.107이 테이블을 사용해야 함 을 시스템에 알립니다.NORMAL

root@debian-testing:~# ip route flush table all ; while read name; do echo "adding ${name}";ip route add ${name}; done < t.txt ; ip rule add from 192.168.0.107 table NORMAL
adding local 127.0.0.0/8 dev lo  table local src 127.0.0.1
RTNETLINK answers: Invalid argument
adding local 127.0.0.1 dev lo  table local  src 127.0.0.1
adding local 192.168.1.107 dev eth0  table NORMAL src 192.168.1.107
adding 192.168.1.0/24 dev eth0 src 192.168.1.107 table NORMAL
adding broadcast 127.0.0.0 dev lo  table local src 127.0.0.1
adding broadcast 127.255.255.255 dev lo  table local  src 127.0.0.1
adding broadcast 192.168.1.0 dev eth0  table NORMAL src 192.168.1.107
adding broadcast 192.168.1.255 dev eth0  table NORMAL src 192.168.1.107
adding default via 192.168.1.1 dev eth0 table NORMAL

불행하게도 이제 라우팅 테이블이 다시 채워졌음에도 불구하고 로컬 IP나 외부 호스트에 액세스할 수 없습니다. 통과하는 유일한 핑은 입니다 127.0.0.1.

root@debian-testing:~# ping 8.8.8.8
connect: Network is unreachable
root@debian-testing:~# ping 192.168.1.107
connect: Network is unreachable
root@debian-testing:~# ip route
root@debian-testing:~# ip route show table all
default via 192.168.1.1 dev eth0  table NORMAL 
broadcast 192.168.1.0 dev eth0  table NORMAL  scope link  src 192.168.1.107 
192.168.1.0/24 dev eth0  table NORMAL  scope link  src 192.168.1.107 
local 192.168.1.107 dev eth0  table NORMAL  scope host  src 192.168.1.107 
broadcast 192.168.1.255 dev eth0  table NORMAL  scope link  src 192.168.1.107 
broadcast 127.0.0.0 dev lo  table local  scope link  src 127.0.0.1 
local 127.0.0.1 dev lo  table local  scope host  src 127.0.0.1 
broadcast 127.255.255.255 dev lo  table local  scope link  src 127.0.0.1 

이 문제에 대한 해결책을 어디서 찾아야 합니까? 내 접근 방식이 완전히 정확합니까?

답변1

통신용 인터페이스를 지정하지 않았다는 점만 제외하면 모두 맞는 것 같습니다. 노력하다

ping -I 192.168.1.107 -c1 8.8.8.8

작동해야합니다.

관련 정보