Saya menemukan masalah yang tidak bisa saya tangani. Ketika saya masuk ke VPS melalui SSH dan mencoba untuk membuat sambungan VPN pada VPS itu, koneksi SSH antara VPS dan mesin saya hilang. Saya berasumsi itu karena perutean diubah oleh pengaturan VPN. Bagaimana cara mencegahnya?
14
--route-noexec
opsi untuk mengabaikan rute yang didorong oleh server tetapi, seperti yang Anda sebutkan, itu tidak membantu ketika saya ingin menggunakan VPN sebagai proxy ...Jawaban:
Anda perlu menambahkan
route-nopull
opsi (dan menghapusredirect-gateway
jika ada) ke file konfigurasi klien OpenVPN Anda di VPS Anda.Dengan cara itu menghubungkan ke server VPN tidak akan mengubah rute pada VPS Anda, sehingga Anda akan dapat mengatur yang Anda butuhkan sendiri.
sumber
inet addr:10.56.10.6 P-t-P:10.56.10.5 Mask:255.255.255.255
Mari pertimbangkan skenario berikut:
Dalam skenario seperti itu, dari mesin Anda (misalkan mesin Anda 9.8.7.6/24 dengan def-gw 9.8.7.254), Anda dapat berhasil membuat koneksi SSH ke 4.3.2.1. Oleh karena itu kedua host 4.3.2.1 dan 9.8.7.6 dapat berhasil mencapai satu sama lain.
Sekarang, dengan koneksi SSH dibuat, mari kita anggap:
Di panggung ini:
JIKA tidak ada rute yang akan didorong dari server OpenVPN jauh ke VPS lokal Anda, maka tidak ada yang akan berubah dalam hal perutean, dan koneksi SSH Anda akan bertahan tanpa masalah sama sekali. Dalam hal ini, satu-satunya lalu lintas yang melintasi VPN adalah yang diarahkan ke OpenVPN Server jarak jauh (10.10.10.1);
JIKA server OpenVPN jarak jauh akan mendorong kembali beberapa rute, dan terutama jika VPS default-gateway akan diganti dengan 10.10.10.1 (titik akhir OpenVPN jarak jauh), MAKA Anda mengalami masalah. Dalam hal ini Anda melakukan tunneling SEMUA lalu lintas IP keluar (dengan pengecualian OpenVPN sendiri) di dalam VPN.
Dalam kasus kedua ini (mengganti def-gw tepat setelah membuat koneksi VPN), koneksi SSH Anda sebelumnya akan "hang", karena perutean asimetris:
Dengan kata lain: segera setelah tautan VPN dibuat, rute kembali Anda dari VPS ke mesin Anda akan berubah dan ... ini bukan hal yang baik (beberapa perangkat jaringan, di sepanjang jalur pengembalian, mungkin mengenali asimetris seperti itu) path dan cukup jatuhkan paket).
Selain itu, kemungkinan besar bahwa server OpenVPN remote Anda bertindak sebagai kotak-NAT: semua lalu lintas yang berasal dari VPN akan disatukan dengan alamat IP publik Server OpenVPN jarak jauh. Jika ini benar, maka tidak ada lagi ... "tidak baik", tapi pasti "buruk", seperti untuk koneksi SSH Anda: kembalikan lalu lintas, selain untuk kembali ke rute yang berbeda, akan kembali ke mesin Anda dengan IP sumber yang berbeda (salah satu antarmuka publik dari server VPN).
Bagaimana cara mengatasi masalah ini?
Cukup mudah, memang.
Cukup menginstruksikan server VPS Anda untuk tidak merutekan lalu lintas ke mesin Anda di sepanjang VPN, tetapi, sebaliknya, mengandalkan rute sebelumnya . Seharusnya semudah menambahkan, sebelum memulai OpenVPN:
dimana:
PS: dengan memberikan pertanyaan yang jauh lebih detail, Anda akan mendapat jawaban yang jauh lebih cepat :-)
sumber
route add
perintah dengan pengembalianSIOCADDRT: Invalid argument
[server] Peer Connection Initiated with [AF_INET]64.251.27.139:443; TUN/TAP device tun0 opened; do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0; /sbin/ip link set dev tun0 up mtu 1500; /sbin/ip addr add dev tun0 10.200.1.251/22 broadcast 10.200.3.255; ERROR: Linux route add command failed: external program exited with error status: 2
netstat -rn
hasil0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 venet0
VPS yang saya gunakan adalah opsi dasar OVH dengan Ubuntu 14,04 Server on boardifconfig
dannetstat -rn
output: goo.gl/TEZ61qIni dapat membantu:
dimasukkan ke
TCPKeepAlive=yes
dalam/etc/ssh/sshd_config
Dari
sumber
TCPKeepAlive
opsi yang diatur keyes
jadi itu bukan solusi yang tepatSaya memiliki masalah ini dan mencoba semua solusi yang direkomendasikan, dan masih, masalah saya tidak terpecahkan!
Setelah banyak mencoba solusi, saya menggunakan
screen
perintah. (Klien VPN saya adalah cisco-any-connect).Setelah memberikan kredensial Anda, tekan ctrl + a + d segera dan kembali ke sesi Anda.
sumber
Secara pribadi saya lebih suka semua koneksi ke SSH dialihkan melalui VPN. Dalam hal koneksi ssh aktif sebelum VPN dibuat, ia harus terhubung kembali karena rutenya berubah.
Saya sarankan untuk menggunakan
autossh
Di bawah konfigurasi klien ssh Anda, tambahkan saja.ssh/config
sumber
Setelah menghubungkan VPN, ssh terputus karena, ssh lalu lintas dari server melalui server VPN. Jadi untuk menghindari ini jalankan perintah berikut sebelum menghubungkan VPN.
rute tambahkan -hosting mesin-Anda-publik-ip gw Server-gatway-ip dev eth0
your-machine-public-ip: IP mesin Anda dari tempat Anda melakukan SSH. Server-gatway-ip: IP Gatway / router dari server itu
Perintah di atas akan mengarahkan lalu lintas melalui gateway yang diberikan bukan melalui Server VPN.
sumber