게이트웨이의 클라이언트 기반 라우팅

게이트웨이의 클라이언트 기반 라우팅

eth0과 tun0이라는 두 개의 인터페이스가 있는 네트워크 게이트웨이(Debian)가 있습니다. 일반적으로 모든 클라이언트의 모든 트래픽은 tun0을 통해 라우팅됩니다.

다음과 같은 방법으로 변경하고 싶습니다.

  • 클라이언트 a의 트래픽은 eth0을 통해서만 라우팅됩니다.
  • 클라이언트 b의 트래픽은 tun0을 통해서만 라우팅됩니다.
  • 다른 모든 클라이언트는 존재하는 경우 tun0을 통해 라우팅되고, tun0을 사용할 수 없는 경우 eth0을 통해 라우팅됩니다.

현재 게이트웨이 자체에서 특정 트래픽을 라우팅하기 위해 iptables를 사용하고 있는데 이를 "클라이언트 기반" 라우팅으로 변경하는 방법을 모르겠습니다.

- - 갱신 - -

  • 클라이언트 A는 고정 IP 주소를 갖습니다.
  • 클라이언트 B는 고정 IP 주소를 갖습니다.
  • eth0에는 동적 IP 주소가 있습니다
  • tun0에는 동적 IP 주소가 있습니다

답변1

Ferenc 사용자가 이미 언급했듯이 정책 라우팅이 아마도 가장 좋은 솔루션일 것입니다.

살펴보세요 ip rule. 일반적으로 다음과 같습니다.

# ip rule
0:      from all lookup local 
32766:  from all lookup main 
32767:  from all lookup default

이는 규칙 우선순위와 규칙 사양이 순서대로 나열된 목록입니다. local, main그리고 default볼 라우팅 테이블입니다. 특정 경로 테이블을 보려면 ip route show table <table>짧게 또는 를 실행하세요 ip r s t <table>.

서로 다른 소스 IP를 서로 다른 대상이나 장치로 라우팅하려면 별도의 경로가 필요합니다.테이블및 라우팅규칙이 테이블로 이동하세요.

IP 10.0.0.42에 대한 특별 경로와 네트워크 10.0.0.128/25에 대한 특별 경로를 원한다고 가정합니다. 2개를 추가로 생성해야 합니다.규칙그리고 다른 두 명테이블, 순서는 중요하지 않습니다. 규칙을 만들어 보겠습니다. 예:

# ip rule add from 10.0.0.42 lookup 300 prio 5
# ip rule add from 10.0.0.128/25 lookup 301 prio 6

그것들을 살펴보겠습니다:

# ip rule
0:  from all lookup local 
5:  from 10.0.0.42 lookup 300 
6:  from 10.0.0.128/25 lookup 301
32766:  from all lookup main 
32767:  from all lookup default

300301테이블 이름입니다(테이블은 일반적으로 숫자이지만 추가하여 이름을 지정할 수도 있습니다 /etc/iproute2/rt_tables). 나머지는 자명해야 합니다.

이제 우리는 이 양식을 작성해야 합니다. 예:

# ip route add default via 10.0.0.1 dev eth1 table 300
# ip route add 192.168.178.0/24 dev eth2 table 301

그것들을 살펴보겠습니다:

# ip route show table 300
default via 10.0.0.1 dev eth1 scope link 
# ip route show table 301
192.168.178.0/24 dev eth2 scope link

보시다시피 원하는 경로를 추가할 수 있습니다. 주소 10.0.0.42의 시스템은 이제 eth1을 통해 10.0.0.1을 통해 라우팅됩니다. 네트워크 10.0.0.128/25의 시스템은 이제 eth2를 통해 라우팅됩니다.만약에대상 주소는 내부 네트워크 192.168.178.0/24입니다.

특수 경로 테이블과 일치하는 경로가 없으면 다음 라우팅 규칙이 평가됩니다. 예를 들어 네트워크 10.0.0.128/25의 시스템이 192.168.178.0/24로 라우팅하지 않으려는 경우 기본 테이블로 대체됩니다.

규칙을 삭제하려면 add로 바꾸면 됩니다 del. 모든 경로를 삭제할 때까지 경로 테이블은 존재합니다(예: 다음을 ip route flush table <table>실행) . 보고 싶다면모두그런 다음 라우팅 규칙을 실행하면 됩니다 ip route show table all.

라우팅 규칙은 매우 유연하며 수신/발신 인터페이스, 소스/대상 포트 및 프로토콜과 같은 다양한 기타 선택기를 사용할 수 있습니다. man ip rule자세히보다.

SSH를 통해 경로와 규칙을 편집할 때 자신이 잠기지 않도록 주의하세요.

관련 정보