라우터의 두 인터페이스 사이에서 GRE 터널을 통한 Ping이 삭제됨-Ping이 서브넷에 도달하지 않음


1

누군가가 도울 수있는 흥미로운 문제가 있습니다. 2 개의 라우터 (Linux Ubuntu 12.04 실행) 사이에 GRE 터널을 만들고이 터널을 통해 2 개의 서브넷간에 트래픽을 전달하려고합니다.

달성하려는 것은 다음 설정으로 단순화 할 수 있습니다. (다음 다이어그램에서 볼 수 있듯이) 4 대의 컴퓨터, 2 대는 라우터, 2 대는 게이트웨이에 연결된 PC입니다.

      |----------------------|              |----------------------|
SUBA--+--ETH0          ETH1--+----------- --+--ETH0          ETH1--+--SUBB
      |----------------------|              |----------------------|
            PC1 as router                        PC2 as router

이제 다이어그램이 잘못 보이면 설명해 드리겠습니다. 라우터로 구성된 2 개의 PC가 있습니다 ( ip_forwarding=1, proxy_arp=1). 라우터로서의 각 PC에는 2 개의 인터페이스가 있으며 각 인터페이스에는 자체 IP가 있습니다.

다이어그램의 왼쪽 (라우터로서 PC1)

  • SUBA=192.165.13.25
  • 라우터로서 PC1의 ETH0 =192.165.13.254(SUBA의 GW)
  • 라우터로서 PC1의 ETH1 = 192.168.6.40(서비스 제공 업체가 제공 한 주소)-> 라우터로서 PC1의 기본 GW입니다.

다이어그램의 오른쪽 (라우터로서의 PC2)

  • SUBB=192.160.20.25
  • 라우터로 PC2의 ETH0 =192.168.20.41(서비스 제공 업체에서 제공 한 주소)
  • 라우터로서 PC2의 ETH1 =192.160.20.254(SUBB의 GW)

라우팅은 각 끝에서 매우 간단하며 단어로 설명 할 수 있습니다.

PC1에서 라우터로 :

  • 192.165.13.0/24에 액세스하려면 eth0을 사용하십시오.
  • 192.168.6.0/24에 액세스하려면 eth1을 사용하십시오.
  • 기본 GW는 192.168.6.40 => 이것은 eth1입니다

PC2에서 라우터로 :

  • 192.160.20.0/24에 액세스하려면 eth1을 사용하십시오.
  • 192.168.20.0/24에 액세스하려면 eth0을 사용하십시오.
  • 기본 GW는 192.168.20.41 => 이것은 eth0입니다

이 설정에서는 추가 IPTABLE 규칙없이 모든 사람이 모든 사람을 ping 할 수 있습니다. 그리고 나는 좋다. SUBA는 SUBB를 핑 (ping) 할 수 있으며 다른 방법도 괜찮습니다.

라우터가 로컬 = 192.168.6.40및 원격 = 이있는 GRE 터널을 가지고 있기 때문에 라우터가 eth1로 PC1과 PC2 사이에 라우터 eth0 터널로 PC1 사이에 GRE 터널을 만들고 192.168.20.41 있습니다. 로컬 = 192.168.20.41및 원격 = 192.168.6.40... 터널

트래픽을 터널로 강제로 전송하기 위해 라우터로 PC2의 라우팅 (한 규칙 추가)을 수정합니다 ( 192.165.13.0/24GRE 터널 사용 액세스) .

다른 일은 없습니다.

이제 SUBB는 SUBA를 핑하려고 시도했지만 작동하지 않습니다. SUBA의 GW를 핑 (ping)하는 것은 작동하지 않습니다 (라우터로서 PC1의 두 번째 인터페이스).

다음은 wireshark 또는 tcpdump를 사용하는 것입니다.

  1. PC2의 터널 인터페이스에서 트래픽이 라우터로 전달됨
  2. 라우터로 PC1의 터널 인터페이스에서 트래픽이 나옴
  3. 트래픽은 라우터로서 PC1의 eth0 인터페이스에 도달하지 않습니다.

그래서 나는 더 깊이 파고 들었고 IP 테이블에 몇 가지 규칙을 추가하여 무슨 일이 일어나고 있는지 확인했습니다.

각 핑 요청은 다음과 같이 계산됩니다.

mangle prerouting
nat prerouting

그러나 ping은 mangle forward (SUBA로 전달하려는 경우) 또는 mangle 입력에서 계산되지 않습니다. 커널이 라우팅에서 패킷을 자동으로 버리는 것으로 보이며 그 이유를 모릅니다. 내 생각에, GRE 테이블을 만들기 전에 필요하지 않았으므로 iptables를 수정할 필요가 없습니다 ...

무슨 일이 일어나고 있는지, 커널이 패킷을보고하도록하는 방법 또는 폐기 이유에 대한 도움을 주시면 감사하겠습니다.


PC1과 PC2의 터널 엔드 포인트에 IP 주소를 할당 했습니까? 그렇다면 터널 끝점의 IP 주소가 xxx1 및 xxx2 인 경우 .1에서 .2까지 ping 할 수 있습니까?
aseaudi

PC1 및 PC2에 라우팅 테이블을 게시 할 수 있습니까?
MariusMatutiae

나는 같은 문제가 있습니다, 누군가를 도와
Spirit
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.