Linux'ta kablosuz köprüye bağlandı


17

Debian wheezy kullanarak Raspberry Pi'mi bir köprü olarak kurmaya çalışıyorum. Bir hostapd.conf: (güvenlik için bazı ayrıntılar değişti ve evet, WEP'in iyi olmadığını biliyorum) ...

interface=wlan0
bridge=br0
driver=nl80211
auth_algs=1
macaddr_acl=0
ignore_broadcast_ssid=0
logger_syslog=-1
logger_syslog_level=0
hw_mode=g
ssid=MY_SSID
channel=11
wep_default_key=0
wep_key0=MY_KEY
wpa=0

Ve bunun içinde /etc/network/interfaces:

auto lo

iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
auto br0
iface br0 inet dhcp
bridge-ports eth0 wlan0

Her şey yolunda gibi görünüyor, ancak USB çubuğundaki yanıp sönen ışıklar paketlerin değiş tokuş edildiğini gösteriyor olsa da köprülü kablosuz bağlantıyla ilişkilendiremiyorum.

Tüm kartların / cihazların hostap modunda çalışmayacağını bir yerde okudum - paketleri tek bir yönde geçmeyecekler: doğru mu? (Bilgi biraz eski) - bu benim kartım:

[    3.663245] usb 1-1.3.1: new high-speed USB device number 5 using dwc_otg
[    3.794187] usb 1-1.3.1: New USB device found, idVendor=0cf3, idProduct=9271
[    3.804321] usb 1-1.3.1: New USB device strings: Mfr=16, Product=32, SerialNumber=48
[    3.816994] usb 1-1.3.1: Product: USB2.0 WLAN
[    3.823790] usb 1-1.3.1: Manufacturer: ATHEROS
[    3.830645] usb 1-1.3.1: SerialNumber: 12345

Peki, burada neyim var?

Güncelleme : Bu yüzden daha fazla araştırma yaptım ve köprüyü kaldırabilirim, ama görünüşe göre bu garip (kablolu) ethernet bağlantısını yok ediyor. Örneğin, RPi'de:

Sistemi önyükleyin ...

ping 192.168.62.1 

(yönlendirici) - bu işe yarar

Kablosuz LAN ile ilişkilendirme girişimi başarısız oluyor (ya da daha doğrusu Android telefonda "sınırlı bağlantı ile" - iyi değil)

brctl showmacs br0

Bu sadece wlan0'ın mac'unu ve bu noktada telefonun mac'unu gösterir

brctl addif br0 eth0 wlan0

Bu noktada, telefonu kablosuz ağ ile ilişkilendirebilirim, ancak ...

ping 192.168.62.1

... başarısız

Ve benzer şekilde RasPi'yi artık ağdaki başka bir makineden pingleyemiyorum

Koşu

ifconfig br0

Köprünün paketleri bıraktığını öne sürüyor ...

Herhangi bir fikir?

Ek güncelleme : /etc/network/interfacesŞimdi dosya (ve yukarıdaki sıra için) şu şekildedir:

auto lo eth0

iface lo inet loopback
iface eth0 inet dhcp

allow-hotplug wlan0
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

Bu kesinlikle Süper Kullanıcı için konudur, bu yüzden endişelenmeyin. Ödül ile iyi şanslar, cevabın da ne olduğunu merak ediyorum.
Atılım

Ne iw dev wlan0 infogösterir? Cihaz kimliğinizde Google ile çalışmak, bu cihazı AP modunda çalıştırmak için yakın zamanda bir çekirdeğe veya kablosuz modüllere ihtiyacınız olduğunu gösterir. Bkz bu . Hangi çekirdek ve ath9ksürücüyü çalıştırıyorsunuz?
gertvdijk

Ayrıca bu cevaba bakınız .
Thomas Guyot-Sionnest

Yanıtlar:


10

Kolay köprüler:

Sourceforge üzerinde sadece sizin durumunuz için yapılmış bir proje var. http://sourceforge.net/projects/bridger/ Hatta bir deb paketi olarak geliyor.

'Bırakma' paketleri ile ilgili olarak:

  1. İptables'ın varsayılan bırakmaya ayarlanıp ayarlanmadığını kontrol ettiniz mi? sudo iptables --list bu tür bir kutu için "KABUL, KABUL, KABUL" demeniz gerekir. Sorun buysa, kapatın.

  2. Paketleri mi gönderiyorsun kardeşim? "Net.ipv4.ip_forward = 1" satırının /etc/sysctl.conf dosyasında (varsayılan olarak) yorumlanmadığından emin olun, ardından ağınızı yeniden başlatın.

  3. Geçici mod kablosuz dongle'ınız tarafından desteklenmiyor . (yani onun için hedeflenmemiş paketleri kabul edemez)

