OpenVPN üzerinden şanzıman daemon

17

Kısa bir süre önce üzerine Ubuntu bu yöntemi kullanarak yüklediğim bir BeagleBone Black'i satın aldım . Şimdiye kadar çalışmış. BeagleBone'umu torrent kutusu olarak kullanmak istiyorum, ancak doğrudan Internet bağlantım üzerinden yapmak istemiyorum (ISP'mizin bundan hoşlanacağını sanmıyorum) - bu yüzden bir Avrupa sunucusundan bir VPN aboneliği aldım . Dizüstü bilgisayarımı manuel olarak bu VPN'e bağladım ve Transmission'ı çalıştırdım. VPN bağlantısının Ubuntu'da çalıştığını ve ana bilgisayarın OpenVPN için kurulum bilgisi sağladığını biliyorum. Rahatsız edici olarak, atanan IP adresinin dinamik doğası sık sık değişeceği anlamına gelir, bu yüzden dizüstü bilgisayarımı VPN ile kullandığımda, dinleme adresini İletim'de gereken değere manuel olarak ayarlayacağım.

İdeal olarak aşağıdaki ayarları beğenirim:

  • İletim sadece VPN üzerinden çalışır ve normal WAN bağlantısı üzerinden torrentleri çalıştırması yasaktır
  • Yalnızca İletime yönlendirilen trafik, VPN yoluyla kabul edilecek veya gönderilecek, diğer tüm istenmeyen trafikler düşürülecektir
  • İletim, atanan IP adresine göre dinlemek için uygun bağlantı noktasını kullanır
  • OpenVPN, önyüklemede otomatik olarak başlar ve ardından Aktarım başlar
  • İletimin web GUI'sine LAN üzerinden ve muhtemelen WAN bağlantımdan Internet üzerinden erişilebilir (yani, VPN'den geri dönmez)
sordu seanlano 10.02.2015 06:45

3 cevap

21

Not: (2016-02-22) Bu yapılandırma, DNS sorgularını, VPN'den göndermek yerine, normal WAN aracılığıyla torrent izleyicilerine sızdırdığını fark ettim. Bunu nasıl düzelteceğimi araştırıyorum. Bağlantının kendisi VPN'yi düzgün bir şekilde kullandığı için, yapılandırmamı çalıştırmaya devam edeceğim.

Güncelleme: Beaglebone üzerinde geceleme için Transmission'ı ayarladığımda, CPU kullanımının bir süre sonra% 100'e çıktığını fark ettim. Aynı süreden sonra gerçekleşmiyor gibi gözüküyor, bazen bütün gece iyi, diğer zamanlarda 10 dakika sonra mücadele ediyor. Ayrıca tüm selleri duraklatmak ve CPU yükünün normale dönmesini bekleyerek tekrar kurtarabilir ve tekrar başlayabilir. Hala araştırıyorum. Bir geçici çözüm, çok iyi bir geçici çözüm olmasa da, belirli aralıklarla ara sıra duraklama ve devam ettirme olabilir. Not Bu sorun yalnızca Beaglebone ve muhtemelen diğer ARM cihazları için geçerlidir. Bu sorunu bir x86 işlemcide hiç kullanmadım.

Tanıtım

Bir BeagleBone Black ile çalışan Ubuntu 14.04 için bu çözümü geliştirdim ve test ettim. Kullandığım VPN sağlayıcısı ibVPN olarak adlandırılıyor. Herhangi bir desteklenen donanımda (yani "normal" x86 bilgisayarında), herhangi bir OpenVPN uyumlu VPN sağlayıcısında çalışmalı ve muhtemelen 14.10 ya da daha sonra çalışmalıdır. Bir noktada Ubuntu'nun boot için SystemD'yi kullanacağına inanıyorum; bu, burada kullanılan Upstart betiklerinin taşınması gerekeceği anlamına gelecektir. Güncelleme: Sistem Kalemi'nin kullanımı için bir yanıtı vardır. Ayrıca ufw'un güvenlik duvarı olarak kullanıldığını varsayardım, eğer farklı bir şey kullanıyorsanız, ufw komutlarının burada değiştirilmesi gerekecek.

Tüm işlerin sisteme bir SSH bağlantısı üzerinden yapıldığını varsayalım , ancak fiziksel bir terminale yazıldığında da çalışır.

Bu oldukça uzun bir eğiticidir, lütfen önce hepsini okuyun ve ne yapacağınız konusunda rahat olduğundan emin olun.

