การสร้างจุดเชื่อมต่อ WiFi บนอินเทอร์เฟซเดียวใน Linux


14

ฉันกำลังพยายามสร้างฮอตสปอต WiFi หรือจุดเชื่อมต่อบนแล็ปท็อป Linux ของฉัน ฉันใช้ Opensuse Kde 12.3

ฉันพบซอฟต์แวร์ที่เรียกว่าhostapdซึ่งให้คุณสร้างฮอตสปอต แต่มันต้องใช้สองอินเตอร์เฟส อันหนึ่งเชื่อมต่อกับอินเทอร์เน็ตและอีกอันที่คุณต้องการสร้างจุดเชื่อมต่อ ( บทช่วยสอนที่นี่ ) ปัญหาที่ฉันมีคือฉันไม่มีการเชื่อมต่ออีเธอร์เน็ต wlanอินเตอร์เฟซจะถูกใช้ในการเชื่อมต่อกับอินเทอร์เน็ต

มีวิธีใดในการสร้างฮอตสปอตบนอินเทอร์เฟซเดียวกับที่เชื่อมต่อกับอินเทอร์เน็ต (เช่นซอฟต์แวร์ connectify ทำบน Windows)? ฉันคิดว่าจะสร้างอินเทอร์เฟซเสมือน (เช่นเดียวกับที่airmon-ngสร้างเพื่อตรวจสอบ wifi) และใช้เป็นอินเทอร์เฟซที่สอง เป็นไปได้ไหม

UPDATE

นี่คือสิ่งที่ฉันสามารถทำได้จนถึงตอนนี้:

1) สร้าง 2 อินเตอร์เฟส (อันหนึ่งเป็นสถานีและอีกอันหนึ่งเป็นจุดเชื่อมต่อ)

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

2) ให้ Mac ID แยกต่างหาก

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

3) เริ่ม hostapd บนอินเตอร์เฟส myAcc

4) เริ่ม dnsmasq เพื่อให้ที่อยู่ IP กับอุปกรณ์เชื่อมต่อ

ทั้งหมดนี้ใช้ได้ผล อุปกรณ์สามารถเชื่อมต่อกับเครือข่ายนี้และรับที่อยู่ IP ขั้นตอนต่อไปคือการให้บริการการปลอมแปลง IP

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

แต่ตอนนี้อินเตอร์เฟส mySta ล้มเหลวในการเชื่อมต่อกับอินเทอร์เน็ต สามารถรับ Essid ได้ แต่ไม่สามารถรับที่อยู่ IP ได้

คำสั่ง dhclient mySta ไม่แสดงข้อความใด ๆ และหลังจากนั้นสักครู่ก็เกิดข้อผิดพลาด:

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

บางคนสามารถหาวิธีรับที่อยู่ IP ได้หรือไม่


คุณได้ลองกับ "Dummy net driver support" (ไดรเวอร์เคอร์เนล) เป็นโมดูลหรือไม่ ฉันไม่สามารถช่วยคุณได้มากกว่านั้นเพราะฉันไม่รู้ openSUSE แต่ฉันจะเห็นว่ามีข้อผิดพลาดรายงานจากรุ่น 11 และสูงกว่าเมื่อสร้างด้วย Yast ดังนั้นระวัง
Diblo Dk

แน่นอนฉันสามารถช่วยคุณได้ถ้ามันสามารถทำได้ในลักษณะเดียวกัน (การกำหนดค่าเคอร์เนลการตั้งค่าเครือข่าย) เช่นเดียวกับใน Gentoo, Debian หรือ Ubuntu
Diblo Dk

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม. ฉันไม่ได้ใช้เครื่องมือ Yast เช่นนี้ การกำหนดค่ามาจากบทช่วยสอนบน Ubuntu ระบบไฟล์และการกำหนดค่าเกือบเหมือนกัน
adityap174

เคอร์เนลรุ่นของคุณคืออะไร?
Diblo Dk

เคอร์เนล: x86_64 Linux 3.7.10-1.16-desktop
adityap174

คำตอบ:


9

สำหรับผู้อื่นที่ประสบปัญหานี้ปัญหาเกิดจากที่อยู่ mac ฉันเริ่มอินเทอร์เฟซจุดเชื่อมต่อให้ที่อยู่ mac จากนั้นหลังจากที่เรียกใช้ hostapd เพิ่มอินเทอร์เฟซของสถานีให้มันเป็นที่อยู่ mac ที่แตกต่างกันและเชื่อมต่อกับเครือข่ายและให้ที่อยู่ IP ของสถานีเป็นเกตเวย์เริ่มต้นของลูกค้าผ่าน dnsmasq

