
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
Tenho wlan5 com 192.168.1.100 e wlan3 com 10.0.0.1. Eu faço do meu laptop um repetidor wifi com 2 placas wifi.
Então as pessoas se conectam ao wlan3, o gateway é 10.0.0.1 e tudo redireciona para wlan5 [gw 192.168.1.1].
Agora, isso está funcionando muito bem,excetoNão consigo acessar um servidor HTTP local hospedado em meu laptop. Ele está hospedado no meu laptop e funciona como localhost 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 que surge o problema. Um cliente na minha rede de compartilhamento [wlan3] com IP 10.0.0.20 tenta acessar 10.0.0.1:80 e não consegue 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 executar ping em 10.0.0.1 e até mesmo executar ping em IP externo. então ele 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, recebo isto no syslog do meu 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
Portanto, a questão é: como posso excluir o encaminhamento de solicitações IP para 10.0.0.1 e não encaminhar para wlan5?
Obrigado
Responder1
editar: mais uma vez, depois que pensei que o problema estava resolvido, ele simplesmente parou de funcionar novamente sem que eu emitisse mais comandos iptables. Não consigo entender por que ele continua funcionando e depois não funciona. >.<
Encontrei um comando iptables diferente que funciona para compartilhar minha internet de 1 dispositivo wifi [de longo alcance] para outro [interno]:
iptables -t nat -A POSTROUTING -o wlan5 -j MASQUERADE
em vez dos comandos iptables na pergunta. E isso faz com que eu ainda possa acessar a internet e ainda acessar http/ssh em 10.0.0.1 a partir de 10.0.0.20.
Responder2
Oiptables-save
saídaque você postou mostra as seguintes cadeias personalizadas na tabela de filtros: INBOUND, OUTBOUND, LOG_FILTER, LSI e LSO. Firestarter cria 5 cadeias, todas nomeadas exatamente assim.
Tenho certeza de que seu problema é causado pelo Firestarter. Abra-o e verifique se está realmente desativado.
Referências: