Ahududu Pi'yi yönlendirici olarak kullanmak?


50

Raspberry Pi'lerini yönlendirme cihazı olarak kullanan var mı?

Temelde ağımı izlemek için kullanmak istiyorum ve Ethernet için bir giriş ve çıkış olması harika olurdu, ama etmiyor, bu yüzden Ethernet girişine sahip ağı izlemenin çok etkili olup olmadığını merak ediyorum ve daha sonra bir Wi-Fi yönlendirici olarak bir USB dongle kullanma. Böyle bir şey yapan var mı? İnterneti çok yavaşlatıyor mu?


3
İnternet bağlantınızın ne kadar hızlı olduğuna bağlı. Mine 100Mb, bu yüzden yavaşlatacağından eminim;)
John La Rooy

3
30Mbps internet bağlantım var ve şu anda 5Mbps trafikte, snortlu satır içi ahududu pi ~% 50-95 CPU ve% 85 bellek tüketiyor. Kurulumu henüz ayarlanmış değil, ayarlanmış, ancak size bazı gerçek rakamları göstermek istiyorum.
Boru

ahududu pi kullanarak özelleştirilmiş bir yönlendirici ile badwidth tahsisinin nasıl çalıştığını kimse bilmiyor mu? Gibi, 3Mbps internet bağlantısı hızı var, 10 kullanıcı var. Nasıl bölüneceğini açıklayabilir misiniz? 3 Mbps hız. Teşekkürler. Umarım anlarsın. :)
kirbs

2
Merhaba kirbs. Lütfen başka bir soru hakkında soru sormaktan kaçının. Bunun yerine sayfanın üstündeki Soru Sor bağlantısıyla yeni bir soru açın . Teşekkür ederim.

Yanıtlar:


30

B modelimi, birlikte gelen Ethernet bağlantı noktasını kullanarak, trafik yönlendirmeli bir yönlendirici olarak kullanıyorum. İşte nasıl bir hızlı ve kirli:

  1. IPv4 Yönlendirmeyi Etkinleştirin , böylece Pi'niz aldığı herhangi bir trafiği ileterek yönlendirici görevi görür.
  2. Pi'nizi statik ağ yapılandırması ile yapılandırın, böylece aşağıda önerilen DHCP değişikliklerinden etkilenmeyecek. İşte /etc/network/interfacesreferans olarak içeriğimin içeriği :

    # pi@flux:/home/pi/projects/adsl/rrdlogger (master *)
    # cat /etc/network/interfaces 
    auto lo
    
    iface lo inet loopback
    #iface eth0 inet dhcp
    iface eth0 inet static
            address 192.168.1.1
            netemask 255.255.255.0
            gateway 192.168.1.254    # IP of my ADSL router box
    
    allow-hotplug wlan0
    iface wlan0 inet manual
    wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
    iface default inet dhcp
    
  3. Şimdi ağınızın DHCP ayarlarını, varsayılan ağ geçidi / yönlendirici Pi'niz olacak şekilde değiştirin. Bu muhtemelen mevcut ADSL yönlendirici kutunuzdaki ayarları değiştirmek anlamına gelir. Yukarıdaki örneğimde Pi'imin IP adresi 192.168.1.1.

Cihazlarınız bir sonraki ağa yeniden bağlandığında, Pi'nize İnternet'e açılan kapı olduğu söylenecek ve internete bağlı tüm trafik yönlendirilecek. Pi'niz tüm bu trafiği normal yönlendiricinize iletecektir. Bu değişikliklerin etkili olması için cihazlarınızın bağlantısını kesmeniz ve sonra yeniden bağlamanız gerekebilir.

Artık vnstat gibi sizin için izlemenizi sağlayacak bir araç oluşturabilir veya yükleyebilirsiniz .

Trafik Şekillendirme

Trafik şekillendirmeye gelince, işte benim kişisel harikalar tarzımı kullanacak olan hızlı ve kirli bir rehber .

