Basic iptables NAT port forwarding

6

Eu tenho três máquinas: um PC local (IP público 1.2.3.4), uma caixa Ubuntu 10 Server em um datacenter (eth0 em 5.6.7.8 IP público) e um servidor de terceiros que hospeda um site fora da minha rede (digamos Slashdot em 216.34.181.45).

  • Usando o iptables, como acesso o Slashdot da minha máquina local usando 5.6.7.8:8080?
  • Esse processo seria diferente se o Slashdot estivesse na mesma LAN que minha caixa do Ubuntu?
  • Isso pode ser feito apenas com NAT PREROUTING / POSTROUTING ou eu preciso de MASQUERADE?
por jetboy 31.10.2011 / 23:08

1 resposta

17
   PC ----- Ubuntu 10 Server ----- Slashdot 
(1.2.3.4)      (5.6.7.8)        (216.34.181.45)
  1. Ativar o encaminhamento de IP no Ubuntu:

    echo 1 > /proc/sys/net/ipv4/ip_forward
    

    e adicione as seguintes regras:

    iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 8080 -j DNAT \
                                           --to-destination 216.34.181.45:80 
    iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 5.6.7.8
    
  2. Não.

  3. Você deve usar o MASQUERADE se o Ubuntu tiver um IP dinâmico:

    iptables -t nat -A POSTROUTING -j MASQUERADE
    

Você também pode usar o encaminhamento de porta local SSH, neste caso, executando o comando abaixo no Ubuntu:

$ ssh -L 5.6.7.8:8080:216.34.181.45:80 -N [email protected]

Ainda há outra (ou mais) maneira de fazer isso. Dê uma olhada no rinetd :

Name       : rinetd
Arch       : i386
Version    : 0.62
Release    : 6.el5.art
Size       : 41 k
Repo       : installed
Summary    : TCP redirection server
URL        : http://www.boutell.com/rinetd
License    : GPL
Description: rinetd is a daemon which redirects TCP connections from one IP address
           : and port to another IP address and port. This daemon is often used to
           : access services behind a firewall.

A configuração é muito simples. Adicione a linha de espera em /etc/rinetd.conf :

5.6.7.8 8080 216.34.181.45 80

e comece:

# /etc/init.d/rinetd start
Starting rinetd:                                           [  OK  ]

Ele fará tudo por você.

    
por 01.11.2011 / 10:28