У меня есть сервер с адресом в локальной сети 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. То, что не упоминалось в других ответах, - это маскировка, которая, в моем понимании, необходима для правильного получения пакетов ответов.