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.