Bunun faydalı olması için internet bağlantınızın ne kadar hızlı olduğunu bilmeniz gerekir. Bunu genellikle (orijinal) yönlendiricinizin web arayüzünden bulabilirsiniz, ancak bir speedtest kullanarak bir tahminde bulunamazsınız .

  1. sudo apt-get install iptables
  2. wget https://raw.github.com/meermanr/adsl/master/wondershaper/wondershaper
  3. sudo ./wondershaper eth0trafik şekillendirmenin mevcut durumunu yazdırır. Açıkçası, beklenen durumun hiçbir şekillendirme olmadığı, yani yürürlükte olan tek bir kural olduğu anlamına gelir pfifo_fast:

    • ( eth0B modelindeki kablolu ağ bağdaştırıcısının adıdır ifconfig. Sisteminizdeki arabirimlerin adlarına bakın )
    # pi@flux:/home/pi/projects/adsl/wondershaper (master *)
    # sudo ./wondershaper eth0
    qdisc pfifo_fast 0: root refcnt 2 bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1
     Sent 1908 bytes 15 pkt (dropped 0, overlimits 0 requeues 0) 
     backlog 0b 0p requeues 0
    
  4. sudo ./wondershaper eth0 3000 370, nerede:

    • 3000internet bağlantımın indirme hızı kbit'tir . Yani 3Mbit == 3000kbit
    • 370 internet bağlantımın uydu bağlantı hızı, tekrar kbit cinsinden.
  5. sudo ./wondershaper eth0 şimdi çok daha fazla çıktı göstermelidir:

    # pi@flux:/home/pi/projects/adsl/wondershaper (master *)
    # sudo ./wondershaper eth0
    qdisc htb 1: root refcnt 2 r2q 10 default 0 direct_packets_stat 0
     Sent 1858 bytes 9 pkt (dropped 0, overlimits 0 requeues 0) 
     backlog 0b 0p requeues 0 
    qdisc sfq 40: parent 1:40 limit 127p quantum 1526b depth 127 divisor 1024 perturb 10sec 
     Sent 1858 bytes 9 pkt (dropped 0, overlimits 0 requeues 0) 
     backlog 0b 0p requeues 0 
    qdisc sfq 10: parent 1:10 limit 127p quantum 1526b depth 127 divisor 1024 perturb 10sec 
     Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
     backlog 0b 0p requeues 0 
    qdisc sfq 20: parent 1:20 limit 127p quantum 1526b depth 127 divisor 1024 perturb 10sec 
     Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
     backlog 0b 0p requeues 0 
    qdisc sfq 30: parent 1:30 limit 127p quantum 1526b depth 127 divisor 1024 perturb 10sec 
     Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
     backlog 0b 0p requeues 0 
    qdisc ingress ffff: parent ffff:fff1 ---------------- 
     Sent 768 bytes 12 pkt (dropped 0, overlimits 0 requeues 0) 
     backlog 0b 0p requeues 0 
    class htb 1:1 root rate 370000bit ceil 370000bit burst 10Kb cburst 1599b 
     Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
     rate 0bit 0pps backlog 0b 0p requeues 0 
     lended: 0 borrowed: 0 giants: 0
     tokens: 3459453 ctokens: 540531
    
    class htb 1:10 parent 1:1 leaf 10: prio 1 rate 370000bit ceil 370000bit burst 1599b cburst 1599b 
     Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
     rate 0bit 0pps backlog 0b 0p requeues 0 
     lended: 0 borrowed: 0 giants: 0
     tokens: 540531 ctokens: 540531
    
    class htb 1:20 parent 1:1 leaf 20: prio 2 rate 246000bit ceil 246000bit burst 1599b cburst 1599b 
     Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
     rate 0bit 0pps backlog 0b 0p requeues 0 
     lended: 0 borrowed: 0 giants: 0
     tokens: 813000 ctokens: 813000
    
    class htb 1:30 parent 1:1 leaf 30: prio 3 rate 74000bit ceil 74000bit burst 1599b cburst 1599b 
     Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0) 
     rate 0bit 0pps backlog 0b 0p requeues 0 
     lended: 0 borrowed: 0 giants: 0
     tokens: 2702687 ctokens: 2702687
    
    class htb 1:40 root leaf 40: prio 0 rate 100000Kbit ceil 100000Kbit burst 512Kb cburst 1600b 
     Sent 3486 bytes 15 pkt (dropped 0, overlimits 0 requeues 0) 
     rate 0bit 0pps backlog 0b 0p requeues 0 
     lended: 15 borrowed: 0 giants: 0
     tokens: 654609 ctokens: 1250
    

Giden ağ trafiğiniz şimdi Pi'niz tarafından şekilleniyor ve gelen trafiğiniz, orijinal yönlendirme kutunuzun değil, Pi'nin trafik kontrolüne sahip olmasını sağlamak için hafifçe boğuluyor.

