Endereço IP do host variável na regra iptables

1

Estou executando o CentOS 6.4 com o OpenVZ no meu laptop. Para fornecer acesso à Internet para os VEs, tenho que aplicar a seguinte regra no laptop:

iptables -t nat -A POSTROUTING -j SNAT --to-source <LAPTOP_IP>

Funciona bem.

No entanto, tenho que trabalhar em diferentes locais - escritório, casa, escritório parceiro etc. O IP do meu laptop é diferente nesses locais, então tenho que alterar a regra acima toda vez que eu mudar de lugar.

Eu criei uma solução alternativa que basicamente determina o IP e aplica a regra:

#!/bin/bash
IP=$(ifconfig | awk -F':' '/inet addr/&&!/127.0.0.1/{split($2,_," ");print _[1]}')
iptables -t nat -A POSTROUTING -j SNAT --to-source $IP

A solução acima funciona. Eu só ainda tenho que executá-lo manualmente. Talvez eu possa fazer um gancho executando sempre que meu laptop obtiver um endereço IP do DHCP - como posso fazer isso?

Além disso, estou apenas me perguntando se existe uma maneira elegante de fazê-lo em primeiro lugar - iptables? Talvez haja uma sintaxe que permita especificar "ip de hardware atual" na regra?

    
por Greendrake 28.10.2013 / 04:28

1 resposta

4

Use -j MASQUERADE (extraído dos documentos do CentOS ):

To allow LAN nodes with private IP addresses to communicate with external public networks, configure the firewall for IP masquerading, which masks requests from LAN nodes with the IP address of the firewall's external device (in this case, eth0):

[root@myServer ~ ] # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

This rule uses the NAT packet matching table (-t nat) and specifies the built-in POSTROUTING chain for NAT (-A POSTROUTING) on the firewall's external networking device (-o eth0).

POSTROUTING allows packets to be altered as they are leaving the firewall's external device.

The -j MASQUERADE target is specified to mask the private IP address of a node with the external IP address of the firewall/gateway.

Ele foi criado para uplinks que não possuem endereços IP estáticos.

    
por 28.10.2013 / 07:43