เชื่อมต่อกับสะพานไร้สายใน Linux


17

ฉันพยายามตั้งค่า Raspberry Pi เป็นสะพานโดยใช้ Debian wheezy ฉันมีhostapd.conf: (รายละเอียดบางอย่างเปลี่ยนเพื่อความปลอดภัยและใช่ฉันรู้ว่า WEP ไม่ดี) ...

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

และนี่ใน/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

ดูเหมือนว่าทุกอย่างจะโอเค แต่ฉันไม่สามารถเชื่อมโยงกับการเชื่อมต่อไร้สายที่เชื่อมต่อได้ - แม้ว่าไฟกระพริบที่ติด USB แนะนำให้ทำการแลกเปลี่ยนแพ็คเก็ต

ฉันได้อ่านที่ไหนสักแห่งว่าไม่ใช่การ์ด / อุปกรณ์ทั้งหมดที่จะทำงานในโหมด hostap - พวกเขาจะไม่ผ่านแพ็คเก็ตในทิศทางเดียว: ใช่ไหม? (ข้อมูลค่อนข้างเก่า) - การ์ดใบนี้ของฉัน:

[    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

ฉันผิดอะไรที่นี่?

อัปเดต : ดังนั้นฉันจึงทำการตรวจสอบต่อไปและสามารถเชื่อมต่อได้ แต่ดูเหมือนว่าจะทำลายการเชื่อมต่ออีเธอร์เน็ต (แบบใช้สาย) ซึ่งแปลก เช่นบน RPi:

บูตระบบ ...

ping 192.168.62.1 

(เราเตอร์) - ใช้งานได้

ความพยายามในการเชื่อมโยงกับ LAN ไร้สาย ... ล้มเหลว (หรือค่อนข้าง "ด้วยการเชื่อมต่อที่ จำกัด " บนโทรศัพท์ Android - ไม่ดี)

brctl showmacs br0

นี่แสดงให้เห็นถึง mac ของ wlan0 และ mac ของโทรศัพท์ ณ จุดนี้

brctl addif br0 eth0 wlan0

ถึงตอนนี้ฉันสามารถเชื่อมโยงโทรศัพท์กับเครือข่ายไร้สายได้ แต่ ...

ping 192.168.62.1

... ล้มเหลว

และในทำนองเดียวกันฉันไม่สามารถ ping RasPi จากเครื่องอื่น ๆ ในเครือข่ายได้อีกต่อไป

วิ่ง

ifconfig br0

แนะนำสะพานกำลังวางแพ็กเก็ต ...

ความคิดใด ๆ

อัปเดตเพิ่มเติม : /etc/network/interfacesไฟล์ตอนนี้ (และสำหรับลำดับข้างต้น) อ่าน:

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

นี่เป็นหัวข้อสำหรับผู้ใช้ขั้นสูงอย่างแน่นอนดังนั้นไม่ต้องกังวล ขอให้โชคดีกับเงินรางวัลฉันอยากรู้ว่าคำตอบคืออะไร
พัฒนา

สิ่งที่ไม่iw dev wlan0 infoแสดง? และ Googling บน ID อุปกรณ์ของคุณจะแสดงว่าคุณต้องการเคอร์เนลหรือโมดูลไร้สายล่าสุดสำหรับใช้งานอุปกรณ์นี้ในโหมด AP ดูนี่สิ เคอร์เนลและath9kไดรเวอร์ใดที่คุณใช้อยู่
gertvdijk

คำตอบ:


10

สะพานทำง่าย:

มีโครงการเกี่ยวกับ sourceforge สำหรับสถานการณ์ของคุณ http://sourceforge.net/projects/bridger/มันมาเป็นแพ็คเกจ deb

เกี่ยวกับแพ็คเก็ต 'วาง':

  1. คุณตรวจสอบเพื่อดูว่า iptables ถูกตั้งค่าเป็นค่าเริ่มต้นปล่อย sudo iptables --list ควรพูดว่า "ACCEPT, ACCEPT, ACCEPT" สำหรับกล่องประเภทนี้ หากนั่นคือปัญหาปิด

  2. คุณยังส่งต่อแพ็คเก็ตครับ? ตรวจสอบให้แน่ใจว่าบรรทัด "net.ipv4.ip_forward = 1" ไม่ได้แสดงความคิดเห็นใน /etc/sysctl.conf (เป็นค่าเริ่มต้น) จากนั้นเริ่มระบบเครือข่ายของคุณใหม่

  3. Dongle ไร้สายของคุณไม่รองรับโหมด Promiscuous (หมายถึงไม่สามารถรับแพ็คเก็ตที่ไม่ได้กำหนดได้)

สะพานบริสุทธิ์กับสะพานที่ใช้ร่วมกัน:

  1. iface br0 inet dhcpบ่งชี้บริดจ์ที่แบ่งใช้หมายความว่าบริดจ์เองรับ IP และสามารถเป็นปลายทางสำหรับการรับส่งข้อมูล

  2. สะพานบริสุทธิ์ไม่ได้รับที่อยู่ IP และส่งต่อการรับส่งข้อมูลระหว่างสองอินเตอร์เฟสเท่านั้น

  3. ตัวอย่างไฟล์บริดจ์ / etc / network / interfaces ที่ใช้ร่วมกัน (Debian / Ubuntu)

# ไฟล์นี้อธิบายถึงส่วนต่อประสานเครือข่ายที่มีอยู่ในระบบของคุณ
# และวิธีเปิดใช้งาน สำหรับข้อมูลเพิ่มเติมดูอินเตอร์เฟส (5)

# อินเตอร์เฟสเครือข่ายวนรอบ
แท้จริง
iface lo inet loopback

# สะพานเชื่อมระหว่าง eth0 และ wlan0
อัตโนมัติ br0
iface br0 inet dhcp
  การเชื่อมโยง ip pre-up set eth0 down
  ลิงก์ ip ที่ตั้งค่าไว้ล่วงหน้า wlan0 down
  prect-up brctl addbr br0
  pre-up brctl addif br0 eth0 wlan0
  การเพิ่ม ip ล่วงหน้า add dev dev eth0
  การเติม ip ล่วงหน้า add dev dev wlan0
  ip-post post-down ตั้งค่า eth0 down
  ip-post post-down ตั้งค่า wlan0 down
  ip-post post-down ตั้งค่า br0 down
  โพสต์ - ดาวน์ brctl delif br0 eth0 wlan0
  โพสต์ดาวน์ brctl delbr br0

รีสตาร์ทเครือข่าย: sudo /etc/init.d/networking restartหลังจากทำการกำหนดค่าเครือข่ายที่ซับซ้อนจะเปลี่ยนได้ง่ายขึ้นเพียงแค่รีบูตแทนที่จะทำให้แน่ใจว่าทุกอย่างรีสตาร์ทอย่างถูกต้องในการรีบูต

คุณคิดว่าคุณมีปัญหาการกำหนดเส้นทาง:

  1. กำจัด DNS เป็นสาเหตุping 8.8.8.8โดยการทดสอบด้วย หากใช้งานได้แสดงว่าคุณอาจมีปัญหา DNS ในเครือข่ายของคุณ

  2. ตรวจสอบเกตเวย์ด้วยsudo ip routeหวังว่าคุณจะเห็นdefault via 192.168.1.1 dev br0 proto dhcp(สมมติว่าเกตเวย์ของคุณคือ 192.168.1.1) sudo ip route add default via 192.168.1.1ถ้ามันหายไปหรือผิดแก้ไขได้ ทดสอบอีกครั้ง:ping 8.8.8.8

  3. ต่ออายุ IP บริดจ์ที่แชร์ของคุณด้วยdhclient br0และทดสอบซ้ำping 8.8.8.8

  4. ตรวจสอบอินเทอร์เฟซ 'slave' ของคุณด้วยifconfigและตรวจสอบให้แน่ใจว่า eth0 และ wlan0 ไม่มีที่อยู่ IP ตอนนี้พวกเขาเป็นส่วนหนึ่งของสะพาน หากเป็นเช่นนั้นตรวจสอบให้แน่ใจว่าคุณลบไฟล์เหล่านั้นออกจากไฟล์ปรับแต่งทั้งหมดแล้วตั้งเป็นคงที่ 0.0.0.0 หรือไฟล์อื่น

หากไม่มีสิ่งนี้ให้ลองใช้แอป bridian นั้นและหากวิธีนี้ไม่ได้ผลดองเกิลไร้สายของคุณจะไม่สนับสนุนโหมดที่หลากหลาย (ดูด้านบน)

หากใช้งานได้ตลอดเวลาที่นี่ให้รีบูตและตรวจสอบให้แน่ใจว่ายังใช้งานได้


โปรดดูการอัปเดตล่าสุดสำหรับไฟล์อินเตอร์เฟสและใช่กลุ่มทั้งหมดจะถูกตั้งค่าเป็น ACCEPT
adrianmcmenamin

คำแนะนำเหล่านี้ใช้งานได้อย่างน้อยก็ในกรณีที่ฉันใช้ dhclient br0 และระบุ eth0 นั้นถูกล็อคไว้ที่ 0.0.0.0 ตอนนี้แค่ต้องคิดหาวิธีทำให้เป็นอัตโนมัติ :)
adrianmcmenamin