ตอนนี้ทุกอย่างทำงานได้อย่างถูกต้อง

ดังที่ Diblo Dk ชี้ให้เห็นคุณสามารถใช้อินเทอร์เฟซเสมือนจริงและเสมือนจริงได้ แต่ hostapd ไม่ทำงานกับมัน ฉันไม่รู้ว่าทำไม

นี่คือขั้นตอน:

  1. ปิดบริการตัวจัดการเครือข่ายขณะที่มันรบกวนการเชื่อมต่อเสมือน
  2. เปิด wlan0 โดยใช้ ifconfig wlan0 ลง
  3. สร้างส่วนต่อประสานจุดเชื่อมต่อโดยใช้คำสั่ง iw (พิมพ์ __ap) กำหนดที่อยู่ mac และ ip อื่น
  4. เปิด hostapd ที่ส่วนต่อประสานการเข้าถึงนี้
  5. ใช้ dnsmasq เพื่อกำหนดไคลเอ็นต์การเชื่อมต่อที่ส่วนต่อประสานนี้ที่อยู่ ip และให้เกตเวย์เริ่มต้นเป็น ip ของส่วนต่อประสานสถานีที่จะสร้าง
  6. เปิด dnsmasq ที่ส่วนต่อประสานการเข้าถึง ตอนนี้ไคลเอนต์จะสามารถเชื่อมต่อกับจุดเชื่อมต่อและรับที่อยู่ IP
  7. สร้างส่วนต่อประสานใหม่ (สถานีประเภท) กำหนดที่อยู่ mac แยกต่างหากและเชื่อมต่อกับเครือข่ายโดยกำหนด essid และใช้ dhclient เพื่อรับที่อยู่ IP
  8. หากจำเป็นต้องดำเนินการ ip masquerading ผ่านคำสั่ง iptables

ที่จะนำมันโผงผาง WTF hostapd :)
Diblo Dk

คุณสามารถปรับปรุงคำตอบของคุณด้วยขั้นตอนที่แน่นอนที่คุณทำ นี่เป็นคำตอบที่ฉันต้องการบันทึก
Diblo Dk

อัปเดต :) ต้องการรายละเอียดเพิ่มเติมหรือไม่
adityap174

วิธีแก้ปัญหาที่ยอดเยี่ยม :)
Diblo Dk

คุณใช้ดองเกิล / ชิปเซ็ตใดอยู่
อัลวิน

2

ตั้งค่าเครือข่ายจำลอง

1 เปิดคอนโซล

su -

2 ดูว่าคุณมีคนขับหลอก

modprobe -l | grep /net/dummy.ko

(!)หากคุณไม่มีไดรเวอร์จำลองให้ไปที่ " สร้างโมดูลเคอร์เนล "

3 โหลดไดรเวอร์จำลอง

modprobe dummy

(!)อย่าเพิ่มลงในการเริ่มต้นหากล้มเหลว

4 ทดสอบ dummy0 โดยวางไว้

ifconfig dummy0 10.246.75.1 netmask 255.255.255.0 broadcast 10.246.75.255 up

ifconfig

มันจะให้ผลลัพธ์ที่คล้ายกัน

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 เพิ่มไดรเวอร์จำลองเพื่อเริ่มต้น

แก้ไขไฟล์เคอร์เนล sys

nano /etc/sysconfig/kernel

และเพิ่ม " จำลอง " ไปยัง MODULES_LOADED_ON_BOOT

MODULES_LOADED_ON_BOOT = "..."

อดีต MODULES_LOADED_ON_BOOT = "vmcp จำลอง"

6 กำหนดการตั้งค่าเครือข่ายสำหรับ dummy0

สร้างไฟล์ ifcfg-dummy0

nano /etc/sysconfig/network/ifcfg-dummy0

เพิ่มไปยังไฟล์ 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



สร้างโมดูลเคอร์เนล

1 ขั้นแรกให้ทำการติดตั้งสิ่งที่จำเป็น

เปิด YaST

ไปที่->SoftwareSoftware Management

ติ๊ก:

Development 

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

2 กลับไปที่คอนโซลและไปยังแหล่งเคอร์เนล

cd /usr/src/linux

3 นำเข้าการกำหนดค่าเคอร์เนลปัจจุบัน

zcat /proc/config.gz > .config

4 เปิดเคอร์เนล menuconfig

