Linux의 VPN - IP 라우팅 문제

Linux의 VPN - IP 라우팅 문제

나는 다음과 같은 시나리오를 얻었습니다.

우분투 서버 20.04 lts, ​​단순화를 위해 다음 네트워크 인터페이스를 갖춘 A 서버로 명명했습니다.

  • 루프백
  • enp1s0(완) PUBLIC-IP/23
  • enp8s0(lan) 10.9.96.3/20
  • ppp0 (l2tp) 192.168.42.1

이 라우팅 테이블을 사용하면 다음과 같습니다(공용 경로는 의도적으로 생략됨).

  • 10.9.96.0/20 dev enp8s0 proto 커널 범위 링크 src 10.9.96.3
  • 192.168.42.10 dev ppp0을 통한 192.168.1.0/24
  • 192.168.42.10 dev ppp0 proto 커널 범위 링크 src 192.168.42.1

IP 192.168.42.10으로 연결된 원격 VPN 클라이언트가 있습니다.
이 클라이언트는 원격 LAN 네트워크 192.168.1.0/24를 제공하는 MikroTik 라우터입니다.
내가 추가한 고정 경로(192.168.42.10 dev ppp0을 통한 192.168.1.0/24)를 사용하여 192.168.1.0/24 장치에 연결할 수 있습니다.


또 다른 우분투 서버 20.04 lts, ​​단순화를 위해 다음 네트워크 인터페이스를 갖춘 B 서버로 명명했습니다.

  • 루프백
  • enp1s0(완) PUBLIC-IP/23
  • enp8s0(lan) 10.9.96.4/20

그리고 이 라우팅 테이블(공개 경로는 의도적으로 생략되었습니다):

  • 10.9.96.0/20 dev enp8s0 proto 커널 범위 링크 src 10.9.96.4

기본적으로 서버 B에서 192.168.1.0/24 장치에 액세스해야 하지만 작동시킬 수 없습니다.
또한 이 서버 내에서 10.9.96.3 dev enp8s0을 통해 192.168.1.0/24 정적 경로를 추가하려고 시도했지만
성공하지 못했습니다. 192.168.1.X로 향하는 패킷이 서버 A에 도달했지만 ppp0으로 전달되지 않았습니다. 인터페이스인 것 같아요(그래서 iptables 규칙도 시도해 보았습니다)

이 문제를 해결하는 방법은 무엇입니까?

두 서버 모두에서 방화벽이 비활성화되어 있습니다.

답변1

메모: 이 답변에서 네트워크는 100.64.10.0/23공용 네트워크를 나타냅니다. 특별히 관련이 있는 것은 아니지만 이러한 가상 노드의 네트워크 구성을 질문에 설명된 것과 일치시키기 위해서만 존재합니다.


문제는 192.168.1.0/24 네트워크의 호스트가 10.9.96.0/20 네트워크에 연결하는 방법을 모른다는 것입니다.

귀하의 질문에 표시된 내용을 바탕으로 microtik 라우터(192.168.42.10/192.168.1.1)의 라우팅 테이블은 아마도 다음과 같습니다.

192.168.1.0/24 dev h1-eth0 proto kernel scope link src 192.168.1.1
192.168.42.0/24 dev h1-eth1 proto kernel scope link src 192.168.42.10

그리고 serverA의 라우팅 테이블은 다음과 같습니다.

default via 100.64.10.1 dev serverA-eth0
10.9.96.0/20 dev serverA-eth1 proto kernel scope link src 10.9.96.3
100.64.10.0/23 dev serverA-eth0 proto kernel scope link src 100.64.10.10
192.168.1.0/24 via 192.168.42.10 dev serverA-eth2
192.168.42.0/24 dev serverA-eth2 proto kernel scope link src 192.168.42.1

에서 serverA네트워크의 주소를 ping하면 192.168.1.0/24소스 주소는 입니다 192.168.42.1. microtik 라우터에는 해당 네트워크에 대한 경로가 있으므로 모든 것이 훌륭합니다.

serverB다음과 같은 라우팅 테이블이 있는 경우 :

default via 100.64.10.1 dev serverB-eth0
10.9.96.0/20 dev serverB-eth1 proto kernel scope link src 10.9.96.4
100.64.10.0/23 dev serverB-eth0 proto kernel scope link src 100.64.10.20
192.168.1.0/24 via 10.9.96.3 dev serverB-eth1

그런 다음 네트워크의 주소에 연결을 시도하면 192.168.1.0/24소스 주소는 가 됩니다 10.9.96.4. microtik 라우터는 해당 주소에 도달하는 방법을 모릅니다(또는 부적절한 기본 게이트웨이를 통해 응답을 시도합니다).

해결책은 다음과 같이 microtik 라우터에 경로를 추가하는 것입니다.

ip route add 10.9.96.0/20 via 192.168.42.1

지금:

  • Microtik 라우터에 serverB로 돌아가는 유효한 경로가 있으므로 ServerB는 microtik 라우터를 ping할 수 있습니다.
  • ServerB는 핑을 할 수 있습니다다른192.168.1.0/24해당 호스트는 microtik 라우터( 192.168.1.1)를 기본 게이트웨이로 사용하고 이전 글머리 기호에서 설정된 대로 라우터에 적절한 경로가 있기 때문에 네트워크 의 호스트입니다 .

저는 이 모든 것을 다음을 사용하여 구축된 시뮬레이션된 네트워크 환경에서 테스트했습니다.미니넷; 구성을 찾을 수 있습니다여기궁금하다면.

관련 정보