如何在网桥内的物理网络接口之间重定向

如何在网桥内的物理网络接口之间重定向

我有一台家用电脑,配有有线以太网连接(连接到路由器)和 wifi 卡。wifi 配置为接入点 (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规则会影响通过wlan0仅使用选择器接口--physdev-in。此设置按预期工作。
我现在想做的是建立一种机制来强制设备上选定的进程仅通过发送流量 wlan0.
追随线索这里我试过:

> 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

在这个阶段,我是否应该期待看到phy0或者wlan0列出?该iw 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将此用户的流量重定向到wlan0如果/当它要enp0s10
这就是我被困住的地方。规则看起来应该是这样的:

iptables -t nat -A PREROUTING -m owner --gid-owner wlantraffic -m physdev ! --physdev-in wlan0 -j ???

即“来自群组的流量无线交通没有通过进入桥wlan0应重新路由至wlan0
数据包将是标准的互联网流量。
我的问题是:

  • 这是PREROUTING一个FORWARD规则吗?
  • 如果我DROP在网桥环境中匹配数据包,那么数据包是否会“落入”下一个接口?
  • 我如何指定wlan0接口作为目标?

答案1

我无法使用 ntns 命名空间来实现我的目标

桥梁可能是你的问题;但是:

WLAN 接口在网络命名空间方面有点奇怪。每个适配器都有两层 - phy(代表物理硬件)和 netdev(代表网络接口)。

(原因是可以在同一个 phy 上拥有多个 netdev,例如客户端+AP,或者双频 Wi-Fi 适配器可以让 wlan0 和 wlan1 同时在不同网络上运行。如果好奇,请查看iw phy您的适配器支持哪些组合。)

Linux 目前有一个限制,即全部的phy 设备必须移动到命名空间中;不能移动单个 netdev。为此,请使用iw

iw phy phy0 set netns myNamespace

这是 PREROUTING 规则还是 FORWARD 规则?

通常,这完全取决于-j使用的操作(参数)。有些仅在 FORWARD 中有意义,有些仅在 PREROUTING 中有意义;有些仅在 中有效-t nat,有些仅在 中有效-t mangle

如果我在网桥环境中丢弃匹配的数据包,那么这些数据包是否会“落入”下一个接口?

不是。iptables 规则适用于 IP,并且在数据包到达桥接层之前进行处理。如果数据包在 IP 层被丢弃,则数据包将消失。

相关内容