Kabel ke jembatan nirkabel di Linux

17

Saya mencoba mengatur Raspberry Pi saya sebagai jembatan, menggunakan Debian wheezy. Saya punya hostapd.conf: (beberapa detail diubah untuk keamanan, dan ya, saya tahu WEP tidak baik) ...

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

Dan ini di /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

Semuanya tampak baik-baik saja, tetapi saya tidak bisa mengaitkan dengan koneksi nirkabel yang dijembatani - meskipun lampu berkedip pada USB stick menyarankan paket sedang dipertukarkan.

Saya telah membaca di suatu tempat bahwa tidak semua kartu / perangkat akan berjalan dalam mode hostap - mereka tidak akan melewatkan paket dalam satu arah: apakah itu benar? (Info ini agak lama) - ini kartu saya:

[    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

Jadi, apa yang salah dengan saya di sini?

Pembaruan : Jadi saya telah melakukan penyelidikan lebih lanjut dan dapat meningkatkan jembatan, tetapi tampaknya itu merusak koneksi ethernet (kabel), yang aneh. Misalnya, pada RPi:

Boot sistem ...

ping 192.168.62.1 

(router) - ini berfungsi

Mencoba mengaitkan dengan LAN nirkabel ... gagal (atau lebih tepatnya "dengan konektivitas terbatas" di ponsel Android - tidak bagus)

brctl showmacs br0

Ini hanya menunjukkan mac wlan0 dan mac ponsel pada saat ini

brctl addif br0 eth0 wlan0

Pada titik ini saya sekarang dapat mengaitkan ponsel dengan jaringan nirkabel, tetapi ...

ping 192.168.62.1

... gagal

Dan juga saya tidak bisa lagi ping Raspi dari mesin lain di jaringan

Lari

ifconfig br0

Menyarankan jembatan menjatuhkan paket ...

Ada ide?

Pembaruan lebih lanjut : /etc/network/interfacesFile sekarang (dan untuk urutan di atas) berbunyi:

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
adrianmcmenamin
sumber
Ini jelas merupakan topik untuk Pengguna Super, jadi jangan khawatir. Semoga beruntung dengan hadiahnya, saya penasaran ingin tahu apa jawabannya juga.
Terobosan
Apa yang iw dev wlan0 infoditunjukkan? Dan Googling pada ID perangkat Anda menunjukkan bahwa Anda memerlukan modul kernel atau nirkabel terbaru untuk menjalankan perangkat ini dalam mode AP. Lihat ini . Kernel dan ath9kdriver apa yang Anda jalankan?
gertvdijk
Lihat juga jawaban ini .
Thomas Guyot-Sionnest

Jawaban:

10

Jembatan menjadi mudah:

Ada proyek di sourceforge yang dibuat hanya untuk situasi Anda. http://sourceforge.net/projects/bridger/ Itu bahkan datang sebagai paket deb.

Berkenaan dengan paket 'menjatuhkan':

  1. Apakah Anda memeriksa untuk melihat apakah iptables diatur ke drop default? sudo iptables --list harus mengatakan "MENERIMA, MENERIMA, MENERIMA" untuk kotak jenis ini. Jika itu masalahnya matikan.

  2. Apakah Anda bahkan meneruskan paket, bro? Pastikan baris "net.ipv4.ip_forward = 1" TIDAK dikomentari di /etc/sysctl.conf (ini secara default), kemudian restart jaringan Anda.

  3. Mode promiscuous tidak didukung oleh dongle nirkabel Anda. (artinya tidak dapat menerima paket yang tidak ditakdirkan untuk itu)

Jembatan Murni vs Jembatan Bersama:

  1. iface br0 inet dhcp menunjukkan jembatan bersama , artinya jembatan itu sendiri mendapatkan ip dan dapat menjadi titik akhir untuk lalu lintas.

  2. Sebuah jembatan murni tidak mendapatkan alamat ip dan hanya meneruskan lalu lintas antara dua antarmuka

  3. Shared Bridge Sample / etc / network / interface file konfigurasi (Debian / Ubuntu)

# File ini menjelaskan antarmuka jaringan yang tersedia di sistem Anda
# dan cara mengaktifkannya. Untuk informasi lebih lanjut, lihat antarmuka (5).

# Antarmuka jaringan loopback
otomatis lo
iface lo inet loopback

# Jembatan antara eth0 dan wlan0
otomatis br0
iface br0 inet dhcp
  pra-up ip link atur eth0 ke bawah
  pra-up tautan ip mengatur wlan0 ke bawah
  pra-up brctl addbr br0
  pre-up brctl addif br0 eth0 wlan0
  pra-up ip addr siram dev eth0
  pra-up ip addr siram dev wlan0
  tautan ip post-down atur eth0 ke bawah
  tautan ip post-down mengatur wlan0 ke bawah
  tautan ip post-down mengatur br0 ke bawah
  post-down brctl delif br0 eth0 wlan0
  post-down brctl delbr br0

Restart jaringan: sudo /etc/init.d/networking restartSetelah melakukan perubahan konfigurasi jaringan yang kompleks, lebih mudah untuk hanya reboot daripada memastikan semuanya dimulai kembali dengan benar di reboot.

Anda pikir Anda memiliki masalah perutean:

  1. Hilangkan DNS sebagai penyebab dengan menguji dengan ping 8.8.8.8. Jika ini berhasil, maka Anda mungkin memiliki masalah DNS di jaringan Anda.

  2. Periksa gateway Anda dengan sudo ip routesemoga Anda melihat default via 192.168.1.1 dev br0 proto dhcp(dengan asumsi gateway Anda adalah 192.168.1.1). Jika hilang atau salah, perbaiki sudo ip route add default via 192.168.1.1. Tes lagi:ping 8.8.8.8

  3. Perbarui ip jembatan bersama Anda dengan dhclient br0dan tes ulang denganping 8.8.8.8

  4. Periksa antarmuka 'slave' Anda dengan ifconfigdan pastikan eth0 dan wlan0 TIDAK memiliki alamat ip. Mereka adalah bagian dari jembatan sekarang. Jika ya, pastikan Anda menghapusnya dari semua file konfigurasi, atur ke 0.0.0.0 statis atau apalah.

Jika NONE ini berfungsi, coba aplikasi bridging debian itu, dan jika itu tidak berhasil maka dongle nirkabel Anda tidak mendukung mode promiscuous. (Lihat di atas)

Jika berfungsi kapan saja di sini, reboot dan pastikan masih berfungsi.

MattPark
sumber
Silakan lihat pembaruan terbaru untuk file antarmuka dan, ya, semua rantai disetel ke ACCEPT
adrianmcmenamin
Instruksi ini berfungsi, paling tidak dalam arti jika saya menerapkan dhclient br0 dan menentukan eth0 dikunci ke 0.0.0.0, sekarang hanya perlu mencari cara untuk membuatnya otomatis :)
adrianmcmenamin
OK, saya memilikinya dan berjalan dengan sedikit pokery jiggery melalui skrip rc.local (pada dasarnya saya harus me-restart hostapd) - sehingga Anda mendapatkan karunia. Tapi sekarang server squid saya di kotak yang sama gagal - tetapi saya tidak bertanya tentang hal itu, jadi itu harus menjadi pertanyaan lain.
adrianmcmenamin
Pertanyaan Squid sekarang di superuser.com/questions/522332/...
adrianmcmenamin
Apa eth0dan wlan0pengaturan dalam contoh ini? Khususnya, bagaimana Anda mengatur SSID dan otentikasi apa pun untuk wlan0?
Ian
6

