Cầu nối không dây trong Linux


17

Tôi đang cố gắng thiết lập Raspberry Pi của mình làm cầu nối, sử dụng Debian wheezy. Tôi có một hostapd.conf: (một số chi tiết được thay đổi để bảo mật và vâng, tôi biết WEP không tốt) ...

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

Và điều này trong /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

Mọi thứ dường như ổn, nhưng tôi không thể kết hợp với kết nối không dây có cầu nối - mặc dù đèn nhấp nháy trên thanh USB gợi ý các gói đang được trao đổi.

Tôi đã đọc ở đâu đó rằng không phải tất cả các thẻ / thiết bị sẽ chạy ở chế độ hostap - chúng sẽ không chuyển các gói theo một hướng: đúng không? (Thông tin đã hơi cũ) - đây là thẻ của tôi:

[    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

Vì vậy, những gì tôi đã sai ở đây?

Cập nhật : Vì vậy, tôi đã thực hiện các cuộc điều tra sâu hơn và có thể đưa cầu nối lên, nhưng dường như điều đó phá hủy kết nối ethernet (có dây), điều này thật kỳ quặc. Ví dụ: trên RPi:

Khởi động hệ thống ...

ping 192.168.62.1 

(bộ định tuyến) - công việc này

Cố gắng liên kết với mạng LAN không dây ... không thành công (hay đúng hơn là "có kết nối hạn chế" trên điện thoại Android - không tốt)

brctl showmacs br0

Điều này chỉ hiển thị mac của wlan0 và mac của điện thoại tại thời điểm này

brctl addif br0 eth0 wlan0

Lúc này tôi có thể liên kết điện thoại với mạng không dây, nhưng ...

ping 192.168.62.1

... thất bại

Và tương tự, tôi không còn có thể ping RasPi từ bất kỳ máy nào khác trên mạng

Đang chạy

ifconfig br0

Đề xuất cây cầu đang thả gói ...

Có ý kiến ​​gì không?

Cập nhật thêm : /etc/network/interfacesTệp bây giờ (và cho chuỗi trên) đọc:

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

Đây chắc chắn là chủ đề cho Super User, vì vậy không phải lo lắng. Chúc may mắn với tiền thưởng, tôi tò mò muốn biết câu trả lời là gì.
Đột phá

Không iw dev wlan0 infothể hiện điều gì? Và Googling trên ID thiết bị của bạn cho thấy bạn cần một hạt nhân hoặc mô-đun không dây gần đây để chạy thiết bị này ở chế độ AP. Xem này . Hạt nhân và ath9ktrình điều khiển nào bạn đang chạy?
gertvdijk

Câu trả lời:


10

Cầu được thực hiện dễ dàng:

Có một dự án trên sourceforge được thực hiện chỉ cho tình huống của bạn. http://sourceforge.net/projects/ điều khoản / Nó thậm chí còn đi kèm như một gói deb.

Liên quan đến các gói 'thả':

  1. Bạn đã kiểm tra xem iptables có được đặt thành thả mặc định không? sudo iptables --list nên nói "CHẤP NHẬN, CHẤP NHẬN, CHẤP NHẬN" cho một hộp loại này. Nếu đó là vấn đề tắt nó đi.

  2. Bạn thậm chí còn chuyển tiếp các gói, người anh em? Đảm bảo dòng "net.ipv4.ip_forward = 1" KHÔNG được nhận xét trong /etc/sysctl.conf (theo mặc định), sau đó khởi động lại mạng của bạn.

  3. Chế độ lăng nhăng không được hỗ trợ bởi dongle không dây của bạn. (có nghĩa là nó không thể chấp nhận các gói không dành cho nó)

Cầu tinh khiết so với cầu chung:

  1. iface br0 inet dhcp chỉ ra một cây cầu được chia sẻ , có nghĩa là chính cây cầu đó có một ip và có thể là điểm cuối cho lưu lượng.

  2. Một cây cầu thuần không nhận được địa chỉ IP và chỉ chuyển tiếp lưu lượng giữa hai giao diện

  3. Tệp cấu hình mẫu cầu nối / etc / mạng / giao diện (Debian / Ubuntu)

# Tập tin này mô tả các giao diện mạng có sẵn trên hệ thống của bạn
# và cách kích hoạt chúng. Để biết thêm thông tin, xem giao diện (5).

# Giao diện mạng loopback
tự động lo
iface lo inet loopback

# Cầu nối giữa eth0 và wlan0
tự động br0
iface br0 inet dhcp
  liên kết ip trước khi đặt eth0 xuống
  liên kết ip pre-up đặt wlan0 xuống
  pre-up brctl addbr br0
  pre-up brctl addif br0 eth0 wlan0
  pre-up ip addr flush dev eth0
  pre-up ip addr flush dev wlan0
  liên kết ip sau xuống đặt eth0 xuống
  liên kết ip sau xuống đặt wlan0 xuống
  liên kết ip sau xuống đặt br0 xuống
  sau xuống brctl delif br0 eth0 wlan0
  sau xuống brctl delbr br0

Khởi động lại mạng: sudo /etc/init.d/networking restartSau khi thực hiện cấu hình mạng phức tạp, việc khởi động lại sẽ dễ dàng hơn thay vì đảm bảo mọi thứ được khởi động lại đúng cách trong quá trình khởi động lại.

Bạn nghĩ rằng bạn có vấn đề định tuyến:

  1. Loại bỏ DNS là nguyên nhân bằng cách thử nghiệm với ping 8.8.8.8. Nếu điều này hoạt động, thì có lẽ bạn có vấn đề DNS trong mạng của bạn.

  2. Kiểm tra cổng của bạn với sudo ip routehy vọng bạn nhìn thấy default via 192.168.1.1 dev br0 proto dhcp(giả sử cổng của bạn là 192.168.1.1). Nếu nó bị thiếu hoặc sai, hãy sửa nó sudo ip route add default via 192.168.1.1. Kiểm tra lần nữa:ping 8.8.8.8

  3. Gia hạn ip cầu nối chung của bạn với dhclient br0và kiểm tra lại vớiping 8.8.8.8

  4. Kiểm tra giao diện 'nô lệ' của bạn với ifconfigvà đảm bảo eth0 và wlan0 KHÔNG có địa chỉ IP. Bây giờ họ là một phần của cây cầu. Nếu có, hãy đảm bảo bạn xóa chúng khỏi tất cả các tệp cấu hình, đặt chúng thành tĩnh 0.0.0.0 hoặc một cái gì đó.

Nếu KHÔNG có cái này hoạt động, hãy thử ứng dụng bắc cầu debian đó và nếu nó không hoạt động thì dongle không dây của bạn không hỗ trợ chế độ lăng nhăng. (xem ở trên)

Nếu nó hoạt động bất cứ lúc nào ở đây, hãy khởi động lại và đảm bảo nó vẫn hoạt động.


Vui lòng xem bản cập nhật mới nhất cho tệp giao diện và, vâng, tất cả các chuỗi được đặt thành ACCEPT
adrianmcmenamin

Các hướng dẫn này hoạt động, ít nhất là theo nghĩa nếu tôi áp dụng dhclient br0 và chỉ định eth0 bị khóa xuống 0.0.0.0, bây giờ chỉ cần tìm cách làm cho nó tự động :)
adrianmcmenamin

