OpenVPN을 통해 모든 트래픽 라우팅


39

그렇습니다.이 질문은 백 번 요청되었으며 아무 소용이 없습니다.

제목은 정말 모든 것을 말합니다.

OpenVPN 서버 (ubuntu)가 있으며 클라이언트 (Windows 8)를 통해 서버에 연결할 수 있습니다 ...

VPN을 통해 모든 트래픽을 라우팅하려고하면 문제가 시작됩니다.

pushserver.conf에 플래그를 추가했습니다 .

push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"

클라이언트에서 연결하면 클라이언트가 다음을 출력합니다.

Wed May 07 21:38:40 2014 SENT CONTROL [StretchVPN-CA]: 'PUSH_REQUEST' (status=1)
Wed May 07 21:38:41 2014 PUSH: Received control message: 'PUSH_REPLY,redirect-gateway def1,dhcp-option DNS 8.8.8.8,route-gateway <Remote Router IP>,ping 10,ping-restart 120,ifconfig 192.168.0.201 255.255.255.0'
Wed May 07 21:38:41 2014 OPTIONS IMPORT: timers and/or timeouts modified
Wed May 07 21:38:41 2014 OPTIONS IMPORT: --ifconfig/up options modified
Wed May 07 21:38:41 2014 OPTIONS IMPORT: route options modified
Wed May 07 21:38:41 2014 OPTIONS IMPORT: route-related options modified
Wed May 07 21:38:41 2014 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified
Wed May 07 21:38:41 2014 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0
Wed May 07 21:38:41 2014 open_tun, tt->ipv6=0
Wed May 07 21:38:41 2014 TAP-WIN32 device [Local Area Connection 4] opened: \\.\Global\{1F145805-92FC-454E-8FD9-0A6017DD4AD1}.tap
Wed May 07 21:38:41 2014 TAP-Windows Driver Version 9.9
Wed May 07 21:38:41 2014 Notified TAP-Windows driver to set a DHCP IP/netmask of 192.168.0.201/255.255.255.0 on interface {1F145805-92FC-454E-8FD9-0A6017DD4AD1} [DHCP-serv: 192.168.0.0, lease-time: 31536000]
Wed May 07 21:38:41 2014 Successful ARP Flush on interface [35] {1F145805-92FC-454E-8FD9-0A6017DD4AD1}
Wed May 07 21:38:46 2014 TEST ROUTES: 1/1 succeeded len=0 ret=1 a=0 u/d=up
Wed May 07 21:38:46 2014 C:\WINDOWS\system32\route.exe ADD <Remote Router IP> MASK 255.255.255.255 172.20.10.1
Wed May 07 21:38:46 2014 ROUTE: CreateIpForwardEntry succeeded with dwForwardMetric1=25 and dwForwardType=4
Wed May 07 21:38:46 2014 Route addition via IPAPI succeeded [adaptive]
Wed May 07 21:38:46 2014 C:\WINDOWS\system32\route.exe ADD 0.0.0.0 MASK 128.0.0.0 192.168.0.3
Wed May 07 21:38:46 2014 ROUTE: CreateIpForwardEntry succeeded with dwForwardMetric1=30 and dwForwardType=4
Wed May 07 21:38:46 2014 Route addition via IPAPI succeeded [adaptive]
Wed May 07 21:38:46 2014 C:\WINDOWS\system32\route.exe ADD 128.0.0.0 MASK 128.0.0.0 192.168.0.3
Wed May 07 21:38:46 2014 ROUTE: CreateIpForwardEntry succeeded with dwForwardMetric1=30 and dwForwardType=4
Wed May 07 21:38:46 2014 Route addition via IPAPI succeeded [adaptive]
Wed May 07 21:38:46 2014 Initialization Sequence Completed

연결을 열 때 클라이언트 측에서 플래그를 사용해 보았습니다.

openvpn --config "C:\Program Files\OpenVPN\config\client.ovpn" --redirect-gateway def1 --route-method exe

그러나 여전히 whatsmyip.org에 갈 때 여전히 내 고객 IP를 말합니다.

누구 든지이 문제가 발생하여 해결할 수 있습니까?

많은 감사


push "route 0.0.0.0 0.0.0.0"경로를 푸시 하려고 시도 했거나 비슷합니까? VPN으로 돌아가는 경로를 잊지 마십시오!
lub

그래, 이것은 "redirect-gateway def1"푸시가 사용될 때 자동으로 수행됩니다 ... 0.0.0.0 마스크 127.0.0.0 및 127.0.0.0 마스크 127.0.0.0을 추가합니다 (이미 존재하는 경로를 삭제하지 않고 기본 경로를 무시 함)
Just 럭키 정말