make menuconfig

5 เพิ่มการสนับสนุนไดรเวอร์ Dummy net

นำทางไปยังDevice Drivers->Network device support

* Network core driver support
    M Dummy net driver support

(!)หากคุณมีเครื่องหมายดอกจันติดกับ "การสนับสนุนไดรเวอร์เครือข่ายหลัก" คุณสามารถข้ามขั้นตอนที่ 7 และ 9

6 รวบรวมเคอร์เนล

make -j(n+1)

โดยที่ (n + 1) = จำนวนคอร์ CPU บวกหนึ่งรายการที่ใช้เพื่อเพิ่มความเร็วในการคอมไพล์ สำหรับสี่แกนให้ใช้ -j5

7 ติดตั้งเคอร์เนลใหม่

make install

8 ติดตั้งโมดูล

make modules_install

9 โหลดเคอร์เนลใหม่

reboot



การกำหนด VIPA (ส่วนเกี่ยวกับการโหลดโมดูลและ ifcfg-dummy0): http://wiki.linuxvm.org/wiki/Defining_a_VIPA
กำหนดค่า IP แบบคงที่: https://www.linode.com/wiki/index.php/Configure_Static_IPs
openSUSE 12.3 และการติดตั้งเคอร์เนลลินุกซ์ใหม่จาก kernel.org: http://forums.opensuse.org/blogs/jdmcdaniel3/opensuse-installing-new-linux-kernel-versions-134/
OpenSUSE 11.2 - วิธีการคอมไพล์เคอร์เนลสำหรับมือใหม่ : http://linuxtweaking.blogspot.dk/2010/04/opensuse-112-how-to-compile-kernel-for.html


ขอบคุณสำหรับคำอธิบายรายละเอียด ฉันลองวิธีนี้ ฉันสามารถสร้างอินเทอร์เฟซ dummy0 และเริ่มต้นเมื่อบูต แต่คุณจะทำให้มันเป็นอินเตอร์เฟซไร้สายได้อย่างไร iwconfig ให้: dummy0 ไม่มีส่วนขยายไร้สาย hostapd ใช้งานไม่ได้กับสิ่งนี้ มันให้ข้อผิดพลาด: การเริ่มต้นไดรเวอร์ nl80211 ล้มเหลว
adityap174

ใช่ปัญหาคือคุณมีข้อขัดแย้งด้าน IP แต่สามารถทำได้ด้วยโมดูล Pseudo (กำหนดที่อยู่ IP หลายแห่ง) ให้เวลาฉันค้นหาระบบของคุณ
Diblo Dk

นอกจากนี้คุณยังสามารถดูที่นี่linode.com/wiki/index.php/Configure_Static_IPs#OpenSUSEมันอาจจะเป็นที่คุณสามารถดูว่าจะทำอย่างไรกับ WLAN :)
Diblo Dk

ปัญหาคือคุณจะได้รับความขัดแย้ง IP *
Diblo Dk

1

สร้างอินเตอร์เฟสเสมือน

สร้างไฟล์ ifcfg-wlan0: 0

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

เพิ่มในไฟล์ 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

คำสั่งเพื่อเปิดใช้งานอินเตอร์เฟส

ifup wlan0:0

หมายเหตุ: การปิดอินเทอร์เฟซหลักก็เป็นการปิดชื่อแทนทั้งหมดด้วย นามแฝงสามารถปิดได้อย่างอิสระจากอินเทอร์เฟซอื่น ๆ

ตรวจสอบว่าอินเตอร์เฟสใช้งานได้หรือไม่

ifconfig

มันจะให้ผลลัพธ์ที่คล้ายกัน

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-internet/461132-os-11-4-network-manager-default-connection-can-handle-virtual-interfaces.html# post2350426


แม้สิ่งนี้ไม่ทำงานกับ hostapd มันให้ข้อผิดพลาดเดียวกัน: ไม่สามารถเปิดไฟล์ / sys / class / net / dummy0 / phy80211 / ชื่อ: ไม่มีไฟล์หรือไดเรกทอรีที่มี dummy0 และไม่สามารถเปิดไฟล์ / sys / class / net / wlan0: 0 / phy80211 / ชื่อ: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าวด้วยส่วนต่อประสานเสมือน ขอบคุณสำหรับความช่วยเหลือของคุณ :) ปัญหาเกิดจากที่อยู่ mac ฉันตอบคำถามของคุณแล้วและฉันกำลังโพสต์โซลูชันให้ผู้อื่น
adityap174
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.