Membuat titik Akses WiFi pada satu antarmuka di Linux

14

Saya mencoba membuat hotspot WiFi atau titik akses di laptop Linux saya. Saya menggunakan Opensuse Kde 12.3.

Saya menemukan sebuah perangkat lunak bernama hostapdyang memungkinkan Anda membuat hotspot tetapi membutuhkan dua antarmuka. Satu terhubung ke internet dan yang lainnya di mana Anda ingin membuat jalur akses ( tutorial di sini ). Masalah yang saya miliki adalah bahwa saya tidak memiliki koneksi Ethernet. The wlanantarmuka yang digunakan untuk terhubung ke internet.

Apakah ada cara untuk membuat hotspot pada antarmuka yang sama yang terhubung ke Internet (seperti yang dilakukan perangkat lunak pada Windows)? Saya sedang berpikir untuk membuat antarmuka virtual (seperti yang airmon-ngdiciptakan untuk memonitor wifi) dan menggunakannya sebagai antarmuka kedua. Apakah ini mungkin?

MEMPERBARUI

Inilah yang dapat saya lakukan sampai sekarang:

1) Buat 2 antarmuka (satu sebagai stasiun dan lainnya sebagai titik akses)

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

2) Berikan mereka ID Mac yang terpisah

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

3) mulai hostapd pada antarmuka myAcc

4) mulai dnsmasq untuk memberikan alamat ip ke perangkat penghubung

Semua ini berhasil. Perangkat dapat terhubung ke jaringan ini dan mendapatkan Alamat Ip. Langkah selanjutnya adalah menyediakan ip masquerading

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

Tetapi antarmuka mySta sekarang gagal terhubung ke internet. Ia bisa mendapatkan Essid tetapi tidak bisa mendapatkan alamat ip.

Perintah dhclient mySta tidak menampilkan pesan apa pun dan setelah beberapa waktu memberikan kesalahan:

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

Bisakah seseorang mencari cara untuk mendapatkan alamat ip?

adityap174
sumber
Sudahkah Anda mencoba dengan "Dummy net driver support" (driver kernel) sebagai modul. Saya tidak dapat membantu Anda lebih dari itu karena saya tidak tahu openSUSE. Tapi saya bisa melihat bahwa ada kesalahan yang dilaporkan dari versi 11 dan lebih tinggi ketika dibangun dengan Yast. Jadi berhati-hatilah.
Diblo Dk
Tentu saja saya dapat membantu Anda, jika itu dapat dilakukan dengan cara yang sama (konfigurasi Kernel, pengaturan jaringan) seperti di Gentoo, Debian atau Ubuntu.
Diblo Dk
Bantuan apa pun akan dihargai. Saya tidak menggunakan alat Yast seperti itu. Konfigurasi berasal dari tutorial di Ubuntu. Sistem file dan konfigurasinya hampir sama.
adityap174
Apa versi kernel Anda?
Diblo Dk
Kernel: x86_64 Linux 3.7.10-1.16-desktop
adityap174

Jawaban:

9

Bagi siapa pun yang menghadapi masalah ini, masalahnya adalah dengan alamat mac. Saya memulai antarmuka titik akses, memberinya alamat mac. Kemudian setelah menjalankan hostapd, menambahkan antarmuka stasiun, memberinya alamat mac yang berbeda dan menghubungkannya ke jaringan dan memberikan alamat ip stasiun sebagai gateway default klien melalui dnsmasq.

Sekarang semuanya berfungsi dengan baik.

Seperti yang ditunjukkan oleh Diblo Dk, Anda bisa menggunakan antarmuka virtual dan dummy tetapi hostapd tidak bekerja dengan mereka. Saya tidak tahu kenapa.

Berikut langkah-langkahnya:

  1. matikan layanan manajer jaringan karena mengganggu antarmuka virtual
  2. turunkan wlan0 menggunakan ifconfig wlan0 down
  3. buat antarmuka titik akses menggunakan perintah iw (ketik __ap), berikan alamat mac dan ip yang berbeda
  4. nyalakan hostapd di antarmuka akses ini
  5. gunakan dnsmasq untuk menetapkan klien yang terhubung pada antarmuka ini, alamat ip dan berikan gateway default sebagai ip antarmuka stasiun yang akan dibuat
  6. nyalakan dnsmasq di antarmuka akses. Sekarang klien akan dapat terhubung ke titik akses dan mendapatkan alamat ip.
  7. buat antarmuka baru (ketik stasiun) tetapkan alamat mac yang terpisah dan hubungkan ke jaringan dengan menetapkan essid dan gunakan dhclient untuk mendapatkan alamat ip.
  8. jika perlu lakukan ip masquerading melalui perintah iptables
adityap174
sumber
terus terang, WTF hostapd :)
Diblo Dk
Dapatkah Anda memperbarui jawaban Anda dengan langkah-langkah tepat yang Anda buat. Ini jelas merupakan jawaban yang ingin saya simpan.
Diblo Dk
diperbarui :) ingin lebih jelasnya?
adityap174
Cara keren untuk menyelesaikan masalah :)
Diblo Dk
Apa dongle / chipset yang Anda gunakan?
Alvin
2