ตกลงฉันมีมันและทำงานกับ pokery jiggery เล็กน้อยผ่านสคริปต์ rc.local (โดยหลักแล้วฉันต้องเริ่ม hostapd ใหม่) - เพื่อให้คุณได้รับรางวัล แต่ตอนนี้เซิร์ฟเวอร์ปลาหมึกของฉันในกล่องเดียวกันล้มเหลว - แต่ฉันไม่ได้ถามคุณเกี่ยวกับเรื่องนั้นดังนั้นมันจะต้องเป็นคำถามอื่น
adrianmcmenamin

คำถามปลาหมึกตอนนี้ที่superuser.com/questions/522332/ …
adrianmcmenamin

อะไรคือeth0และwlan0การตั้งค่าในตัวอย่างนี้? คุณจะตั้งค่า SSID และการรับรองความถูกต้องwlan0อย่างไร
เอียน

6

ฉันมีบริดจ์ไร้สายบางตัวที่ทำงานกับ Debian Linux และ Openwrt ดังนั้นฉันจึงคุ้นเคยกับปัญหานี้มาก

คุณพลาดคำสั่งสำคัญ: คุณลืมบอกให้ไดรเวอร์ไร้สายของคุณส่งเฟรม 4-address (บางครั้งไม่ถูกต้อง / เรียกว่า WDS ในอดีต) ซึ่งจำเป็นสำหรับ 802.11 / การเชื่อมต่อไร้สาย ทำสิ่งนี้ด้วยคำสั่ง "iw dev wlan0 set 4addr on" ใช้คำสั่ง "pre-up" ในไฟล์อินเตอร์เฟส Debian ของคุณบนบริดจ์เพื่อนำไปใช้ก่อนที่จะเปิดบริดจ์ โปรดทราบว่าโหมดเฟรม 4-address ต้องการการสนับสนุนไดรเวอร์และไดรเวอร์หรือฮาร์ดแวร์ Crappy 802.11 รุ่นเก่าบางรุ่นอาจไม่รองรับ

