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

Перенаправление портов с использованием таблиц IP

У меня есть сервер с адресом в локальной сети 192.168.5.100 (eth0) и другой адрес локальной сети 192.168.6.6 (eth1).

На этом сервере у меня есть экземпляр Fedora Virtualbox, на котором запущен веб-сервер apache (на порту 8080) с мостовым интерфейсом к eth1 на хост-сервере с адресом 192.168.6.7

Пользователи сети 192.168.6.x могут без проблем получить доступ к веб-серверу на экземпляре Vbox (192.168.6.7).

Мой вопрос в том, какие записи или команды iptables должны быть сделаны / выполнены, чтобы пользователи в сети 192.168.5.x могли получить доступ к веб-серверу на экземпляре vbox. (Я надеюсь, что их URL-адрес может быть примерно таким: http://192.168.5.100:8080)

В этом случае есть только несколько вариантов: 1) Разрешить прямую маршрутизацию хостов из сети 192.168.5.x в сеть 192.168.6.x. (то есть маршрут к вашей сети через промежуточный хост 192.168.5.100 и IP-переадресация, включенная в ядре.

2) Перенаправьте порт 8080 на правильный ip и порт (проверьте balance-ng и запустите его на интерфейсе eth0)

3) перенаправление портов на основе iptables / нат

/sbin/iptables -t nat -A PREROUTING -p tcp -i eth0 -d 192.167.5.100 --dport 8080 -j DNAT --to 192.168.6.7:80
/sbin/iptables -A FORWARD -p tcp -i eth0 -d 192.168.6.7 --dport 80 -j ACCEPT

включить переадресацию IP echo 1 > /proc/sys/net/ipv4/ip_forward

Это должно перенаправить запросы на порт 8080 на интерфейсе eth0 на 192.168.6.7 на интерфейсе eth1 на порту 8080.

iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 8080 --to-destination 192.168.6.7:8080 -j DNAT

Для меня сработало следующее:

sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sbin/iptables -t nat -A PREROUTING -p tcp -i eth0  --dport 80 -j DNAT --to 192.168.6.7:8080

с помощью virtualbox 3.2.12 на хосте ubuntu 10.04. То, что не упоминалось в других ответах, - это маскировка, которая, в моем понимании, необходима для правильного получения пакетов ответов.