Estas são as regras que estou usando:
iptables --flush
iptables --table nat --flush
iptables --delete-chain
iptables --table nat --delete-chain
iptables --table nat --append POSTROUTING --out-interface wlan5 -j MASQUERADE
iptables --append FORWARD --in-interface wlan3 -j ACCEPT
Eu tenho wlan5 com 192.168.1.100 e wlan3 com 10.0.0.1.
Eu faço meu laptop um repetidor de wifi com 2 cartões de wifi.
Para que as pessoas se conectem ao wlan3, o gateway é o 10.0.0.1 e tudo redireciona para o wlan5 [gw 192.168.1.1].
Agora, isso está funcionando muito bem, exceto não consigo acessar um servidor HTTP local hospedado no meu laptop. Ele está hospedado no meu laptop e funciona como host local ou 10.0.0.1:
$ curl -I 10.0.0.1
HTTP/1.1 301 Moved Permanently
Date: Tue, 26 Feb 2013 02:35:32 GMT
Server: Apache/2.2.22 (Ubuntu)
Location: http://10.0.0.1/index.php
Vary: Accept-Encoding
Content-Type: text/html; charset=iso-8859-1
Ok, então aqui é onde o problema surge. Um cliente na minha rede de compartilhamento [wlan3] com IP 10.0.0.20 tenta acessar 10.0.0.1:80 e não pode se conectar:
$ wget http://10.0.0.1
Connecting to 10.0.0.1 (10.0.0.1:80)
wget: can't connect to remote host (10.0.0.1): Connection refused
Ele pode pingar 10.0.0.1 e até pingar IP externo. então tem conexão com a internet, que é o ponto, mas não consegue acessar o HTTP, acredito por causa das regras do iptables.
logo após o erro, eu recebo isso no meu syslog laptop:
Feb 25 21:36:19 toshi kernel: [57806.285170] Inbound IN=wlan3 OUT= MAC=9c:b7:0d:a5:45:67:a8:26:d9:3e:04:21:08:00 SRC=10.0.0.20 DST=10.0.0.1 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=28282 DF PROTO=TCP SPT=58343 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0
Então a questão é, como posso excluir solicitações de IP de encaminhamento para 10.0.0.1 não encaminhar para o wlan5?
Obrigado