Tạo điểm truy cập WiFi trên một giao diện duy nhất trong Linux


14

Tôi đang cố gắng tạo một điểm truy cập WiFi hoặc điểm truy cập trên máy tính xách tay Linux của mình. Tôi đang sử dụng Opensuse Kde 12.3.

Tôi đã tìm ra một phần mềm gọi là hostapdcho phép bạn tạo hotspot nhưng nó yêu cầu hai giao diện. Một kết nối với internet và cái khác mà bạn muốn tạo điểm truy cập ( hướng dẫn tại đây ). Vấn đề tôi gặp phải là tôi không có kết nối Ethernet. Các wlangiao diện đang được sử dụng để kết nối với internet.

Có cách nào để tạo điểm phát sóng trên cùng một giao diện được kết nối với Internet (giống như phần mềm được kết nối trên Windows) không? Tôi đã nghĩ đến việc tạo ra một giao diện ảo (giống như giao diện được airmon-ngtạo để giám sát wifi) và sử dụng nó làm giao diện thứ hai. Điều này có thể không?

CẬP NHẬT

Đây là những gì tôi có thể làm cho đến bây giờ:

1) Tạo 2 giao diện (một giao diện là trạm và giao diện kia là điểm truy cập)

  iw phy phy0 interface add mySta type station
  iw phy phy0 interface add myAcc type __ap

2) Cung cấp cho họ Mac ID riêng biệt

ifconfig myAcc hw ether A4:17:FE:6E:00:53
ifconfig myAcc 192.168.27.1 up

3) bắt đầu hostapd trên giao diện myAcc

4) bắt đầu dnsmasq để cung cấp địa chỉ IP cho các thiết bị kết nối

Tất cả điều này hoạt động. Các thiết bị có thể kết nối với mạng này và lấy Địa chỉ Ip. Bước tiếp theo là cung cấp ip masquerading

iptables --table nat --append POSTROUTING --out-interface mySta -j MASQUERADE
iptables --append FORWARD --in-interface myAcc -j ACCEPT

Nhưng giao diện mySta hiện không kết nối được với internet. Nó có thể lấy được Essid nhưng nó không thể lấy được địa chỉ IP.

Lệnh dhclient mySta không hiển thị bất kỳ thông báo nào và sau một thời gian sẽ báo lỗi:

ls: cannot access /var/run/netconfig//mySta/: No such file or directory

Ai đó có thể tìm ra làm thế nào để có được địa chỉ IP?


Bạn đã thử với "Hỗ trợ trình điều khiển mạng giả" (trình điều khiển Kernel) làm mô-đun. Tôi không thể giúp bạn nhiều hơn thế vì tôi không biết openSUSE. Nhưng tôi có thể thấy rằng có các lỗi được báo cáo từ phiên bản 11 trở lên khi nó được xây dựng với Yast. Vì vậy, hãy cẩn thận.
Diblo Dk

Tất nhiên tôi có thể giúp bạn, nếu nó có thể được thực hiện theo cùng một cách (cấu hình Kernel, thiết lập mạng) như trong Gentoo, Debian hoặc Ubuntu.
Diblo Dk

Bất kỳ trợ giúp sẽ được đánh giá cao. Tôi không sử dụng các công cụ Yast như vậy. Các cấu hình là từ một hướng dẫn trên Ubuntu. Hệ thống tập tin và cấu hình gần như giống nhau.
adityap174

Phiên bản kernel của bạn là gì?
Diblo Dk

Kernel: x86_64 Linux 3.7.10-1.16-desktop
adityap174

Câu trả lời:


9

Đối với bất kỳ ai khác phải đối mặt với vấn đề này, vấn đề là với địa chỉ mac. Tôi bắt đầu giao diện điểm truy cập, cho nó một địa chỉ mac. Sau đó, sau khi chạy hostapd, thêm giao diện trạm, cung cấp cho nó một địa chỉ mac khác và kết nối nó với mạng và cung cấp địa chỉ IP của trạm làm cổng mặc định của máy khách thông qua dnsmasq.

Bây giờ mọi thứ đang hoạt động đúng.

Như Diblo Dk đã chỉ ra, bạn có thể sử dụng các giao diện ảo và giả nhưng hostapd không hoạt động với chúng. Tôi không biết tại sao.

