Gunakan koneksi VPN hanya untuk aplikasi yang dipilih

39

Saya memiliki akses ke VPN dan ingin menggunakannya hanya untuk beberapa aplikasi, tidak semua.

Sebagai contoh:
Jika saya terhubung ke VPN, saya hanya ingin aplikasi Opera dan Newsbin menggunakan koneksi VPN itu. Semua aplikasi lain, seperti fe Outlook, harus menggunakan koneksi internet normal (saat VPN terhubung / terbuka).

Afaik ini tidak mungkin, tapi aku tidak sepenuhnya yakin. Jadi, pertanyaan saya: apakah bisa dilakukan?

dirkt
sumber

Jawaban:

-1

Bukan itu. Yah tidak menggunakan cara normal. Routing adalah routing. Routing beroperasi lebih rendah ke model OSI. Apa yang perlu Anda lakukan adalah agar hal itu diperhatikan pada tingkat aplikasi (lebih tinggi) sehingga dapat mendeteksi program apa yang Anda gunakan dll. Router NORMAL tidak memungkinkan Anda untuk mengkonfigurasi rute berdasarkan aplikasi atau nomor port.

Saya pikir itu mungkin. Router dapat melihat port sehingga Anda dapat memfilternya berdasarkan nomor port dan mengirimkan lalu lintas keluar rute yang berbeda. Saya yakin saya membaca sesuatu beberapa waktu yang lalu dengan router Cisco yang dapat melakukan ini. Mereka tidak datang murah dan mereka adalah router bisnis yang membutuhkan banyak konfigurasi dan saya kira Anda menginginkan sesuatu yang sederhana untuk digunakan di rumah.

Singkatnya itu adalah router yang akan membutuhkan fitur ini dan standar rawa Anda untuk digunakan di rumah, bahkan bisnis tidak mendukung fitur ini. Hanya garis lanjutan dari Cisco dan Sonicwalls yang menawarkan kemampuan ini.

Gagalnya besar
sumber
36

Dimungkinkan untuk melakukan ini, setidaknya di Linux (dan saya juga berpikir tentang BSD dan OS X). Anda dapat melakukannya dengan:

  • Buat pengguna exra untuk semua lalu lintas VPN.
  • Buat tabel routing tambahan dengan 1 rute default melalui VPN.
  • Konfigurasikan Netfilter melalui Iptables untuk menggunakan tabel perutean lain untuk semua lalu lintas yang berasal dari ID Pengguna tertentu.
  • Jalankan aplikasi yang harus menggunakan VPN di bawah pengguna mereka sendiri. Misalnya dengan 'sudo'.

Ada skrip untuk menyelesaikan langkah-langkah di atas di sini atau ada panduan lain di sini .

