Bagaimana cara menggunakan OpenVPN melalui firewall terbatas?

13

Saya saat ini dalam situasi mencoba mengatur OpenVPN pada VPS pribadi, untuk koneksi terutama melalui firewall yang terlalu ketat. Semua pengaturan yang disebutkan di bawah ini berfungsi saat digunakan melalui koneksi yang cukup firewall.

Saya telah mencoba:

  1. OpenVPN berjalan pada port standar
  2. OpenVPN berjalan pada port 443 (saya memulai OpenVPN secara manual dari baris perintah pada VPS dan melihat bahwa server melaporkan koneksi yang ditutup segera, saya berasumsi ini adalah hasil DPI pada firewall)
  3. STunnel berjalan pada port 443 untuk mengakses OpenVPN dan menghindari DPI. Ini adalah yang paling sukses dan memungkinkan koneksi dan akses internet melalui VPN selama ~ 10-20 detik, sebelum koneksi ditutup secara paksa.

Apakah ada hal lain yang bisa saya coba?

RL Stine
sumber
1
Tuan yang terhormat, penyedia "VPS pribadi" apa yang Anda miliki yang berusaha keras untuk mencegah Anda menjalankan VPN ?! Juga, tidak jelas apakah Anda mencoba menggunakan VPS sebagai server OpenVPN, atau jika Anda ingin menjadikannya klien?
allquixotic
Aduh! Seharusnya aku lebih jelas. Penyedia VPS adalah Linode, dan mereka pasti tidak memblokir apa pun. ;) Masalahnya adalah saya terhubung ke VPN dari klien (laptop saya) yang akses internetnya sangat dirahasiakan.
RL Stine
1
Solusi VPN secara umum akan cukup mudah dideteksi oleh apa pun yang melakukan inspeksi paket stateful, seperti yang Anda mengisyaratkan. Pemutusan paksa dapat disebabkan oleh metode analisis lalu lintas yang melihat koneksi https stunnel dan berkata "tunggu sebentar, koneksi standar HTTP permintaan / respons tidak terlalu cerewet!" - Intinya kamu mandek. Anda dapat mencoba proksi HTTPS; mungkin sesuatu di mana Anda meneruskan permintaan sebagai badan HTTP (lebih dari SSL) ke servlet dan meneruskan permintaan Anda ... o_O
allquixotic
3
Anda mungkin ingin diingat bahwa memintas pembatasan yang diterapkan oleh firewall perusahaan kemungkinan merupakan pelanggaran kebijakan perusahaan. Saya sarankan Anda berbicara dengan admin firewall tentang masalah ini.
Ansgar Wiechers

Jawaban:

11

Sambungan terputus setelah jangka waktu yang lama kadang-kadang menunjukkan tipe batas byte-per-detik. Coba lihat apakah memperlambat koneksi VPN Anda berfungsi. Juga jika Anda telah mengkonfigurasi OpenVPN untuk UDP, coba TCP (443 UDP mungkin diblokir sedangkan 443 TCP mungkin tidak terdeteksi).

Kunjungi situs terkenal yang menggunakan SSL dan periksa sertifikat. Kemudian lakukan hal yang sama di rumah. Jika tidak cocok maka lokasi Anda menggunakan proksi HTTPS SSL transparan dan benar-benar dapat melihat lalu lintas HTTPS Anda.

Mungkin saja sesuatu yang bukan port 443 tidak diawasi dengan ketat. Coba 22.

Ini mungkin terdengar bodoh tetapi cobalah melakukannya di port 80 dan lihat apa yang Anda dapatkan. Anda juga dapat mencoba mengatur terowongan HTTP antara Anda dan VPS untuk membuat lalu lintas terlihat seperti permintaan HTTP.

Jika Anda merasa gila, cobalah yodium .

LawrenceC
sumber
2
+1, tetapi terutama untuk yodium!
0xC0000022L
5