Siapkan jaringan boneka

1 Buka konsol

su -

2 Lihat apakah Anda memiliki driver dummy

modprobe -l | grep /net/dummy.ko

(!) Jika Anda tidak memiliki driver dummy, buka " Buat modul kernel ".

3 Muat driver dummy

modprobe dummy

(!) Jangan menambahkannya ke startup jika gagal.

4 Uji dummy0 dengan memasangnya

ifconfig dummy0 10.246.75.1 netmask 255.255.255.0 broadcast 10.246.75.255 up

ifconfig

Ini akan memberi Anda output yang sama.

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 Tambahkan driver dummy ke startup

Edit file kernel sistem.

nano /etc/sysconfig/kernel

dan tambahkan " dummy " ke MODULES_LOADED_ON_BOOT.

MODULES_LOADED_ON_BOOT = "..."

Ex. MODULES_LOADED_ON_BOOT = "vmcp dummy".

6 Konfigurasikan pengaturan jaringan untuk dummy0

Buat file ifcfg-dummy0.

nano /etc/sysconfig/network/ifcfg-dummy0

Tambahkan ke file 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



Buat modul kernel

1 Pertama-tama instal hal-hal yang perlu

Buka YaST.

Arahkan ke Software-> Software Management.

Kutu:

Development 

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

2 Kembali ke konsol dan navigasikan ke sumber kernel

cd /usr/src/linux

3 Impor konfigurasi kernel saat ini

zcat /proc/config.gz > .config

4 Buka menuconfig kernel

make menuconfig

5 Tambahkan dukungan driver Dummy net

Arahkan ke Device Drivers->Network device support

* Network core driver support
    M Dummy net driver support

(!) Jika Anda memiliki tanda bintang di sebelah "Dukungan driver inti jaringan" Anda dapat melewati langkah 7 dan 9.

6 Kompilasi kernel

make -j(n+1)

Di mana (n +1) = jumlah core CPU ditambah satu yang digunakan untuk mempercepat kompilasi. Untuk empat core, gunakan make -j5.

7 Instal kernel baru

make install

8 Pasang modul

make modules_install

9 Muat kernel baru

reboot



Mendefinisikan VIPA (Bagian tentang memuat modul dan ifcfg-dummy0): http://wiki.linuxvm.org/wiki/Defining_a_VIPA
Mengkonfigurasi IP Statis: https://www.linode.com/wiki/index.php/Configure_Static_IPs
openSUSE 12.3 dan Menginstal Versi Kernel Linux Baru dari kernel.org: http://forums.opensuse.org/blogs/jdmcdaniel3/opensuse-installing-new-linux-kernel-versions-134/
OpenSUSE 11.2 - Cara mengompilasi Kernel untuk Pemula : http://linuxtweaking.blogspot.dk/2010/04/opensuse-112-how-to-compile-kernel-for.html

Diblo Dk
sumber
Terima kasih atas penjelasan terincinya. Saya mencoba metode ini. Saya dapat membuat antarmuka dummy0 dan mulai saat boot. Tetapi bagaimana Anda membuatnya menjadi antarmuka nirkabel? iwconfig memberi: dummy0 tanpa ekstensi nirkabel. hostapd tidak berfungsi dengan ini. Ini memberikan kesalahan: inisialisasi driver nl80211 gagal
adityap174
Ya, masalahnya adalah Anda memiliki konflik IP. Tapi itu bisa dilakukan dengan modul Pseudo (Tetapkan beberapa alamat IP). Beri saya waktu untuk mencarinya di sistem Anda.
Diblo Dk
Anda juga dapat melihat di sini linode.com/wiki/index.php/Configure_Static_IPs#OpenSUSE Bisa jadi Anda bisa melihat bagaimana hubungannya dengan wlan :)
Diblo Dk
, masalahnya adalah Anda akan mendapatkan konflik IP *
Diblo Dk
1

Buat antarmuka virtual

Buat file ifcfg-wlan0: 0

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

Tambahkan ke file 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

Perintah untuk mengaktifkan antarmuka

ifup wlan0:0

Catatan: Mematikan antarmuka utama juga mematikan semua aliasnya juga. Alias ​​dapat dimatikan secara terpisah dari antarmuka lain.

Periksa apakah antarmuka berfungsi

ifconfig

Ini akan memberi Anda output yang sama.

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

Diblo Dk
sumber
bahkan ini tidak bekerja dengan hostapd. Ini memberikan kesalahan yang sama: Tidak dapat membuka file / sys / class / net / dummy0 / phy80211 / name: Tidak ada file atau direktori dengan dummy0 dan Tidak dapat membuka file / sys / class / net / wlan0: 0 / phy80211 / name: Tidak ada file atau direktori dengan antarmuka virtual. Terima kasih atas seluruh bantuan Anda. :) Masalahnya adalah dengan alamat mac. Saya telah meningkatkan jawaban Anda dan saya memposting solusi untuk orang lain.
adityap174