Ayrıca İletim'in UPnP / NAT-PMP verilerini göndermek için bir IP adresine düzgün şekilde bağlanmadığını da fark ettim - yani torrent verileri doğru bir şekilde VPN'den geçiyor, ancak UPnP bağlantı noktası iletimi etkinleştirilmişse İletim iletimi ister VPN sunucusundan değil, yerel yönlendiriciden bağlantı noktası. Bu yüzden Upstart komut dosyasını port yönlendirme özelliğini devre dışı bıraktım, çünkü çalışmış gibi görünebilir, fakat öyle değil. VPN üzerinden debian-transmisyon kullanıcılarından gelen tüm trafiği zorlamak için iptables ve iproute kullanmak mümkün olmalıdır, ancak ben hala buna bakıyorum. Ayrıca, tüm Internet verilerinin VPN üzerinden gönderilmesi için varsayılan yolun değiştirilip değiştirilmemesi de işe yarayacaktı, ancak bunu yapmak istemedim çünkü bu sunucuyu başka şeylerde de kullanıyorum ve bu da tüm sistem güncellemelerinin VPN. Bunun etkisi şudur ki, İletim, bağlantı noktası yönlendirmesi işe yaramışsa, muhtemelen torrentleri daha yavaş yükleyecektir - ancak bağlantı noktası olmayan çoğu sel için makul hızların elde edilebileceğini gördüm. UPnP üzerinde çalışmak istediğinizde bu soru daha fazla bilgiye sahiptir. VPN . Güncelleme: falk0069'un aşağıda harika bir ipucu var UPnP'yi VPN üzerinden teşvik etmeye yardımcı oluyor.

OpenVPN'i yükleme ve yapılandırma

VPN bağlantınızı, burada çalışmayı denemeden önce Ubuntu ile çalışmayı denemenizi öneririz. Bu, doğru yapılandırmaya sahip olduğunuzu ve hata ayıklama için harcanan zamanı azalttığınızı onaylayacaktır.

Önce gerekli paketleri yükleyin

sudo apt-get install openvpn

Sonra, yapılandırma dosyalarını saklamak için bir dizin oluşturun. Kullandığım sağlayıcı bu yana / opt / ibVPN kullanıyorum. Ne istersen onu değiştir.

sudo mkdir /opt/ibVPN

Bu yeni dizinde yapılacak ilk şey, VPN istemcisini çalıştırmak için yapılandırma dosyası oluşturmaktır. ibVPN, çoğunlukla kopyaladığım ve yapıştırdığım Linux kullanıcıları için temel bir yapılandırma dosyası sağlar.

cd /opt/ibVPN
sudo vim config.ovpn

Düzenlenmiş sürümünüzü, VPN sağlayıcınızın ayarlarını kullanarak kopyalayıp yapıştırın. (FYI, Ubuntu terminalindeki yapıştırma Ctrl+Shift+V ) Bunu VPN sağlayıcınızdan alabilmeniz gerekir.

remote 888.888.888.888 1194 udp      #This address will be different for you
client
dev tap1
resolv-retry infinite
script-security 3 system
explicit-exit-notify 3
persist-key
mute-replay-warnings
ca ibvpn.com.crt
comp-lzo
verb 3
mute 20
ns-cert-type server
fragment 1300
route-delay 2
reneg-sec 0
max-routes 5000
link-mtu 1578

auth-user-pass pass
auth-nocache
persist-tun
route-noexec
lport 1195
lladdr 00:FF:11:AA:BB:CC
route-up "/opt/home/openvpn/route-up.sh"
down "/opt/home/openvpn/down.sh"

Reklam metnini bilmeyenler için, metni yazmak veya yapıştırmak için Insert tuşuna basın, sonra Escape tuşuna basın ve :wq yazın kaydetmek ve çıkmak için. Tabii ki, vim kullanmak zorunda değilsiniz - herhangi bir metin editörü çalışacaktır.

Bu yapılandırma dosyasını hızlıca açıklayacağım: İlk 18 satır, sunucuyla kullanılacak belirli ayarları belirtir, bunlar ibVPN'ten geldi - farklı bir sağlayıcınız varsa muhtemelen biraz farklı olacaktır.Sonraki satırlar belirttiğim değiştirilmiş seçenekler.

  • Ayarlar dosyanızın auth-user* ile herhangi bir satırı varsa, bunları yorumlayın. Bu kurulumun otomatik olarak çalışması için kullanıcı adı ve şifre içeren bir dosyaya sahip olmamız gerekir. Bu nedenle, VPN sağlayıcısı için seçtiğiniz şifrenin güçlü, rastgele ve benzersiz olduğundan emin olun.

  • auth-user-pass pass , OpenVPN'e, kullanıcı ve parolayı okumak için pass adlı bir dosya aramasını söyler.

  • auth-nocache , parolayı bellekten kaldırır; bu, endişeniz varsa güvenliği biraz artırabilir.

  • persist-tun , bağlantınız kesilirse, aynı IP adresini sunucudan uzak tutmaya çalışacaktır; bu da, Transmission-daemon programının daha az başlatılması ve durdurulması anlamına gelir.

  • route-noexec , OpenVPN istemcisine, sunucu tarafından sağlanan yolları otomatik olarak kullanmamasını söyler; bu, tüm ağ trafiğini VPN üzerinden çeker. Sadece torrent trafiğini göndermek istiyoruz, bu yüzden farklı yönlendirme ayarlarını kullanmamız gerekecek.

  • lport 1195 , OpenVPN istemcisine 1194 yerine 1195 numaralı bağlantı noktasını kullanmasını söyler - benim durumumda aynı aygıtta bir OpenVPN sunucusu çalıştırmak istiyorum ve sunucunun 1194 numaralı bağlantı noktasını kullanması gerekir. bir OpenVPN sunucusu çalıştırmıyor, bu değişikliği yapmak zarar vermez.

  • Ayrı bir OpenVPN sunucusunun çalıştırılmasından dolayı, sanal aygıtın OpenVPN tarafından atanmak yerine dokunma1 olmasını zorlamak için dev tap - dev tap1 satırını değiştirdim. Bir VPN sunucusu çalıştırmıyor olsanız bile, bu değişiklik önemli olmamalıdır. Güvenlik duvarı komut dosyaları tap1 'yi kullanacak şekilde yazılmıştır, bu yüzden başka bir cihaz kullanmayı tercih ederseniz, uygun olan yerlerde bu komut dosyalarını değiştirmeyi unutmayın.

  • lladdr 00:FF:11:AA:BB:CC , OpenVPN'e, bu MAC adresine sahip olmak için musluk arayüzünü atamasını söyler; bu, iptables güvenlik duvarı kuralları için yararlı olabilir.

  • Transmission-daemon'u gerektiği gibi başlatmak ve durdurmak için
  • route-up ve down komut dosyalarını çalıştırın - bunlar, Transmisyona doğru bir şekilde bağlanmak için gerekli olan bağlantı hakkında bilgi içeren ortam değişkenleri ile çalıştırıldıkları için burada gereklidir. doğru IP adresi ve bağlantı noktası.

