Tüm trafiği OpenVPN üzerinden yönlendirin


39

Evet, bu soru yüzlerce kez soruldu ve ben her yerde aradım, boşuna.

Başlık gerçekten her şeyi söylüyor.

Bir OpenVPN sunucum var (On ubuntu) ve istemcim üzerinden bağlanabiliyorum (Windows 8) ...

TÜM trafiği VPN üzerinden yönlendirmeye çalıştığımda sorun başlıyor.

Eklediğim pushServer.conf içinde bayraklarını:

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

İstemciden bağlandığımda, istemci şunu verir:

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

Bağlantıyı açarken istemci tarafındaki bayrakları kullanmayı denedim:

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

Ama yine de, whatsmyip.org adresine gittiğimde, müşterilerime hala ip diyor.

Bu problemi yaşayan ve çözmeyi başaran biri var mı?

Çok teşekkürler


push "route 0.0.0.0 0.0.0.0"Rotaları zorlamayı denedin mi, yoksa benzer misin? VPN'deki rotayı tekrar unutmayın!
lub

Evet, "yönlendirme-ağ geçidi def1" itme düğmesi kullanıldığında bu otomatik olarak yapılır ... 0.0.0.0 maskesi 127.0.0.0 ve 127.0.0.0 maskesi 127.0.0.0 ekler (zaten oradaki yolu silmeden varsayılan yolu sollama)
Sadece Şanslı Gerçekten

İstemciyi pencerelerde "Yönetici Olarak Çalıştır" olarak çalıştırıyorsanız endişeleniyorum! Bu sorun, yönetici çalıştırmadan OVPN Windows İstemcisi'ni çalıştırırsanız oluşabilir.
Kousha

Yanıtlar:


35

Bunu bir OpenVPN sunucusu kullanarak test ettim ve istemci ve sunucu yapılandırmasında redirect-gateway def1 seçeneğini ayarlamam iyi çalışıyor. Ben eriştiğinizde whatismyip.org benim OpenVPN sunucunun IP görüyoruz. Kullandığım istemci yapılandırması aşağıdadır:

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

Ayrıca openvpn komutuna redirect-gateway def1 seçeneğinin eklenmesiyle test ettim ve aynı sonucu elde ettim. Sunucu yapılandırması:

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

Bugün denedim ... Hala şans yok. Bir TAP adaptörü yerine bir TUN adaptörü kullandığınızı fark ediyorum ... Bunun yerine bir deneme yapacağım ve geri bildirimde bulunacağım: D
Just Lucky Gerçekten

1
Okie, bir TUN adaptörü kullanmak çalışıyor gibi görünüyor ... Her ne kadar atamam gereken rotalardan biraz sıkılsam da ... VPN ağı için 192.168.1.0/24 ve 192.168.0.0/ kullanıyorum 24 benim sunucu ağımdır. Böylece sunucu yapılandırmamda ekledim route 192.168.1.0 255.255.255.0ve push "route 192.168.0.0 255.255.255.0"müşterim 192.168.1.0/24 ağı dışında başka bir alt ağa erişemiyor ... Biraz daha dürteceğim
Just Lucky Really

19

Belki de NAT'ını değiştirmeyi unuttun? Bu 3 komutu root olarak çalıştır

Komutlar:

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

Altyazı:

  • tun0: sanal VPN ağ kartınız
  • eth0: normal ağ kartınız
  • 10.8.0.0: VPN ağınızın ip bloğu

1
Bu NAT modifikasyon adımı çok önemlidir. Yukarıdaki 3 komutu yerine getirmeden bu çalışmayı başaramadım.
Nitesh Kumar Anand

6
Bu komutların istemcide değil openvpn sunucusunda çalıştırılması gerektiğine dikkat edin.
Kem Mason

1
Yalnızca nattabloyu değiştirmenin sunucumda da çalıştığını buldum.
Ginhing,

1
OpenVPN sunucusunun yeniden başlatılması durumunda iptables kurallarına devam etmemize gerek var mı?
DWils

@DWils Evet, onları bir başlangıç ​​betiğine yerleştirmeniz gerekiyor. Bu soru ve cevapları
Arne

1

Cevabı aradıktan sonra, bunu kısmen, ama en azından çok basit bir şekilde çözdüm:

Ana kaynaktan Xubuntu 14.04 ve OpenVPN paketlerini kullanıyorum. Gelen Ayarlar> Sistem> Ağ , ben önceden yüklenmiş DNS adresini yerini 127.0.1.1Google'ın ile 8.8.8.8ve şimdi VPN sunucusu üzerinden giden tüm trafiği görebilirsiniz.