ฉันยังสงสัยอย่างยิ่งว่าปัญหาของคุณอาจจะซับซ้อนโดยมีข้อบกพร่องในเคอร์เนล Linux ซึ่งมีผลกระทบต่อการเชื่อมต่อโดยเฉพาะ ฉันวิ่งเข้าไปในบั๊กนี้ด้วยตัวเองและต้องรวบรวม wpa_supplicant ของตัวเองจากแหล่งข้อมูลเพราะเวอร์ชั่นในเดเบียนเก่าและได้รับผลกระทบ wpa_supplicant และ hostapd ใช้รหัสฐานร่วมกัน แต่ฉันไม่แน่ใจว่า hostapd นี้ได้รับผลกระทบเช่นเดียวกับ wpa_supplicant

มีการแก้ไขปัญหาที่นี่:

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

ฉันรู้สึกว่านี่เป็นรุ่น 2.5 และฉันรู้ว่ามันอยู่ในแหล่ง 2.6 ปัจจุบัน เวอร์ชันเดเบียนปัจจุบันคือ 2.4 ซึ่งใช้งานไม่ได้ โปรดรบกวนโปรเจ็กต์ Debian เพื่ออัพเดตแพ็กเกจ wpasupplicant และ hostapd

นี่คือตัวอย่างการกำหนดค่าสำหรับไคลเอนต์บริดจ์ไร้สายโดยใช้ WPA / WPA2 พร้อมบริดจ์ไร้สายระหว่างอินเตอร์เฟส wlan0 และ eth0 โดยที่โฮสต์ได้รับที่อยู่ DHCP บนอินเทอร์เฟซ br0 (แทนที่ "dhcp" ด้วย "คู่มือ" สำหรับไม่มีที่อยู่ IP) สำหรับสถานการณ์ที่คุณต้องการเป็น AP ให้รวมคำสั่ง interface = และ bridge = ใน hostapd.conf และละเว้นคำสั่ง wpa- * ด้านล่าง

