VPN bağlantısını yalnızca seçilen uygulamalar için kullanın


37

Bir VPN'ye erişebiliyorum ve sadece bazı uygulamalar için kullanmak istiyorum, hepsinde değil.

Örneğin:
Bir VPN'e bağlanırsam, sadece Opera ve Newsbin uygulamalarının bu VPN bağlantısını kullanmasını istiyorum. Fe Outlook gibi diğer tüm uygulamalar normal internet bağlantısını kullanmalıdır (VPN bağlı / açıkken).

Afaik bu mümkün değil, ama tamamen emin değilim. Bu yüzden benim sorum: bu yapılabilir mi?


Yanıtlar:


-1

Hayır değil. Normal yollarla kullanmamak. Yönlendirme yönlendirmedir. Yönlendirme OSI modelini aşağı indirir. Olması gereken şey, uygulama düzeyinde (daha yüksek) farkında olmak, böylece hangi programı kullandığınızı algılayabilir. NORMAL yönlendiriciler, uygulamaları veya bağlantı noktası numaralarına göre rotaları yapılandırmanıza izin vermez.

Bence mümkün olduğunu düşünüyorum. Yönlendiriciler bağlantı noktalarını görebilir, böylece bağlantı noktalarına göre filtreleyebilir ve trafiği farklı rotalara gönderebilirsiniz. Bir süre önce bunu yapabilen Cisco yönlendiricileriyle bir şeyler okuduğuma eminim. Yine de ucuz gelmiyorlar ve çok fazla yapılandırma gerektiren ticari yönlendiriciler ve ev kullanımı için basit bir şey istediğinizi tahmin ediyorum.

Özetle, bu özelliğe ihtiyaç duyan yönlendirici ve ev kullanımı için kullandığınız standart ürünlerdir, hatta işletme bu özellikleri desteklememektedir. Yalnızca gelişmiş Cisco ve Sonicwalls ürünleri bu yetenekleri sunar.


34

Bunu başarmak mümkün, en azından Linux'ta (ve ayrıca BSD ve OS X'i de düşünüyorum). Bunu yaparak yapabilirsiniz:

  • Tüm VPN trafiği için exra kullanıcısı oluşturun.
  • VPN üzerinden 1 varsayılan yol ile ekstra bir yönlendirme tablosu oluşturun.
  • Belirli bir Kullanıcı Kimliğinden kaynaklanan tüm trafik için diğer yönlendirme tablosunu kullanmak için Netfilter'ı Iptables üzerinden yapılandırın.
  • VPN'i kullanması gereken uygulamaları kendi kullanıcıları altında çalıştırın. Örneğin 'sudo' ile.

Burada yukarıdaki adımları gerçekleştirmek için komut dosyaları var ya da burada başka bir rehber var .

İşte bir VPN üzerinden İletimi yönlendirmek için ayrıntılı bir rehber (kendi sahip olduğunuz bir VPN sunucusu kullanarak).


14

Bunu başarmak için Windows Güvenlik Duvarı'nı kullanabilirsiniz (Win 7 veya Vista kullanıyorsanız) - Bu konuda bir rehber yazdım.

  1. Normalde yaptığınız gibi VPN'inize bağlanın.

  2. Ağ ve Paylaşım Merkezi'ni açın - görev çubuğundaki Internet bağlantısı simgesine sağ tıklayın ve "Ağ ve Paylaşım Merkezi Aç" seçeneğini seçin (aşağıya bakın)

  3. "En azından)" Aktif Ağlarınızı Görüntüleme "başlığı altında listelenen iki ağı görmelisiniz - VPN bağlantınız ve biri" Ağ "- aka ISS Bağlantınız. VPN'inizin "Genel Ağ" ve İSS bağlantınızın "Ev Ağı" olduğundan emin olun. Her iki bağlantıyı da değiştirmeniz gerekirse, tıklayın ve bir seçenek penceresi görünecektir (aşağıya bakınız).

  4. Denetim Masası'na gidin ve Sistem ve Güvenlik'i tıklayın (aşağıya bakın).

  5. Açılan pencerede, Windows Güvenlik Duvarı (aşağıya bakınız) tıklayın.

  6. Windows Güvenlik Duvarı penceresinde, sol bölmedeki Gelişmiş Ayarlar'ı tıklayın (aşağıya bakın). Not: Güvenlik Duvarı Ayarlarında değişiklik yapmak için Yönetici olarak oturum açmış olmanız gerekir.

  7. Gelişmiş Güvenlik Özellikli Windows Güvenlik Duvarı başlıklı bir pencere görmelisiniz. Bu pencerede, Gelen Kuralları'nı tıklayın (aşağıya bakınız).

  8. Sağ bölmede, Yeni Kural için bir seçenek göreceksiniz. Tıklayın (aşağıya bakınız).

  9. Yeni Gelen Kural Sihirbazı'nda (görünmesi gerekir), aşağıdakileri yapın:

    • Program'ı seçin ve İleri'ye tıklayın.

    • VPN bağlantısı dışındaki tüm trafiği engellemek istediğiniz programı seçin ve ileri düğmesine tıklayın.

    • Bağlantıyı Engelle'yi seçin.

    • Etki Alanı ve Özel'i işaretleyin. Genel'in işaretlenmemiş bırakıldığından emin olun.

  10. Giden Kuralları için 9. Adımı tekrarlayın.


