OpenVPN bukan gateway default untuk semua lalu lintas

21

Saya mencoba membuat klien saya meneruskan semua lalu lintas melalui VPS yang menjalankan OpenVPN. Seperti yang Anda lihat, itu akan memungkinkan ping ke domain dan alamat IP mentah, tetapi itu tidak akan mengizinkan lalu lintas seperti yang dilakukan melalui curl dan traceroute tidak menghasilkan apa-apa. Lalu lintas berfungsi dengan benar ketika tidak terhubung ke VPN.

Semua informasi ada di sini: https://pastebin.com/tGspNefn

Terima kasih.

Konfigurasi yang berfungsi berkat solusi di bawah ini:

Server:

port <integer>
proto udp
dev tun
ca ca.crt
cert vpnserver.crt
key vpnserver.key  # This file should be kept secret
dh dh4096.pem
tls-auth ta.key 0
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway autolocal"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
cipher AES-256-CBC
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3

Klien:

client
dev tun
proto udp
remote x.x.x.x <port number>
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert vpnclient.crt
key vpnclient.key
tls-auth ta.key 1
ns-cert-type server
cipher AES-256-CBC
comp-lzo
verb 3
DrDinosaur
sumber
/sbin/route add -net 0.0.0.0 netmask 128.0.0.0 gw 10.8.0.5 mengapa netmask 128.0.0.0?
Antony Gibbs
Terima kasih DrDinosaur karena menunjukkan serverfault.com/questions/312860/…
Antony Gibbs
3
Lain kali ekstrak informasi yang relevan dan sertakan dalam pertanyaan. Cuplikan pastebin memiliki masa hidup yang terbatas.
MLu

Jawaban:

34

Ada dua bagian ke dalam solusi:

1. Arahkan ulang semua lalu lintas ke dalam terowongan

Solusi termudah - gunakan --redirect-gateway autolocalopsi OpenVPN (atau masukkan dalam file konfigurasi sebagai redirect-gateway autolocal.

2. Menangani lalu lintas di server OpenVPN

Sekarang terowongan naik semua lalu lintas masuk ke terowongan dan muncul di ujung server dari tun0antarmuka.

Anda perlu mengonfigurasi dua hal untuk membuatnya berfungsi:

Sebuah. Aktifkan penerusan paket

Secara default di sebagian besar distribusi penerusan paket dinonaktifkan, maka paket dari antarmuka terowongan tidak pernah sampai ke antarmuka publik. Anda harus mengaktifkan penerusan dengan:

~ # sysctl net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1

Setelah diuji, lakukan perubahan permanen di /etc/sysctl.conf

Pastikan iptablesjuga tidak memblokir lalu lintas yang diteruskan:

~ # iptables -I FORWARD -j ACCEPT

Ini cukup baik untuk pengujian - dalam produksi Anda ingin membuat aturan firewall sedikit lebih spesifik, tapi itu di luar jangkauan di sini.

b. Pisahkan paket keluar dari terowongan

Dengan penerusan yang diaktifkan paket-paket secara default diteruskan dengan alamat sumbernya tidak berubah, yaitu dalam kasus Anda 10.8.0.6- paket-paket seperti itu dijatuhkan di gateway ISP atau bahkan jika mereka membuatnya ke tujuan, balasannya tidak pernah menemukan jalan kembali. Alamat pribadi ini tidak dapat dirutekan di internet.

Solusinya adalah untuk NAT lalu lintas keluar, yaitu mengganti 10.8.0.6alamat pribadi dengan IP publik server VPN. Itu akan memastikan bahwa balasan mencapai server VPN dan di sana mereka akan diteruskan kembali ke terowongan.

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

3. Uji itu

Sekarang coba ping 8.8.4.4dari klien VPN Anda. Anda akan melihat balasan. Beri tahu kami jika tidak :)

MLu
sumber
Ini berfungsi dengan baik sekarang. Terima kasih banyak atas jawaban berkualitas tinggi.
DrDinosaur
Di sisi klien tambahkan add pull ke file client.conf, atau atau tambahkan opsi --pull ke baris perintah, sehingga klien akan menerima konfigurasi yang didorong oleh server. Juga jika klien berjalan di bawah Windows Vista atau menonaktifkan UAC yang lebih baru, jika tidak layanan openpn yang berjalan pada klien tidak akan dapat mengatur rute.
Viktor
> b. NAT paket keluar dari terowongan Itu membantu saya.
FelikZ
Benar-benar memperhitungkan bahwa aturan MENERIMA-MAJU membuat Server router terbuka di antara semua antarmuka itu. Itu tidak boleh digunakan pada sistem produksi. Tetapi untuk HowTo, pada dasarnya dapat bekerja dengan cepat, sebuah set instruksi yang sangat bagus.
Sprinterfreak
Apakah Redirect all the traffic into the tunnellangkah dalam Konfigurasi klien?
Pesawat