Linuxの単一インターフェースでのWiFiアクセスポイントの作成


14

LinuxラップトップでWiFiホットスポットまたはアクセスポイントを作成しようとしています。OpenSuse Kde 12.3を使用しています。

hostapdホットスポットを作成できるソフトウェアが見つかりましたが、2つのインターフェイスが必要です。1つはインターネットに接続し、もう1つはアクセスポイントを作成します(チュートリアルはこちら)。私が抱えている問題は、イーサネット接続がないことです。wlanインタフェースは、インターネットに接続するために使用されています。

インターネットに接続されているのと同じインターフェース上にホットスポットを作成する方法はありますか(ソフトウェアconnectifyがWindowsで行うように)?仮想インターフェイス(airmon-ngwifiを監視するために作成するインターフェイスなど)を作成し、それを2番目のインターフェイスとして使用することを考えていました。これは可能ですか?

更新

これまで私ができることは次のとおりです。

1)2つのインターフェイスを作成します(1つはステーションとして、もう1つはアクセスポイントとして)

  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以降からエラーが報告されることがわかります。ので注意してください。
ディブロDk

Gentoo、Debian、またはUbuntuと同じ方法(カーネル設定、ネットワーク設定)で行うことができれば、もちろんあなたを助けることができます。
ディブロDk

任意の助けをいただければ幸いです。Yastツールは使用していません。構成は、Ubuntuのチュートリアルからのものでした。ファイルシステムと構成はほぼ同じです。
adityap174

カーネルのバージョンは何ですか?
ディブロDk

カーネル:x86_64 Linux 3.7.10-1.16-desktop
adityap174

回答:


9

この問題に直面している他の誰にとっても、問題はMACアドレスにありました。アクセスポイントインターフェイスを開始し、MACアドレスを指定しました。次に、hostapdを実行した後、ステーションインターフェイスを追加し、別のMACアドレスを与えてネットワークに接続し、ステーションのIPアドレスをdnsmasqを介してクライアントのデフォルトゲートウェイとして与えました。

これですべてが正常に機能するようになりました。

Diblo Dkが指摘したように、仮想インターフェイスとダミーインターフェイスを使用できますが、hostapdはそれらを使用していませんでした。理由はわかりません。

手順は次のとおりです。

  1. 仮想インターフェイスと干渉するため、ネットワークマネージャーサービスをオフにする
  2. ifconfig wlan0 downを使用して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 :)
ディブロDk

行った正確な手順で回答を更新できますか。これは間違いなく保存したい答えです。
ディブロDk

更新:)詳細が必要ですか?
adityap174

問題を回避するクールな方法:)
ディブロDk

どのドングル/チップセットを使用していましたか?
アルビン

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に「ダミー」を追加します。

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コアの数+コンパイルの高速化に使用される1つ。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の競合があることです。ただし、Pseudoモジュール(複数のIPアドレスの割り当て)で実行できます。お使いのシステムで検索する時間をください。
ディブロ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 / nameを開けませんでした:dummy0のようなファイルまたはディレクトリはなく、ファイル/ sys / class / net / wlan0:0 / phy80211 / nameを開けませんでした:そのようなファイルやディレクトリは仮想インターフェースにはありません。ご助力いただきありがとうございます。:)問題はMACアドレスにありました。私はあなたの答えを支持しました、そして、私は他の人のために解決策を投稿しています。
adityap174
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.