2개의 IP 범위/1개의 NIC 또는 1개의 IP 범위가 로컬 경로 이전에 기본 경로를 따르는 이유

2개의 IP 범위/1개의 NIC 또는 1개의 IP 범위가 로컬 경로 이전에 기본 경로를 따르는 이유

하단에 업데이트됨

저는 Centos를 라우터로 사용하고 직장에서 라우팅 시스템을 방금 교체했습니다. 데이터를 보낼 라우터가 2개 있습니다. 대부분의 경우 효과가 있습니다. 한 라우터에는 동일한 네트워크 카드(eth1)에 2개의 네트워크 범위가 있습니다. 한 범위에 서버가 있고 다른 범위의 누구도 SSH를 통해 서버에 연결할 수 없습니다. 그러나 핑은 가능합니다.

빠른 레이아웃은 다음과 같습니다.

인터넷 링크:

eth0 - 192.168.144.50 (link between routers)
eth1 - 10.10.10.254 - 255.255.254.0 (10.10.10.x and 10.10.11.x ranges)
eth2 - internet

라우터 2:

eth0 - 192.168.144.24 (link between routers)
eth1 - 98.0.0.1 & 10.98.0.1 ranges (yes, I know 98.0.0.0 is not for private use, this is a legacy setup that we haven't been able to remove yet)

여기있어IP 라우팅인쇄하다:

98.0.0.0/24 dev eth1  proto kernel  scope link  src 98.0.0.1
192.168.144.0/24 dev eth0  proto kernel  scope link  src 192.168.144.24
10.98.0.0/24 dev eth1  proto kernel  scope link  src 10.98.0.1
default via 192.168.144.50 dev eth0

서버는 98.0.0.6입니다. 10.98.0.165에서 실행되는 노트북이 있습니다. ping 98.0.0.6 명령에 대한 응답을 받았습니다. 그러나 ssh로 접속하려고 하면 아무것도 얻지 못합니다. 내 라우터에서 일부 tcpdump 명령을 실행하여 ssh 명령 패킷이 랩톱에서 인터넷 라우터(192.168.144.50)로 전송된 다음 올바른 라우터로 다시 전송된다는 것을 발견했습니다.

내 iptables 목록이 비어 있습니다. 위에서 내 IP 라우팅 출력을 볼 수 있습니다. 어떤 아이디어가 있나요? 나는 하루 종일 이것만 쳐다보고 있었다. 내 이해는 라우터가 패킷을 수신하려면 98.0.0.6에 대해 eth1을 통해 패킷을 다시 보내야 한다는 것입니다. 감사해요.

편집: 튀는 부분을 긁어냅니다. 나는 SSH 세션에서 라우터로의 SSH 트래픽을 보고 있다는 것을 깨달았고 이를 내 SSH 요청에 기인했습니다.

고쳐 쓰다 설정을 분리했습니다. 이제 98.0.0.x는 eth1에 있고 10.98.0.x는 eth2에 있습니다. 그러나 내가 본 것은별로 의미가 없었습니다.

10.98.0.165 노트북에서 98.0.0.6 서버에 ping을 실행하면 응답을 받습니다. 가는 길이 이상했다. 기본 경로를 통해 192.168.144.50(인터넷 라우터)으로 이동한 후 98.0.0.6으로 돌아옵니다. (인터넷 라우터의 eth0에 있는 tcpdump가 이것을 발견했습니다)

맛있는 음식. 이 프로젝트를 시작했을 때 저는 정책 라우팅을 통해 2개의 인터넷 제공업체를 작동시키려고 했습니다. 이 작업을 수행할 수 있는 관련 항목이 있나요?

이것은 제가 업데이트한 두 번째 라우터의 레이아웃입니다.

eth0 - 192.168.144.24 (router link)
eth1 - 98.0.0.1 / 24
eth2 - 10.98.0.1 /24

그리고IP 경로 표시

98.0.0.0/24 dev eth1  proto kernel  scope link  src 98.0.0.1
192.168.144.0/24 dev eth0  proto kernel  scope link  src 192.168.144.24
10.98.0.0/24 dev eth2  proto kernel  scope link  src 10.98.0.1
default via 192.168.144.50 dev eth0

답변1

서버에서 ping 응답을 수신한다고 말씀하신 것처럼 iptables 규칙이 서버에 적용되어 서버가 ssh 연결을 끊을 가능성이 있습니다.

서버 iptables 규칙을 볼 수 있는 권한이 있으면 확인하세요. SSH 연결을 삭제하는 규칙이 있습니다.

답변2

나는 답을 찾았다. 각 네트워크 카드에 NAT를 추가했습니다.

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE

그렇게 하고 나니 모든 것이 잘 작동하기 시작했습니다. 모두 감사합니다!

관련 정보