Şekillendirmeyi devre dışı bırakmak için, sadece koş sudo ./wondershaper eth0 clear. Uplink ve downlink hızlarını önce temizlemeden değiştirebilirsiniz, ancak zarar vermez.

Güncelleme: Şekillendirme için Pi'den geçmek üzere tüm trafiğe ihtiyaç duyduğumuzdan , ICMP yönlendirmelerinin iletimini de devre dışı bırakmanız gerekir. Linux çekirdeğinin, ev ağınızdaki istemcilerin Pi üzerinden gelen trafiği çarpmak yerine doğrudan ADSL kutusuyla konuşabileceğini anlamaya yetecek kadar akıllı olduğu ortaya çıktı ve bu her fırsatta bunu söylüyor. Ardından müşteriler trafiklerini doğrudan ADSL kutunuza gönderir ve Pi bunu şekillendirme şansını yakalamaz. Anında olduğu gibi devre dışı bırakın (bir sonraki yeniden başlattığınızda kaybolur):

echo 0 | sudo tee /proc/sys/net/ipv4/conf/*/send_redirects

Önyükleme sırasında bunu ayarlamak için aşağıdakileri güncelleyin: /etc/sysctl.conf

net/ipv4/conf/eth0/send_redirects = 0

( Bu ipucu için https://unix.stackexchange.com/a/58081/22537 adresine teşekkürler )

Bir Linux ağ geçidi yapılandırmayla ilgili kişisel notlarımı da ilginizi çekebilir: http://www.robmeerman.co.uk/unix/gateway


diğer cihazların bağlanabileceği wifi ağ adını ve şifresini nasıl belirlersiniz?
fommil

Harika bir rehber. Bununla birlikte wondershaperönerinizle ilgili bir sorum var : müşteri başına limit veya genel mi?
Bob

@fommil: Yukarıdaki rehberim, ISS'nizin size verdiği modem / yönlendirici / WiFi-erişim noktasını kullandığınızı, ancak bağlanan tüm istemcilere "Pi'ye trafik gönder" diyecek şekilde yapılandırdığınızı varsayıyor. Bu genellikle Pi'nizin (statik!) IP adresini ISS kutunuzun DHCP ayarlarına girerek yapılır. Genellikle "Ağ Geçidi", "Varsayılan Ağ Geçidi" veya "Varsayılan rota" olarak adlandırılan bir alanda.
RobM,

@Bob: Girdiğiniz sayılar internet bağlantınızın toplamıdır. Harika senaryo, talebe bağlı olarak bunu tüm müşterilerinizle paylaşmaya çalıştığından daha çok senaryo . Dolayısıyla, yalnızca bir müşteri interneti kullanıyorsa, bunun% 100'ünü alması gerekir. Başka bir müşteri başlarsa, bir miktar "yerleşme süresi" (~ 10 saniye) sonra her birinin% 50'sini kullanacaktır.
RobM,

Mükemmel. @Fommil'e sadece bir not, yönlendiricilerimin hiçbiri (ve daha pek çoğunun aynı olduğunu farz ediyorum) DHCP aracılığıyla atanan ağ geçidini ayarlamak için kolay bir yol sağlar. Yönlendiricideki DHCP'yi kapatıp Pi'ye bir DHCP sunucusu kurmaktan vazgeçtim - bu oldukça basit bir işlem (eğer isterseniz bir rehber arayın).
Bob,

10

Küçük bir ağ arka planına sahip olmak, akla gelen ilk şey, onu bir Snort kutusu olarak kullanmaktır ve ardından sadece bir arayüze sahip olmak konusunda endişelenmenize gerek yoktur. Anahtarınızı / yönlendiricinizi, tüm trafiği Pi'ye iletmek için kuruyorsunuz, aynı zamanda son aygıta da aktarıyorsunuz. Bu bir geçiş ekranı monitörü olarak bilinir, ancak cihazınız bunu desteklemiyor olabilir. Bunu yapmak için yönetilen bir anahtara ihtiyacınız olabilir . Snort daha sonra trafiği analiz eder ve rapor eder. Snort hakkında daha fazla bilgi http://www.snort.org/

Bu tür bir kurulumla ilgili güzel şey, Pi'nizin veriyle aynı çizgide oturmak yerine, anahtarın içinden geçen her şeyi izlerken yanına oturmasıdır. Bu şekilde bir yazılım arızası varsa, trafik hala akabilir, sadece izlenemez. İki arayüzle anlattıklarınızla, programınız çöküyor, ağınız çöküyor.

Bu, pi'yi yönlendirici olarak kullanmaz, ancak ağınızda dolaşan trafiği izlemenize ve raporlamanıza olanak sağlar.


7

Ahududu Pi'yi yönlendirme için kullandım ve iyi çalıştı. Dediğiniz gibi, Raspberry Pi'nin yalnızca bir Ethernet portu olduğundan en az bir ağ arayüzüne ihtiyacınız var. USB portuna bağlı başka bir arayüz ekleyebilirsiniz. Bir GSM modem ve bir Wi-Fi stick kullandım.

Dikkat edilecek şeyler:

  • Elektrikli bir USB hub kullanın. Wi-Fi ve GSM cihazları, Raspberry Pi'nin USB portlarının sağlayabileceğinden daha fazla güç talep ediyor.
  • Wi-Fi cihazları için alışveriş yaparsanız, iyi bir Linux desteği olan birini edinin. Erişim noktası modunda çalışan bir tanesinin olmasını istersiniz, tüm çubuklar da yapmaz. Linuxwireless.org adresinden kontrol edin .

İşte benim blog gönderim yönlendirme ve diğeri Wi-Fi erişim noktası kurma . Bu kılavuz yönlendirme kurulumunda bana yardımcı oldu. Yönlendirme işleri Ahududu Pi'ye çok özgü değil; Genel olarak Linux üzerinde çalışan her şey mümkün olmalıdır. Ayrıntılar kullandığınız dağıtıma göre değişir.


4

Raspberry Pi'yi yaklaşık bir aydır yönlendirici olarak kullanıyorum. Gerçek bir ticari Wi-Fi Erişim Bağlantı Noktasına sahibim, bir ev Wi-Fi yönlendiricisine değil, bu yüzden bunu kullandım. Ayrıca, Wii'den "ödünç alınan" bir USB-Ethernet dönüştürücüm var. Bu ev ağına gidiyor ve Raspberry Pi'nin dahili Ethernet'i WAN / İnternet'e gidiyor.

Ahududu Pi için IPFire'in bir kopyasını alın . ARM versiyonunu seri bir konsol ve en son kararlı versiyon olmadan istersiniz. ARM sekmesine tıklayın. "Armv5tel mimarisi için resim" indirin.

Baştan başla. Bir HDMI TV ve klavye bağlayın. İlk birkaç soruyu cevapla. Yapılandırmanın geri kalanı ev ağındaki bir tarayıcıdan yapılabilir, bundan sonra TV'ye veya klavyeye ihtiyacınız olmaz.

Çok zor değildi ve bir şampiyon gibi çalıştı! İşte resmi talimatlar: http://wiki.ipfire.org/en/hardware/arm/rpi

Son bir şey. USB ile çalışan bir Wi-Fi donanım kilidini kullanacaksanız, Raspberry Pi'nizin güç kaynağını kontrol edin. Ahududu Pi'ye güç vermek için 700 mA'lık bir USB güç kaynağı yeterli olabilir, ancak Wi-Fi'ye güç sağlamak için fazla bir şey bırakmaz. Güçlendirilmiş bir USB hub kullanın veya Raspberry Pi'ye 1 ila 2 A USB güç kaynağıyla güç verin.
İyi şanslar!


1

(Bu ek , Pi'nizi LAN'ınızın internet ağ geçidi olarak nasıl yapılandıracağınıza dair bir rehber olan önceki cevabımı takip eder )

Genel internet kullanımımı izlemekten memnun değil , LAN'ımdaki her bir cihazın internet kullanımını izleyen bir araç yazdım. Bu, bir konsol penceresinde anlık kullanımı görmeme ve bir gecede ne olduğunu görebilmem için geçmiş kullanım çizelgeleri oluşturmamı sağlıyor.


Rodos : gerçek zamanlı ve LAN cihazlarının geçmiş ağ kullanımını izlemek için bir araçtır (MAC adresi bazında) https://github.com/meermanr/adsl/tree/master/rhodes

Konsol çıkışı örneği:

193 kiB/s TX     17 kiB/s RX   0004edbf98c0   home.gateway (Billion Electric Co.)
  0 kiB/s TX      0 kiB/s RX   2002af18dc15   Samsung Galaxy Tab 10.1, Vicky
  0 kiB/s TX      0 kiB/s RX   34af2c01197b   Nintendo 3DS:XL, Robert
  0 kiB/s TX      0 kiB/s RX   34af2c3af204   Nintendo 3DS:XL, Vicky
  0 kiB/s TX      0 kiB/s RX   34af2c9cfffd   Nintendo WiiU
  0 kiB/s TX      0 kiB/s RX   6045bd9c9dbc   Xbox360 Slim
  0 kiB/s TX      0 kiB/s RX   745e1c56c297   Pioneer SX-LX57
 13 kiB/s TX    109 kiB/s RX   7831c1be0c34   Az Pro (Macbook Pro)
  0 kiB/s TX      0 kiB/s RX   80ea96e6214e   Roberts-AirPort-Time-Capsule
  0 kiB/s TX      0 kiB/s RX   88308a770370   Samsung Galaxy S3, Vicky
189 kiB/s TX    211 kiB/s RX   b827eb8fc0f3   Flux (Raspberry Pi)
  2 kiB/s TX     39 kiB/s RX   b8e8563acb34   Macbook Pro, Vicky
  0 kiB/s TX      0 kiB/s RX   d022be2c26ef   Samsung Galaxy Note 3, Rob
  0 kiB/s TX      0 kiB/s RX   f82fa89368ea

İlk sütun ne kadar cihazın yayın yaptığını gösterir, bu da genellikle internete yükleme yapmak anlamına gelir. Bunun istisnası, ISS yönlendiricisinin kendisi (yukarıdaki örnekte home.gateway) ISS'den alınan verileri talep eden aygıtı (yani indirmeleri) iletir. Tabii ki aynı zamanda internete yükler de iletir, ancak bunu LAN'da olmayan ve bu araç tarafından görülmeyen ADSL modemini kullanarak yapar.

Diğer istisna, elbette yönettiği tüm verileri her iki yönde de ileten Raspberry Pi (yukarıdaki "Flux") olacaktır.

Ancak, bu istisnalar dışında, TX (gönderme) numaraları yükleme ve RX (alma) numaralarını indirmeyi ifade eder. Üçüncü sütun, cihazın MAC adresidir (normal ":" veya "-" ayırıcılar olmadan). Dördüncü sütun, biliniyorsa, cihazın insan tarafından okunabilir adını gösterir.

Grafikler, (bir yapılandırma ayarına eklenmiş olarak) ./index.pygibi bir web sunucusundan çağrılması amaçlanan çalıştırılarak oluşturulur . Sadece manuel olarak çalıştırabilirsiniz, bazı görüntüler üretecek ve HTML'yi STDOUT'a yazdıracaktır. Böylece bir tarayıcıda açabileceğiniz bir dosyaya yönlendirmek istersiniz:lighttpdindex.pyindex-file.names/etc/lighttpd/lighttpd.conf

./index.py > index.html

Ardından index.html dosyasını tercih ettiğiniz tarayıcıda açın.

Kurulum gereksinimleri (hepsi ile monte edilebilir apt-get install):

  • tcpdump - Ağ trafiğini yakalamak ve tanımlamak için komut satırı araçları
  • rrdtool - Round Robin Veritabanı aracı, zaman serisi verilerini kaydeder ve çizelgeleri
  • rrdcached - Round Robin Veritabanı Önbellekleme Daemon, birden fazla RRD dosyasıyla aynı anda çalışırken genel masrafları azaltan hizmet.
  • pypy-upstream (Python programlama dilinin hızlı bir şekilde uygulanması)

    • Hisse senedini kullanabilirsiniz Python hoşunuza gider: python rhodes.py( pypyJust-In-Time (JIT) Derlemesi yapan Python programlama dilinin alternatif bir uygulamasıdır, bu nedenle uzun süre çalışan komut dosyaları daha fazla bellek pahasına daha az CPU döngüsü kullanır)

Kullanım notu : Bu komut dosyası tarafından kullanılan 'tcpdump' aracı, ham ağ trafiğine erişmek için kök ayrıcalıkları gerektirir. Bu sudo tcpdumpkomut dosyası başladığında başlatılarak gerçekleştirilir, bu yüzden parolanızı girmeniz istenebilir. Şahsen, /etc/sudoersasla istenmemesi için bir NOPASSWD kuralı ekledim .

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.