Linux의 단일 인터페이스에서 WiFi 액세스 포인트 작성


14

Linux 랩톱에서 WiFi 핫스팟 또는 액세스 지점을 만들려고합니다. Opensuse Kde 12.3을 사용하고 있습니다.

hostapd핫스팟을 만들 수 있는 소프트웨어를 찾았 지만 두 개의 인터페이스가 필요합니다. 하나는 인터넷에 연결되어 있고 다른 하나는 액세스 포인트를 만들려고합니다 ( 자습서 참조 ). 내가 가진 문제는 이더넷 연결이 없다는 것입니다. wlan인터페이스는 인터넷에 연결하는 데 사용하고있다.

인터넷에 연결된 동일한 인터페이스에서 핫스팟을 만드는 방법이 있습니까 (예 : 소프트웨어 connectify가 Windows에서 수행하는 것처럼)? 가상 인터페이스 ( airmon-ngWiFi를 모니터링하기 위해 생성하는 것과 같은 )를 만들고 두 번째 인터페이스로 사용하려고 생각했습니다. 이게 가능해?

최신 정보

지금까지 내가 할 수 있었던 일은 다음과 같습니다.

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) myAcc 인터페이스에서 hostapd를 시작하십시오

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 주소를 얻는 방법을 알아낼 수 있습니까?


"더미 넷 드라이버 지원"(커널 드라이버)을 모듈로 사용해 보셨습니까? 나는 openSUSE를 모르기 때문에 그 이상을 도울 수 없습니다. 그러나 Yast으로 빌드 할 때 버전 11 이상에서 오류 가보고되는 것을 볼 수 있습니다. 그러니 조심해.
— Diblo Dk

젠투, 데비안 또는 우분투에서와 같은 방식으로 (커널 설정, 네트워크 설정) 할 수 있다면 물론 당신을 도울 수 있습니다.
— Diblo Dk

도움을 주시면 감사하겠습니다. Yast 도구를 사용하지 않습니다. 구성은 Ubuntu에 대한 자습서에서 얻은 것입니다. 파일 시스템과 구성은 거의 동일합니다.
— adityap174

커널 버전은 무엇입니까?
— Diblo Dk

커널 : x86_64 Linux 3.7.10-1.16-desktop
— adityap174

답변:


9

이 문제에 직면 한 다른 사람에게는 문제가 mac 주소와 관련이 있습니다. 액세스 포인트 인터페이스를 시작하고 Mac 주소를 지정했습니다. 그런 다음 hostapd를 실행 한 후 스테이션 인터페이스를 추가하고 다른 mac 주소를 네트워크에 연결 한 다음 dnsmasq를 통해 스테이션의 IP 주소를 클라이언트의 기본 게이트웨이로 지정했습니다.

이제 모든 것이 제대로 작동합니다.

Diblo Dk가 지적했듯이 가상 및 더미 인터페이스를 사용할 수는 있지만 hostapd는 작동하지 않습니다. 이유를 모르겠습니다.

단계는 다음과 같습니다.

  1. 가상 인터페이스를 방해 할 때 네트워크 관리자 서비스를 끕니다.
  2. ifconfig wlan0을 사용하여 wlan0을 종료하십시오.
  3. iw 명령 (유형 __ap)을 사용하여 액세스 포인트 인터페이스 작성, 다른 mac 및 ip 주소 지정
  4. 이 액세스 인터페이스에서 hostapd를 켜십시오
  5. dnsmasq를 사용하여이 인터페이스, IP 주소에서 연결 클라이언트를 지정하고 작성 될 스테이션 인터페이스의 IP로 기본 게이트웨이를 제공하십시오.
  6. 액세스 인터페이스에서 dnsmasq를 켜십시오. 이제 클라이언트는 액세스 포인트에 연결하고 IP 주소를 얻을 수 있습니다.
  7. 새 인터페이스 (유형 스테이션) 만들기 별도의 mac 주소를 할당하고 essid를 할당하고 dhclient를 사용하여 IP 주소를 가져와 네트워크에 연결합니다.
  8. 필요한 경우 iptables 명령을 통해 ip 마스 쿼 레이 딩을 수행하십시오.

WTF hostapd :)
— Diblo Dk

정확한 단계로 답변을 업데이트 할 수 있습니까? 이것은 확실히 내가 저장하고 싶은 대답입니다.
— Diblo Dk

업데이트 :) 자세한 내용을 원하십니까?
— adityap174

문제를 해결하는 멋진 방법 :)
— Diblo Dk

어떤 동글 / 칩셋을 사용하고 있습니까?
— Alvin

2

더미 네트워크 설정

1 콘솔을 엽니 다

su -

2 더미 드라이버가 있는지 확인

modprobe -l | grep /net/dummy.ko

(!) 더미 드라이버가 없으면 " 커널 모듈 만들기 "로 이동 하십시오 .

3로드 더미 드라이버

modprobe dummy

(!) 실패하면 시작에 추가하지 마십시오.

4 더미 0을 올려서 테스트합니다.

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 에 " dummy "를 추가하십시오 .

MODULES_LOADED_ON_BOOT = "..."

전의. MODULES_LOADED_ON_BOOT = "vmcp dummy".

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를 엽니 다.

Software->로 이동하십시오 Software 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 더미 네트워크 드라이버 지원 추가

Device Drivers->로 이동Network device support

* Network core driver support
    M Dummy net driver support

(!) "네트워크 코어 드라이버 지원"옆에 별표가 있으면 7 단계와 9 단계를 건너 뛸 수 있습니다.

6 커널 컴파일

make -j(n+1)

여기서 (n + 1) = CPU 코어 수에 컴파일 속도를 높이는 데 사용됩니다. 4 개의 코어에는 make -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에서 새 Linux 커널 버전 설치 : 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 충돌이 있다는 것입니다. 그러나 의사 모듈 (여러 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# 포스트 2350426


심지어 이것은 hostapd와 함께 작동하지 않았습니다. 같은 오류가 발생했습니다 : / sys / class / net / dummy0 / phy80211 / name 파일을 열 수 없습니다 : dummy0이있는 파일이나 디렉토리가 없으며 / sys / class / net / wlan0 : 0 / phy80211 / name 파일을 열 수 없습니다 : 가상 인터페이스가있는 파일 또는 디렉토리가 없습니다. 모든 도움을 주셔서 감사합니다. :) 문제는 mac 주소에있었습니다. 귀하의 답변을 옹호했으며 다른 사람들을 위해 솔루션을 게시하고 있습니다.
— adityap174
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.