Eu tenho um ponto de acesso com OpenWrt. Em outro host da mesma LAN existe um squid (endereço IP 192.168.80.148). Gostaria de rotear pacotes com a porta de destino 80 para 192.168.80.148.
Então eu tenho
root@ap:/tmp# iptables -L -vn -t mangle
Chain PREROUTING (policy ACCEPT 67354 packets, 54M bytes)
pkts bytes target prot opt in out source destination
67358 54M fwmark all -- * * 0.0.0.0/0 0.0.0.0/0
Chain INPUT (policy ACCEPT 1548 packets, 127K bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 65789 packets, 54M bytes)
pkts bytes target prot opt in out source destination
65789 54M mssfix all -- * * 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT 1017 packets, 133K bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 66808 packets, 54M bytes)
pkts bytes target prot opt in out source destination
25686 1564K MARK tcp -- * br-lan 0.0.0.0/0 0.0.0.0/0 PHYSDEV match ! --physdev-in eth0+ tcp dpt:80 MARK set 0x1
Chain fwmark (1 references)
pkts bytes target prot opt in out source destination
Chain mssfix (1 references)
pkts bytes target prot opt in out source destination
root@ap:/tmp# ip rule ls
0: from all lookup 128
0: from all fwmark 0x1 lookup squid1
1: from all lookup local
32766: from all lookup main
32767: from all lookup default
root@ap:/tmp# ip route show table squid1
default via 192.168.80.148 dev br-lan
Então, mas o roteamento não está funcionando, não vejo pacotes saindo da minha estação para a caixa com o squid.
Uma coisa importante: o Access Point não é o gateway padrão da estação. Todas as portas do AP estão na mesma VLAN e então o AP tem um único endereço IP com está na mesma LAN que a interna ADSL da Internet modem. O endereço IP da LAN do modem ADSL é o gateway padrão.
O que estou fazendo de errado?
EDITADO:
Eu adicionei uma regra de teste:
iptables -t mangle -A OUTPUT -o br-lan -p tcp -m physdev ! --physdev-in eth0+ -m tcp --dport 80 -
j MARK --set-xmark 0x1/0xffffffff
E descobri que, nesse caso, o roteamento funciona (o tráfego do próprio AP passa pela caixa do squid). Então, o problema é que o tráfego da estação não está sendo roteado. Por quê?