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/interfaces
File 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
sumber
iw dev wlan0 info
ditunjukkan? 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 danath9k
driver apa yang Anda jalankan?Jawaban:
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':
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.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.
Mode promiscuous tidak didukung oleh dongle nirkabel Anda. (artinya tidak dapat menerima paket yang tidak ditakdirkan untuk itu)
Jembatan Murni vs Jembatan Bersama:
iface br0 inet dhcp menunjukkan jembatan bersama , artinya jembatan itu sendiri mendapatkan ip dan dapat menjadi titik akhir untuk lalu lintas.
Sebuah jembatan murni tidak mendapatkan alamat ip dan hanya meneruskan lalu lintas antara dua antarmuka
Shared Bridge Sample / etc / network / interface file konfigurasi (Debian / Ubuntu)
Restart jaringan:
sudo /etc/init.d/networking restart
Setelah 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:
Hilangkan DNS sebagai penyebab dengan menguji dengan
ping 8.8.8.8
. Jika ini berhasil, maka Anda mungkin memiliki masalah DNS di jaringan Anda.Periksa gateway Anda dengan
sudo ip route
semoga Anda melihatdefault via 192.168.1.1 dev br0 proto dhcp
(dengan asumsi gateway Anda adalah 192.168.1.1). Jika hilang atau salah, perbaikisudo ip route add default via 192.168.1.1
. Tes lagi:ping 8.8.8.8
Perbarui ip jembatan bersama Anda dengan
dhclient br0
dan tes ulang denganping 8.8.8.8
Periksa antarmuka 'slave' Anda dengan
ifconfig
dan 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.
sumber
eth0
danwlan0
pengaturan dalam contoh ini? Khususnya, bagaimana Anda mengatur SSID dan otentikasi apa pun untukwlan0
?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:
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.
sumber
Anda tampaknya memerlukan penerusan ip.
mencoba
cat /proc/sys/net/ipv4/ip_forward
Jika itu
0
masalah:echo 1 > /proc/sys/net/ipv4/ip_forward
sumber
sys.net.ipv4.ip_forward
untuk routing IPv4, NAT, dll. Bridges bekerja satu layer di bawah ini di stack jaringan.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
sumber
konfigurasikan wlan0
vi / etc / network / interface
vi /etc/sysctl.conf
vi /etc/rc.local
sumber