Merutekan semua lalu lintas melalui OpenVPN

39

Yap, pertanyaan ini telah ditanyakan ratusan kali, dan saya telah mencari kemana-mana, tetapi tidak berhasil.

Judulnya mengatakan itu semua benar-benar.

Saya memiliki server OpenVPN (Di ubuntu), dan saya dapat terhubung melalui klien saya (Windows 8) ...

Masalahnya dimulai ketika saya mencoba merutekan SEMUA lalu lintas melalui VPN.

Saya telah menambahkan pushflag di server.conf:

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

Ketika saya terhubung dari klien, klien menampilkan:

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

Saya telah mencoba menggunakan flag di sisi klien ketika membuka koneksi:

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

Tapi tetap saja, ketika saya pergi ke whatsmyip.org, masih dikatakan klien saya ip.

Adakah yang punya masalah ini dan berhasil menyelesaikannya?

Terimakasih banyak

Hanya Beruntung Sungguh
sumber
Apakah Anda mencoba push "route 0.0.0.0 0.0.0.0"atau serupa untuk mendorong rute? Jangan lupa rute kembali ke VPN!
lub
Ya ini dilakukan secara otomatis ketika push "redirect-gateway def1" digunakan ... Ia menambahkan 0.0.0.0 mask 127.0.0.0 dan 127.0.0.0 mask 127.0.0.0 (mengambil alih rute default tanpa menghapus yang sudah ada)
Hanya Lucky Really
Saya khawatir jika Anda menjalankan klien sebagai "Run As Administrator" di windows! Masalah ini dapat terjadi jika Anda menjalankan OVPN Windows Client tanpa administrator menjalankan.
Kousha

Jawaban:

35

Saya telah menguji ini menggunakan server OpenVPN dan mengatur opsi redirect-gateway def1 di klien dan konfigurasi server berfungsi dengan baik. Ketika saya mengakses whatismyip.org saya melihat IP server OpenVPN saya. Di bawah ini adalah konfigurasi klien yang saya gunakan:

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

Saya telah menguji juga dengan menambahkan opsi redirect-gateway def1 ke perintah openvpn dan mencapai hasil yang sama. Konfigurasi server adalah:

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
cioby23
sumber
Sudah mencoba hari ini ... Masih belum berhasil. Saya perhatikan Anda menggunakan adaptor TUN daripada adaptor TAP ... Saya akan mencobanya dan melaporkan kembali: D
Just Lucky Really
1
Okie, menggunakan adaptor TUN tampaknya berfungsi ... Meskipun saya agak bermasalah dengan rute yang harus saya tetapkan ... Saya menggunakan 192.168.1.0/24 untuk jaringan VPN, dan 192.168.0.0/ 24 adalah LAN server saya. Jadi dalam konfigurasi server saya, saya telah menambahkan route 192.168.1.0 255.255.255.0dan push "route 192.168.0.0 255.255.255.0"tetapi klien saya tidak mendapatkan akses ke subnet lain selain dari 192.168.1.0/24 net ... Saya akan melihat-lihat lagi
Just Lucky Really
20

Mungkin Anda lupa memodifikasi NAT Anda? Jalankan 3 perintah itu sebagai root

Perintah:

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

Keterangan:

  • tun0: kartu jaringan VPN virtual Anda
  • eth0: kartu jaringan normal Anda
  • 10.8.0.0: blok ip jaringan VPN Anda
chickahoona
sumber
1
Langkah modifikasi NAT ini sangat penting. Saya tidak bisa menjalankan ini tanpa menjalankan 3 perintah di atas.
Nitesh Kumar Anand
6
perhatikan bahwa perintah ini harus dijalankan di server openvpn, bukan klien.
Kem Mason
1
Saya menemukan bahwa hanya memodifikasi nattabel juga berfungsi di server saya.
Ginhing
1
Apakah kita perlu mempertahankan aturan iptables jika server openVPN di-reboot?
DWils
@DWils Ya, Anda harus memasukkannya ke dalam skrip startup. Lihat T&J ini: askubuntu.com/questions/270693/…
Arne
1

Setelah susah payah mencari jawabannya, sepertinya saya sudah menyelesaikan ini, mungkin sebagian, tetapi setidaknya secara sederhana:

Saya menggunakan paket Xubuntu 14.04 dan OpenVPN dari sumber utama. Dalam Pengaturan> Sistem> Jaringan , saya mengganti alamat-DNS yang sudah diinstal 127.0.1.1dengan Google 8.8.8.8, dan sekarang saya dapat melihat semua lalu lintas melalui server-VPN.

Dalam tabel Wireshark string seperti DNS tidak ada: semua data berjalan seperti TCP melalui saluran terenkripsi. Saya dapat melihat lalu lintas DHCP dan DNS ketika saya melihat tun0(internal notebook). Ketika saya menjelajahi wlan0lalu lintas (eksternal antara notebook dan router WiFi) saya hanya mendapatkan paket TCP abu-abu.

Saya pikir itu terjadi karena permintaan DNS tidak diperlukan dalam decoding karakter-ke-angka dan itu berjalan dalam aliran umum seperti paket data biasa.

Saya akan senang mengetahui pertimbangan Anda, tidak akan mengejutkan jika saya benar-benar salah

xrobot
sumber
Saya lupa: metode ini memiliki satu keuntungan yang tidak dapat disangkal - ini berfungsi bahkan jika server-VPN tidak mendukung pengalihan rute DNS.
xrobot
Ngomong-ngomong, kita bisa melakukan satu trik: jika kita akan mengirim dari waktu-waktu permintaan DNS-palsu yang kelihatan tidak benar, secara tidak langsung itu bisa menjadi konfirmasi kesetiaan kita kepada Kakak.
xrobot
1

Tambahkan arahan berikut ke file konfigurasi server:

push "redirect-gateway def1"

Jika pengaturan VPN Anda melalui jaringan nirkabel, di mana semua klien dan server berada pada subnet nirkabel yang sama, tambahkan bendera lokal:

push "redirect-gateway local def1"

Mendorong opsi redirect-gateway ke klien akan menyebabkan semua lalu lintas jaringan IP yang berasal dari mesin klien melewati server OpenVPN. Server perlu dikonfigurasikan untuk menangani lalu lintas ini dengan cara apa pun, seperti dengan memasang NAT ke internet, atau merutekannya melalui proxy HTTP situs server.

Di Linux, Anda bisa menggunakan perintah seperti ini untuk NAT lalu lintas klien VPN ke internet:

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

Perintah ini mengasumsikan bahwa subnet VPN adalah 10.8.0.0/24 (diambil dari direktif server dalam konfigurasi server OpenVPN) dan bahwa antarmuka ethernet lokal adalah eth0.

Ketika redirect-gateway digunakan, klien OpenVPN akan merutekan permintaan DNS melalui VPN, dan server VPN akan perlu menanganinya. Ini dapat dilakukan dengan mendorong alamat server DNS untuk menghubungkan klien yang akan mengganti pengaturan server DNS normal mereka selama VPN aktif. Sebagai contoh:

push "dhcp-option DNS 10.8.0.1"

akan mengkonfigurasi klien Windows (atau klien non-Windows dengan beberapa skrip sisi klien tambahan) untuk menggunakan 10.8.0.1 sebagai server DNS mereka. Setiap alamat yang dapat dijangkau dari klien dapat digunakan sebagai alamat server DNS.

Pol Hallen
sumber
0

Jika klien OpenVPN Anda ada di Windows 10 (atau serupa) ada masalah lain yang harus diperhatikan, urutan pengikatan NIC. Pengaturan server DNS yang ada pada LAN atau adaptor Wifi dapat mengambil prioritas di atas pengaturan server DNS untuk antarmuka terowongan, jadi meskipun semuanya sudah diatur dengan benar dari sudut pandang OpenVPN, Windows terus menggunakan server DNS asli.

Anda dapat memperbaiki ini seperti yang dijelaskan dalam posting forum Microsoft ini.

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

Dinilai olehDredd
sumber
bukan jawaban untuk pertanyaan
pim
0

Saya menghadapi masalah yang sama dan menemukan ketika menggunakan skrip pengaturan PiVPN untuk Open VPN, konfigurasi server berisi baris:

tekan "redirect-gateway def1 bypass-dhcp"

sudah. Pada klien iOS semuanya dialihkan melalui terowongan secara otomatis (itulah yang dikatakan log).

Pada klien Tunnelblick Anda perlu menambahkan baris ini di client.ovpn baris:

redirect-gateway def1 bypass-dhcp

dan itu harus bekerja dengan sempurna. Setidaknya itu terjadi di Mac saya.

Peter
sumber