OpenVPN-라우팅 테이블 이해 + VPN을 통해 트래픽을 특정 IP로 라우팅하는 방법


12

OpenVPN을 사용하여 VPN 서비스에 연결하고 있으며 모든 것이 잘 작동합니다. 연결하면 자동으로 설정되는 규칙이 있습니다.

root@linux:~# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:AA:1B:01:AC:FB  
          inet addr:192.168.1.201  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:46867 errors:0 dropped:0 overruns:0 frame:0
          TX packets:29742 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:37977382 (36.2 MiB)  TX bytes:5098121 (4.8 MiB)
          Interrupt:16 

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.7.7.126  P-t-P:10.7.7.125  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:23284 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5817 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:31366374 (29.9 MiB)  TX bytes:308591 (301.3 KiB)

root@linux:~# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.7.7.125      128.0.0.0       UG    0      0        0 tun0
default         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
5.120.121.114   192.168.1.1     255.255.255.255 UGH   0      0        0 eth0
10.7.7.1        10.7.7.125      255.255.255.255 UGH   0      0        0 tun0
10.7.7.125      *               255.255.255.255 UH    0      0        0 tun0
128.0.0.0       10.7.7.125      128.0.0.0       UG    0      0        0 tun0
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0

내가 이해하는 것은 다음과 같습니다.

  • 내 로컬 IP 주소는 192.168.1.201입니다
  • 로컬 게이트웨이는 191.168.1.1입니다.
  • 5.120.121.114는 VPN 공개 IP입니다
  • tun0은 VPN 터널이며 내 컴퓨터의 주소는 10.7.7.126입니다.
  • 10.7.7.125는 VPN의 다른 "끝"으로 이해하는 ptp 주소입니다.

라우팅 테이블과 관련하여 다음 사항을 이해합니다.

  • 기본적으로 모든 트래픽은 인터페이스 tun0에서 10.7.7.125를 통해 전송됩니다 (그러나 왜 마스크입니까?).
  • 10.7.7.1은 tun0을 통해 도달 할 수 있습니다
  • VPN의 공개 IP는 eth0을 통해 연결할 수 있습니다

두 번째 기본 게이트웨이를 이해하지 못합니다. VPN이 활성화되어 있지 않을 때의 기본값입니다. 단순히 우회됩니까?

10.7.7.1는 어떻습니까? 그것이 VPN의 게이트웨이 인 것처럼 보입니다 ...

왜 목적지 128.0.0.0입니까?

OpenVPN은 이러한 모든 규칙을 자동으로 만듭니다. 그러나 무엇을 기반으로 만들어 졌습니까?

VPN의 서버 쪽을 제어 할 수없고 클라이언트 구성 만 제어 할 수 있습니다.

이제 내가 원하는 경우 :

  • VPN tun0을 통과하고 나머지는 eth0을 통과하도록 216.58.213.174에 대한 모든 트래픽을 강제 실행합니까?
  • VPN을 시작할 때 자동으로 설정할 수 있습니까?

이를 이해하기위한 제안과 지원에 감사드립니다.

KR, dk

편집하다:

root@linux:~# ip route list
0.0.0.0/1 via 10.7.7.125 dev tun0 
default via 192.168.1.1 dev eth0 
5.152.210.249 via 192.168.1.1 dev eth0 
10.7.7.1 via 10.7.7.125 dev tun0 
10.7.7.125 dev tun0  src 10.7.7.126 
128.0.0.0/1 via 10.7.7.125 dev tun0 
192.168.1.0/24 dev eth0  src 192.168.1.201 

1
내 2 센트 만 : ip route list경로를 더 잘 볼 수 있습니다. 또한 ifconfig와 route가 LInux에서 더 이상 사용되지 않기 때문에

답변:


15

두 번째 기본 게이트웨이를 이해하지 못합니다. VPN이 활성화되어 있지 않을 때의 기본값입니다. 단순히 우회됩니까?

이것은 기본 게이트웨이를 유지하면서 터널을 통해 트래픽을 라우팅하는 OpenVPN의 해킹 중 하나입니다. 0.0.0.0/1 및 128.0.0.0/1 경로는 모든 주소와 일치하면서도 더 구체적이기 때문에 0.0.0.0/0 경로보다 우선합니다. 자세한 내용은 OpenVPN 설명서에서 "def1"을 검색하십시오.

10.7.7.1는 어떻습니까? 그것이 VPN의 게이트웨이 인 것처럼 보입니다 ...

아마 요

OpenVPN은 이러한 모든 규칙을 자동으로 만듭니다. 그러나 무엇을 기반으로 만들어 졌습니까?

서버에서 푸시되었을 수 있습니다. 구성 파일과 함께 시작하는 동안 클라이언트에서 출력을 제공 할 수있는 경우 자세한 정보를 제공 할 수 있습니다

VPN의 서버 쪽을 제어 할 수없고 클라이언트 구성 만 제어 할 수 있습니다.

그러나 클라이언트는 서버가 클라이언트가 원하는 모든 것을 무시할 수 있도록 고도로 구성 가능합니다. 그래도 연결하려면 공급자의 기본 요구 사항을 충족해야합니다. 또한 제공자의 "이용 약관"을 확인하여 결국 그들을 화나게하지 않도록해야합니다.

이제 내가 원하는 경우 :

VPN tun0을 통과하고 나머지는 eth0을 통과하도록 216.58.213.174에 대한 모든 트래픽을 강제 실행합니까?

그러나 구성에 "route 216.58.213.174 255.255.255.255 10.7.7.125"를 포함하십시오. 원하는 경로를 설정해야합니다. 구성에서 "redirect-gateway"옵션을 제거하여 다른 경로를 그대로 유지할 수 있어야합니다.

VPN을 시작할 때 자동으로 설정할 수 있습니까?

예, 위 참조

위에서 설명한 모든 옵션은 OpenVPN의 온라인 설명서에서 찾을 수 있습니다. https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage


많은, 많은 감사합니다 !!! 나는 0.0.0.0/1과 128.0.0.0/1의 귀여운 작은 트릭을 이해하려고 노력하면서 네트워크 Minutia를 통해 며칠을 보냈습니다. 결국 VPN을 사용할 수있는 경우를 제외하고는 완전히 중복 된 경로 만 추가하면됩니다.
rlduffy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.