Berikut adalah panduan terperinci untuk merutekan Transmisi melalui VPN (menggunakan server VPN yang Anda miliki.

Freeaqingme
sumber
Jauh lebih mudah di Linux: Buat namespace jaringan, sambungkan VPN ke namespace itu, jalankan aplikasi yang harus menggunakan namespace di VPN. Anda bahkan dapat menjalankan dua salinan dari aplikasi yang sama, satu menggunakan VPN dan satu menggunakan koneksi langsung.
dirkt
15

Anda dapat menggunakan Windows Firewall untuk mencapai ini (asalkan Anda menggunakan Win 7 atau Vista) - Saya menulis panduan tentang ini

  1. Sambungkan ke VPN Anda seperti biasa.

  2. Buka Network and Sharing Center - klik kanan pada ikon koneksi Internet di taskbar dan pilih "Open Network and Sharing Center" (lihat di bawah)

  3. Anda harus melihat (setidaknya) dua jaringan yang terdaftar di bawah "View Your Active Networks" - koneksi VPN Anda dan satu disebut "Network" - alias Koneksi ISP Anda. Pastikan bahwa VPN Anda adalah "Jaringan Publik", dan koneksi ISP Anda adalah "Jaringan Rumah". Jika Anda perlu mengubah koneksi mana pun, klik itu dan jendela opsi akan muncul (lihat di bawah).

  4. Buka Control Panel dan klik System and Security (lihat di bawah).

  5. Di jendela yang dihasilkan, klik Windows Firewall (lihat di bawah).

  6. Di jendela Windows Firewall, klik Pengaturan Lanjut di panel kiri (lihat di bawah). Catatan: Anda harus masuk sebagai Adminstrator untuk membuat perubahan pada Pengaturan Firewall.

  7. Anda akan melihat jendela berjudul Windows Firewall with Advanced Security. Di jendela ini, klik Aturan Masuk (lihat di bawah).

  8. Di panel kanan, Anda akan melihat opsi untuk Aturan Baru. Klik itu (lihat di bawah).

  9. Di Wisaya Aturan Masuk Baru (yang akan muncul), lakukan hal berikut:

    • Pilih Program dan klik Next.

    • Pilih program yang Anda inginkan untuk memblokir semua lalu lintas kecuali pada koneksi VPN, dan klik next.

    • Pilih Blokir Koneksi.

    • Centang Domain dan Pribadi. Pastikan Publik tidak dijebak.

  10. Ulangi Langkah 9 untuk Aturan Keluar.

pelana
sumber
11
Apakah ini benar-benar menjawab pertanyaan? Ya, ini menghentikan aplikasi dari bekerja jika tidak di VPN, tetapi semua lalu lintas masih melewati VPN bukan?
Jason Coyne
3
@pramble Jadi apakah semua lalu lintas masih melalui vpn?
nsij22
Tampaknya bekerja. Baru saja mengujinya ..
Faiz
Ini tidak memperbaikinya. Ini adalah skenario yang sangat sederhana. Saya ingin semua hal yang terkait dengan pekerjaan saya melewati VPN (koneksi SQL Server, Slack, dll.), Tetapi saya ingin browser web saya (Facebook, Soundcloud, dll., Pada dasarnya semua lalu lintas port 80) untuk TIDAK melewati VPN . Windows payah jika ini tidak mungkin.
Triynko
@ Triynko Skenario Anda jauh berbeda dari skenario yang diminta OP. Setelah tersambung ke VPN, Anda bisa mengatur rute yang sesuai dengan hal-hal yang berhubungan dengan pekerjaan Anda, yaitu, gunakan gateway VPN untuk semua subnet atau IP yang terkait dengan pekerjaan. Routing traffic yang berasal dari aplikasi spesifik lebih sulit untuk dicapai.
Bicara
4

Anda dapat melakukannya dengan ruang nama jaringan di GNU / Linux.

Inilah cara menjalankan OpenVPN dan satu aplikasi dalam ruang nama yang terpisah:

Buat namespace jaringan bersih:

ip netns add myvpn

Mulai antarmuka loopback di namespace (jika tidak banyak hal tidak berfungsi seperti yang diharapkan ...)

ip netns exec myvpn ip addr add 127.0.0.1/8 dev lo
ip netns exec myvpn ip link set lo up

Buat antarmuka jaringan virtual yang akan memungkinkan OpenVPN (di namespace) mengakses jaringan nyata, dan konfigurasikan antarmuka di namespace (vpn1) untuk menggunakan antarmuka keluar dari namespace (vpn0) sebagai gateway default

ip link add vpn0 type veth peer name vpn1
ip link set vpn0 up
ip link set vpn1 netns myvpn up
ip addr add 10.200.200.1/24 dev vpn0
ip netns exec myvpn ip addr add 10.200.200.2/24 dev vpn1
ip netns exec myvpn ip route add default via 10.200.200.1 dev vpn1

Aktifkan perutean IPv4 dan NAT untuk antarmuka di namespace. Karena antarmuka default saya adalah nirkabel, saya menggunakan wl + (yang mungkin cocok dengan wlan0, wlp3s0, dll.) Di iptables untuk antarmuka keluar; jika Anda menggunakan antarmuka berkabel, Anda mungkin harus menggunakan en + (atau br + untuk antarmuka yang dijembatani)

iptables -A INPUT \! -i vpn0 -s 10.200.200.0/24 -j DROP
iptables -t nat -A POSTROUTING -s 10.200.200.0/24 -o wl+ -j MASQUERADE
sysctl -q net.ipv4.ip_forward=1

Konfigurasikan server nama untuk digunakan di dalam namespace

mkdir -p /etc/netns/myvpn
echo 'nameserver 8.8.8.8' > /etc/netns/myvpn/resolv.conf

Hampir selesai, sekarang kita harus memiliki akses jaringan penuh di namespace

ip netns exec myvpn ping www.google.com

Akhirnya mulai OpenVPN di namespace

ip netns exec myvpn openvpn --config /etc/openvpn/myvpn.conf

Setelah tun0 di namespace, Anda siap untuk memulai program yang Anda inginkan!

while ! ip netns exec myvpn ip a show dev tun0 up; do sleep .5; done
ip netns exec myvpn sudo -u $MYSELF popcorntime

SUMBER artikel.

Juga ada skrip wrapper di artikel sumber yang dapat Anda sesuaikan untuk kebutuhan Anda.

PocketSam
sumber
3

Saya sudah melakukan ini di Windows. Idenya adalah untuk mengikat paket jaringan keluar ke antarmuka VPN. Orang menyarankan ForceBindIP untuk ini, tetapi berkat jawaban ini saya punya ide untuk menggunakan proxy. Kelemahan dari metode ini adalah aplikasi Anda harus memiliki dukungan proxy atau Anda harus menggunakan proxifier (lihat di sini dan di sini ). Keuntungannya adalah dengan cara ini Anda akan dapat membatasi penggunaan VPN di browser ke domain tertentu menggunakan FoxyProxy atau pengaya serupa.

Saya menggunakan 3proxy dalam mode SOCKS dan mengikat antarmuka eksternal ke IP VPN. OpenVPN digunakan untuk koneksi VPN.

Dalam file .ovpn saya ( client, dev tun) saya telah menambahkan baris ini:

route-nopull
route 0.0.0.0 0.0.0.0 vpn_gateway
pull-filter ignore "dhcp-option DNS "
script-security 2
up 'c:\path\to\up.cmd'
down 'c:\path\to\down.cmd'

route-nopulluntuk mengabaikan rute yang didorong dari server. Dalam kasus Anda, Anda mungkin perlu berkomentar redirect-gateway saja.

route untuk menambahkan rute untuk antarmuka ini, tanpa garis ini tidak akan digunakan bahkan jika aplikasi terikat padanya.

pull-filteruntuk mempertahankan DNS yang didorong yang sebaliknya akan dijatuhkan route-nopullbersama dengan rute yang didorong. Opsi ini didukung mulai dengan OpenVPN 2.4, jika Anda harus tetap menggunakan OpenVPN 2.3 (rilis terbaru untuk Windows XP), Anda harus menambahkan dua dhcp-option DNS x.x.x.xbaris dengan IP hardcoded sebagai gantinya.

script-security 2 untuk mengizinkan skrip.

up naskah:

cd %~dp0
echo auth none> 3proxy-openvpn.conf
echo internal 127.0.0.1>> 3proxy-openvpn.conf
echo external %4>> 3proxy-openvpn.conf
echo socks>> 3proxy-openvpn.conf
start /b 3proxy.exe 3proxy-openvpn.conf

down naskah:

taskkill /f /im 3proxy.exe

Dengan demikian, setelah Anda terhubung ke VPN menggunakan konfigurasi ini, 3proxy.exeproses akan dimulai dan proksi SOCKS5 localhost-terbatas dengan kemampuan resolusi DNS akan berjalan di 1080port, sekarang hanya mengkonfigurasi aplikasi Anda untuk menggunakan localhost:1080proxy SOCKS.

pengguna
sumber
Saya mendapatkan Options error: option 'route' cannot be used in this context ([PUSH-OPTIONS])dan Options error: option 'redirect-gateway' cannot be used in this context ([PUSH-OPTIONS]). Tidak ada yang kurang, solusi ini berfungsi. Jika Anda melewatkan apostrof untuk skrip turun dan atas, gunakan garis miring terbalik ganda:c:\\path\\to\\script
chx
1

Jika Anda menggunakan linux, dan Anda menggunakan openVPN , VPNShift berfungsi dengan baik.

thouliha
sumber
Tolong jangan memposting jawaban yang sama untuk beberapa pertanyaan. Jika informasi yang sama benar-benar menjawab kedua pertanyaan, maka satu pertanyaan (biasanya yang baru) harus ditutup sebagai duplikat dari yang lain. Anda dapat menunjukkan ini dengan memilih untuk menutupnya sebagai duplikat atau, jika Anda tidak memiliki reputasi yang cukup untuk itu, angkat bendera untuk menunjukkan bahwa itu adalah duplikat. Kalau tidak, sesuaikan jawaban Anda untuk pertanyaan ini dan jangan hanya menempelkan jawaban yang sama di banyak tempat.
DavidPostill
4
Apakah fakta bahwa itu "jawaban yang sama untuk banyak pertanyaan" begitu penting? Pertanyaannya ada, itu belum (belum) ditandai sebagai duplikat, dan itu adalah jawaban yang baik, sehingga layak ada. Terima kasih @thouliha 🙂.
Ronan Jouchet
0

Cukup akses VPN melalui mesin virtual.

  1. Buat VM, lalu dari dalam VM ...
  2. Instal aplikasi yang 'dipilih'
  3. Konfigurasikan VPN

Gunakan aplikasi 'terpilih' dari VM alih-alih menggunakannya dari mesin host.

PS Anda perlu memberikan akses jaringan ke VM melalui mesin host, tentu saja.

drowa
sumber
Ini hanya menyebutkan pendekatan yang sudah dijelaskan secara rinci dalam jawaban lain.
fixer1234
1
@ fixer1234: Tidak ada yang menyebut mesin virtual.
drowa
Bisakah Anda memperluas jawaban Anda menjadi sesuatu yang lebih bisa ditindaklanjuti (jelaskan caranya)? Lihat jawaban lain di utas untuk gagasan tingkat detail. Hanya memberikan petunjuk untuk arah untuk mengejar akan pergi dalam komentar, yang membutuhkan perwakilan lebih sedikit.
fixer1234
Saya sudah mencoba komentar dulu tetapi sistem tidak mengizinkan saya karena saya memiliki kurang dari 50 poin. Saya akan mencoba memperluas jawabannya.
drowa
Ini adalah ide yang saya buat, dan berfungsi dengan baik, tanpa konfigurasi routing yang rumit di sisi sysadmin.
pwned
0

Saya tahu ini adalah cara menjawab terlambat yang baru saja saya temui, tetapi seandainya itu relevan bagi seseorang, saya memiliki keadaan yang sama di mana saya ingin menjalankan lalu lintas pekerjaan saya melalui VPN tetapi tidak ingin lalu lintas pribadi saya dialihkan melalui mereka server proxy dan semacamnya. Jadi saya menjalankan Win7 saat itu tetapi mereka masih menjalankan WinXP pada banyak sistem mereka. Akhirnya mereka hanya memberi saya PC ke-2 untuk menjalankan pekerjaan yang menyelesaikan masalah (switchbox yang terhubung ke kedua PC, hanya bisa melompat bolak-balik) tetapi sebelum ini saya menjalankan Virtual XP yang saya tetapkan sebagai OS pekerjaan saya .. Saya akan VPN dari kata VM untuk terhubung ke kantor, yang akan meninggalkan lalu lintas OS pribadi saya bebas dari pembatasan kerja dan memata-matai.

Warren Colvett
sumber