MIxing RFC1918 Endereços IP públicos e NAT utilizando IPTABLES

0

Desejo hospedar um servidor SIP e DNS no final de uma conexão ADSL2. Minha rede atual fica atrás de um firewall iptables que roda em uma caixa Linux com duas interfaces Ethernet, a interface WAN (eth0) conectada ao meu provedor através de um modem ADSL que, uma vez terminada a negociação PPPoA, é essencialmente transparente. O lado da LAN do firewall (eth1) atualmente executa o intervalo RFC1918 10.0.1 / 24, que é NAT através do firewall, sem problemas com tudo mascarado através do único endereço IP público estático que meu ISP me alocou.

Eu agora fui alocado um / 29 pelo meu ISP: x.y.z.104 / 29 - so x.y.z.104 para x.y.z.111 com .104 sendo a rede e .111 os endereços de broadcast, respectivamente. Meu ISP alocou o endereço .110 como o roteador: ou seja, este é o endereço público que meu MODEM capta quando se conecta à rede ADSL e aloca eth0.

Eu preciso configurar as coisas de forma que o tráfego para os servidores atrás do firewall que possuem endereços IP públicos seja roteado para dentro e fora corretamente, mas que o intervalo 10.0.1 / 24 ainda se disfarça corretamente. Isso poderia ser feito apenas com o iptables ou eu teria que definir algum tipo de rota estática? A eth1 também teria o endereço x.y.z.110 alocado para ele como o eth0 (meu ISP sugeriu isso)?

Além disso, o firewall precisaria ser configurado para permitir conexões SIP e RTP de entrada para meu servidor SIP / ip pbx (Asterisk). O iptables é a ferramenta correta para o trabalho ou devo procurar em outro lugar?

    
por TimGJ 01.12.2012 / 14:26

1 resposta

1

Isso não está totalmente claro em sua descrição, mas parece que o ISP configurou o / 29 inteiro como a sub-rede entre o roteador e o seu. x.y.z.110 / 29 é o lado do provedor e deve ser o seu gateway. Seu roteador / firewall também precisará de um endereço IP nessa sub-rede, digamos x.y.z.109 / 29.

Os outros 4 endereços IP utilizáveis nessa sub-rede (um dos quais você deseja atribuir para uso de VoIP) também devem estar conectados a essa sub-rede, mas não são. Ver abaixo. Mas primeiro, eis como isso deveria ter sido feito.

O que teria sido melhor seria se eles tivessem dividido o / 29 em 2 / 30s. x.y.z.108 / 30 seria uma pequena sub-rede entre o roteador e o seu (com o roteador em 0,110 e o seu em 0,19). O outro / 30, x.y.z.104 / 30, é um bloco de 4 endereços IP que eles encaminhariam para você. Seu roteador / firewall pode, então, direcioná-los para dentro de sua rede, conforme necessário.

Mas como é um single / 29, você precisa ativar um recurso chamado proxy ARP no seu firewall. É feio, mas vai enganar o roteador do ISP em pensar que servidores adicionais estão diretamente ligados a esta sub-rede / 29.

echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp

Agora que o tráfego desses endereços IP adicionais chegará ao seu roteador / firewall, você precisará de rotas estáticas para rotear os endereços IP adicionais para os servidores dentro de sua rede que os usarão. Você pode atribuir e rotear cada um dos 4 endereços IP individualmente como / 32s.

Você desejará ter uma exceção nas regras SNAT ou MASQUERADE para que o tráfego proveniente de dentro de sua rede proveniente de um desses 4 endereços IP adicionais não seja NATted. Eu não sei exatamente como são as regras de iptables , mas algo assim:

-A FORWARD -s x.y.z.104/29 -j ACCEPT   # stop if from those IPs
-A FORWARD -o eth1 -maybe-some-other-options -j SNAT   # NAT everything else

No servidor VoIP, você pode encontrar o endereço IP público, digamos x.y.z.105 / 32, como um endereço adicional na interface de loopback. Verifique se o seu software VoIP está configurado para ligar e usar esse endereço IP, caso contrário, ele usará apenas o endereço IP de ethernet normal (10.0.1.something) como padrão.

    
por 02.12.2012 / 01:34