10
Bu aslında soruya cevap veriyor mu? Evet, bu VPN'de değilse uygulamanın çalışmasını durdurur, ancak tüm trafik hala VPN'den geçer, değil mi?
Jason Coyne

3
@pramble Peki bütün trafik hala vpn'den geçiyor mu?
nsij22

İşe çıkıyor. Sadece test ettim ..
Faiz

Bu tamir etmedi. Bu çok basit bir senaryodur. İşle ilgili tüm işlerimin VPN üzerinden geçmesini istiyorum (SQL Server bağlantıları, Slack, vb.), Ancak web tarayıcımın (Facebook, Soundcloud vb. Temelde tüm bağlantı noktası 80 trafiği) VPN üzerinden geçmemesini istiyorum . Bu mümkün değilse, Windows berbat.
Triynko

@Triynko Senaryonuz, sorulan OP senaryosundan çok farklı. VPN'e bağlandıktan sonra, ilgili rotaları işle ilgili eşyalarınıza ayarlayabilirsiniz, yani işle ilgili tüm alt ağlar veya IP'ler için VPN ağ geçidini kullanın. Belirli uygulamalardan kaynaklanan yönlendirme trafiğini elde etmek daha zordur.
speakr

2

GNU / Linux'ta ağ ad alanları ile yapabilirsiniz.

OpenVPN ve tek bir uygulamanın ayrı bir ad alanında çalıştırılması:

Net ağ ad alanını oluşturun:

ip netns add myvpn

Ad alanından geridöngü arabirimini başlatın (aksi halde pek çok şey beklendiği gibi çalışmıyor)

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

OpenVPN'in (ad alanındaki) gerçek ağa erişmesine izin verecek sanal ağ arayüzleri oluşturun ve arayüzü ad alanından (vpn0) varsayılan ağ geçidi olarak kullanmak için ad alanındaki (vpn1) yapılandırın

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

Ad alanındaki arayüz için IPv4 yönlendirmesini ve NAT'ı etkinleştirin. Varsayılan arabirim kablosuz olduğundan, giden arabirim için iptables'ta wl + (wlan0, wlp3s0 vb. İle eşleşebilir) kullanırım; kablolu bir arayüz kullanıyorsanız, muhtemelen köprülü bir arayüz için en + (veya br +) kullanmalısınız.

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

Ad alanı içinde ad alanı kullanılacak şekilde yapılandırın

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

Neredeyse bitti, şimdi ad alanında tam ağ erişimine sahip olmalıyız.

ip netns exec myvpn ping www.google.com

Sonunda isim alanında OpenVPN'i başlatın

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

Tun0 isim alanına girdiğinde, istediğiniz programı başlatmaya hazırsınız!

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

KAYNAK makalesi.

Ayrıca kaynak makalede gereksinimlerinize göre uyarlayabileceğiniz bir sarmalayıcı komut dosyası bulunmaktadır.


1

Bunu Windows'ta yaptım. Fikir, giden ağ paketlerini VPN arayüzüne bağlamaktır. İnsanlar bunun için ForceBindIP'i öneriyor , ancak bu cevap sayesinde proxy kullanma fikrim var. Bu yöntemin dezavantajı, uygulamalarınızın proxy desteğine sahip olması gerektiği veya bir proksizer kullanmak zorunda kalacağınızdır ( buraya ve buraya bakın ). Bunun tersi, bu şekilde tarayıcıda VPN kullanımını FoxyProxy veya benzeri eklentileri kullanarak belirli alanlarla sınırlayabilmenizdir.