Benim durumumda, VPN sağlayıcısından - aynı zamanda yapılandırma dosyasıyla aynı dizinde olması gereken - bir sunucu sertifikası vardı.

sudo vim /opt/ibVPN/ibvpn.com.crt

Bunu kopyalayıp yapıştırın veya SCP veya SSHFS ile taşıyın.

-----BEGIN CERTIFICATE-----
MIIDeDCCAuGgAwIBAgIJAMVKgpjMPUfxMA0GCSqGSIb3DQEBBQUAMIGFMQswCQYD
VQQGEwJVUzELMAkGA1UECBMCQ0ExFTATBgNVBAcTDFNhbkZyYW5jaXNjbzEVMBMG
A1UEChMMRm9ydC1GdW5zdG9uMRgwFgYDVQQDEw9Gb3J0LUZ1bnN0b24gQ0ExITAf
BgkqhkiG9w0BCQEWEm1lQG15aG9zdC5teWRvbWFpbjAeFw0xMDA3MjExOTU5MzVa
Fw0yMDA3MTgxOTU5MzVaMIGFMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFTAT
BgNVBAcTDFNhbkZyYW5jaXNjbzEVMBMGA1UEChMMRm9ydC1GdW5zdG9uMRgwFgYD
VQQDEw9Gb3J0LUZ1bnN0b24gQ0ExITAfBgkqhkiG9w0BCQEWEm1lQG15aG9zdC5t
eWRvbWFpbjCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAz23m3BXY5Asiw8Dx
T4F6feqsp+pIx6ivftTniyUCbSAxI1J1s1x75DzxmUpIwPu5xavzgPXgZr8FT81X
JGqF9km4AE95iddJawKx0wNgdTo7GximQq9rw0dsQIB5hZZQ9TJwHC3VOnmEic5A
OawKOCybMcRs8saLakZOgh7Xc+UCAwEAAaOB7TCB6jAdBgNVHQ4EFgQUeRhE2N4l
XwL4H1dbjkZ4ou6fj3AwgboGA1UdIwSBsjCBr4AUeRhE2N4lXwL4H1dbjkZ4ou6f
j3ChgYukgYgwgYUxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJDQTEVMBMGA1UEBxMM
U2FuRnJhbmNpc2NvMRUwEwYDVQQKEwxGb3J0LUZ1bnN0b24xGDAWBgNVBAMTD0Zv
cnQtRnVuc3RvbiBDQTEhMB8GCSqGSIb3DQEJARYSbWVAbXlob3N0Lm15ZG9tYWlu
ggkAxUqCmMw9R/EwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOBgQASt0pl
WzVseQLTNM8Mlgw4ZnGAv/x2xnijmMqrkE+F7pnaOicGpxgCfMKzjZuJu0TNJqF2
fibE7GhMdomD4dLFgIu8Wb5E7iQ1CSBEOGumRhK8qCsDzjr7WXUdhqA6Xvo+ylU6
DMzy0Wn3NNvfGC+qxOgybYCJwDnVPi0CEDSbzQ==
-----END CERTIFICATE-----

Açıkçası, bir ibVPN hesabı kullanmıyorsanız, sertifikanız farklı olacaktır.

Şimdi şifre dosyasını yapalım:

sudo vim /opt/ibVPN/pass

İlk satır tam kullanıcı adı olmalı, ikinci satırda şifre olmalıdır. Bu dosyanın sadece içeriği olmalı.

[email protected]
myBIGstrongpassword1234567890