ในไฟล์ / etc / network / interfaces ของคุณ:

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

และตรวจสอบให้แน่ใจว่า wpa_supplicant ของคุณเป็นรุ่น 2.5 หรือใหม่กว่า มันจะไม่ทำงานกับ wpa_supplicant 2.4 และเวอร์ชันเคอร์เนลปัจจุบัน

ฉันควรทราบด้วยว่าขณะนี้มีข้อผิดพลาดในการแข่งขันใน ifup ที่ส่วนต่อประสานบริดจ์อาจล้มเหลวในการบู๊ต แต่นั่นเป็นปัญหาอื่นทั้งหมด


3

คุณดูเหมือนจะต้องมีการส่งต่อไอพี

ลอง cat /proc/sys/net/ipv4/ip_forward

หากเป็น0ปัญหา:echo 1 > /proc/sys/net/ipv4/ip_forward


sys.net.ipv4.ip_forwardใช้สำหรับการกำหนดเส้นทาง IPv4, NAT, ฯลฯ บริดจ์ทำงานหนึ่งเลเยอร์ด้านล่างในสแต็กเครือข่าย
Thomas Guyot-Sionnest

0

การเชื่อมโยงสามารถทำงานได้เมื่ออินเทอร์เฟซได้รับแพ็คเก็ตทั้งหมดมิฉะนั้นพวกเขาจะได้เห็นแพ็กเก็ตที่ส่งถึงพวกเขาเท่านั้น การตั้งค่าปัจจุบันของคุณอาจอธิบายถึงการกำหนดค่าสำหรับเราเตอร์ แต่ไม่ใช่สำหรับบริดจ์

eth0 และ wlan0 ไม่ควรมีที่อยู่ IP (หมายถึง 0.0.0.0) และหากต้องการคุณสามารถใช้ที่อยู่ IP สำหรับ br0 ได้ตลอดเวลา

นี่คือเอกสารอย่างเป็นทางการเช่นกัน: http://wiki.debian.org/BridgeNetworkConnections


1
ฉันรู้ว่านี่เป็นโพสต์เก่า แต่เนื่องจากฉันพบว่าในขณะที่ค้นหาอย่างอื่นฉันคิดว่าฉันพูดถึงว่ามันไม่สำคัญว่าอินเตอร์เฟสสะพานจะ / ไม่ได้มีที่อยู่ IP เท่าที่เชื่อมโยงเป็นห่วง บน Linux อินเตอร์เฟสที่เชื่อมต่อจะถ่ายทอดแพ็กเก็ต ARP (ชั้น OSI 2) สวิตช์ใด ๆ จะแมปอุปกรณ์ต่าง ๆ ที่เชื่อมต่อกับอีกด้านหนึ่งของบริดจ์ว่าได้รับการยอมรับบนพอร์ตสวิตช์นั้น การอ้างอิงของฉันคือประสบการณ์ในการปรับใช้เซิร์ฟเวอร์ Linux ในฐานะเราเตอร์บริดจ์ไฟร์วอลล์และอื่น ๆ สำหรับการปรับใช้ความพร้อมใช้งานสูงในศูนย์ข้อมูลระดับบนสุดซึ่งรวมถึง NAP หลักในสหรัฐอเมริกาสำหรับ S America
jetole

0

กำหนดค่า 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.