
Arch Linux では、eth0 (ブリッジ ルーターに接続) で wlan0 から受信した接続を共有したいのですが、チュートリアルを読みましたが、他のユーザーほどコマンドに精通しておらず、完全に理解していません。
答え1
アップデート
ワイヤレス(クライアント、別名ステーションモード)と有線インターフェース間のブリッジは不可能です。linux-ath5k-develのこのスレッドによると。
NATの設定
代わりに NAT を設定する必要があります。
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
IPの割り当て
次に、自分に IP アドレスを割り当てる必要があります。
ifconfig eth0 10.0.0.1 netmask 255.255.255.0 up
DHCPデーモンをインストールする
DHCP サーバーをインストールし、その設定ファイル (/etc/dhcpd.conf または同様のファイル) に次のテキストを追加します。
subnet 10.0.0.0 netmask 255.255.255.0 {
range 10.0.0.100 10.0.0.120;
option routers 10.0.0.1;
option domain-name-servers the-ip-address-you-have-in-etc-resolv.conf;
}
dhcpdを起動する
次にそれを起動します /etc/init.d/dhcpd start
以上です!
動作しないブリッジ設定に興味がある場合にのみ以下をお読みください
brctl addbr mybridge
brctl addif mybridge eth0
brctl addif mybridge wlan0
まずブリッジインターフェースを作成し、任意の名前を選択しますマイブリッジ次に、それにインターフェースを追加します。
新しい IP アドレスを要求する必要があります (これは、ブリッジ デバイス自体の有効な IP を取得する場合にのみ必要です)。
dhclient -d mybridge
答え2
にブリッジWi-Fiインターフェースiw
ツールを使用できる4addrを有効にする同じく:
# iw dev <wifiInterface> set 4addr on
例:
# brctl addif <bridgename> <wifiInterface>
can't add <wifiInterface> to bridge <bridgename>: Operation not supported
# iw dev <wifiInterface> set 4addr on
# brctl addif <bridgename> <wifiInterface>
これで動作するはずです。次のコマンドを使用してブリッジを表示できます。
# brctl show
答え3
ブリッジ wlan と 4addr:
wlan0 のブリッジは面倒です。通常、ブリッジ インターフェイスに追加することはできません (brctl は「操作は許可されていません」を返します)。また、VirtualBox の「ブリッジ」フィルターを使用すると、ARP と DHCP の競合がひどくなります。この原因は、802.11 フレームにはデフォルトで 3 つのアドレス (両方のワイヤレス デバイス (ラップトップと AP) の MAC アドレスと、最終受信者 (イーサネットの場合) の MAC アドレス) しか含まれていないことです。発信元は常に 1 つだけであると想定されます。
802.11 は 4 番目の発信元の MAC アドレスを伝送することができ、これはリピーターによって WDS モードで使用されます。この機能は Linux でも iw を使用して有効にすることができ、このモードを有効にすると、wlan0 をブリッジ インターフェイスで使用したり、VirtualBox ブリッジ ネットワークで使用したりできるようになります。
iw dev wlan0 set 4addr on
ただし、4addr を有効にすると、AP によって完全に無視される可能性があります。関連付けは成功しますが、すべてのデータ フレームが消えてしまいます。これはセキュリティ上の理由による可能性があります (ソース MAC アドレスを偽装するのは非常に難しいためです。そうです)。私のルーター (OpenRG を実行) では、ワイヤレス AP インターフェイスの "WDS" モードを有効にし、ラップトップの MAC アドレスに制限された WDS デバイスを追加して、それを LAN ブリッジに追加する必要があります。これで、4addr パケットが機能します。
ただし、これには別の問題があります。ルーターはラップトップからの 3 アドレス パケットを拒否するようになり、これはかなり不便です (WLAN ネットワークが変更されるたびに 4addr を切り替える必要があります)。回避策は、ラップトップに、同じデバイスにリンクされているが MAC アドレスが異なる 2 番目のワイヤレス インターフェイスを追加することです。まず、以前の構成を元に戻します。
iw dev wlan0 set 4addr off
次に、異なる MAC アドレスを持つ 2 番目のインターフェース (名前は任意に選択) を追加します。
iw dev wlan0 interface add wds.wlan0 type managed 4addr on
ip link set dev wds.wlan0 addr <addr>
ip link set dev wds.wlan0 up
ここでは、ルータに設定されている WDS デバイス アドレスと一致する必要があります。それ以外は、任意の有効な MAC アドレスにすることができます。wlan0 の元の MAC は、「通常の」使用のためにそのまま残ります。
wlan0 と wds.wlan0 の両方を同時に使用することは可能ですが、異なる AP ではなく、同じ AP への接続を 2 回のみテストしました。少なくとも同じチャネル上にある必要があると思います。
VirtualBox は WiFi を「問題なく」ブリッジできるのに、なぜこれを使うのかと尋ねる人もいます。答えは、VirtualBox は仮想マシンの MAC アドレスを送信せず、MAC 層でも NAT を実行するからです。 – 2014-08-22
直接 WLAN ブリッジ
特定の状況下では、wlan_kabel を使用することもできます。これはパケット ソケットを使用して、wlan* デバイスをイーサネット デバイスと直接ブリッジします。ただし、wlan_kabel では一度に 1 つの MAC しかブリッジできません。wlan デバイスの元の MAC のみが使用されるため、アクセス ポイントによってブロックされるという欠点はありません。この場合、wlan0 は 1 つの VM でのみ使用でき、ホストでも使用できないことを意味します。wlan_kabelはこちらこれは、macvlans解決。
ipvlan によるブリッジ
IP VLANにはブリッジの制限がなく、ネットワークをブリッジするために使用できます。使用方法の詳細こちらからご覧いただけます
仮面舞踏会の代替
Linux ルーティングは、ブリッジを実現するために iptables-masquerade と ip_forward の代わりに使用できますが、前述のように、これには ip_forward を有効にする必要があり、Linux がルーターのように動作するようになります。セキュリティ上の懸念が生じる可能性があるため、慎重に設定する必要があります。
# bridge setup
brctl addbr br0
ifconfig br0 10.10.20.1/24 up
# enable ipv4 forwarding
echo "1" > /proc/sys/net/ipv4/ip_forward
# netfilter cleanup
iptables --flush
iptables -t nat -F
iptables -X
iptables -Z
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
# netfilter network address translation
iptables -t nat -A POSTROUTING -o wlan0 -s 10.10.20.0/24 -j MASQUERADE
インターフェースbr0はwlan0ネットワークにアクセスできるようになります
重要かつ関連のある
また、非常に重要なことですが、次のような廃止されたコマンドは使用しないでください。ifconfig、brctlなどです。iproute2スイートには、仮想インターフェースの設定(以前はopenvpnを使用する必要がありました)やブリッジの作成など、これらすべてのコマンドが含まれています。ipでブリッジを設定する方法がわからない場合は、こちらをご覧ください。
ip tuntap add tap0 mode tap user root
ip link set tap0 up
ip link add br0 type bridge
ip link set tap0 master br0
ip link set eth0 master br0
ip addr add 10.173.10.1/24 dev br0
ip link set br0 up
このコマンド セットを使用して、tap0 という仮想インターフェイスを作成し、次に br0 というブリッジを作成し、eth0 と tap0 をブリッジにスレーブ化して、IP アドレス 10.173.10.1 を割り当て、すべてを起動します。インターフェイスを起動するための 3 つの個別のインスタンス (tap0、eth0、br0) が必要です。
これを機能させるための秘訣は proxy.arp を使用することです。これにより、PC (VM/Linux コンテナー/ネットワーク名前空間ではない) が代わりに ARP クエリに応答できるようになります。
つまり、ハードウェア インターフェイスと仮想インターフェイスの間で IPv4 転送を使用すると、物理インターフェイスであるかのように VM/LXC/NNS を LAN に接続できると考えられますが、これは正しくありません。LAN の動作を実際に可能にする、絶対に基本的な ARP トラフィックを忘れているのです。したがって、問題は、IPv4 トラフィックを正しく転送する場合、VM/LXC/NNS が動作するように ARP トラフィックも転送するにはどうすればよいかということです。その秘訣は proxy-arp を使用することです。
その完全な答えは菩提座禅のブログ、タイトルは「ワイヤレス カードのブリッジ」です。彼は、廃止されたパッケージ uml-utilities を使用して、tunctl コマンドで仮想インターフェイスを作成します。これは、uml-utilities を使用する唯一のコマンドなので、パッケージのダウンロードは無視して、上で書いたコマンドを使用して、好みに応じてコマンドを変更するだけで、tap インターフェイスまたは tun インターフェイスを作成できます。次に、LXC の veth ペアを作成し、tap0 と veth0 の間にブリッジを作成します。このブリッジは br0 と呼ばれ、Bohdi Zazen が説明した単純な tap0 インターフェイスの代わりに proxy-arp を使用する必要があります。
答え4
他の回答で説明されているように、4addr は、アダプタ/ドライバでサポートされている場合は確かに最善の方法ですが、すべてがサポートされているわけではありません。NAT は一部の用途には機能するかもしれませんが、LAN 上で双方向の適切な通信を確立することが困難になります (例: プリンタの接続、または NAT の反対側にある他の IoT デバイスへのアクセス)。ブロードキャスト/マルチキャストに依存するもの (例: 自動検出、Bonjour) は、NAT では失敗します。
代替案としては、ARPプロキシ(parproute)を使用する方法があります。https://wiki.debian.org/BridgeNetworkConnectionsProxyArp私はこれをプリンター用に Raspberry Pi 上にセットアップしましたが、うまく動作しました (post-up
最初に IP アドレスを取得できるようにコマンドに 10 秒間のスリープを追加しましたが、これは古い RPi の遅さに関係している可能性があります...)