Saf Köprü ve Paylaşılan Köprü:

  1. iface br0 inet dhcp paylaşılan bir köprüyü belirtir , yani köprünün kendisi bir ip alır ve trafik için bir uç nokta olabilir.

  2. Saf bir köprü bir IP adresi almaz ve sadece iki arayüz arasındaki trafiği iletir

  3. Paylaşılan Köprü Örneği / etc / network / interfaces yapılandırma dosyası (Debian / Ubuntu)

# Bu dosya, sisteminizde bulunan ağ arabirimlerini açıklar
# ve bunların nasıl etkinleştirileceği. Daha fazla bilgi için, bkz. Arayüzler (5).

# Geridöngü ağ arayüzü
otomatik lo
iface lo inet geri döngü

# Eth0 ve wlan0 arasında köprü
otomatik br0
iface br0 inet dhcp
  pre-up ip bağlantı eth0 aşağı ayarlamak
  pre-up ip bağlantı wlan0 aşağı ayarla
  hazırlık brctl addbr br0
  pre-up brctl addif br0 eth0 wlan0
  ön-ip ip addr floş dev eth0
  ön ek ip addr floş dev wlan0
  post-down ip bağlantı eth0 aşağı ayarlamak
  post-down ip bağlantı wlan0 aşağı ayarlamak
  post-down ip bağlantı br0 aşağı ayarla
  post-down brctl delif br0 eth0 wlan0
  post-down brctl delbr br0

Ağı yeniden başlatın: sudo /etc/init.d/networking restartKarmaşık ağ yapılandırması değişiklikleri yaptıktan sonra, her şeyin yeniden başlatıldığında düzgün şekilde yeniden başlatıldığından emin olmak yerine yeniden başlatmayı kolaylaştırır.

Yönlendirme sorunlarınız olduğunu düşünüyorsunuz:

  1. İle test ederek DNS'yi neden olarak ortadan kaldırınping 8.8.8.8 . Bu işe yararsa, muhtemelen ağınızda bir DNS sorununuz vardır.

  2. Ağ geçidinizi , sudo ip routeumarız gördüğünüz şekilde kontrol edindefault via 192.168.1.1 dev br0 proto dhcp (ağ geçidinizin 192.168.1.1 olduğu varsayılarak). Eksik veya yanlışsa düzeltin sudo ip route add default via 192.168.1.1. Tekrar test et:ping 8.8.8.8

  3. Paylaşılan köprü IP'nizi ile yenileyindhclient br0 veping 8.8.8.8

  4. Senin 'köle' arayüzleri kontrol ile ifconfigve emin eth0 yapmak ve adresleri ip OLMAYAN wlan0. Onlar şimdi köprünün bir parçası. Varsa, tüm yapılandırma dosyalarından kaldırdığınızdan emin olun, statik 0.0.0.0 veya daha fazlasına ayarlayın.

Bunlardan HİÇBİRİ işe yaramazsa, bu debian köprüleme uygulamasını deneyin ve bu işe yaramazsa kablosuz dongle'ınız karışık modu desteklemez. (yukarıyı görmek)

Burada herhangi bir zamanda çalışırsa, yeniden başlatın ve hala çalıştığından emin olun.


Lütfen arayüzler dosyası için en son güncellemeye bakın ve evet, tüm zincirler KABUL ET olarak ayarlandı
adrianmcmenamin

Bu talimatlar, en azından dhclient br0'ı uygularsam ve eth0'ın 0.0.0.0'a kilitlendiğini belirtirsem işe yarar, şimdi sadece otomatik hale nasıl getirileceğine karar
vermeliyim

Tamam, ben var ve rc.local komut dosyaları (aslında hostapd yeniden başlatmanız gerekir) üzerinden jiggery pokery biraz çalıştıran - böylece lütuf olsun. Ama şimdi aynı kutudaki kalamar sunucum başarısız - ama sana bunu sormadım, bu yüzden başka bir soru olmalı.
adrianmcmenamin


Bu örnekteki eth0ve wlan0ayarları nelerdir ? Özellikle, SSID'yi ve herhangi bir kimlik doğrulamasını nasıl ayarlarsınız wlan0?
Ian

6

Debian Linux ve Openwrt üzerinde çalışan bazı kablosuz köprülerim var, bu yüzden bu konuyu çok iyi biliyorum.