Saya memiliki beberapa jembatan nirkabel yang bekerja pada Debian Linux dan Openwrt, jadi saya sangat akrab dengan masalah ini.

Anda melewatkan satu perintah penting: Anda lupa memberi tahu driver nirkabel Anda untuk mengirimkan bingkai 4-alamat (kadang-kadang tidak pantas / secara historis disebut WDS), yang diperlukan untuk penghubung nirkabel 802.11 / nirkabel. Lakukan ini dengan perintah "iw dev wlan0 set 4addr on". Gunakan pernyataan "pra-up" di file antarmuka Debian Anda di jembatan untuk menerapkannya sebelum membuka jembatan. Perhatikan bahwa mode bingkai 4-alamat memerlukan dukungan driver dan beberapa driver atau perangkat keras jelek 802.11 mungkin tidak mendukungnya.

Saya juga sangat curiga masalah Anda mungkin telah diperumit oleh bug di kernel Linux yang secara khusus memengaruhi antarmuka yang dijembatani. Saya mengalami bug ini sendiri dan harus mengkompilasi wpa_supplicant saya sendiri dari sumber karena versi di Debian sudah tua dan terpengaruh. wpa_supplicant dan hostapd berbagi basis kode yang sama, tapi saya tidak sepenuhnya yakin bahwa ini mempengaruhi hostapd dan juga wpa_supplicant.

