![OpenVPN - 라우팅 테이블 이해 + VPN을 통해 특정 IP로만 트래픽을 라우팅하는 방법](https://linux55.com/image/83664/OpenVPN%20-%20%EB%9D%BC%EC%9A%B0%ED%8C%85%20%ED%85%8C%EC%9D%B4%EB%B8%94%20%EC%9D%B4%ED%95%B4%20%2B%20VPN%EC%9D%84%20%ED%86%B5%ED%95%B4%20%ED%8A%B9%EC%A0%95%20IP%EB%A1%9C%EB%A7%8C%20%ED%8A%B8%EB%9E%98%ED%94%BD%EC%9D%84%20%EB%9D%BC%EC%9A%B0%ED%8C%85%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
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는 ptp 주소이며, VPN의 다른 "끝"인 것으로 알고 있습니다.
라우팅 테이블에 대한 나의 이해는 다음과 같습니다.
- 기본적으로 모든 트래픽은 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의 서버측은 제어할 수 없고 클라이언트 구성만 제어할 수 있습니다.
이제 내가 원한다면:
- 216.58.213.174에 대한 모든 트래픽이 VPN tun0을 통과하도록 강제하고 다른 모든 트래픽은 eth0을 통과하도록 하시겠습니까?
- VPN을 시작할 때 자동으로 VPN을 설정할 수 있나요?
이를 이해할 수 있도록 귀하의 조언과 지원에 감사드립니다.
한국, 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
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의 서버측은 제어할 수 없고 클라이언트 구성만 제어할 수 있습니다.
예, 하지만 클라이언트는 고도로 구성 가능하므로 서버가 클라이언트에 수행하기를 원하는 거의 모든 작업을 재정의할 수 있습니다. 하지만 연결하려면 공급자의 기본 요구 사항을 충족해야 합니다. 또한 공급자를 화나게 하지 않도록 공급자의 이용 약관을 확인해야 합니다.
이제 내가 원한다면:
216.58.213.174에 대한 모든 트래픽이 VPN tun0을 통과하도록 강제하고 다른 모든 트래픽은 eth0을 통과하도록 하시겠습니까?
예, 구성에 "경로 216.58.213.174 255.255.255.255 10.7.7.125"를 포함하세요. 그러면 원하는 경로가 설정됩니다. 구성에서 "redirect-gateway" 옵션을 제거하여 다른 경로를 유지할 수 있어야 합니다.
VPN을 시작할 때 자동으로 VPN을 설정할 수 있나요?
예, 위를 참조하세요
제가 설명한 모든 옵션과 더 많은 옵션은 OpenVPN의 온라인 설명서에서 찾을 수 있습니다. https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage