LINUX의 비대칭 라우팅 문제

LINUX의 비대칭 라우팅 문제

비대칭 라우팅 문제로 인해 미칠 지경입니다!

3개의 NIC로 멀티홈 서버를 구축하려고 합니다. 각 NIC는 3개의 서로 다른 서브넷에 연결됩니다.

eth0: LAN 연결됨, 10.99.72.38; 기능: 관리 트래픽
eth1: LAN 연결, 10.99.70.150; 기능: 사용자 트래픽
eth2: WAN 연결됨, 10.99.74.85; 기능: 사용자 트래픽

Amazon Linux 이미지(Linux 3.14.20-20.44.amzn1.x86_64 x86_64)를 사용하고 있지만 실제로 차이가 있다면 CentOS로 전환할 수 있습니다.

구현하려는 기능은 다음과 같습니다.

eth0: 관리 트래픽

  • 주소: 10.99.72.38
  • 나는 이것이 10.0.0.0/8의 주소만 수락하고 응답하는 '격리된' 인터페이스가 되기를 원합니다.
  • 이것을 '로컬 LAN에서만 SSH' NIC로 생각하십시오.
  • eth0을 통해서만 응답할 수 있습니다.
  • 다른 모든 대상은 차단됩니다. 즉, 이 인터페이스를 통해 다른 대상에 연결할 수 없습니다.
  • eth0에 도착하는 트래픽에 대한 응답 트래픽에는 eth1 또는 eth2를 사용하지 않습니다.

eth1: LAN과의 사용자 트래픽

  • 주소: 10.99.70.150
  • LAN에서 모든 대상으로의 모든 사용자 트래픽을 허용합니다.
  • 10.xxx로 향하는 트래픽에 대해 eth1을 통해 패킷을 라우팅합니다.
  • 다른 대상에 대해 eth2를 통해 패킷을 라우팅합니다(기본 경로).
  • eth0을 통해 들어오는 패킷을 라우팅하지 않습니다.

eth2: WAN을 오가는 사용자 트래픽

  • 주소: 10.99.74.85
  • eth1의 모든 사용자 트래픽을 수락하고 10.xxx에 없는 대상에 대해 eth2로 패킷을 보냅니다.
  • eth2에서 응답 패킷을 수락하고 10.xxx로 향하는 모든 트래픽에 대해 eth1을 통해 라우팅합니다.
  • eth0을 통해 들어오는 패킷을 라우팅하지 않습니다.

rt_tables에 'mgmt'라는 iproute2 테이블을 생성하고 이 인터페이스를 격리하기 위해 우선순위가 높은 정책 기반 라우팅 규칙을 추가했지만, 무엇을 시도하더라도 기본 라우팅 테이블은 여전히 ​​eth0이 기본 경로로 호출되는 것 같습니다. . 문제는 다음과 같습니다.

  • eth1에서 들어오는 패킷은 eth0을 통해 라우팅됩니다. (나는 이것을 원하지 않습니다!)
  • 10.xxx로 향하는 eth2로부터 들어오는 패킷은 eth0을 통해 라우팅됩니다(이건 원하지 않습니다!)
  • main에서 기본 eth0 경로를 삭제하면 mgmt 테이블의 경로가 있어도 eth0 기능이 완전히 손실되지만 eth1은 올바르게 응답합니다.

처음부터 수정되지 않은 라우팅 테이블(route -n):

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface  
0.0.0.0         10.99.72.1      0.0.0.0         UG    0      0        0 eth0  
0.0.0.0         10.99.70.1      0.0.0.0         UG    10001  0        0 eth1  
0.0.0.0         10.99.74.1      0.0.0.0         UG    10002  0        0 eth2  
10.99.70.0      0.0.0.0         255.255.255.0   U     0      0        0 eth1  
10.99.72.0      0.0.0.0         255.255.255.0   U     0      0        0 eth0  
10.99.74.0      0.0.0.0         255.255.255.0   U     0      0        0 eth2  

수정되지 않은 IP 규칙은 다음과 같습니다.

0:      from all lookup local  
32766:  from all lookup main  
32767:  from all lookup default  

특정 라우팅 규칙, 테이블 및 경로를 올바르게 공식화하고 최종 라우팅 테이블 및 규칙이 어떤 모습인지 보여주는 데 도움을 주시면 대단히 감사하겠습니다!

답변1

eth0및 에 대한 기본 게이트웨이 설정을 제거해야 합니다 eth1. 수행 방법은 배포판에 따라 다릅니다.

아마도 정책 라우팅이 필요하지 않을 것입니다. 나는 당신이 원하는 것이 Netfilter / 를 사용하여 가장 잘 달성되었다고 생각합니다 iptables.

iptables -I INPUT 1 -i eth0 ! -s 10.99.72.0/24 -j DROP
iptables -I FORWARD 1 -i eth0 -j DROP
iptables -I FORWARD 2 -o eth0 -j DROP

iptables -I INPUT 2 -i eth1 ! -s 10.0.0.0/8 -j DROP
iptables -I FORWARD 3 -i eth1 -j ACCEPT

iptables -I INPUT 3 -i eth2 -m conntrack --ctstate NEW -j DROP
iptables -I FORWARD 4 -i eth2 -j ACCEPT

이는 Netfilter 없이 대신 정책 라우팅을 사용하여 수행할 수 있습니다.

관련 정보