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

Как перенаправить порты для виртуального интерфейса?

С одним физическим сетевым интерфейсом eth0 и eth0: 0 связаны два IP-адреса.

Следующее работает нормально для первого интерфейса:

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

Howerver то же самое не работает для второго интерфейса:

iptables -A PREROUTING -t nat -i eth0:0 -p tcp --dport 80 -j REDIRECT --to-port 8080

Также пробовал:

iptables -A PREROUTING -t nat -p tcp --dport 80 -d $THE_IP -j REDIRECT --to-port 8080

Итак, вопрос в том, как сделать перенаправление на виртуальном интерфейсе.

Вы этого не сделаете. Интерфейсы псевдонимов - это условное обозначение, которое фактически не существует на глубоких уровнях ядра, где перемещается iptables. Используйте IP-адрес (ваш третий пример команды не работает и выдает сообщение об ошибке, которое должно было вас указать), и все будет хорошо.

В вашей третьей команде чего-то не хватает: включение многопортового добавления -m multiportв начале, так что все будет хорошо. + предполагается, что --dports и --to-ports(множественное число), даже если вы укажете только один порт

Обратите внимание, что у меня была аналогичная проблема + у меня уже было приложение, использующее порт 80 (apache2), которое мне пришлось убить, прежде чем я смог использовать перенаправление

Для этой работы вы должны использовать интерфейс TUN / TAP. Обратитесь к этому руководство для получения дополнительной информации.