Как настроить переадресацию портов в iptables в Ubuntu?

Как настроить переадресацию портов в iptables в Ubuntu?

Эта цитата должна объяснить мне, как это сделать, но я не понимаю...

Далее я добавил следующие правила для пересылки всех http-запросов (поступающих на порт 80) на порт 3128 сервера Squid:

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to 192.168.1.1:3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

с

iptables -t nat -A PREROUTING -i venet0 -p tcp --dport 80 -j DNAT --to 127.0.0.1:3128
iptables -t nat -A PREROUTING -i venet0:0 -p tcp --dport 80 -j REDIRECT --to-port 3128

Это должно работать, но не работает. Мои iptablesпустые, а вот /etc/network/interfaceследующее:

auto lo
iface lo inet loopback
    address 127.0.0.1
    netmask 255.0.0.0
    broadcast 127.255.255.255
    up ip route replace 127.0.0.0/8 dev lo
# Auto generated venet0 interfaces
auto venet0
iface venet0 inet static
    address 127.0.0.1
    netmask 255.255.255.255
    broadcast 0.0.0.0
    up route add default dev venet0
iface venet0 inet6 static
    address ::2
    netmask 128
    up ip -6 r a default dev venet0
    up ip addr add {...externalIPv6...} dev venet0
auto venet0:0
iface venet0:0 inet static
    address {...externalIP...}
    netmask 255.255.255.255

решение1

Я начну это как ответ, хотя это пока не так (надеюсь). Причина, по которой я это делаю, в том, что я считаю, что эта проблема потребует нескольких итераций, чтобы быть сглаженной.

Ваши правила iptables выглядят нормально, но ваш файл /etc/network/interfaces имеет несколько проблем, на мой взгляд. Вы скопировали его откуда-то или адаптировали под свои нужды?

Проблемы, которые я вижу:

  1. Зачем указывать интерфейс loopback? Обычно первые две строки строфы в порядке.
  2. Вы назначаете два адреса одному и тому же интерфейсу, venet0.
  3. Сетевая маска для первой строфы venet0 слишком ограничительна и не соответствует широковещательному адресу.
  4. Во второй строфе для venet0 назначены два адреса: ваш внешний адрес IPv6 и ::2.
  5. В строфе для venet0 сетевая маска слишком ограничительна.
  6. Тот же самый интерфейс venet0/venet0:0 имеет как петлевой, так и внешний адрес, в чем смысл?

Было бы полезно, если бы вы рассказали нам, что вы пытаетесь сделать с VMWare, сейчас я в растерянности.

Связанный контент