У меня три машины: локальный ПК (общедоступный 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)
Включите переадресацию 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
Нет.
Вы должны использовать 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 ]
Он все сделает за вас.