Windows에서 클라이언트를 "관리자 권한으로 실행"으로 실행하고 있는지 걱정입니다! 관리자가 실행하지 않고 OVPN Windows 클라이언트를 실행하면이 문제가 발생할 수 있습니다.
Kousha

답변:


34

OpenVPN 서버를 사용하여 이것을 테스트했으며 클라이언트 및 서버 구성에서 redirect-gateway def1 옵션을 설정하면 정상적으로 작동합니다. whatismyip.org에 액세스하면 OpenVPN 서버의 IP가 표시됩니다. 아래는 내가 사용하는 클라이언트 구성입니다.

client
dev tun
proto udp
# THE IP OF THE REMOTE OPENVPN SERVER:
remote ip_address port
resolv-retry infinite
nobind
persist-key
persist-tun
# THE CSR FILE:
pkcs12 certificate.p12
ns-cert-type server
cipher AES-256-CBC
comp-lzo
redirect-gateway def1
verb 3

openvpn 명령에 redirect-gateway def1 옵션을 추가하여 테스트했으며 동일한 결과를 얻었습니다. 서버 구성은 다음과 같습니다.

port 1194
proto udp
dev tun

dh /etc/openvpn/easy-rsa/keys/dh1024.pem
ca /etc/openvpn/easy-rsa/keys/ca.crt
# ENSURE THE DOMAIN NAME/FILENAME IS CORRECT:
cert /etc/openvpn/easy-rsa/keys/cert.crt
key /etc/openvpn/easy-rsa/keys/cert.key

server 10.5.3.0  255.255.255.0
# YOUR LOCAL SERVER IP HERE:
client-config-dir ccd
route 10.5.3.0 255.255.255.0
ifconfig-pool-persist ipp.txt
cipher AES-256-CBC
comp-lzo
persist-key
persist-tun

status log/openvpn-status.log 5
status-version 2
log-append log/openvpn.log
verb 3  # verbose mode
management localhost port /etc/openvpn/management-password

# ROUTE THE CLIENT'S INTERNET ACCESS THROUGH THIS SERVER:
push "redirect-gateway def1"
push "remote-gateway vpn_server_ip"
push "dhcp-option DNS 8.8.8.8"
keepalive 10 60

오늘 그것을 시도했다 ... 아직 운이 없다. 나는 당신이 TAP 어댑터 대신 TUN 어댑터를 사용하고 있음을 알았습니다 ... 나는 그 대신에 가서 다시보고 할 것입니다 : D
Just Lucky Really

1
Okie, TUN 어댑터 사용이 작동하는 것 같습니다 ... 할당 해야하는 경로에 약간 문제가 있지만 VPN 네트워크에 192.168.1.0/24를 사용하고 192.168.0.0/ 24는 내 서버 LAN입니다. 그래서 내 서버 설정에, 내가 추가 한 route 192.168.1.0 255.255.255.0push "route 192.168.0.0 255.255.255.0"하지만 내 클라이언트가의 192.168.1.0/24 그물에서 떨어져 다른 서브넷에 대한 액세스를 못하고 있습니다 ... 내가 더 조금 주위를 찌를거야
그냥 운이 정말

19

NAT 수정을 잊었습니까? 이 3 가지 명령을 루트로 실행

명령 :

iptables -I FORWARD -i tun0 -o eth0 \
         -s 10.8.0.0/24 -m conntrack --ctstate NEW -j ACCEPT

iptables -I FORWARD -m conntrack --ctstate RELATED,ESTABLISHED \
         -j ACCEPT

iptables -t nat -I POSTROUTING -o eth0 \
          -s 10.8.0.0/24 -j MASQUERADE

표제:

  • tun0 : 가상 VPN 네트워크 카드
  • eth0 : 일반적인 네트워크 카드
  • 10.8.0.0 : VPN 네트워크 IP 블록

1
이 NAT 수정 단계는 매우 중요합니다. 위의 3 가지 명령을 실행하지 않고서는이 작업을 수행 할 수 없었습니다.
Nitesh Kumar Anand

6
이 명령은 클라이언트가 아닌 openvpn 서버에서 실행해야합니다.
Kem Mason

1
nat테이블 수정 만 내 서버에서 작동 한다는 것을 알았습니다 .
Ginhing

1
openVPN 서버가 재부팅되는 경우 iptables 규칙을 유지해야합니까?
DWils

@DWils 예, 시작 스크립트에 넣어야합니다. 이 Q & A를 확인하십시오 : askubuntu.com/questions/270693/…
Arne

1

답을 열심히 찾은 후에 나는 부분적 으로이 문제를 해결했지만 적어도 매우 간단하게 해결 한 것 같습니다.

주 소스에서 Xubuntu 14.04 및 OpenVPN 패키지를 사용합니다. 에서 설정> 시스템> 네트워크 , 나는 사전 설치된 DNS 주소 대신 127.0.1.1구글의과를 8.8.8.8, 그리고 지금은 VPN 서버를 통과하는 모든 트래픽을 볼 수 있습니다.

