Linuxマシンは、単一の物理WLANインターフェイスを使用して、ワイヤレスクライアントとアクセスポイントの両方として同時に機能できますか?


12

物理WLANインターフェイスが1つしかない場合、既存のアクセスポイントのクライアントになり、同時に他のクライアントのアクセスポイントとしても機能するようにできるハッカーはありますか?

既存の802.11g ADSLルーターがあり、802.11nを搭載するHTPCを構築します。私のラップトップにも802.11nが搭載されていますが、APがサポートしているため、現時点では54Mbpsでしか接続できません。HTPCをADSLルーターのクライアントにしたいのですが、ラップトップをHTPCのクライアントにしたいので、ファイルをコピーするのが速くなります。

可能?

編集:イーサネットを使用してHTPCをADSLルーターに接続し、ルーターでwifiを無効にすることができますが、そのオプションは無視してください。:-)

回答:


9

私はこれまで個人的にこれを行ったことがありませんが、正しい方向に進むための情報を以下に示します。

プロトコルの観点からは、単一の無線をAPとクライアントSTAの両方として機能させることは間違いなく可能です。作成しているAPとクライアントとして参加しているAPが同じチャネル上にある場合、これは最適に機能します(またはほぼ必須です)。無線カードがサービス要求にチャネルを切り替え続ける必要があることは、フレームの損失とひどいパフォーマンスのレシピです。

ソフトウェア的には、それが可能になりつつあります。Linux上のいくつかの802.11カードドライバーは、VAP(仮想AP)の概念をサポートしています。これにより、1つのカードが同時に複数のAP(複数のSSID、BSSIDでさえも)として機能できるようになります。直感的には、VAPという用語は、仮想インターフェイスがAPモードであるかどうかに関係なく、同じ802.11カード上のあらゆる種類の仮想インターフェイスを意味するようになりました。したがって、これらのカード/ドライバーコンボでは、2つのVAPを作成できます-STAモードVAP

Atherosベースのカード用のMadWifiドライバーは、VAPをサポートするものです。802.11カードがAtherosチップセットを使用していて、正しいバージョンのMadWifiドライバーをインストールしている場合、STA + APの同時モード用にカードを次のように構成できる場合があります。

wlanconfig ath0 create wlandev wifi0 wlanmode sta
wlanconfig ath1 create wlandev wifi0 wlanmode ap

これらはすべてをセットアップするための完全な手順ではなく、開始するための試みであることに注意してください。

詳細については、「wifi vap」のようなものをGoogleで検索することをお勧めします。上記のコマンドをここからコピーしました

ああ、そしていくつかの神話の破綻:Atherosカードは、消費者向けのマシンでは珍しくありません。これらは、Broadcom、Marvell、Intel、およびRalinkとともに、802.11チップセットの主要なプレーヤーです。そして、私がMadWifi / Atherosの例を使用したからといって、同様のことができる他の主要なプレーヤーのチップ用のLinuxドライバーがないということではありません。また、これには802.11sは必要ありません。これを行うには802.11sを実行する必要があると言うのは、あるインターフェイスから別のインターフェイスにフレームを転送するためだけにスパニングツリープロトコルをサポートする必要があると言うようなものです。


入手したボードにはAtherosチップセットが搭載されているように見えるので、運が良かったかもしれません。コンポーネントの配布を待っているので、ビルドしてテストできます。
ThatGraemeGuy

MadWifiで遊ぶ機会はまだありません。正解なので受け入れます。この機能を提供するチップセット/ファミリーは他にないようです。
ThatGraemeGuy 2010

Spiff、私はAtherosチップとmadwifiを使用しており、VAPをstaに1つ、apに1つ設定しようとしています。apモードで複数のVAPを設定できますが、staで最初のVAPを設定してから、apで別のVAPを設定しようとすると、wlanconfig:ioctl:Input / output errorが発生します。これに対処する方法について何か考えがありますか?
sachinr 2013

1
@sachinr他の人の質問への3歳の回答に対するコメントだけでなく、全員に見えるように質問としてそれを質問してください。
2013

ここに私の質問を追加しました-superuser.com/questions/649742/…。見ていただけますか?ありがとう:)
sachinr 2013

4

nl80211ドライバーには、「管理対象」インターフェースモードと呼ばれるものがあります。次のように「iw」ユーティリティを使用して設定できます。

iw phy phy0インターフェースが管理するwlan1タイプを追加

この詳細については、https://wireless.wiki.kernel.org/en/users/documentation/iwを参照してください。Phy0は、/ sys / class / ieee80211 /にあるものを指します。

