Máy Linux có thể hoạt động như một máy khách không dây và điểm truy cập đồng thời bằng một giao diện WLAN vật lý không?


12

Nếu tôi chỉ có 1 giao diện WLAN vật lý, có một số hack có thể được thực hiện để nó có thể là máy khách của một điểm truy cập hiện có và đồng thời cũng đóng vai trò là điểm truy cập cho các máy khách khác không?

Tôi có một bộ định tuyến ADSL 802.11g hiện có và tôi sẽ xây dựng một HTPC sẽ có 802.11n. Máy tính xách tay của tôi cũng có 802.11n, nhưng hiện tại nó chỉ kết nối ở tốc độ 54Mb / giây vì đó là những gì AP hỗ trợ. Tôi muốn có thể có HTPC là máy khách của bộ định tuyến ADSL của mình, nhưng máy tính xách tay của tôi là máy khách của HTPC, vì vậy việc sao chép tệp vào nó sẽ nhanh hơn.

Khả thi?

Chỉnh sửa: rõ ràng tôi có thể kết nối HTPC với bộ định tuyến ADSL bằng Ethernet và tắt wifi trên bộ định tuyến, nhưng hãy bỏ qua tùy chọn đó. :-)

Câu trả lời:


9

Tôi chưa từng làm điều này trước đây, nhưng đây là một số thông tin giúp bạn đi đúng hướng.

Từ góc độ giao thức, chắc chắn có thể có một đài phát thanh hoạt động như cả AP và máy khách STA. Nó hoạt động tốt nhất (hoặc có lẽ là gần như bắt buộc) nếu AP bạn đang tạo và ứng dụng bạn tham gia với tư cách là khách hàng trên cùng một kênh. Có thẻ radio phải liên tục chuyển kênh sang các yêu cầu dịch vụ là một công thức cho các khung hình bị mất và hiệu suất khủng khiếp.

Phần mềm khôn ngoan, nó trở nên khả thi. Một số trình điều khiển thẻ 802.11 trên Linux hỗ trợ khái niệm VAP (AP ảo) cho phép một thẻ hoạt động như nhiều AP (nhiều SSID, thậm chí BSSID) cùng một lúc. Ngược lại, thuật ngữ VAP có nghĩa là bất kỳ loại giao diện ảo nào trên cùng một thẻ 802.11, bất kể giao diện ảo có ở chế độ AP hay không. Vì vậy, trên các combo thẻ / trình điều khiển này, bạn có thể tạo hai VAP - VAP chế độ STA

Trình điều khiển MadWifi cho các thẻ dựa trên Atheros là một trình hỗ trợ VAP. Nếu thẻ 802.11 của bạn sử dụng chipset Atheros và bạn cài đặt đúng phiên bản trình điều khiển MadWifi, bạn có thể định cấu hình thẻ của mình cho chế độ STA + AP đồng thời như sau:

wlanconfig ath0 create wlandev wifi0 wlanmode sta
wlanconfig ath1 create wlandev wifi0 wlanmode ap

Lưu ý rằng đây không phải là hướng dẫn đầy đủ để thiết lập mọi thứ, mà chỉ là một nỗ lực để bạn bắt đầu.

Bạn có thể muốn Google cho một cái gì đó như " wifi vap " để biết thêm thông tin. Tôi đã sao chép các lệnh trên từ đây .

Ồ, và một số huyền thoại nhộn nhịp: Thẻ Atheros không phải là hiếm trong các máy tiêu dùng. Họ là một người chơi chính trong chipset 802.11, cùng với Broadcom, Marvell, Intel và Ralink. Và chỉ vì tôi đã sử dụng ví dụ về MadWifi / Atheros, không có nghĩa là không có trình điều khiển Linux cho các chip của những người chơi lớn khác có thể làm điều tương tự. Ngoài ra, 802.11s là không cần thiết cho việc này. Nói rằng bạn phải thực hiện 802.11s để làm điều này cũng giống như nói rằng bạn phải hỗ trợ Spanning Tree Protocol chỉ để chuyển tiếp các khung hình từ giao diện này sang giao diện khác.


Có vẻ như bảng tôi nhận được có chipset Atheros, vì vậy tôi có thể gặp may. Tôi đang chờ giao các thành phần của mình sau đó tôi có thể xây dựng và thử nghiệm.
ThatGraemeGuy

Tôi chưa có cơ hội chơi với MadWifi. Tôi chấp nhận vì câu trả lời là chính xác, dường như không có chipset / gia đình nào khác cung cấp chức năng này.
ThatGraemeGuy

Spiff, tôi đang làm việc với chip Atheros và madwifi và tôi đang cố gắng thiết lập VAP một trong sta và một trong ap. Tôi có thể thiết lập nhiều VAP ở chế độ ap nhưng khi tôi thiết lập VAP đầu tiên trong sta và sau đó thử thiết lập một VAP khác trong ap tôi nhận được wlanconfig: ioctl: Lỗi đầu vào / đầu ra. Bạn có biết làm thế nào để đối phó với điều này?
sachinr

1
@sachinr Hãy hỏi điều đó như một Câu hỏi để mọi người nhìn thấy nó, không chỉ là một nhận xét về Câu trả lời ba tuổi cho Câu hỏi của người khác.
Spiff

Xin chào, tôi đã thêm câu hỏi của mình vào đây - superuser.com/questions/649742/ . Bạn có thể có một cái nhìn? Cảm ơn :)
sachinr

4

Trình điều khiển nl80211 có một cái gì đó gọi là chế độ giao diện "được quản lý". Bạn có thể định cấu hình nó bằng tiện ích "iw" như vậy:

Giao diện iw phy phy0 thêm loại wlan1 được quản lý

Thông tin thêm về điều này có sẵn tại https://wless.wiki.kernel.org/en/users/documentation/iw . Phy0 đề cập đến những gì bạn thấy trong / sys / class / ieee80211 /.

Tôi cũng đã thấy rPI3 làm một cái gì đó tương tự, nhưng với chế độ giao diện "__ap" mờ ám hơn . Bằng cách đó, người dùng tạo giao diện thứ hai chỉ chạy trong chế độ AP và sử dụng giao diện ban đầu làm chế độ máy khách.

Dù bạn nhận ra bằng cách nào (trình điều khiển rõ ràng phải hỗ trợ nó), bạn sẽ cần hai giao diện (từ cùng một thiết bị vật lý). Một giao diện có thể đơn giản chạy wpa_supplicant làm chế độ máy khách, giao diện kia (chế độ AP) thường sử dụng hostapd để phát điểm truy cập.

[BIÊN TẬP:]

Mã nguồn của công cụ iw cho thấy rất rõ về chế độ __ap mờ ám:

..
} else if (strcmp(tpstr, "__ap") == 0) {
    *type = NL80211_IFTYPE_AP;
    return 0;
} else if (strcmp(tpstr, "__ap_vlan") == 0) {
    *type = NL80211_IFTYPE_AP_VLAN;
    return 0;
} else if (strcmp(tpstr, "wds") == 0) {
    *type = NL80211_IFTYPE_WDS;
    return 0;
} else if (strcmp(tpstr, "managed") == 0 ||
       strcmp(tpstr, "mgd") == 0 ||
       strcmp(tpstr, "station") == 0) {
    *type = NL80211_IFTYPE_STATION;
    return 0;
} 
..

Chế độ __ap chuyển thành loại netlink NL80211_IFTYPE_AP. Tôi cũng đã thử nghiệm điều này, và điều này hoạt động tốt. Điều kỳ lạ là wiki tài liệu kernel không làm được điều đó.


3

nguồn và thêm thông tin:

https://wiki.archlinux.org/index.php/Software_access_point

Câu trả lời ngắn

sudo iw dev wlan0 interface add wlan0_ap type managed
sudo create_ap wlan0_ap wlan0 createap mypassword

Thiết bị Wi-Fi phải hỗ trợ chế độ AP

Bạn cần một thiết bị không dây tương thích nl80211, hỗ trợ chế độ vận hành AP. Điều này có thể được xác minh bằng cách chạy lệnh danh sách iw, trong khối chế độ giao diện được Hỗ trợ sẽ có AP được liệt kê:

...
    Supported interface modes:
         * IBSS
         * managed
         * AP
         * AP/VLAN
         * WDS
         * monitor
         * mesh point
...

AP máy khách và phần mềm không dây với một thiết bị Wi-Fi duy nhất

Tạo một phần mềm AP độc lập với kết nối mạng của riêng bạn (Ethernet, không dây, ...). Nhiều thiết bị không dây thậm chí còn hỗ trợ hoạt động đồng thời cả AP và "máy khách" không dây cùng một lúc. Sử dụng khả năng đó, bạn có thể tạo một AP phần mềm hoạt động như một "bộ lặp không dây" cho một mạng hiện có, sử dụng một thiết bị không dây duy nhất. Khả năng được liệt kê trong phần sau trong đầu ra của danh sách iw:

kết hợp giao diện hợp lệ:

$ iw list
...
valid interface combinations:
     * #{ managed } <= 1, #{ AP, P2P-client, P2P-GO } <= 1, #{ P2P-device } <= 1,
       total <= 3, #channels <= 2
...

Ràng buộc #channels <= 1 có nghĩa là AP phần mềm của bạn phải hoạt động trên cùng một kênh với kết nối máy khách Wi-Fi của bạn; xem cài đặt kênh trong hostapd.conf bên dưới.

Nếu bạn muốn sử dụng khả năng / tính năng, có lẽ vì không có kết nối Ethernet, bạn cần tạo hai giao diện ảo riêng biệt để sử dụng nó. Giao diện ảo cho thiết bị vật lý wlan0 có thể được tạo như sau: Giao diện ảo có địa chỉ MAC duy nhất được tạo cho chính kết nối mạng (wlan0_sta) và cho phần mềm "bộ lặp không dây" AP / hostapd:

# iw dev wlan0 interface add wlan0_sta type managed 
# iw dev wlan0 interface add wlan0_ap  type managed

Cấu hình

Thiết lập một điểm truy cập bao gồm hai phần chính:

  1. Thiết lập lớp liên kết Wi-Fi để khách hàng không dây có thể liên kết với điểm truy cập phần mềm trên máy tính của bạn và trao đổi các gói IP với nó.
  2. Thiết lập cấu hình mạng trên máy tính của bạn để nó chuyển tiếp đúng các gói IP giữa kết nối internet của chính nó và các máy khách không dây.

Công cụ

tạo_ap

Gói create_ap cung cấp một tập lệnh có thể tạo một điểm truy cập NAT hoặc cầu nối để chia sẻ internet. Nó kết hợp hostapd, dnsmasq và iptables cho hoạt động tốt của điểm truy cập. Cú pháp cơ bản để tạo một mạng ảo NAT là như sau:

# create_ap wlan0 eth0 MyAccessPoint MyPassPhrase

Câu trả lời tuyệt vời, cảm ơn bạn!
Iman Akbari
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.