SOCKS modunda 3 proxy kullanıyorum ve dış arabirimini VPN'in IP'sine bağlıyorum . OpenVPN VPN bağlantısı için kullanılır.

.Ovpn dosyama ( client, dev tun) bu satırları ekledim:

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-nopullSunucudan itilen rotaları yoksaymak için. Sizin durumunuzda bunun yerine redirect-gateway'i yorumlamanız gerekebilir.

route Bu arayüz için bir rota eklemek için, bu satır olmadan uygulama buna bağlı olsa bile kullanılmayacaktır.

pull-filteraksi takdirde route-nopull, itilmiş rotalarla birlikte düşecek itilmiş DNS'yi korumak için. Bu seçenek OpenVPN 2.4'ten başlayarak desteklenir, OpenVPN 2.3'e (Windows XP için en son sürüm) bağlı kalmanız gerekiyorsa, dhcp-option DNS x.x.x.xbunun yerine sabit IP kodlu iki satır eklemeniz gerekir .

script-security 2 komut dosyası izin vermek için.

up senaryo:

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 senaryo:

taskkill /f /im 3proxy.exe

Bu nedenle, bu yapılandırmayı kullanarak VPN'e bağlandıktan sonra, 3proxy.exeişlem başlatılacak ve 1080bağlantı noktasında DNS çözümleme özelliğine sahip bir yerel ana bilgisayar sınırlı SOCKS5 proxy'si çalışacak , şimdi uygulamanızı localhost:1080SOCKS proxy kullanacak şekilde yapılandırın .


Ben alıyorum Options error: option 'route' cannot be used in this context ([PUSH-OPTIONS])ve Options error: option 'redirect-gateway' cannot be used in this context ([PUSH-OPTIONS]). Yok, bu çözüm işe yarıyor. Aşağı ve yukarı komut dosyası için kesme işareti atlarsanız, çift ters eğik çizgi kullanın:c:\\path\\to\\script
chx

1

Linux kullanıyorsanız ve openVPN kullanıyorsanız, VPNShift çok iyi çalışıyor.


Lütfen aynı cevabı birden fazla soruya göndermeyin. Aynı bilgi her iki soruyu da gerçekten yanıtlarsa, bir soru (genellikle yeni olanı) diğerinin kopyası olarak kapatılmalıdır. Bunu, kopya olarak kapatmak için oy vererek veya bunun için yeterli itibarınız yoksa , bunun bir kopya olduğunu belirtmek için bir bayrak artırabilirsiniz . Aksi takdirde cevabınızı bu soruya göre uyarlayın ve aynı cevabı birden fazla yere yapıştırmayın.
DavidPostill

4
Bunun "birden fazla soruya aynı cevap" olması çok mu önemli? Soru var, (henüz) yinelenen olarak işaretlenmedi ve bu iyi bir cevap, bu yüzden var olmayı hak ediyor. @Thouliha 🙂 teşekkürler.
Ronan Jouchet

0

Sanal bir makine üzerinden VPN'e erişmeniz yeterli.

  1. Bir VM oluşturun, ardından VM içinden ...
  2. 'Seçilen' uygulamaları yükle
  3. VPN'i yapılandırın

Ana makineden kullanmak yerine, VM'den 'seçili' uygulamaları kullanın.

PS Elbette ana makine aracılığıyla VM'ye ağ erişimi vermeniz gerekir.


Bu sadece diğer cevaplarda detaylı olarak açıklanan bir yaklaşımdan bahseder.
fixer1234

1
@ fixer1234: Hiç kimse sanal makinelerden bahsetmedi.
drowa,

Cevabınızı daha eyleme dönüştürülebilir bir şeye genişletir misiniz (nasıl olduğunu açıklayın)? Ayrıntı seviyesi hakkında bir fikir edinmek için iş parçacığındaki diğer cevaplara bakın. Sadece takip edilmesi gereken bir yön için ipucu vermek, biraz daha fazla temsil gerektiren bir yorumda geçecekti.
fixer1234

İlk önce bir yorum denedim, ancak sistem bana izin vermedi, çünkü 50'den az puanım var. O zaman cevabı genişletmeye çalışacağım.
drowa,

Bu benim gündeme getirdiğim fikir ve sysadmin tarafındaki karmaşık bir rotalama yapılandırması olmadan iyi çalışıyor.
pwned
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.