Saya pikir saya tahu mengapa metode stunnel berperilaku seperti itu. Itu karena Anda bersih untuk mengatur "rute statis" untuk server stunnel. Biarkan saya jelaskan itu. Ketika Anda terhubung ke server openvpn, ia mengubah tabel perutean Anda dan merutekan semua paket Anda melalui vpn, kecuali paket openvpn. openvpn sebenarnya akan menambahkan rute untuk alamat ip server Anda. Tetapi ketika Anda menggunakan stunnel untuk terhubung ke server openvpn Anda, Anda akan menghubungkan openvpn ke antarmuka loopback dan tidak ada rute ke server Anda di luar vpn Anda, jadi paket stunnel ingin pergi ke server dan mereka pergi ke vpn Anda dan paket vpn Anda pergi ke stunnel :)

Jadi Anda perlu menambahkan rute ke ip server Anda yang keluar dari vpn Anda (router rumah Anda).

Dan untuk masalah dengan metode port 443 saya ganna mengatakan bahwa mungkin firewall Anda menggunakan SPI atau DPI dan dapat dengan mudah membuat paket openvpn berbeda dari paket https (ssl). Jadi cara terbaik adalah menggunakan stunnel, atau jika firewall memblokir paket ssl, lebih baik menggunakan obfsproxy atau fteproxy untuk mem-bypassnya.

(saya tahu posting itu sudah tua tapi saya mencari jawaban tentang masalah yang sama selama berminggu-minggu, jadi saya ingin membagikan apa yang saya pelajari tentang ini)

Reza Askari
sumber
Ini tidak memberikan jawaban untuk pertanyaan itu. Untuk mengkritik atau meminta klarifikasi dari penulis, tinggalkan komentar di bawah posting mereka - Anda selalu dapat mengomentari posting Anda sendiri, dan begitu Anda memiliki reputasi yang cukup, Anda akan dapat mengomentari setiap posting .
Ramhound
3

Jawaban oleh Reza Askari adalah jawaban tepat untuk pertanyaan ketiga. Ini telah terjadi pada komputer Linux dan Android saya.

Di komputer, sebelum Anda terhubung ke OpenVPN melalui

sudo openvpn --config configFile.ovpn

Anda harus menambahkan aturan untuk menghapus server stunnel dari terowongan OpenVPN.

sudo /sbin/ip route add stunnel_ip via default_gateway_ip

Kemudian sambungkan ke server OpenVPN Anda. Setelah selesai, Anda dapat menghapus aturan itu dengan:

sudo /sbin/ip route del stunnel_ip

Untuk membuat segalanya lebih mudah sehingga Anda tidak akan lupa, buat skrip shell yang akan menambahkan aturan dan menjalankan OpenVPN, ketika OpenVPN keluar, aturan tersebut akan dihapus:

sudo /sbin/ip route add stunnel_ip via default_gateway_ip

sudo openvpn --config configFile.ovpn

sudo /sbin/ip route del stunnel_ip

Di Android, gunakan klien "OpenVPN untuk Android" oleh "Arne Schwabe" dan "SSLDroid" oleh "Balint Kovacs".

Kemudian di klien OpenVPN, kecualikan "SSLDroid" dari profil VPN yang melewati stunnel.

Saya ingin sekali mengunggulkan jawaban atau komentar Reza di sana, tetapi aturan skor reputasi ini menghalangi saya.

0x00FE
sumber
1

Saya belum pernah mencobanya (jadi biar tahu jika itu berhasil!) Tetapi berikan suntikan @ menggunakan ssh tunneling lebih dari 443 dan jalankan OpenVPN Anda melalui terowongan. Anda mungkin memerlukan host jarak jauh tambahan untuk mendengarkan pada 443 jika Anda tidak memilikinya tetapi ada contoh di sini http://www.anonyproz.com/openvpnsshtunnel.pdf untuk menggunakan layanan proxy mereka [Catatan Editor: tautan Wayback Machine ini mungkin lebih aman], tetapi ini juga Googlable:

https://www.google.com/search?q=ssh%20tunnel%20openvpn .

Saya juga tahu orang-orang menggunakan pendekatan ini sebagai proxy karena majikan mereka memblokir akses ke situs pekerjaan seperti dice.com ketika mereka populer.

MDMoore313
sumber