Como redirecionar entre interfaces de rede física dentro da ponte

Como redirecionar entre interfaces de rede física dentro da ponte

Eu tenho um PC doméstico com conexão Ethernet com fio (conectado ao roteador) e uma placa wifi. O wifi está configurado como um ponto de acesso (hostapd) e as interfaces de rede são interligadas:

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

Existem algumas iptablesregras que afetam o tráfego selecionado que passa pelowlan0somente interface, usando o --physdev-inseletor. Esta configuração funciona conforme o esperado.
O que estou tentando fazer agora é ter um mecanismo para forçar processos selecionados no dispositivo aenviar tráfego apenas através wlan0.
Seguindo uma pistaaquiTentei:

> sudo ip netns add myNamespace
> sudo ip link set wlan0 netns myNamespace
RTNETLINK answers: Invalid argument 

O que - até onde eu sei - significa:

  • que não posso nomear a interface física porque ela está em ponte
  • Não consigo usar um netnsnamespace para atingir meu objetivo

EDIT: seguindo a sugestão abaixo degravidadecombinado com o lead mencionado acima, tentei:

> 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

Nesta fase, devo esperar verphy0ouwlan0listado? O iw phy phy0 set name myNamespacecomando não retorna nenhuma mensagem de erro, mas nenhuma interface parece ter sido adicionada aomeuNamespace. Previsivelmente, a tentativa de abrir a interface falha:

> 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/>

Novamente, suspeito que isso seja complicado pela configuração da ponte.

O Plano B é criar um usuário/grupo especificamente para esta tarefa (vamos chamá-loswlantraffic) e use iptablespara redirecionar o tráfego desse usuário parawlan0se/quando isso vai acontecerenp0s10.
É aqui que fico preso. A regra seria algo como:

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

ou seja, "tráfego do grupowlantrafficquenão tementrou na ponte porwlan0deveria ser redirecionado parawlan0"
Os pacotes serão tráfego de Internet padrão.
Minhas perguntas são:

  • Isso é uma regra PREROUTINGou uma FORWARDregra?
  • Se eu combinasse DROPpacotes - dentro do contexto de uma ponte - os pacotes "cairiam" para a próxima interface?
  • Como posso especificar owlan0interface como alvo?

Responder1

Não consigo usar um namespace ntns para atingir meu objetivo

A ponte pode ser o seu problema; no entanto:

As interfaces WLAN são um pouco estranhas quando se trata de namespaces de rede. Cada adaptador possui duas camadas – phy (representando o hardware físico) e netdev (representando a interface de rede).

(A razão é que é possível ter vários netdevs no mesmo phy, por exemplo, cliente + AP, ou um adaptador Wi-Fi de banda dupla pode ter wlan0 e wlan1 operando simultaneamente em redes diferentes. Se estiver curioso, veja iw phyquais combinações são suportadas para o seu adaptador.)

O Linux atualmente tem uma limitação que ointeiroo dispositivo phy deve ser movido para um namespace; os netdevs individuais não podem ser movidos. Para fazer isso, use iw:

iw phy phy0 set netns myNamespace

Esta é uma regra PREROUTING ou FORWARD?

Geralmente tudo depende de qual ação (o -jparâmetro) é usada. Alguns só fazem sentido em FORWARD, outros apenas em PREROUTING; alguns só funcionam em -t nat, outros apenas em -t mangle.

Se eu descartasse pacotes correspondentes - dentro do contexto de uma ponte - os pacotes "cairiam" para a próxima interface?

As regras do iptables são para IP e são processadas antes que o pacote chegue à camada de ponte. Se o pacote for descartado na camada IP, ele desaparecerá.

informação relacionada