Ayrıca bu dosyadaki izinleri de güvenceye almak zorundayız, ya da OpenVPN başlamıyor.

sudo chmod 400 pass

Bu, dosyayı salt okunur yapar ve yalnızca sahip için (diğer bir kullanıcı bunu okuyamaz)

Bu komutlar, başlangıçta çalışacak dosyaları oluşturur ve bunları yalnızca root tarafından çalıştırılabilir olacak şekilde ayarlar.

sudo touch route-up.sh
sudo touch down.sh
sudo chmod 700 route-up.sh
sudo chmod 700 down.sh

Bu noktada, VPN bağlantısının gerçekten çalışıp çalışmadığını test etmek muhtemelen iyi bir fikirdir. Bağlantıyı şu şekilde başla:

sudo openvpn --cd /opt/ibVPN --config config.ovpn

Yukarı ve aşağı harici komutların çalıştırılamayacağı konusunda uyarılar görürsünüz, ama bunun için endişelenmeyin. Çalışıyorsa, terminalde Initialization Sequence Completed değerini göreceksiniz. Bağlantıyı sonlandırmak için Control+C tuşuna basın. Eğer işe yaramazsa, neden devam etmeden önce nedenini araştırıp düzeltmeniz gerekecek. Bazen işe başlamak için birkaç şey aldığını buldum. Şifre dosyanızın doğru olduğundan emin olun. İnternette OpenVPN hakkında birçok harika kaynak var, bu yüzden etrafınıza bir göz atın.

Bu noktada, İletimi başlatıp çalıştırmaya devam etmek muhtemelen en kolay yoldur. Hem VPN hem de İletim'in ayrı olarak çalışabileceğinden emin olduktan sonra, bunlar birleştirilebilir.

İletimi Kurma ve Yapılandırma

Gerekli paketleri yükleyin:

sudo apt-get install transmission-daemon

Varsayılan olarak, Aktarım otomatik olarak önyükleme sırasında çalışır. Transmit'i başlatmak için sonunda OpenVPN kullanacağımızdan, bunu devre dışı bırakmak istiyoruz. Bunu yapmak için İletim-daemon için yapılandırma dosyasını düzenleyin

sudo vim /etc/default/transmission-daemon

Ve okumak için aşağıdaki satırı değiştirin:

ENABLE_DAEMON=0

Şimdi İletim önyüklemede başlamayacak.

Şimdi, İletim ayarlarında bulunmak için bir dizin oluşturalım ve indirilen torrent'lerin içeri girmesini sağlayalım. Bu, zaten bir çeşit disk oluşturduğunuzu ve / media / arm-disk / dizininde kurulu olduğunu varsayar. Güvenlik amacıyla, artalan, root veya "ubuntu" olarak değil, kendi kullanıcısı tarafından çalıştırılacaktır. Gönderici-daemon, "debian-transmission" için yükleyici tarafından yeni bir kullanıcı oluşturuldu. Bu kullanıcının oluşturduğumuz klasöre sahip olması ve indirilmekte olan torrentler için depolama konumuna okuma ve yazma erişimine sahip olması gerekir.

sudo mkdir /opt/transmission
sudo chown debian-transmission:debian-transmission /opt/transmission
sudo mkdir /media/arm-disk/torrents-complete
sudo chown debian-transmission:debian-transmission /media/arm-disk/torrents-complete
sudo mkdir /media/arm-disk/torrents-incomplete
sudo chown debian-transmission:debian-transmission /media/arm-disk/torrents-incomplete

Şimdi iletime başlamamız gerekiyor, kısaca, ihtiyacımız olan ayarları oluşturuyoruz:

sudo -u debian-transmission -g debian-transmission /usr/bin/transmission-daemon --config-dir /opt/transmission --foreground

Bu komut, aktarım-arka planını debian-transmission kullanıcısı olarak başlatır, ayarlar dosyaları için / opt / transmission dizinini kullanmasını söyler ve ön planda çalışmaya devam etmesini söyler. Birkaç saniye çalıştıktan sonra, sonlandırmak için Control+C tuşuna basın. Şimdi ayar dosyasını düzenleyebiliriz.

sudo -u debian-transmission vim /opt/transmission/settings.json

Şimdi varsayılan değerlerine ulaşmak için aşağıdaki satırlara geçmek zorundayız:

"download-dir": "/media/arm-disk/torrents-complete",

"incomplete-dir": "/media/arm-disk/torrents-incomplete",

"incomplete-dir-enabled": true,

"rpc-whitelist": "127.0.0.1,192.168.1.*",

