自宅には有線イーサネット接続 (ルーターに接続) と Wi-Fi カードを備えた PC があります。Wi-Fi はアクセス ポイント (hostapd) として設定されており、ネットワーク インターフェイスはブリッジされています。
auto enp0s10
iface enp0s10 inet manual
auto wlan0
allow-hotplug wlan0
iface wlan0 inet manual
auto br0
iface br0 inet dhcp
bridge_ports wlan0 enp0s10
netmask 255.255.255.0
iptables
選択されたトラフィックに影響を与えるいくつかのルールがあります。無線LAN0インターフェースのみで--physdev-in
セレクターを使用します。この設定は期待どおりに動作します。
私が今やろうとしているのは、デバイス上の選択されたプロセスを強制的にトラフィックを送信する 無線LAN0.
手がかりを追うここ私は試した:
> sudo ip netns add myNamespace
> sudo ip link set wlan0 netns myNamespace
RTNETLINK answers: Invalid argument
それは、私が知る限り、次のことを意味します。
- ブリッジされているため物理インターフェースを指定できない
netns
名前空間を使用して目的を達成できない
編集:以下の提案に従って重力上記のリードと組み合わせて、次のことを試しました。
> sudo ip netns show
> sudo ip netns add myNamespace
> sudo ip netns show
myNamespace
> sudo iw phy phy0 set name myNamespace
> sudo ip netns exec myNamespace ip link show
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
この段階では、フィ0または無線LAN0iw phy phy0 set name myNamespace
コマンドはエラーメッセージを返さないが、どちらのインターフェースもリストに追加されていないようだ。私の名前空間予想通り、インターフェースを起動しようとすると失敗します。
> sudo ip netns exec myNamespace ifconfig wlan0 192.168.0.10/24 up
SIOCSIFADDR: No such device
wlan0: ERROR while getting interface flags: No such device
wlan0: ERROR while getting interface flags: No such device
SIOCSIFNETMASK: No such device
> sudo ip netns exec myNamespace ifconfig phy0 192.168.0.10/24 up
SIOCSIFADDR: No such device
phy0: ERROR while getting interface flags: No such device
phy0: ERROR while getting interface flags: No such device
SIOCSIFNETMASK: No such device<br/>
繰り返しになりますが、ブリッジの設定によってこれが複雑になっているのではないかと思います。
プランBは、このタスク専用のユーザー/グループを作成することです(交通)を使用して、iptables
このユーザーのトラフィックをリダイレクトします無線LAN0もしそれがエンプ0s10ここで行き詰まってしまいます。
ルールは次のようになります。
iptables -t nat -A PREROUTING -m owner --gid-owner wlantraffic -m physdev ! --physdev-in wlan0 -j ???
例えば「グループからのトラフィック交通それしていない橋を経由して入った無線LAN0再ルーティングする必要があります無線LAN0「
パケットは標準的なインターネット トラフィックになります。
私の質問は次のとおりです。
- これは
PREROUTING
ルールですかFORWARD
? DROP
ブリッジのコンテキスト内でパケットを一致させる場合、パケットは次のインターフェースに「フォールスルー」するのでしょうか?- どのように指定すればいいですか?無線LAN0インターフェースをターゲットとして使用しますか?
答え1
目標を達成するためにntns名前空間を使用することはできません
ブリッジが問題である可能性がありますが、次の点に注意してください。
WLAN インターフェースは、ネットワーク名前空間に関しては少し変わっています。各アダプターには、phy (物理ハードウェアを表す) と netdev (ネットワーク インターフェースを表す) の 2 つのレイヤーがあります。
(その理由は、同じ物理層に複数の netdev (クライアント + AP など) を配置したり、デュアルバンド Wi-Fi アダプタで wlan0 と wlan1 を異なるネットワークで同時に動作させたりできるためです。興味がある場合は、iw phy
アダプタでサポートされている組み合わせを確認してください。)
Linuxには現在、全体phy デバイスは名前空間に移動する必要があります。個々の netdev は移動できません。これを行うには、次を使用しますiw
。
iw phy phy0 set netns myNamespace
これは PREROUTING ルールですか、それとも FORWARD ルールですか?
一般的に、すべては使用されるアクション (パラメータ) によって異なります。FORWARD でのみ意味を持つものもあれば、PREROUTING でのみ意味を持つものもあります。また、 でのみ機能するものもあれば、 でのみ-j
機能するものもあります。-t nat
-t mangle
ブリッジのコンテキスト内で一致するパケットをドロップした場合、パケットは次のインターフェイスに「フォールスルー」するのでしょうか?
いいえ。iptables ルールは IP 用であり、パケットがブリッジ層に到達する前に処理されます。パケットが IP 層でドロップされた場合、パケットは失われます。