루트 4 네트워크

루트 4 네트워크

나는 성공하지 않고 작동하도록 거의 일주일 동안 노력해 왔습니다. 나는 절망감을 느끼기 시작했습니다.

4개의 이더넷 어댑터가 있습니다.

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 30:85:a9:ad:54:1e brd ff:ff:ff:ff:ff:ff
    inet 10.100.36.2/29 brd 10.100.36.7 scope global eth0
    inet6 fe80::3285:a9ff:fead:541e/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether a0:f3:c1:04:64:40 brd ff:ff:ff:ff:ff:ff
    inet 69.70.164.242/30 brd 69.70.164.243 scope global eth1
    inet6 fe80::a2f3:c1ff:fe04:6440/64 scope link
       valid_lft forever preferred_lft forever
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether a0:f3:c1:04:a0:2f brd ff:ff:ff:ff:ff:ff
    inet 10.45.13.1/24 brd 10.45.13.255 scope global eth2
    inet6 fe80::a2f3:c1ff:fe04:a02f/64 scope link
       valid_lft forever preferred_lft forever
5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 28:10:7b:c9:58:76 brd ff:ff:ff:ff:ff:ff
    inet 10.45.15.1/24 brd 10.45.15.255 scope global eth3
    inet6 fe80::2a10:7bff:fec9:5876/64 scope link
       valid_lft forever preferred_lft forever

이것은 내 Linux 서버(Debian)가 시작 시 제공하는 기본 경로입니다.

69.70.164.240/30 dev eth1  proto kernel  scope link  src 69.70.164.242
10.100.36.0/29 dev eth0  proto kernel  scope link  src 10.100.36.2
10.45.15.0/24 dev eth3  proto kernel  scope link  src 10.45.15.1
10.45.13.0/24 dev eth2  proto kernel  scope link  src 10.45.13.1
default via 10.45.15.254 dev eth3
default via 10.45.13.254 dev eth2
default via 69.70.164.241 dev eth1
default via 10.100.36.1 dev eth0

이것이 내가 하고 싶은 일이다. eth0은 내 VDSL 회선이고 eth1은 내 케이블 회선입니다. 나는 원해요:

  • 10.45.13.0(eth2)에서 게이트웨이 10.100.36.1(eth0) 로 모든 트래픽을 전달합니다 .
  • 10.45.15.0(eth3)에서 게이트웨이 69.70.164.241(eth1) 로 모든 트래픽을 전달합니다 .

10.45.13.0이 작품을 만들 수 있다면 기쁘겠지만, 보이지 않게 만들고 싶기도 10.45.15.0하고 그 반대도 마찬가지입니다.

답변1

라우팅 테이블당 기본 경로는 하나만 있을 수 있습니다. 따라서 먼저 하나를 제외한 모든 기본 경로를 삭제해야 합니다. 데비안 서버가 사용하기를 원하는 유일한 방법입니다.

다른 것과 마찬가지로 원하는 것을 "소스 라우팅"이라고 합니다. 즉, 현재 처리 중인 패킷의 출처(소스)를 기반으로 다른 라우팅을 수행한다는 의미입니다.

이것소스 라우팅으로 수행하려는 작업의 정확한 예입니다. 귀하의 질문 내용이 약간 불안정하므로 귀하의 데비안 서버가 VDSL 라인도 사용하기를 원한다고 가정합니다.

이는 eth0을 통한 경로를 제외하고 라우팅 테이블에서 모든 기본 경로를 제거한다는 의미입니다. 기본/위치 RT는 다음과 같아야 합니다.

69.70.164.240/30 dev eth1  proto kernel  scope link  src 69.70.164.242
10.100.36.0/29 dev eth0  proto kernel  scope link  src 10.100.36.2
10.45.15.0/24 dev eth3  proto kernel  scope link  src 10.45.15.1
10.45.13.0/24 dev eth2  proto kernel  scope link  src 10.45.13.1
default via 10.100.36.1 dev eth0

그런 다음 연결된 예제에 따라 다른 라우팅 테이블을 만듭니다. UseCable대신 테이블에 전화해서 John가셔도 좋습니다.

echo 200 UseCable >> /etc/iproute2/rt_tables

10.45.13.0그런 다음 패킷이 다음에서 시작될 때 해당 테이블을 사용하도록 커널에 지시합니다.

ip rule add from 10.45.15.0 table UseCable

그런 다음 UseCable을 채워야 합니다. 시작은 다음과 같습니다.

ip route add 10.45.15.0/24 dev eth3 table UseCable
ip route add 69.70.164.240/30 dev eth1 table UseCable
ip route add default via 69.70.164.241 table UseCable #that's the default route via cable

자, 라우팅이 완료되었습니다. NAT도 필요하다고 생각합니다. 그래서 당신은 다음과 같은 것이 필요합니다

#for everything from eth3 leaving through eth1
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE 

#for everything from eth2 leaving through eth0
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 

완벽한. 가장 깔끔한 방법은 아니지만 10.45.15.0/24에서 시작될 때 라우팅 테이블에 10.45.13.0/24에 대한 항목이 포함되어 있지 않기 때문에 10.45.13.0/24와 10.45.15.0/24 간의 통신이 불가능합니다.

나는 연습으로 당신에게 세련미를 맡깁니다.

관련 정보