Kaydedin ve çıkın (Escape, type: wq ve Enter'a basın)

Ortadaki iki düzenleme "tamamlanmamış" dizinin kullanımını sağlar ve bitmiş ürünlerinizi bitmemiş ürünlerden ayırır. Bu tamamen gerekli değil, ama ben şahsen çok yararlı buluyorum. Son düzenleme, web GUI'sinin LAN üzerindeki herhangi bir bilgisayar tarafından erişilmesini sağlar (LAN alt ağınızın 192.168.1.0 olduğu varsayılırsa, farklıysa bunu değiştirin).

Şimdi çalışıp çalışmadığını ve bir torrent indirip indiremeyeceğini görmek için İletim'i tekrar çalıştırmak iyi bir fikir. GUI'ye erişmek ve bir torrent eklemek için bir web tarayıcı penceresi kullanacağız. Öncelikle, LAN'dan güvenlik duvarı üzerinden web GUI'ye erişmeye izin verin, daha sonra aktarım-arka planını tekrar çalıştırın.

sudo ufw allow in from 192.168.0.0/16 to any port 9091
sudo -u debian-transmission -g debian-transmission /usr/bin/transmission-daemon --config-dir /opt/transmission --foreground

Firefox'ta bu URL'yi ziyaret edin (veya hangisini tercih ederseniz edin): İşte , burada XXX adresiyle değiştirilir. LAN üzerindeki sunucunuz (yani 192.168.1.10). İndirmek için bir torrent bulun, örneğin 1080p60hz'deki Big Buck Bunny. Bu, yasal olarak ücretsiz indirilebilen ücretsiz bir kısa film. İletim GUI'sinde, "Open Torrent (Aç)" düğmesini ve bu bağlantıyı yapıştırın ( ya da hoşunuza giden başka bir torrent) ilk kutuya. Ardından "Yükle" ye basın. Şanzıman düzgün çalışıyorsa, torrent indirmeye başlayacaktır. Eğer değilse, o zaman devam etmeden önce neden çalışmanız gerekecek. İnternette şanzıman-takimini kullanmak için çok sayıda kaynak var. Seçtiğiniz torrent de olmayabilir, önce birkaçını deneyin.

İndirme işlemi bittiğinde, aktarım panosunu durdurmak için terminal penceresinde Control+C tuşuna basın.

VPN arayüzüne ciltlemeyi yapılandırın

Şimdi, VPN hazır olduğunda İletimi başlatmak için kullanılacak olan bir Upstart komut dosyası hazırlayalım.

sudo mv /etc/init/transmission-daemon.conf /etc/init/transmission-daemon.conf.bak

Bu şikayet ederse endişelenmeyin, eğer varsa, Upstart dosyasının bir yedeğini almanız yeterli olmayabilir. Yeni olanı düzenlemek için vim açalım:

sudo vim /etc/init/transmission-daemon.conf

Bunu düzenleyiciye yapıştırın:

description "transmission-daemon, attached to OpenVPN tunnel tap1"

start on transmission-daemon-start
stop on runlevel [!2345] or transmission-vpn-down

# This includes the information from OpenVPN into this environment

export LOCAL_IP
env PORT=51413

# give time to send info to trackers
kill timeout 30

# Run as unprivileged user
setuid debian-transmission
setgid debian-transmission

# Start transmission again if it stops for some reason
respawn
# If transmission stops 5 times in a minute, give up trying to respawn it
respawn limit 5 60

exec /usr/bin/nice -15 /usr/bin/transmission-daemon --config-dir /opt/transmission --bind-address-ipv4 $LOCAL_IP --peerport $PORT --no-portmap --foreground

Kaydet ve kapat. ( Escape , sonra :wq yazın). Yine, açık vim:

sudo vim /etc/init/transmission-up.conf

Ve şunu yapıştır:

description "Script to create firewall and routing rules for transmission-daemon"

start on transmission-vpn-up

# This includes the information from OpenVPN into this environment
export VPN_GATEWAY
export LOCAL_IP
env PORT=51413

task

script
    # Set up IP route, firewall rules
    # It doesn't matter if they already exist, they will be skipped
    /sbin/ip route add default via $VPN_GATEWAY dev tap1 table 200
    /sbin/ip rule add from $LOCAL_IP table 200
    /sbin/ip route flush cache
    /usr/sbin/ufw insert 1 reject out on eth0 from any port $PORT
    /usr/sbin/ufw insert 1 reject in on eth0 to any port $PORT
    /usr/sbin/ufw insert 1 deny in on tap1 to any
    /usr/sbin/ufw insert 1 allow in on tap1 to any port $PORT proto udp

    # Start the actual transmission-daemon process, in a separate task so that unprivileged user/group can be set
    /sbin/initctl emit transmission-daemon-start LOCAL_IP=$LOCAL_IP

end script

Yine, vim'i kaydedin ve kapatın. ( Escape , sonra :wq yazın). Son olarak:

sudo vim /etc/init/transmission-down.conf

Bunu yapıştırın:

description "Script to remove firewall rules for transmission-daemon"

start on runlevel [!2345] or stopping openvpn-transmission
env PORT=51413

task

script
    # Take down IP route, firewall rules
    # It doesn't really matter if they don't get taken down, but this will be cleaner
    /usr/sbin/ufw delete reject out on eth0 from any port $PORT
    /usr/sbin/ufw delete reject in on eth0 to any port $PORT
    /usr/sbin/ufw delete deny in on tap1 to any
    /usr/sbin/ufw delete allow in on tap1 to any port $PORT proto udp

    /sbin/ip route flush cache

end script

Bu komut dosyaları, Upstart'ın "transmission-vpn-up" sinyalini dinlemesini söyler. "Transmission-up.conf" betiği daha sonra, VPN arabiriminden yerel VPN adresinden trafik göndermek için gereken yönlendirme kurallarını belirler ve güvenlik duvarını VPN'den Aktarım için dinleme bağlantı noktasına izin verecek şekilde ayarlar. Normal LAN arayüzünden İletim'in dinleme portuna yönlendirilen trafik engellenir. "Transmission-daemon.conf" betiği sonra aktarım-arka planını VPN IP adresine bağlamak için gerekli ayarlarla başlatır. Bu komutun UPnP / NAT-PMP'nin de devre dışı bırakılacağını da unutmayın - port yönlendirmesiyle ilgili notumu not edin. "Nice -15", daha düşük bir önceliğe sahip olan Transmission'ın daha düşük bir önceliğe sahip olduğunu belirtti. Bu, daha düşük özelliklerde BeagleBone kullanıldığında yararlı oldu - bazen İletim sistemi yavaşlatır ve kaynakları yavaşlatır. En azından düşük öncelikli, daha önemli sistem görevleri hala çalışabilir. VPN durdurulduğunda "transmission-down.conf" komut dosyası güvenlik duvarı kurallarını kaldırır. Şanzıman-sunucusunun ayrıcalıklı olmayan bir kullanıcı olarak çalıştırılabilmesi için üç farklı betik kullanılır, ancak güvenlik duvarı kuralları root olarak çalıştırılabilir.

Şimdi, OpenVPN ayarlarına geri dönelim ve İletim komutumuzu başlatıp durdurmayı tetiklemek için "yönlendirmeli" ve "aşağı" komut dosyalarını düzenleyelim.

sudo vim /opt/ibVPN/route-up.sh

Bunu vim'e yapıştırın:

#! /bin/bash

/sbin/initctl emit transmission-vpn-up VPN_GATEWAY=$route_vpn_gateway LOCAL_IP=$ifconfig_local

Tüm bu betik, aktarım-arkaplanın başlaması için Upstart ve VPN bağlantısına eklemesi gereken bilgileri verir.

sudo vim /opt/ibVPN/down.sh

Yine, daha fazla yapıştırma:

#! /bin/bash

/sbin/initctl emit transmission-vpn-down

Bu betik daha da basit - aktarım-arka planın durması için sinyal veriyor.

Bu noktada, muhtemelen tüm VPN yapılandırma klasörünün sahibinin root kullanıcısı olduğundan emin olmak iyi bir fikirdir - çünkü bu betikler kök olarak çalıştığı için, bunları değiştirebilecek herkes istediği herhangi bir şeyi çalıştırabilir. kök kullanıcı.

sudo chown root:root -R /opt/ibVPN
sudo chmod 700 -R /opt/ibVPN
sudo chmod 400 /opt/ibVPN/pass

Artık, yalnızca kök kullanıcının VPN bağlantı ayarlarını değiştirebileceği veya görüntüleyebileceği anlamına gelir.

Tamam, neredeyse bitti!Kurulumumuz şu ana kadar çalışıyorsa test edelim:

sudo openvpn --cd /opt/ibVPN --config config.ovpn

Tekrar İletim web GUI'sine bağlanın ve mevcut torrent'e devam edin veya yeni bir tane ekleyin. Akranları beklemek için birkaç dakika sonra indirebilmeli. Çalışıp çalışmadığını test etmenin şık bir yolu, iftop'a bakmaktır. İftop kurun ve çalıştırın:

sudo apt-get install iftop
sudo iftop -i tap1

Bu ekran VPN'de çalışan tüm bağlantıları gösterecektir. Eğer torrentiniz indiriliyorsa ve VPN'yi doğru kullanıyorsa, burada çok sayıda IP adresi ve ana bilgisayar adı olacaktır. LAN bağlantısının iftopuna da bakın:

sudo iftop -i eth0

Burada, tek bir IP adresine, VPN sunucusu olarak çok miktarda trafik ve diğer LAN cihazlarında yalnızca minimum trafik görmeniz gerekir - BeagleBone'unuzda başka hizmetler çalıştırmıyorsanız.

VPN'nin bu talimatları izleyerek çalıştığını onaylayabilirsiniz.
Bu site, size bağlanmak için diğer eşlerin kullandığı IP adresini görmek için bir torrent indirmenize izin verir - her şey çalışıyorsa bu, kendi WAN IP adresiniz değil, VPN IP adresi olacaktır.

Sorun yaşıyorsanız, Başlatma hatası günlüğünü aşağıdakileri yaparak görebilirsiniz:

sudo tail -f /var/log/upstart/transmission-daemon.log

Ayrı bir terminal / SSH penceresinde, yukarıdaki gibi VPN bağlantısını başlatırken kuyruk komutunu çalıştırmayı deneyin ve herhangi bir hata mesajını arayın. Umarım internette dolaşmak veya yorum göndermek istemiyorsanız, hata mesajlarını görerek sorunu çözebilirsiniz.

Tümünü otomatik olarak başlatılacak şekilde yapılandırın

OpenVPN tünelini başlatmak için komutu el ile vermekten memnunsanız veya bunu kendi komut dosyanızla yapmak istiyorsanız, işiniz biter. Fakat açılışta başlatmak istedim, bu yüzden OpenVPN'i başlatmak için başka bir Upstart betiği yaptım.

sudo vim /etc/init/openvpn-transmission.conf

Yapıştırmamız gereken son şey bu!

description "OpenVPN client, with attached transmission-daemon"

start on started networking
stop on runlevel [!2345] or stopped networking

# Give time for Transmission to send info to trackers, wait for graceful close
kill timeout 45

# Start the OpenVPN tunnel again if it stops for some reason
respawn
# If it stops 5 times in a minute, give up trying to respawn it
respawn limit 5 60


exec openvpn --cd /opt/ibVPN --config config.ovpn

post-stop script
    # Pause for a few seconds, before exiting
    /bin/sleep 3s
end script

Tüm bunlar, sistemin şebekenin hazır olduğunu bildirmesini beklemek ve ardından OpenVPN tünelini başlatır - bu da İletim'i başlatır. Sistem kapatıldığında veya ağ bağlantısı herhangi bir nedenle kapatılmışsa, Upstart güvenlik duvarı kurallarını kaldırır ve iletim-planını kapatır. Basit! Bu yeniden başlatmadan sonra çalışmaya devam edecek, şimdi hepiniz ayarlandınız.

İletim ile etkileşim kurmak için, kurulum aşamasında yaptığımız gibi web GUI'sini kullanın. Port yönlendirmeyi kurarak GUI'yi İnternet üzerinden erişilebilir hale getirmek de mümkündür. Bunun nasıl yapılacağı konusunda pek çok eğitici var, bu yüzden burada tekrarlamayacağım.

Tamamlanmış indirme işlemlerini BeagleBone'dan almak için NFS kullanıyorum. BeagleBone'dan masaüstü bilgisayarıma LAN üzerinden yaklaşık 8 MB / s kopyalama yapabiliyorsunuz. Bu da düşük güçlü bir cihaz için oldukça iyi. Bunu ayarlamak için Ubuntu bazı kullanışlı bilgiler sağlar .

    
verilen cevap seanlano 10.02.2015 06:45
6

Bunu SystemD kullanarak çalıştım, böylece paylaşacağımı düşündüm. Tüm komut dosyalarımı, yapılandırmalarımı ve sertifikalarımı, /etc/openvpn/myprovider

olarak belirttiğim aynı dizine yerleştirdim.

OpenVPN yapılandırması

Bu sizin belirli VPN'inize bağlıdır, ancak @ seanlano'nun yapılandırmasından bir fark, yalnızca route-up betiğini kullanıyorum. Bu nedenle, çalışan yapılandırma seçeneğinize ek olarak ihtiyacınız olan şeyler şu satırlardır:

route-noexec
route-up "/etc/openvpn/myprovider/transmission-route-up.sh"

transmission-route-up.sh komut dosyasını istediğiniz yere yerleştirirsiniz. % Co_de% komut dosyasının bulunmadığına dikkat edin. (VPN'im zaten özel bir aşağı komut kullanıyordu, bu yüzden yine de çakışıyordu).

/etc/openvpn/myprovider/transmission-route-up.sh:

#!/bin/sh

# Print environment variables for transmission's benefit
printenv > /etc/openvpn/myprovider/vpn.env


# Set up VPN routes
ip route add default via $route_vpn_gateway dev $dev table 10

ip rule add from $ifconfig_local/32 table 10
ip rule add to $route_vpn_gateway/32 table 10

ip route flush cache


# Add firewall rules
iptables -A INPUT -i $dev -p udp --dport 24328 -j ACCEPT
iptables -A INPUT -i $dev -p tcp --dport 24328 -j ACCEPT

iptables -A OUTPUT -o $dev -p udp --sport 24328 -j ACCEPT
iptables -A OUTPUT -o $dev -p tcp --sport 24328 -j ACCEPT

İlk satır, down , önemli. İstediğiniz yere yerleştirin, daha sonra SystemD servisinde kullanılır. Onu vpn yapılandırmayla aynı dizine yerleştiriyorum.

24328 'i değiştirerek, aktarım-arzamanın dinlemesi gereken bağlantı noktası ile değiştirin. Iptables (Debian kullanarak) kullanıyorum, bu yüzden muhtemelen bu satırları @ seanlano's yapılandırmasından ufw satırlarıyla değiştirebilirsiniz.

SystemD VPN hizmeti

Bu, VPN'nin bizim için otomatik olarak başlattığı hizmettir. Openvpn yolunun makinenizde doğru olduğunu ve yapılandırma dosyasının yolunun da doğru olduğunu doğrulayın. SystemD hizmetlerinde zorunlu tam yolları belirtin.

/etc/systemd/system/my-vpn.service:

[Unit]
Description=VPN connection
After=network.target

[Service]
Type=forking
PIDFile=/var/run/openvpn/vpn.pid
ExecStart=/usr/sbin/openvpn --cd /etc/openvpn/myprovider --config /etc/openvpn/myprovider/myconfig.ovpn --daemon --writepid /var/run/openvpn/vpn.pid

[Install]
WantedBy=multi-user.target

VPN servisini şu şekilde etkinleştirin:

systemctl enable my-vpn.service

Ve test edin:

systemctl start my-vpn.service
systemctl status my-vpn.service

Başladıysa / çalışıyorsa, iyisiniz.

SystemD aktarımı-daemon.service

Bu betik vpn-servisini gerektirir, böylece vpn aşağı inerse, iletim-daemon da aşağı gider. Bu, vpn yeniden başlatıldığında kullanışlıdır ve yeni bir IP adresi alırsınız, çünkü aktarımın yeniden başlatılması ve yeniden bağlanmasının gerekmesi, bunun otomatik olarak gerçekleştirilmesi gerekir. Daha önce printenv komut dosyasında yazdırdığımız ortam değişkenlerini kullandığımızı unutmayın.

/etc/systemd/system/transmission-daemon.service:

[Unit]
Description=Transmission BitTorrent Daemon Under VPN
After=network.target my-vpn.service
Requires=my-vpn.service

[Service]
User=debian-transmission
Type=notify
EnvironmentFile=/etc/openvpn/vpn.env
ExecStart=/usr/bin/transmission-daemon -f --log-error --bind-address-ipv4 $ifconfig_local --rpc-bind-address 0.0.0.0 --no-portmap
ExecReload=/bin/kill -s HUP $MAINPID

[Install]
WantedBy=multi-user.target

Etkinleştir

systemctl enable transmission-daemon.service

Ve başla

systemctl start transmission-daemon.service

Yeniden başlattığınızda, her şey otomatik olarak başlatılmalıdır (sırayla!). Vpn hizmetindeki route-up 'nin kullanılması, komut dosyasının sıralanması için bazı sorunlara yol açtığından, bunun yerine Type=simple kullanılmasını öneririm.

Daha fazla kısıtlayıcı olmak istiyorsanız, forking için gerçek bir ip adresi belirtebilirsiniz (bu, VPN-ip'iniz olmaması gereken web GUI dinleme adresidir). İletimi güzel bir şekilde çalıştırmak istiyorsanız, rpc-bind-address satırını değiştirip, ExecStart değerini de ekleyin.

Adres değişikliklerini işleme

Zamanla belirttiğim bir şey, eğer bir sebepten dolayı vpn bağlantısı yeni bir ip adresi alırsa, aktarım hala eski adrese bağlı olacak ve çalışmayı durduracaktır. Ve sadece /usr/bin/nice -n15 yapmak onu kesmiyor. Tamamen durması ve sonra taze olması gerekiyor.

Neden olduğu hakkında bir fikriniz yok, ancak bu nedenle aşağıdaki satırları root crontab'ma ekledim ( systemctl restart transmission-daemon.service ):

# m h  dom mon dow   command
0 6 * * * /bin/systemctl stop my-vpn.service; /bin/systemctl start my-vpn.service
1 6 * * * /bin/systemctl stop transmission-daemon.service; /bin/systemctl start transmission-daemon.service
    
verilen cevap Jonas Kalderstam 11.05.2015 02:15
2

İletim'in UPnP / NAT-PMP için VPN'den geçmediğini belirttiğinizi farkettim. Bunu da fark ettim ve İletim için bir yama oluşturdum, böylece UPnP için bind-address-ipv4 ayarını onurlandırdı. Varsayılan ağ geçidini belirlemeniz gerektiğinden NAT-PMP'nin uygulanması biraz daha zordur. UPnP, bu günlerde kullanılan ana olsa da, muhtemelen yeterince iyi. Bunu trac.transmissionbt sitesinde bir hata olarak kaydettim ve yama sağladı. Umarım gelecekteki bir sürümde yer alacaktır. İşte

Yeniden derlemeyi istemiyorsanız şu anda bir başka seçenek de upnpc'yi miniupnpc paketinden manuel olarak çalıştırmaktır. Örn.

sudo apt-get install miniupnpc
upnpc -m 10.10.10.51 -a 10.10.10.51 51515 51515 TCP
upnpc -m 10.10.10.51 -a 10.10.10.51 51515 51515 UDP

10.10.10.51'in VPN IP'niz ve 51515'iniz istenen TCP / UDP bağlantı noktasıdır.

Yönlendirmenin ne kadar uzun sürdüğünden emin değilim. Ayrıca, bağlantıyı keserken bağlantı noktanızı kaldırmak için '-d' seçeneğini kullanmak isteyebilirsiniz. Eğer yapmazsam, VPN'ye yeniden bağlanırsam aynı portu tekrar alamıyorum.

alkış

    
verilen cevap falk0069 08.09.2015 03:59

Etiketlerdeki diğer soruları oku