web-dev-qa-db-ja.com

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

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

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

インターネットに接続されているのと同じインターフェースでホットスポットを作成する方法はありますか(Windowsでソフトウェアconnectifyが行うように)?仮想インターフェイス(airmon-ngがwifiを監視するために作成するものなど)を作成し、それを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)接続デバイスにIPアドレスを提供するためにdnsmasqを開始します

このすべてが動作します。デバイスはこのネットワークに接続して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アドレスを取得する方法を理解できますか?

14
adityap174

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

これですべてが正常に動作しています。

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マスカレードを実行します。
9
adityap174

ダミーネットワークをセットアップする

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

そして、「dummy」をMODULES_LOADED_ON_BOOTに追加します。

MODULES_LOADED_ON_BOOT = "..."

例MODULES_LOADED_ON_BOOT = "vmcpダミー"。

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

2
Diblo Dk

仮想インターフェースを作成する

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

1
Diblo Dk