Dưới đây là các bước:

  1. tắt dịch vụ quản lý mạng vì nó can thiệp vào các giao diện ảo
  2. tắt wlan0 bằng ifconfig wlan0 xuống
  3. tạo giao diện điểm truy cập bằng lệnh iw (gõ __ap), gán cho nó một địa chỉ mac và ip khác
  4. bật hostapd tại giao diện truy cập này
  5. sử dụng dnsmasq để gán các máy khách kết nối tại giao diện này, địa chỉ ip và cung cấp cổng mặc định làm ip của giao diện trạm được tạo
  6. bật dnsmasq tại giao diện truy cập. Bây giờ khách hàng sẽ có thể kết nối với điểm truy cập và lấy địa chỉ IP.
  7. tạo giao diện mới (loại trạm) gán địa chỉ mac riêng biệt và kết nối nó với mạng bằng cách gán essid và sử dụng dhclient để lấy địa chỉ ip.
  8. nếu cần thực hiện ip masquerading thông qua lệnh iptables

nói một cách thẳng thắn, WTF hostapd :)
Diblo Dk

Bạn có thể cập nhật câu trả lời của bạn với các bước chính xác bạn đã thực hiện. Đây chắc chắn là một câu trả lời tôi muốn lưu lại.
Diblo Dk

cập nhật :) muốn biết thêm chi tiết?
adityap174

Cách tuyệt vời để giải quyết vấn đề :)
Diblo Dk

Bạn đang sử dụng dongle / chipset nào?
Alvin

2

Thiết lập một mạng giả

1 Mở bàn điều khiển

su -

2 Xem nếu bạn có một trình điều khiển giả

modprobe -l | grep /net/dummy.ko

(!) Nếu bạn không có trình điều khiển giả, hãy chuyển đến " Tạo mô-đun hạt nhân ".

Trình điều khiển giả 3 tải

modprobe dummy

(!) Không thêm nó vào khởi động nếu thất bại.

4 Kiểm tra dummy0 bằng cách đưa nó lên

ifconfig dummy0 10.246.75.1 netmask 255.255.255.0 broadcast 10.246.75.255 up

ifconfig

Nó sẽ cung cấp cho bạn một đầu ra tương tự.

dummy0  Link encap:Ethernet  HWaddr 00:2D:32:3E:39:3B
        inet addr:10.246.75.1  Bcast:10.246.75.255  Mask:255.255.255.0
        ...

5 Thêm trình điều khiển giả để khởi động

Chỉnh sửa tập tin sys kernel.

nano /etc/sysconfig/kernel

và thêm "hình nộm " vào MODULES_LOADED_ON_BOOT.

MODULES_LOADED_ON_BOOT = "..."

Ví dụ. MODULES_LOADED_ON_BOOT = "vmcp giả".

6 Định cấu hình cài đặt mạng cho dummy0

Tạo tập tin ifcfg-dummy0.

nano /etc/sysconfig/network/ifcfg-dummy0

Thêm vào tập tin ifcfg-dummy0:

# Configuration for dummy0
BOOTPROTO=static

# This line ensures that the interface will be brought up during boot.
STARTMODE=onboot

# dummy0 - This is the main IP address that will be used for most outbound connections.
# The address, netmask and gateway are all necessary. The metric is not necessary but
# ensures you always talk to the same gateway if you have multiple public IPs from
# different subnets.
IPADDR=10.246.75.1
NETMASK=255.255.255.0
BROADCAST=10.246.75.255
GATEWAY=10.246.75.1



Tạo mô-đun hạt nhân

1 Đầu tiên cài đặt những thứ cần thiết

Mở YaST.

Điều hướng đến Software-> Software Management.

Đánh dấu:

Development 

[X] Base Development
[X] Linux Kernel Development
[X] C/C++ Development

2 Quay lại bàn điều khiển và điều hướng đến nguồn kernel

cd /usr/src/linux

3 Nhập cấu hình kernel hiện tại

zcat /proc/config.gz > .config

4 Menuconfig mở nhân

make menuconfig

5 Thêm hỗ trợ trình điều khiển mạng giả

Điều hướng đến Device Drivers->Network device support

* Network core driver support
    M Dummy net driver support

(!) Nếu bạn có dấu hoa thị bên cạnh "Hỗ trợ trình điều khiển lõi mạng", bạn có thể bỏ qua bước 7 và 9.