Wireshark의 테이블에는 DNS와 같은 문자열이 없습니다. 모든 데이터는 암호화 된 채널을 통해 TCP와 같습니다. tun0(노트북의 내부)를 볼 때 DHCP 및 DNS 트래픽을 볼 수 있습니다 . wlan0트래픽 (노트북과 WiFi 라우터 사이의 외부)을 탐색 할 때 회색 TCP 패키지 만 얻습니다.

DNS 쿼리가 문자 대 숫자 디코딩에 필요하지 않고 일반적인 데이터 패키지와 같은 공통 스트림으로 진행되기 때문에 이것이 일어나고 있다고 생각합니다.

나는 당신의 고려 사항을 알고 기뻐할 것입니다, 내가 완전히 틀렸다면 놀라지 않을 것입니다


잊어 버렸습니다 :이 방법은 확실한 이점이 있습니다-VPN 서버가 DNS 경로 재 지정을 지원하지 않더라도 작동합니다.
xrobot

그건 그렇고, 우리는 하나의 트릭을 수행 할 수 있습니다 : 우리가 때때로 잘못된 보이는 무고한 DNS 쿼리를 보내면 간접적으로 빅 브라더에 대한 충성도를 확인할 수 있습니다.
xrobot

1

서버 구성 파일에 다음 지시문을 추가하십시오.

push "redirect-gateway def1"

VPN 설정이 무선 네트워크를 통해 모든 클라이언트와 서버가 동일한 무선 서브넷에있는 경우 로컬 플래그를 추가하십시오.

push "redirect-gateway local def1"

redirect-gateway 옵션을 클라이언트로 푸시하면 클라이언트 컴퓨터에서 발생하는 모든 IP 네트워크 트래픽이 OpenVPN 서버를 통과하게됩니다. 인터넷에 NAT를 연결하거나 서버 사이트의 HTTP 프록시를 통해 라우팅하는 등의 방법으로이 트래픽을 처리하도록 서버를 구성해야합니다.

Linux에서는 다음과 같은 명령을 사용하여 인터넷에 VPN 클라이언트 트래픽을 NAT 할 수 있습니다.

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

이 명령은 VPN 서브넷이 10.8.0.0/24(OpenVPN 서버 구성의 서버 지시문에서 가져옴)이고 로컬 이더넷 인터페이스가 eth0이라고 가정합니다.

리디렉션 게이트웨이를 사용하면 OpenVPN 클라이언트는 VPN 쿼리를 VPN을 통해 라우팅하므로 VPN 서버는이를 처리해야합니다. 이는 VPN 서버 주소를 연결 클라이언트로 푸시하여 VPN이 활성화되어있는 동안 정상적인 DNS 서버 설정을 대체합니다. 예를 들면 다음과 같습니다.

push "dhcp-option DNS 10.8.0.1"

10.8.0.1을 DNS 서버로 사용하도록 Windows 클라이언트 (또는 추가 클라이언트 측 스크립팅이있는 비 Windows 클라이언트)를 구성합니다. 클라이언트에서 도달 할 수있는 모든 주소는 DNS 서버 주소로 사용될 수 있습니다.


0

OpenVPN 클라이언트가 Windows 10 (또는 이와 유사한)에있는 경우 NIC의 바인딩 순서에주의해야 할 또 다른 문제가 있습니다. LAN 또는 Wifi 어댑터의 기존 DNS 서버 설정이 터널 인터페이스의 DNS 서버 설정보다 우선 할 수 있으므로 모든 것이 OpenVPN 관점에서 완전히 설정되어 있어도 Windows는 원래 DNS 서버를 계속 사용합니다.

이 Microsoft 포럼 게시물에 설명 된대로이 문제를 해결할 수 있습니다.

https://social.technet.microsoft.com/Forums/windowsserver/en-US/1cc5b647-6e51-482b-8998-ac5c3900938c/how-to-force-vpn-clients-to-use-the-dnsserver-from- 그들의 vpn-adapter-not-the-dnsserver-from-their? forum = winserverNIS


질문에 대한 답변이 아닙니다
pim

0

동일한 문제에 직면하여 Open VPN에 PiVPN 설정 스크립트를 사용할 때 서버 구성에 다음 줄이 포함되어 있습니다.

"redirect-gateway def1 bypass-dhcp"푸시

이미. IOS 클라이언트에서 모든 것은 터널을 통해 자동으로 라우팅됩니다 (로그가 말하는 것).

Tunnelblick 클라이언트에서는 client.ovpn에 다음 줄을 추가해야합니다.

리디렉션 게이트웨이 def1 바이 패스 -dhcp

완벽하게 작동합니다. 적어도 내 Mac에서는 그랬습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.