Ada komitmen untuk menyelesaikan masalah di sini:

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

Saya mendapat kesan bahwa ini ada di rilis 2.5, dan saya tahu ini ada di sumber 2.6 saat ini. Versi Debian saat ini adalah 2.4, yang rusak. Silakan mengganggu proyek Debian untuk memperbarui paket wpasupplicant dan hostapd mereka.

Berikut adalah contoh konfigurasi untuk klien jembatan nirkabel menggunakan WPA / WPA2 dengan jembatan nirkabel antara antarmuka wlan0 dan eth0, dengan tuan rumah mendapatkan alamat DHCP pada antarmuka br0 (ganti "dhcp" dengan "manual" tanpa alamat IP). Untuk situasi di mana Anda ingin menjadi AP, sertakan perintah interface = dan bridge = di hostapd.conf dan hilangkan perintah wpa- * di bawah ini.

Dalam file / etc / network / interfaces Anda:

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

Dan pastikan wpa_supplicant Anda adalah versi 2.5 atau lebih baru. Itu tidak akan bekerja dengan wpa_supplicant 2.4 dan versi kernel saat ini.

Saya juga harus mencatat bahwa saat ini ada bug ras di ifup di mana antarmuka jembatan mungkin gagal muncul pada saat boot, tapi itu masalah lain.

turnip_turnip_turnip
sumber
3

Anda tampaknya memerlukan penerusan ip.

mencoba cat /proc/sys/net/ipv4/ip_forward

Jika itu 0masalah:echo 1 > /proc/sys/net/ipv4/ip_forward

CSᵠ
sumber
sys.net.ipv4.ip_forwarduntuk routing IPv4, NAT, dll. Bridges bekerja satu layer di bawah ini di stack jaringan.
Thomas Guyot-Sionnest
0

Bridging hanya dapat berfungsi ketika sebuah antarmuka menerima semua paket jika tidak mereka akan melihat paket-paket yang ditujukan hanya untuk mereka. Pengaturan Anda saat ini mungkin menggambarkan konfigurasi untuk router tetapi tidak untuk jembatan.

eth0 dan wlan0 seharusnya tidak memiliki alamat ip (artinya 0.0.0.0) dan jika diinginkan, Anda selalu dapat menggunakan alamat IP untuk br0.

Berikut beberapa dokumentasi resmi juga: http://wiki.debian.org/BridgeNetworkConnections

John Wilcox
sumber
1
Saya tahu ini adalah posting lama tetapi karena saya menemukannya saat mencari sesuatu yang lain, saya pikir saya akan menyebutkan bahwa tidak masalah jika antarmuka jembatan tidak / tidak memiliki alamat IP sejauh menyangkut bridging. Di Linux, antarmuka yang dijembatani juga akan menyampaikan paket ARP (OSI layer 2). Saklar apa pun akan memetakan beberapa perangkat yang terhubung ke sisi lain jembatan sebagai diterima pada port sakelar itu. Referensi saya adalah pengalaman menggunakan server Linux sebagai router, jembatan, firewall, dll untuk penyebaran ketersediaan tinggi di pusat data tingkat atas termasuk satu NAP USA utama untuk S. America
jetole
0

konfigurasikan wlan0

vi / etc / network / interface

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
netawater
sumber