6 Biên dịch kernel

make -j(n+1)

Trong đó (n + 1) = số lõi CPU cộng với một lõi được sử dụng để tăng tốc độ biên dịch. Đối với bốn lõi sử dụng make -j5.

7 Cài đặt kernel mới

make install

8 Cài đặt mô-đun

make modules_install

9 Tải kernel mới

reboot



Xác định VIPA (Phần về tải mô-đun và ifcfg-dummy0): http://wiki.linuxvm.org/wiki/Defining_a_VIPA Định
cấu hình IP tĩnh: https://www.linode.com/wiki/index.php/Configure_Static_IPs
openSUSE 12.3 và Cài đặt các phiên bản kernel Linux mới từ kernel.org: http://forums.opensuse.org/bloss/jdmcdaniel3/opensuse-installing-new-linux-kernel-versions-134/
OpenSUSE 11.2 - Cách biên dịch kernel cho người mới : http://linuxtweaking.blogspot.dk/2010/04/opensuse-112-how-to-compile-kernel-for.html


Cảm ơn đã giải thích chi tiết như vậy. Tôi đã thử phương pháp này. Tôi đã có thể tạo giao diện dummy0 và bắt đầu khởi động. Nhưng làm thế nào để bạn làm cho nó một giao diện không dây? iwconfig cung cấp: dummy0 không có phần mở rộng không dây. hostapd không hoạt động với điều này. Nó báo lỗi: khởi tạo trình điều khiển nl80211 không thành công
adityap174

Có, vấn đề là bạn có xung đột IP. Nhưng nó có thể được thực hiện với mô-đun Pseudo (Gán nhiều địa chỉ IP). Hãy cho tôi một chút thời gian để tìm kiếm nó cho hệ thống của bạn.
Diblo Dk

Bạn cũng có thể nhìn vào đây linode.com/wiki/index.php/Configure_Static_IPs#OpenSUSE Có thể bạn có thể xem cách thực hiện với wlan :)
Diblo Dk

, vấn đề là bạn sẽ có xung đột IP *
Diblo Dk

1

Tạo giao diện ảo

Tạo tập tin ifcfg-wlan0: 0

nano /etc/sysconfig/network/ifcfg-wlan0:0

Thêm vào tệp ifcfg-wlan0: 0:

DEVICE=wlan0:0

# Configuration for wlan0:0
ONBOOT=yes

# This line ensures that the interface will be brought up during boot.
BOOTPROTO=static

# wlan0:0 - This is the main IP address that will be used for most outbound connections.
# The address, netmask and gateway are all necessary. The metric is not necessary but
# ensures you always talk to the same gateway if you have multiple public IPs from
# different subnets.
IPADDR=10.246.75.1
NETMASK=255.255.255.0
BROADCAST=10.246.75.255
GATEWAY=10.246.75.1

Các lệnh kích hoạt giao diện

ifup wlan0:0

Lưu ý: Tắt giao diện chính cũng tắt tất cả các bí danh của nó. Bí danh có thể được tắt độc lập với các giao diện khác.

Kiểm tra xem giao diện có hoạt động không

ifconfig

Nó sẽ cung cấp cho bạn một đầu ra tương tự.

wlan0:0  Link encap:Ethernet  HWaddr 00:2D:32:3E:39:3B
         inet addr:10.246.75.1  Bcast:10.246.75.255  Mask:255.255.255.0
         ...

http://forums.opensuse.org/english/get-technical-help-here/network-iNET/461132-os-11-4-network-manager-default-connection-can-handle-virtual-interfaces.html# bài 2350426


ngay cả điều này đã không làm việc với hostapd. Nó đã đưa ra cùng một lỗi: Không thể mở tệp / sys / class / net / dummy0 / phy80211 / name: Không có tệp hoặc thư mục như vậy với dummy0 và Không thể mở tệp / sys / class / net / wlan0: 0 / phy80211 / name: Không có tập tin hoặc thư mục như vậy với giao diện ảo. Cảm ơn tất cả sự giúp đỡ của bạn. :) Vấn đề là với địa chỉ mac. Tôi đã nâng cao câu trả lời của bạn và tôi đang đăng giải pháp cho người khác.
adityap174
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.