Önemli bir komutu kaçırdınız: Kablosuz sürücünüze 802.11 / kablosuz köprüleme için gerekli olan 4 adresli çerçeveleri (bazen yanlış / geçmişte WDS olarak adlandırılır) iletmesini söylediniz. Bunu "iw dev wlan0 set 4addr on" komutu ile yapın. Köprüyü açmadan önce uygulamak için köprüdeki Debian arabirimler dosyanızda bir "pre-up" ifadesi kullanın. 4 adresli çerçeve modunun sürücü desteği gerektirdiğini ve bazı eski crappy 802.11 sürücülerinin veya donanımlarının desteklemeyebileceğini unutmayın.

Ayrıca, sorunlarınızın Linux çekirdeğinde özellikle köprülü arabirimleri etkileyen bir hata nedeniyle karmaşık olabileceğinden şüpheleniyorum. Bu hataya kendim rastladım ve Debian'daki sürüm eski ve etkilenmiş olduğu için kendi wpa_supplicant'ımı kaynaklardan derlemek zorunda kaldım. wpa_supplicant ve hostapd ortak bir kod tabanını paylaşır, ancak bunun hostapd ve wpa_supplicant'ı etkilediğinden tam olarak emin değilim.

Burada konuyla ilgili bir çözüm var:

https://w1.fi/cgit/hostap/commit/?id=e6dd8196e5daf39e4204ef8ecd26dd50fdca6040

Bunun 2.5 sürümünde olduğu izlenimini alıyorum ve mevcut 2.6 kaynağında olduğunu biliyorum. Mevcut Debian sürümü bozuk ve 2.4'tür. Wpasupplicant ve hostapd paketlerini güncellemek için lütfen Debian projesini rahatsız edin.

WLAN0 ve eth0 arabirimleri arasında kablosuz bir köprü ile WPA / WPA2 kullanan bir kablosuz köprü istemcisi için örnek bir yapılandırma, ana bilgisayar br0 arabiriminde bir DHCP adresi alır (IP adresi olmadan "manuel" ile "dhcp" yerine). AP olmasını istediğiniz bir durum için hostapd.conf dosyasına = ve bridge = komutlarını ekleyin ve aşağıdaki wpa- * komutlarını atlayın.

/ Etc / network / interfaces dosyanızda:

allow-auto br0
iface br0 inet dhcp
    bridge_ports wlan0 eth0
    bridge_stp off
    bridge_waitport 5
    bridge_fd 0
    wpa-ssid mynetwork
    wpa-psk abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123
    wpa-iface wlan0
    wpa-bridge br0
    pre-up iw dev wlan0 set 4addr on
    post-down iw dev wlan0 set 4addr off

Ve wpa_supplicant'ınızın sürüm 2.5 veya üstü olduğundan emin olun. Wpa_supplicant 2.4 ve mevcut çekirdek sürümleriyle çalışmaz.

Ayrıca şu anda ifup'ta köprü arayüzlerinin önyükleme zamanında gelemeyebileceği bir yarış hatası olduğunu not etmeliyim, ancak bu başka bir sorun.


3

IP yönlendirmeye ihtiyacınız var.

Deneyin cat /proc/sys/net/ipv4/ip_forward

Sorun varsa 0:echo 1 > /proc/sys/net/ipv4/ip_forward


sys.net.ipv4.ip_forwardIPv4 yönlendirme, NAT vb. içindir. Köprüler, ağ yığınında aşağıda bir katman çalışır.
Thomas Guyot-Sionnest

0

Köprüleme yalnızca bir arabirim tüm paketleri aldığında çalışabilir, aksi takdirde yalnızca kendilerine yönelik paketleri görürler. Geçerli kurulumunuz bir köprü için bir yapılandırma tanımlayabilir, ancak bir köprü için tanımlamaz.

eth0 ve wlan0'ın hiçbir ip adresi olmamalıdır (0.0.0.0 anlamına gelir) ve istenirse br0 için her zaman bir IP adresi kullanabilirsiniz.

İşte bazı resmi belgeler: http://wiki.debian.org/BridgeNetworkConnections


1
Bu eski bir yazı olduğunu biliyorum ama başka bir şey ararken buldum beri, bir köprü arabirimi köprüleme söz konusu olduğunda bir IP adresi yok / olmadığını fark etmediğini düşündüm. Linux'ta köprülü bir arabirim de ARP paketlerini (OSI katman 2) geçirir. Herhangi bir anahtar, köprünün diğer tarafına bağlı birden çok cihazı, o anahtar bağlantı noktasında kabul edilmiş olarak eşler. Benim referansım, Amerika için bir birincil ABD
NAP'si

0

wlan0 yapılandır

vi / etc / network / arayüz

iface eth0 inet static
address 192.168.2.1
network 192.168.2.0
netmask 255.255.255.0
broadcast 192.168.2.255

vi /etc/sysctl.conf

net.ipv4.ip_forward=1

vi /etc/rc.local

iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o wlan0 -j MASQUERADE
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.