OK, tôi có nó và chạy với một chút trò đùa tinh nghịch thông qua các tập lệnh RC.local (về cơ bản tôi phải khởi động lại hostapd) - vì vậy bạn nhận được tiền thưởng. Nhưng bây giờ máy chủ mực của tôi trên cùng một hộp bị lỗi - nhưng tôi đã không hỏi bạn về điều đó, vì vậy nó sẽ phải là một câu hỏi khác.
adrianmcmenamin

Câu hỏi câu mực bây giờ tại superuser.com/questions/522332/
Mạnh

Các thiết lập eth0wlan0trong ví dụ này là gì? Cụ thể, làm thế nào để bạn đặt SSID và bất kỳ xác thực wlan0nào?
Ian

6

Tôi có một số cầu nối không dây hoạt động trên Debian Linux và Openwrt, vì vậy tôi rất quen thuộc với vấn đề này.

Bạn đã bỏ lỡ một lệnh quan trọng: Bạn đã quên nói với trình điều khiển không dây của mình để truyền các khung 4 địa chỉ (đôi khi được gọi là WDS không chính xác / theo lịch sử), được yêu cầu cho kết nối không dây 802.11 /. Làm điều này với lệnh "iw dev wlan0 set 4addr on". Sử dụng câu lệnh "pre-up" trong tệp giao diện Debian của bạn trên cây cầu để áp dụng nó trước khi đưa lên cây cầu. Lưu ý rằng chế độ khung hình 4 địa chỉ yêu cầu hỗ trợ trình điều khiển và một số trình điều khiển hoặc phần cứng 802.11 cũ kỹ có thể không hỗ trợ.

