İletim trafiğinin VPN kullanmasını nasıl sağlayabilirim?


31

İletimin yalnızca, çalıştığı sunucu bir VPN'ye bağlı olduğunda trafik göndermesini / almasını sağlamak istiyorum.

Ben benzer bu soruyu bulundu ama VPN üzerinden tüm trafiği zorlamak istemiyorum ve ben komut satırından kundakçıyım nasıl kullanılacağına dair iyi bir rehber bulmak mümkün olmamıştır.

Bunun yerine ufw kullanmayı düşünüyordum, ancak güvenlik duvarları ile ilgili deneyimim yok ya da çok az, topluluğun bana yardım edebileceğini umuyorum.

Aklıma gelen bir fikir, iletimi belirli bir bağlantı noktasını kullanmaya zorlamak, 33442 diyelim ve sonra yalnızca VPN sunucusunun IP adresinden gelen bu bağlantı noktasına giden trafiğe izin vermek olacaktır. Ubuntu sunucu kılavuzunu kontrol ettim ve şöyle bir şey yapabileceğini düşünüyorum:

sudo ufw enable
sudo ufw deny port tcp from localhost to any port 33442
sudo ufa allow port tcp from localhost to VPNIP port 33442
sudo ufw deny port udp from localhost to any port 33442
sudo ufa allow port udp from localhost to VPNIP port 33442

Bu mantık tuzunu tutuyor mu? Nasıl yapardın? VPN sunucusunun genel IP'si olan VPNIP için ne kullanırım ya da VPN'nin bana bağlandığı yerel alt ağ aralığını belirtmeli miyim?

Yardımın için teşekkürler!

Yanıtlar:


25

vpnrouteGrup oluştur :

sudo groupadd vpnroute

Grup iptablesüyeleri tarafından yapılan vpnrouteve tun0arabirimden geçmeyen tüm giden ağ bağlantılarını reddeden bir kural ekleyin :

sudo iptables -A OUTPUT -m owner --gid-owner vpnroute \! -o tun0 -j REJECT

İletim işlemine vpnroutegrubun bir üyesi olarak başla :

sudo -g vpnroute transmission-gtk &

1
Bu tam olarak aradığım şeydi. Teşekkürler!
Taeram

3
Uyarı: Bu Deluge, AFAICT ile çalışmıyor çünkü Deluge sup süreçlerini ortaya koyuyor. Dikkatlice test ettim ve kurulumum doğru - sudo -g vpnroute ping google.com, VPN'i tun0'da etkinleştirene kadar 'Hedef ulaşılamaz' mesajı gösterecek. Ancak, Deluge UI, VPN bağlı olsun veya olmasın, her zaman torrentleri indirebilir. Pgrep -G vpnroute ile bunun sadece vpnroute GID altında çalıştırılması nedeniyle ortaya çıkan sel-gtk işlemlerinin görünmediği görülüyor.
happyskeptic

10
Birisi bu adımların her birinin ne yaptığını tam olarak açıklayabilir mi?
ohnoplus 12:14

2
İletim, belirli bir adresi - ancak belirli bir arayüzü dinleme yeteneğine sahip değildir. Komut satırından başladığında, --bind-address-ipv4 $IP_ADDRİletime hangi adrese bağlanılacağını söyleyecektir. Bu, trafiğin doğru yere ulaşmasını sağlamak için doğru yönlendirme kurallarını gerektirir. Bu soruya nasıl yaptığımı anladım.
seanlano

3
@ohnoplus "vpnroute" adlı bir grup oluşturur; VPN'den geçmeyen bu grubun üyeleri tarafından yapılan herhangi bir ağ bağlantısını reddeden bir güvenlik duvarı kuralı ekler (burada "tun0" arabirimi olarak tanımlanır, ancak bazı sistemler farklı olabilir); "vpnroute" grubunun bir üyesi olarak çalışan iletim işlemini başlatır.
TommyPeanuts

4

Bu, başsız bir iletim için işe 10.0.0.0/8yarar , iletim hizmetini çalıştıran kullanıcıya bağlı olarak trafiği kısıtlıyorum , iç ağınız ağınızla eşleşmesi için değiştirmeniz gerekir tun0, OpenVPN arayüzünüzdür, eth0LAN bağlantınızdır.

sudoKök değilseniz, komutlara ekleyin :

iptables -F (-F anahtarını mevcut tüm kuralları silmek için kullandık, böylece yeni kurallar eklemek için temiz bir durumla başlayacağız.)

iptables -L (mevcut ayarları listele)

