Simple Port Forwarding

1

Eu pesquisei e pesquisei e experimentei várias coisas diferentes e não consegui fazer uma solução.

Aqui está minha situação:

node1 tem 2 interfaces: eth0 (IP público: 56.XXX) e eth1 (IP privado: 10.XXX)

node2 tem 2 interfaces: eth0 (IP público: 56.XXX) e eth1 (IP privado: 10.XXX)

Cada nó está executando o Ubuntu 10.04 LTS

A partir desta configuração, node1 e node2 têm acesso à internet, mas também se conectam entre si de forma particular através de uma LAN.

O que quero realizar é ter node1 como firewall e servidor proxy para node2 e muitos outros Nós que vou implantar mais tarde. O node1 terá o único acesso à Internet, pois eu desabilitará eth0 em node2 para que node2 tenha acesso para qualquer coisa em sua rede privada.

Simplificando, como posso encaminhar uma solicitação www que entra em node1 e em eth0 e encaminhá-la para node2 usando eth1 enquanto node2 atuará como o servidor da Web para essa solicitação?

Depois de seguir o exemplo abaixo, aqui está meu iptables -L:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             10.182.43.193       state NEW tcp dpt:www 
ACCEPT     tcp  --  anywhere             10.182.43.193       state NEW tcp dpt:https 
ACCEPT     all  --  anywhere             anywhere            state RELATED,ESTABLISHED 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Aqui está o meu iptables -t nat -L

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
DNAT       all  --  anywhere             firewall            to:10.182.43.193 

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
    
por ehftwelve 18.06.2011 / 06:33

2 respostas

1

Vou designar alguns endereços IP arbitrários para deixar isso claro. Substitua em seus endereços reais.

node1 eth0: 56.0.0.1 node1 eth1: 10.0.0.1 node2 eth0: 56.0.0.2 node2 eth1: 10.0.0.2

Se node1 for sua máquina de gateway / firewall, você precisará executar iptables para lidar com o NAT / encaminhamento.

# iptables config on node1
# set up a destination nat from 56.0.0.2 to 10.0.0.2
iptables -t nat -A PREROUTING -d 56.0.0.2 -j DNAT --to-destination 10.0.0.2
# open port 80/443
iptables -A INPUT -d 10.0.0.2 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT 
iptables -A INPUT -d 10.0.0.2 -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
# related/established traffic
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 

Você não precisa que o eth0 no node2 seja configurado. Em vez disso, você precisa configurar o endereço IP 56.0.0.2 no node1 para usá-lo exclusivamente para mapear para o node2.

    
por 18.06.2011 / 06:44
0

Se o node2 deve ter seu próprio endereço IP, então você não precisa de redirecionamento de porta, você precisa de proxy ARP e roteamento.

No node2 desative eth0 e adicione o IP público a qualquer outra interface, por exemplo:

ip addr add 56.0.0.2/32 dev eth1

No node1, configure a rota para o node2 via eth1:

ip route add 56.0.0.2 dev eth1

e ative as respostas do proxy ARP em eth0 (assim o node1 responderá para solicitações ARP para o node2):

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

Isso fará com que todo o tráfego para o node2 passe pelo node1. Você pode então configurar as regras do iptables para limitá-lo como qualquer outro tráfego encaminhado. Isso não faz nenhum proxy no nível do aplicativo, mas você ainda pode conseguir isso com as regras do iptables.

Definindo estes permanentemente geralmente depende da distribuição, eu não sei bem o Ubuntu, mas a configuração 'proxy_arp' provavelmente pode ser definida em /etc/sysctl.conf:

net.ipv4.conf.eth0.proxy_arp = 1

O endereço IP na eth1 do node2 deve ser adicionado à configuração da interface (mas sem qualquer máscara de rede! ou com tamanho de prefixo '/ 32'), também deve haver um local para colocar as rotas estáticas (/ etc / sysconfig / static- rotas no meu sistema).

    
por 18.06.2011 / 11:28