Tôi cũng nghi ngờ các vấn đề của bạn có thể đã bị phức tạp bởi một lỗi trong nhân Linux, điều này đặc biệt ảnh hưởng đến các giao diện bắc cầu. Tôi đã gặp phải lỗi này và phải tự biên dịch wpa_supplicant của mình từ các nguồn vì phiên bản trong Debian đã cũ và bị ảnh hưởng. wpa_supplicant và hostapd chia sẻ một cơ sở mã chung, nhưng tôi không hoàn toàn chắc chắn rằng hostapd bị ảnh hưởng cũng như wpa_supplicant.

Có một cam kết giải quyết vấn đề ở đây:

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

Tôi có ấn tượng rằng đây là phiên bản 2.5 và tôi biết nó ở nguồn 2.6 hiện tại. Phiên bản Debian hiện tại là 2.4, bị hỏng. Vui lòng xem dự án Debian để cập nhật các gói wpasupplicant và hostapd của chúng.

Dưới đây là cấu hình mẫu cho máy khách cầu nối không dây sử dụng WPA / WPA2 với cầu nối không dây giữa các giao diện wlan0 và eth0, với máy chủ nhận địa chỉ DHCP trên giao diện br0 (thay thế "dhcp" bằng "thủ công" không có địa chỉ IP). Đối với tình huống mà bạn muốn trở thành AP, hãy bao gồm các lệnh interface = và Bridge = trong hostapd.conf và bỏ qua các lệnh wpa- * bên dưới.

Trong tệp / etc / mạng / giao diện của bạn:

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

Và đảm bảo wpa_supplicant của bạn là phiên bản 2.5 trở lên. Nó sẽ không hoạt động với wpa_supplicant 2.4 và các phiên bản kernel hiện tại.

Tôi cũng nên lưu ý rằng hiện tại có một lỗi cuộc đua trong ifup nơi giao diện cầu có thể không xuất hiện khi khởi động, nhưng đó là một vấn đề hoàn toàn khác.


3

Bạn dường như cần chuyển tiếp ip.

thử cat /proc/sys/net/ipv4/ip_forward

Nếu đó là 0vấn đề:echo 1 > /proc/sys/net/ipv4/ip_forward


sys.net.ipv4.ip_forwarddành cho định tuyến IPv4, NAT, v.v. Cầu nối hoạt động một lớp bên dưới trong ngăn xếp mạng.
Thomas Guyot-Sionnest

0

Cầu nối chỉ có thể hoạt động khi một giao diện nhận tất cả các gói nếu không chúng sẽ chỉ thấy các gói được gửi đến chúng. Thiết lập hiện tại của bạn có thể mô tả một cấu hình cho bộ định tuyến nhưng không phải cho một cây cầu.

eth0 và wlan0 không nên có địa chỉ IP (nghĩa là 0.0.0.0) và nếu muốn, bạn luôn có thể sử dụng địa chỉ IP cho br0.

Đây cũng là một số tài liệu chính thức: http://wiki.debian.org/BridgeNetworkConnections


1
Tôi biết đây là một bài viết cũ nhưng vì tôi đã tìm thấy nó trong khi tìm kiếm một cái gì đó khác, tôi nghĩ rằng tôi đã đề cập rằng nó không quan trọng nếu giao diện cầu nối không / không có địa chỉ IP liên quan đến việc bắc cầu. Trên Linux, giao diện bắc cầu cũng sẽ chuyển tiếp các gói ARP (OSI lớp 2). Bất kỳ công tắc nào cũng sẽ ánh xạ nhiều thiết bị được kết nối với phía bên kia của cầu khi được chấp nhận trên cổng chuyển đổi đó. Tài liệu tham khảo của tôi là kinh nghiệm triển khai các máy chủ Linux như bộ định tuyến, cầu nối, tường lửa, v.v ... để triển khai tính sẵn sàng cao trong các trung tâm dữ liệu hàng đầu bao gồm một NAP chính của Hoa Kỳ cho S. America
jetole

0

cấu hình wlan0

vi / etc / mạng / giao diện

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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.