NET=10.0.0.0/8
GROUP=debian-transmission
IFACE_INTERNAL=eth0
IFACE_VPN=tun0
ALLOW_PORT_FROM_LOCAL=9091
iptables -A OUTPUT -d $NET -p tcp --sport $ALLOW_PORT_FROM_LOCAL -m owner --gid-owner $GROUP -o $IFACE_INTERNAL -j ACCEPT
iptables -A OUTPUT -d $NET -p udp --sport $ALLOW_PORT_FROM_LOCAL -m owner --gid-owner $GROUP -o $IFACE_INTERNAL -j ACCEPT
iptables -A OUTPUT -m owner --gid-owner $GROUP -o $IFACE_VPN -j ACCEPT
iptables -A OUTPUT -m owner --gid-owner $GROUP -o lo -j ACCEPT
iptables -A OUTPUT -m owner --gid-owner $GROUP -j REJECT

iptables yeniden başlattıktan sonra ısrarcı olun

apt-get install iptables-persistent
service iptables-persistent start

Bu bana aşağıdakileri verir: $ sudo iptables -A ÇIKTI -d 10.0.0.0/8 -p tcp --spor 9091 -m sahibi --gid-sahibi debian-şanzıman -o eth0 -j KABULAYAN iptables v1.4.12: sahibi : "--Gid-owner" seçeneği için hatalı değer: "debian-transmission" Bir şey mi eksik?
ohnoplus

Evet, @ohnoplus :) Önce grup (ya da sahibi) debian-transmission'i oluşturmalısınız. Uygulamayı bu grup veya kullanıcı: grup olarak çalıştırdığınızdan emin olun.
Joachim

Bu tam olarak Transmission Remote web arayüzünü etkinleştirmek için ihtiyacım olan şeydi, teşekkürler!
Zane Hooper

4

İşte debian-iletim kullanıcı grubunun (yani iletim) sadece vpn üzerinden veri yönlendirmesini sağlamak için NOOBS (debian kullanarak) için tam bir 'NASIL YAPILIR'.

Karmaşık sistem komut dosyalarına dayanarak vpn için daha uzun olan 'Nasıl Yapılır' kullanılmaz ...! iptables EN İYİ (ve kusursuz) YÖNTEM !!! - vpn'yi kontrol etmek için iletim kullanıcısı ve grubuna dayanan bir FEW IPTABLE KURALLARI KULLANMA (sistemd scriptleri, yukarı ve aşağı scriptleri kullanan pek çok daha karmaşık 'hack' metodu gibi değil) ve çok basit!

Adım 1 - Kurulum: (İletimin kurulu olduğunu ve debian iletim kullanıcısı bulunduğunu varsayar!)

sudo apt-get install iptables
sudo apt-get install iptables-persistent

Adım 2 - transmission-ip-rules dosyasını oluşturun

sudo nano transmission-ip-rules

ve metni, aşağıdaki kod bloğuna, başlangıçtan itibaren ekleyin. #!/bin/bash