Wireshark'ın tablosunda DNS gibi bir dize yoktur: tüm veriler şifrelenmiş kanaldan TCP'ye gider. DHCP ve DNS trafiğini baktığımda görebiliyorum tun0(notebookun dahili). Ben keşfetmek zaman wlan0(notebook ve WiFi yönlendirici arasındaki dış) trafiği sadece gri TCP paketlerini olsun.

DNS sorgusu, karakter-sayı kod çözme işleminde gerekli olmadığından ve normal bir veri paketi gibi genel akışta gerçekleştiğinden düşünüyorum.

Düşüncelerinizi bilmek sevinirim, tamamen yanılıyorsam sürpriz olmaz


Unuttum: bu yöntemin tartışılmaz bir avantajı var - bir VPN sunucusu DNS yeniden yönlendirmeyi desteklemese bile çalışıyor.
xrobot

Bu arada, bir numara yapabiliriz: zaman zaman yanlış görünen masum DNS sorguları gönderirsek, dolaylı olarak Büyük Ağabeye olan bağlılığımızın bir onayı olabilir.
xrobot

1

Sunucu yapılandırma dosyasına aşağıdaki yönergeyi ekleyin:

push "redirect-gateway def1"

VPN kurulumunuz kablosuz bir ağ üzerinden yapıldıysa, tüm istemcilerin ve sunucunun aynı kablosuz alt ağda bulunduğu yerel bayrak ekleyin:

push "redirect-gateway local def1"

Yönlendirme ağ geçidi seçeneğini istemcilere iletmek, istemci makinelerden kaynaklanan tüm IP ağ trafiğinin OpenVPN sunucusundan geçmesine neden olur. Sunucunun bu trafiğe bir şekilde, örneğin internete NAT yapmak ya da sunucunun HTTP proxy'si üzerinden yönlendirmek gibi bir şekilde yapılandırılması gerekecektir.

Linux'ta internete NAT VPN istemcisi trafiğini vermek için böyle bir komut kullanabilirsiniz:

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

Bu komut, VPN alt ağının 10.8.0.0/24 (OpenVPN sunucu yapılandırmasındaki sunucu direktifinden alınmış) olduğunu ve yerel ethernet arayüzünün eth0 olduğunu varsayar.

Yönlendirme ağ geçidi kullanıldığında, OpenVPN istemcileri DNS sorgularını VPN üzerinden yönlendirecek ve VPN sunucusunun bunları ele alması gerekecek. Bu, VPN'nin aktif olduğu süre zarfında normal DNS sunucusu ayarlarının yerini alacak istemcilere bağlanmak için bir DNS sunucusu adresini iterek gerçekleştirilebilir. Örneğin:

push "dhcp-option DNS 10.8.0.1"

Windows istemcilerini (veya Windows dışı istemcileri, bazı ekstra istemci tarafı komut dizileriyle) DNS sunucusu olarak 10.8.0.1 kullanacak şekilde yapılandıracaktır. İstemcilerden ulaşılabilen herhangi bir adres, DNS sunucusu adresi olarak kullanılabilir.


0

OpenVPN istemciniz Windows 10 (veya benzeri) ise, dikkat edilmesi gereken başka bir konu vardır; NIC'lerin bağlayıcılık sırası. LAN veya Wifi adaptöründeki mevcut DNS sunucusu ayarları, tünel arayüzü için DNS sunucusu ayarlarına göre öncelikli olabilir; bu nedenle, her şey bir OpenVPN bakış açısından doğru bir şekilde ayarlanmış olsa da, Windows orijinal DNS sunucusunu kullanmaya devam eder.

Bunu, bu Microsoft forum yayında açıklanan şekilde düzeltebilirsiniz.

https://social.technet.microsoft.com/Forums/windowsserver/en-US/1cc5b647-6e51-482b-8998-ac5c3900938c/how-to-force-vpn-clients-to-use-the-dnsserver-from- onların-vpn-adaptör-olmayan-DnsServer-den-onların? forumu = winserverNIS


soruya bir cevap değil
pim

0

Aynı problemle karşılaştım ve Open VPN için PiVPN kurulum betiğini kullanırken, sunucu yapılandırma satırını içeriyor:

"yönlendirme ağ geçidi def1 bypass-dhcp" tuşuna basın

zaten. IOS istemcisinde her şey tünelden otomatik olarak geçirilir (log budur).

Tunnelblick istemcisinde, bu satırı client.ovpn satırına eklemeniz gerekir:

yönlendirme ağ geçidi def1 bypass-dhcp

ve mükemmel çalışması gerekir. En azından Mac'imde yaptı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.