Compartilhamento da Internet com iptables: escolha qual conexão compartilhar

2

Eu tenho um computador com dois dispositivos de rede ( eth0 e wlan0 ), ambos conectados à internet (duas conexões / isp diferentes). Estou tentando compartilhar a conexão de wlan0 com outro computador conectado via ethernet a eth0 .

O que estou fazendo é:

# sysctl net.ipv4.ip_forward=1
# iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

No computador cliente, posso conectar-me a este, mas a conexão à Internet que é compartilhada é a que está em eth0 e não a que está em wlan0 .

Se eu desativar a conexão com a Internet em eth0 (configurando nenhum gateway), a conexão a ser compartilhada será a que está em wlan0 . No entanto, eu gostaria de ter ambas as conexões de internet habilitadas e especificar para o iptables qual delas compartilhar. Isso é possível?

O que estou perdendo? Preciso de alguma regra de encaminhamento?

    
por lgpasquale 12.01.2014 / 19:07

1 resposta

2

Parece que seu padrão gw está em eth0 e o cliente é redirecionado para ele (por meio de um redirecionamento icmp).

Para corrigir sua configuração, você precisa adicionar uma regra de roteamento informando que todos os pacotes recebidos de client_ip devem ser roteados para wlanO_gw .

Tente adicionar uma nova tabela de roteamento:

  • Edite /etc/iproute2/rt_tables e adicione uma linha para uma nova tabela, por exemplo, 252 masq , em que 252 é o ID da tabela e masq é o novo nome da tabela.

  • Adicione uma regra para rotear os pacotes ip_client com a tabela masq

    ip rule add do ip_client / 32 table masq

  • adicione um padrão gw à tabela masq

    ip ro add default via wlan0_gw table masq

por 12.01.2014 / 20:54