ÖNEMLİ

  • Yerel ağınız 192.168.1.x formunda değilse, NET değişkenini kendi yerel ağ adres formatınıza uygun şekilde değiştirin !!.
  • Ayrıca 192.168.1.0/25'in 192.168.1.0-255 aralığını verdiği tuhaflığına dikkat edin!
  • Bazen arabirimleriniz eth0, tun0 (vpn'dir) vb .. belki farklıdır - 'ifconfig' ile kontrol edin ve gerekirse değiştirin.
#!/bin/bash
# Set our rules so the debian-transmission user group can only route through the vpn
NET=192.168.1.0/25
GROUP=debian-transmission
IFACE_INTERNAL=eth0
IFACE_VPN=tun0
ALLOW_PORT_FROM_LOCAL=9091
iptables -A OUTPUT -d $NET -p tcp --sport $ALLOW_PORT_FROM_LOCAL -m owner --gid-owner $GROUP -o $IFACE_INTERNAL -j ACCEPT
iptables -A OUTPUT -d $NET -p udp --sport $ALLOW_PORT_FROM_LOCAL -m owner --gid-owner $GROUP -o $IFACE_INTERNAL -j ACCEPT
iptables -A OUTPUT -m owner --gid-owner $GROUP -o $IFACE_VPN -j ACCEPT
iptables -A OUTPUT -m owner --gid-owner $GROUP -o lo -j ACCEPT
iptables -A OUTPUT -m owner --gid-owner $GROUP -j REJECT
# not needed - but added these to properly track data to these interfaces....when using iptables -L -v
iptables -A INPUT -i $IFACE_VPN -j ACCEPT
iptables -A INPUT -i $IFACE_INTERNAL -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
# track any forward (NAT) data for completeness - don't care about interfaces
iptables -A FORWARD

Dosyayı kaydedin ve sonra çalıştırın

sudo iptables -F 
sudo chmod +x transmission-ip-rules
sudo ./transmission-ip-rules

sonra bu kuralların aşağıdakilerle yeniden başlatılmasından emin olun:

sudo dpkg-reconfigure iptables-persistent

ve her iki istemde de evet öğesine dokunun. YAPILAN!

Bu betiğin en güzel yanı, cihazdaki tüm verileri izlemesi! Ne zaman çıkarsın

sudo iptables -L -v

hangi arabirime ve hangi tarafta INPUT veya OUTPUT'a ne kadar veri gideceğini gösterecektir, böylece vpn betiğinin doğru çalıştığından emin olabilirsiniz. Örneğin;

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination                                                                                         
1749K  661M ACCEPT     all  --  tun0   any     anywhere             anywhere                                                                                            
3416K 3077M ACCEPT     all  --  eth0   any     anywhere             anywhere                                                                                            
 362K  826M ACCEPT     all  --  lo     any     anywhere             anywhere                                                                                            

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination                                                                                         
    0     0            all  --  any    any     anywhere             anywhere                                                                                            

Chain OUTPUT (policy ACCEPT 2863K packets, 2884M bytes)
 pkts bytes target     prot opt in     out     source               destination                                                                                         
 1260  778K ACCEPT     tcp  --  any    eth0    anywhere             192.168.1.0/                                                                                        25       tcp spt:9091 owner GID match debian-transmission
    0     0 ACCEPT     udp  --  any    eth0    anywhere             192.168.1.0/                                                                                        25       udp spt:9091 owner GID match debian-transmission
1973K 1832M ACCEPT     all  --  any    tun0    anywhere             anywhere                                                                                                     owner GID match debian-transmission
 8880  572K ACCEPT     all  --  any    lo      anywhere             anywhere                                                                                                     owner GID match debian-transmission
13132  939K REJECT     all  --  any    any     anywhere             anywhere                                                                                                     owner GID match debian-transmission reject-with icmp-port-unreachable

Bu betiğin vpn'den bağlanma, bağlantı kesme ve yeniden başlatma konularında ayrıntılı olarak test edilmiştir. Harika çalışıyor. İletim, SADECE VPN'i kullanabilir. Bu betiğin diğerlerine göre en büyük avantajı, görebildiğiniz kadar emin olduğumdur (yoluylaiptables -L -v) verilerinizin aktarıma aktarılan şeyle uyuşması (her arabirim eth0, vpn (tun0) için INPUT (tümü) ve İleri (tümü) kurallarını ekleyerek). Yani tam olarak ne olduğunu biliyorsun !!! Veri toplamları tam olarak aktarımla hesaplanmayacak - Maalesef INPUT tarafında debian aktarım kullanıcısı ile ayrım yapamıyorum ve aynı VPN'i kullanarak hem ek yük hem de diğer işlemler olabilir, ancak verilerin kabaca hesaplandığını göreceksiniz. GİRİŞ tarafında ve vpn'nin çalışmasını onaylayan ÇIKIŞ'ın yarısı kadardır. Unutulmaması gereken başka bir şey - bir vpn bağlantısının kesilmesi (tüm trafik aktarımla durur) ve yeni vpn'de 'başlayacak' aktarım için yeniden bağlantı kurmak, yeniden işlemeye başlamanın 5 dakika sürmesi durumunda endişelenmeyin. .

İPUCU - 'MAN iptables' google ve bu betiğin nasıl çalıştığını satır satır bilmek istiyorsanız, bu makalenin bant genişliği izlemesine bakın ...


192.168.1.0/25 aralığı 192.168.1.0-127'dir.
Zachary822

3

İdeal olarak, belirli bir arabirime (VPN arabirimi) bağlanma özelliğine sahip bir torrent istemcisi kullanmanız gerekir.

Torrent müşterileri arasında, Deluge bunu yapar. Böylece, Deluge'yi yükleyebilir ve arayüzü Tercihler'de yapılandırabilirsiniz.


Cevabınız için teşekkürler. Aslında şu an için Transmission'ı kullanmaya başladım, Transmission ile belirli bir arayüze veya IP aralığına (yani yalnızca VPN kullanıyor) bağlanmanın mümkün olup olmadığını biliyor musunuz? Teşekkürler!
Evan

2
@ user4124 Nasıl bağlanacağınızı biliyor musunuz Komut satırı veya webui üzerinden belirli bir ağ arayüzüne Deluged? Kimse bunu Transmission ile nasıl yapacağını bilmiyor gibi gözüktüğü için, Deluge’ı denedim ama şu ana kadar şansım olmadı. Teşekkürler!
Evan

3
@Evan, bağlanabileceği ip istasyonunu, listen_interfacekonsoldaki konsolda veya Ağdaki Arayüz seçeneklerinde bulunan Deluge'de belirleyebilirsiniz .
Cas

Bu doğru olsa da, tek amacınız yasadışı torrent dosyalarınızı gizlemek olsa bile, bunun hala kötü bir tavsiye olduğunu düşünüyorum. VPN anonimliğinizi benimsemeli ve sistem genelinde çalışan ve yalnızca bir program için çalışan çözümler aramalısınız.
redanimalwar
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.