web-dev-qa-db-ja.com

UbuntuでWifiからイーサネットへのブリッジが機能しない

Windowsを実行しているとき、ラップトップのイーサネット接続を介してwifi接続をブリッジすることができたので、イーサネットのみのデバイスの範囲が私のwifi(Raspberry Pi、Xboxなど)にピギーバックできました。私は今Ubuntu内で同じことをしようとしています、すなわちセットアップは次のようになります:

ワイヤレスルーター--->ノートパソコンのWifi --->イーサネットへのブリッジ--->イーサネットポートにインターネットを接続する必要があるデバイス

今私はbrctlを使用してUbuntuでこれを機能させるようにしています

以下のコマンドを使用しました:

Sudo brctl addif br0 eth0 wlan0

そして、次のエラーを取得します。

can't add wlan0 to bridge br0: Operation not supported

私がWindowsでできることはLinuxでは簡単にできないと信じられないので、誰かが助けてくれることを望んでいます。

さらに情報が必要な場合はお知らせください。ありがとう

23
Zac Powell

これはできません。 WiFiクライアント接続をブリッジすることはできません。可能であれば、WDSは必要ありません。ブリッジするだけです。

問題は非常に単純です。アクセスポイントは、何かがその送信を許可しない限り、WiFi仕様でWiFiネットワークを介してトラフィックをブロードキャストすることを禁止されています。これは主に、WiFiネットワークが非常に遅く、セキュリティがあるとしても不十分だった時代の遺物です。

ブリッジには、アクセスポイントへのクライアント接続のみがあります。これは、アクセスポイントがブリッジに向かうトラフィックを送信することを許可するだけです。ブリッジに接続されているどのマシンもアクセスポイントのクライアントではないため、アクセスポイントはWiFiリンクを介してそれらにバインドされたトラフィックを送信する理由がありません。したがって、そうはなりません。

残念ながら、WiFiはイーサネットのように十分であり、イーサネットのように動作することを期待するのは簡単です。しかし、それはあなたを噛むのに十分異なるだけです。

WDS設定は、アクセスポイントがクライアントにバインドされていないトラフィックを送信するための特定の認証です。両端がWDSをサポートしている場合は、両端にブリッジエンドポイントのアドレスと宛先のアドレスが含まれ、アクセスポイントにトラフィックの送信を許可します。

これを行うには、ブリッジ以外のものを使用する必要があります。たとえば、NATによるルーティング。 WiFiリンクの両端でサポートされている場合は、4アドレスモードを使用することもできます。

10
David Schwartz

LXCでも同様の問題がありましたが、wifiデバイスのブリッジの問題を回避しました。まず、コンピュータに予備のイーサネットデバイスが必要です。秘訣は、イーサネットデバイスからwifiへのルートを作成することです。

サーバーファイルで、/ etc/network/interfacesを変更し、仮想ホスト用の未使用のネットワーク、つまり10.0.0.0を選択します。 1つのIPを予備のイーサネットインターフェイスに割り当てます。ここではeth0で、次のようにブリッジします。

auto br0
iface br0 inet static
    address 10.0.0.1
    netmask 255.255.255.0
    bridge_ports eth0
    bridge_fd 0
    bridge_maxwait 0

完了したら、前にここでKostyantynが回答したMASQUERADEの方法を使用できます。これらはrc.local内か、起動時または仮想ドメインを開始する前に実行する必要があるスクリプト内にある必要があります。

# iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
# echo "1" > /proc/sys/net/ipv4/ip_forward

仮想サーバーで、/ etc/network/interfacesに静的IPを構成します。ネットワーク10.0.0.0を使用しています。2から使用を開始します。仮想ホストをさらに作成すると、おそらく3を使用します。多くの場合、それらのためのDHCPサーバーのインストールを検討できます。 .1は、以前に構成されたゲートウェイです。

auto eth0
iface eth0 inet static
    address 10.0.0.2
    netmask 255.255.255.0
    broadcast 10.0.0.255
    gateway 10.0.0.1

/etc/resolv.confで、DNSサーバーも構成します。私のものはネットワークルーターです。

nameserver 192.168.1.1

お役に立てれば

3
Francesc Guasch

私はあなたが本当に必要とするものはブリッジではなく次のいずれかだと思います:

または

  • MASQUERADE(WLANに動的IPがある場合-つまり、IP変更)

1)次の内容でforwarding_enable_file.shを作成します。

#!/bin/bash
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

2)ファイルを実行します。

Sudo ./forwarding_enable_file.sh

3)ホストの残りの部分で、Ubuntuボックスをゲートウェイとして指定します。注:一部のボックスでLinuxも実行している場合は、次のコマンドで実行できます。

Sudo ip route add default via ubuntu-ip

ここで、ubuntu-ipは、ubuntu-box IPアドレス、つまり192.168.1.10で置き換える必要があります

4)一部のIP、つまり他のホストからの8.8.8.8へのpingを試行します。

ping 8.8.8.8

5)一部のドメインにpingを送信してDNS設定を確認します。

ping slivkoed.ru

6)ステップ4)が機能し、5)が機能しない場合は、DNS設定に問題があります。このような場合は、root権限で実行します。

# echo "nameserver 8.8.8.8" > /etc/resolv.conf

手順5)をもう一度実行します。

Resolv.confの詳細については、 ここ を参照してください。

0
Kostyantyn