Estou tentando configurar o UFW para permitir DHCP e DNS para os clientes conectados ao hotspot Wi-Fi criado usando nmcli
. Quero que a configuração seja o mais restritiva possível para evitar quaisquer conflitos de DHCP na eth0
interface com fio ( ) -- ou seja, "internet" -- etc. Em poucas palavras:
- os clientes do hotspot
wlan0
devem estar atrás do NAT e devem ser capazes de obter a configuração de IP e DNS do respectivo DHCP do hotspot, - os clientes do hotspot
wlan0
devem conseguir acessar a internet fornecida pela interface com fio (eth0
), - outros dispositivos na rede com fio (
eth0
) devem ignorar o fato de que um de seus "vizinhos" atua como um gateway, fornece DHCP/DNS, etc.
Eu já configurei NAT e encaminhamento via iptables
, e tudo funciona bem desde que os dispositivos clientes usem configuração de IP estático. No entanto, quando configurados para usar DHCP, os dispositivos clientes falham em obter essas informações e, consequentemente, falham em se conectar ao hotspot.
A sub-rede usada pelo hotspot é 10.42.0.0/24 com o gateway sendo 10.42.0.1 (os padrões do NetworkManager). Quando tento permitir portas DHCP e DNS wlan0
usando
# DHCP
ufw allow in on wlan0 from 10.42.0.0/24 to 10.42.0.1 port 67 proto udp
ufw allow out on wlan0 from 10.42.0.1 to 10.42.0.0/24 port 68 proto udp
# DNS
ufw allow in on wlan0 from 10.42.0.0/24 to 10.42.0.1 port 53
ufw allow out on wlan0 from 10.42.0.1 to 10.42.0.0/24 port 53
minha configuração UFW se torna (ou seja, apenas essas quatro regras extras existem):
$ ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip
To Action From
-- ------ ----
10.42.0.1 67/udp on wlan0 ALLOW IN 10.42.0.0/24
10.42.0.1 53 on wlan0 ALLOW IN 10.42.0.0/24
10.42.0.0/24 68/udp ALLOW OUT 10.42.0.1 on wlan0
10.42.0.0/24 53 ALLOW OUT 10.42.0.1 on wlan0
Mas: mesmo com essas regras, os clientes de hotspot falham em obter a configuração IP/DNS do DHCP. Nem preciso dizer que não há tais problemas quando desabilito temporariamente o UFW...
Em um comentário do usuário "telcoM" neste post , descobri que pode ser necessário permitir os protocolos bootps
e bootpc
em vez das portas 67 e 68, respectivamente. No entanto, não consigo encontrar a sintaxe UFW necessária para fazer isso -- todas as tentativas feitas até agora (por exemplo, ufw allow in on wlan0 from 10.42.0.0/24 to 10.42.0.1 bootps
) resultaram em reclamações do UFW (geralmente ERROR: Wrong number of arguments
).
O que estou fazendo errado?
Obrigado.
Depois de muito coçar a cabeça, percebi meu erro: os dispositivos de conexão inicialmente não têm endereços IP, então filtrar o tráfego com base em seus endereços futuros não fazia sentido. Da mesma forma, os dispositivos devem primeiro descobrir o servidor DHCP transmitindo uma solicitação. Então, duh...
Para resumir, as três regras UFW a seguir fazem o que preciso:
Comparado com a configuração mencionada anteriormente:
from 10.42.0.0/24
e, em vez de especificar o endereço IP do servidor DHCP, ele listato 0.0.0.0/0
(ou seja, "para qualquer endereço IPv4" que -- de acordo com a página de manual do UFW -- é o equivalente a "para este host"). Observe que estou usando deliberadamenteto 0.0.0.0/0
em vez deto any
para que o UFW adicione a regra apenas para IPv4 (e não para IPv6).from 10.42.0.0/24
eto 10.42.0.1
, porque agora os dispositivos já receberam endereços IP da respectiva sub-rede e sabem qual é o endereço IP do servidor DNS.