Назад | Перейти на главную страницу

Перенаправление портов NAT в iptables

У меня три машины: локальный ПК (общедоступный IP-адрес 1.2.3.4), сервер Ubuntu 10 в центре обработки данных (eth0 на общедоступном IP-адресе 5.6.7.8) и сторонний сервер, на котором размещен веб-сайт за пределами моей сети (скажем, Slashdot на 216.34.181.45).

   PC ----- Ubuntu 10 Server ----- Slashdot 
(1.2.3.4)      (5.6.7.8)        (216.34.181.45)
  1. Включите переадресацию IP в Ubuntu:

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

    и добавьте следующие правила:

    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. Нет.

  3. Вы должны использовать MASQUERADE, если Ubuntu имеет динамический IP:

    iptables -t nat -A POSTROUTING -j MASQUERADE
    

В этом случае вы также можете использовать переадресацию локального порта SSH, выполнив следующую команду в Ubuntu:

$ ssh -L 5.6.7.8:8080:216.34.181.45:80 -N user@216.34.181.45

Есть еще один (или несколько) способ сделать это. Взгляните на 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.

Конфигурация очень простая. Добавьте строку ниже в /etc/rinetd.conf:

5.6.7.8 8080 216.34.181.45 80

и начнем:

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

Он все сделает за вас.