Setup:
Saya memiliki setup klien / server openvpn (file konfigurasi di bagian bawah), dan saya mendapatkan MULTI: bad source address from client [192.168.x.x], packet dropped
pesan terkenal di server. Server memiliki alamat IP publik, sementara klien berada di belakang NAT.
Kekurangan dari solusi yang diusulkan sebelumnya:
Yang client-config-dir
didefinisikan dalam konfigurasi server saat ini kosong. Posting sebelumnya (di sini dan di forum dukungan openvpn) menyarankan untuk menambahkan file yang dinamai DEFAULT
dengan aturan yang tepat client-config-dir
, atau menambahkan file per pengguna dengan aturan tersebut untuk menyelesaikan masalah.
Namun, ini sepertinya bukan solusi jangka panjang, karena aturan ini khusus untuk lokasi klien. Jadi, saya bisa menambahkan aturan untuk memungkinkan klien 192.168.x.0
untuk terhubung. Tetapi jika mereka terhubung dari jaringan lain yang digunakan 192.168.y.0
untuk NAT, aturan baru akan diperlukan.
Pertanyaan:
- Bisakah aturan yang diperlukan ditulis secara generik / satu kali?
- Adakah yang bisa menjelaskan mengapa masalah ini terjadi?
Konfigurasi server:
port 1234
proto tcp
dev tun
ca ca.crt
cert openvpn.crt
key openvpn.key
dh dh2048.pem
server 10.78.96.0 255.255.255.0
keepalive 10 120
comp-lzo
cipher CAMELLIA-128-CBC
user nobody
group nogroup
persist-key
persist-tun
client-cert-not-required
plugin /usr/lib/openvpn/openvpn-auth-pam.so login
status openvpn-status.log
push "redirect-gateway def1"
push "remote-gateway 1.2.3.4"
push "dhcp-option DNS 8.8.8.8"
client-config-dir ccd
verb 4
Konfigurasi klien:
ca ca.crt
client
dev tun
proto tcp
remote 1.2.3.4 1234
auth-user-pass
script-security 2
keepalive 5 60
topology subnet
resolv-retry infinite
nobind
persist-key
persist-tun
ns-cert-type server
cipher CAMELLIA-128-CBC
comp-lzo
verb 4
192.168.x.0
dan klien yang ada di192.168.y.0
jaringan? Mereka semua berada di192.168.x.x/16
jaringan yang sama yang telah Anda tetapkan ... (?)Jawaban:
Anda bertanya: " Dapatkah seseorang menjelaskan mengapa masalah ini terjadi? "
Berdasarkan apa yang dilaporkan dalam FAQ OpenVPN resmi, saya yakin itu disebabkan oleh masalah perutean di dalam mesin OpenVPN.
Untuk lebih memperjelas skenario, izinkan saya merujuk ke diagram berikut:
Di sini Anda dapat melihat:
Juga
Sekarang, mari kita asumsikan bahwa:
Dengan skenario seperti itu, mari kita periksa secara rinci apa yang terjadi ketika R_PC1 (192.168.1.2) mengirim paket, seperti permintaan gema, ke L_PC1 (10.0.1.2):
Jadi semuanya baik-baik saja ...
Sekarang mari kita periksa apa yang terjadi dengan echo-reply yang L_PC1 balas ke R_PC1.
Sekarang, jika kita ingin OpenVPN Server dapat menjangkau situs jarak jauh, kita perlu mendefinisikan perutean dengan "rute statis". Sesuatu seperti:
route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.10.0.2
Harap perhatikan alamat P2P yang digunakan sebagai gateway .
Rute statis semacam itu akan beroperasi pada level OS. Dengan kata lain, sistem operasi diperlukan untuk merutekan paket dengan benar. Ini berarti sesuatu seperti: "Tolong, semua lalu lintas yang ditujukan ke subnet 192.168.1.0/24 perlu diteruskan ke mesin OpenVPN, yang dengannya OS dapat berbicara melalui alamat P2P". Berkat rute statis seperti itu, sekarang ...
Jadi, sekarang, masalahnya adalah: bagaimana, perangkat lunak server openvpn, akan dapat memutuskan rute suatu paket, dengan SRC_IP 10.0.1.2 dan DST_IP 192.168.1.2 ?
Harap dicatat bahwa, berdasarkan konfigurasi server OpenVPN, ia tidak tahu apa - apa tentang jaringan 192.168.1.0/24, atau host 192.168.1.2. Itu bukan klien yang terhubung. Itu bukan klien lokal. Dan sebagainya? OpenVPN, juga, tahu bahwa itu bukan "OS-Router", jadi ia tidak benar-benar ingin (dan dapat ....) mengirim paket kembali ke gateway lokal. Jadi satu-satunya pilihan, di sini, adalah untuk meningkatkan kesalahan. Persis kesalahan yang Anda alami
Untuk mengatakannya dengan bahasa FAQ: " ... ia tidak tahu cara merutekan paket ke mesin ini, jadi ia menjatuhkan paket ... ".
Bagaimana kita bisa menyelesaikan masalah?
Seperti yang dapat Anda lihat dari dokumentasi resmi , opsi iroute persis melayani ruang lingkup kami:
Jadi, Anda membutuhkan:
untuk diterapkan (ke server) ketika klien OpenVPN Anda terhubung, misalnya melalui file konfigurasi ad-hoc yang ditentukan pada server (client-config-dir, dll.).
Jika Anda bertanya-tanya mengapa masalah ini tidak terjadi pada langkah 2) di atas, pemahaman saya adalah bahwa Klien OpenVPN tahu cara merutekannya, karena ia tahu bahwa terowongan VPN adalah gateway default.
Hal yang sama tidak dapat dilakukan di OpenVPN Server, karena di sana gateway default tipically tidak diganti. Juga, pertimbangkan bahwa Anda dapat memiliki satu server OpenVPN dengan banyak klien OpenVPN: setiap klien tahu bagaimana menjangkau server tetapi ... bagaimana bisa, server, memutuskan klien mana yang bertindak sebagai gateway untuk subnet yang tidak dikenal?
Adapun pertanyaan pertama Anda ( Bisakah aturan yang diperlukan ditulis dengan cara generik / satu kali? ), Saya minta maaf tapi saya tidak mendapatkan masalah Anda. Bisakah Anda ulangi memberikan rincian lebih lanjut?
sumber
Saya memiliki masalah yang tampaknya serupa, tetapi saya tidak yakin apakah itu sama dengan masalah Anda. Saya mencoba untuk melakukan ping dari klien openvpn ke komputer di jaringan lokal server openvpn (dialihkan dalam konfigurasi server), tidak mendapat balasan dan saya bisa melihat pesan "alamat sumber buruk" di log openvpn server.
Untuk mengatasinya, saya harus melakukan 2 hal:
Itu memperbaikinya bagi saya.
sumber