また、rPI3が同様の処理を行うことも確認しましたが、「__ ap」インターフェイスモードがより陰になっています。これにより、ユーザーはAPモードでのみ実行される2番目のインターフェースを作成し、初期インターフェースをクライアントモードとして使用します。

どのようにしてそれを実現したとしても(ドライバーは明らかにそれをサポートする必要があります)、2つのインターフェースが(同じ物理デバイスから)必要になります。1つのインターフェイスはwpa_supplicantをクライアントモードとして単純に実行でき、もう1つのインターフェイス(APモード)は通常、hostapdを使用してアクセスポイントを再生します。

[編集:]

iwツールのソースコードは、shady __apモードについて多くを明らかにしています。

..
} else if (strcmp(tpstr, "__ap") == 0) {
    *type = NL80211_IFTYPE_AP;
    return 0;
} else if (strcmp(tpstr, "__ap_vlan") == 0) {
    *type = NL80211_IFTYPE_AP_VLAN;
    return 0;
} else if (strcmp(tpstr, "wds") == 0) {
    *type = NL80211_IFTYPE_WDS;
    return 0;
} else if (strcmp(tpstr, "managed") == 0 ||
       strcmp(tpstr, "mgd") == 0 ||
       strcmp(tpstr, "station") == 0) {
    *type = NL80211_IFTYPE_STATION;
    return 0;
} 
..

__apモードは、ネットリンクタイプNL80211_IFTYPE_APに変換されます。私もこれをテストしましたが、これは問題なく動作します。奇妙なことに、カーネルのドキュメンテーションwikiはそれに言及していません。


4

ソースと詳細:

https://wiki.archlinux.org/index.php/Software_access_point

簡潔な答え

sudo iw dev wlan0 interface add wlan0_ap type managed
sudo create_ap wlan0_ap wlan0 createap mypassword

Wi-FiデバイスはAPモードをサポートする必要があります

AP動作モードをサポートするnl80211互換のワイヤレスデバイスが必要です。これは、iw listコマンドを実行して確認できます。サポートされているインターフェイスモードブロックの下に、APがリストされているはずです。

...
    Supported interface modes:
         * IBSS
         * managed
         * AP
         * AP/VLAN
         * WDS
         * monitor
         * mesh point
...

単一のWi-Fiデバイスを備えたワイヤレスクライアントとソフトウェアAP

ソフトウェアAPの作成は、独自のネットワーク接続(イーサネット、ワイヤレスなど)から独立しています。多くのワイヤレスデバイスは、APとワイヤレス "クライアント"の両方として同時に操作をサポートしています。この機能を使用すると、単一のワイヤレスデバイスを使用して、既存のネットワークの「ワイヤレスリピーター」として機能するソフトウェアAPを作成できます。この機能は、iw listの出力の次のセクションにリストされています。

有効なインターフェースの組み合わせ:

$ iw list
...
valid interface combinations:
     * #{ managed } <= 1, #{ AP, P2P-client, P2P-GO } <= 1, #{ P2P-device } <= 1,
       total <= 3, #channels <= 2
...

制約#channels <= 1は、ソフトウェアAPがWi-Fiクライアント接続と同じチャネルで動作する必要があることを意味します。以下のhostapd.confのチャネル設定を参照してください。

機能/機能を使用したい場合、おそらくイーサネット接続が利用できないため、それを使用するために2つの別個の仮想インターフェースを作成する必要があります。物理デバイスwlan0の仮想インターフェイスは、次のように作成できます。一意のMACアドレスを持つ仮想インターフェイスは、ネットワーク接続(wlan0_sta)自体と、ソフトウェアAP / hostapd「ワイヤレスリピーター」用に作成されます。

# iw dev wlan0 interface add wlan0_sta type managed 
# iw dev wlan0 interface add wlan0_ap  type managed

構成

アクセスポイントの設定は、次の2つの主要部分で構成されています。

  1. ワイヤレスクライアントがコンピューターのソフトウェアアクセスポイントにアソシエートしてIPパケットを交換できるように、Wi-Fiリンクレイヤーを設定します。
  2. コンピューターのネットワーク構成をセットアップして、自身のインターネット接続とワイヤレスクライアントの間でIPパケットを適切に中継するようにします。

ツール

create_ap

create_apパッケージは、インターネット共有用のブリッジまたはNATアクセスポイントを作成できるスクリプトを提供します。hostapd、dnsmasq、iptablesを組み合わせて、アクセスポイントを適切に機能させます。NAT処理された仮想ネットワークを作成するための基本的な構文は次のとおりです。

# create_ap wlan0 eth0 MyAccessPoint MyPassPhrase

すばらしい回答、ありがとうございます!
Iman Akbari、

これは素晴らしい答えです。特にチャンネルの制約について少し
お話しし
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.