두 라우터에서 자체 네트워크를 통해 포트 전달이 작동하도록 하는 방법은 무엇입니까?

두 라우터에서 자체 네트워크를 통해 포트 전달이 작동하도록 하는 방법은 무엇입니까?

내부 네트워크를 통해 두 개의 라우터에 연결된 컴퓨터가 있습니다. 두 라우터 모두에서 포트 80을 내 컴퓨터로 전달했습니다.

RouterA:80 -> 10.0.0.10:80 작동합니다. RouterB:80 -> 192.168.1.10:80 작동합니다.

따라서 라우터의 포트 전달 구성이 정확합니다.

그러나 두 네트워크에 모두 연결하면 RouterA의 포트 전달만 작동합니다. RouterB의 포트 전달이 작동하도록 하려면 어떻게 해야 합니까? 내 컴퓨터 네트워크 구성을 살펴보십시오.

network:
  ethernets:
    enp7s0:
      addresses:
      - 10.0.0.10/24
      gateway4: 10.0.0.1
      nameservers:
        addresses:
        - 10.0.0.1
    enp6s0:
      addresses:
      - 192.168.1.10/24
      gateway4: 192.168.1.1
      nameservers: {}
  version: 2

님의 게이트웨이를 사용할 필요는 없지만 enp6s0포트 포워딩을 위해서는 필요한 것 같습니다.

업데이트된 네트워크 구성을 @raj에게 감사드립니다.

참고: 이는 제가 요청한 것과 정확히 일치하지는 않지만 라우터에 액세스하는 IP 범위가 다른 경우에는 작동할 것입니다. 다행히 내 경우는 그랬다.

enp7s0:
      addresses:
      - 10.0.0.10/24
      routes:
      - to: 0.0.0.0/0  #default route
        via: 10.0.0.1
        metric: 100
      nameservers:
        addresses:
        - 10.0.0.1
    enp6s0:
      addresses:
      - 192.168.1.10/24
      routes:
      - to: A.B.C.D/24  # IP range of network that would access Router B
        via: 192.168.1.1
        metric: 10
      nameservers: {}

답변1

일반적으로 두 개의 기본 게이트웨이가 정의되어 있으면 네트워킹이 제대로 작동하지 않습니다. 컴퓨터는 기본적으로 하나의 게이트웨이(이 경우 10.0.0.1)만 사용하고 첫 번째 게이트웨이에 연결할 수 없는 경우에만 두 번째 게이트웨이를 사용합니다.

따라서 RouterB의 포트 전달은 아마도~이다즉, RouterB:80으로 전송된 패킷이 컴퓨터의 인터페이스 192.168.1.10에 도달할 수 있습니다. 그러나 응답 패킷은 항상 게이트웨이 10.0.0.1로 전송되며 아마도 대상으로 돌아오지 못할 것입니다(이것을 일반적으로 문제가 되는 "비대칭 라우팅"이라고 합니다).

동일한 IP 주소 범위에서 RouterA:80 및 RouterB:80에 연결하려는 경우 문제에 대한 간단한 해결책이 없습니다. 어쩌면 인터페이스 enp6s0을 통해 수신된 패킷에 대한 응답이 항상 192.168.1.1을 통해 나가도록 iptables를 조정하는 것이 가능할 수도 있지만 어떻게 해야 할지 모르겠습니다(가능한 경우).

IP 주소가 다른 경우 192.168.1.1을 기본 게이트웨이로 정의하지 말고 대신 192.168.1.1을 통해 특정 네트워크에 대한 경로를 라우팅 테이블에 추가해야 합니다. 이는 기본 게이트웨이보다 우선하므로 지정된 네트워크로의 패킷은 10.0.0.1이 아닌 192.168.1.1을 통해 전송됩니다.

관련 정보