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

iptables перенаправляет внешний IP-адрес и порт на внутренний IP-адрес и порт

Мне срочно нужна помощь прямыми примерами, а не словами. Поскольку я работаю с FreeBSD с версии 4.2, меня устраивает pf (фильтр пакетов), но теперь у меня есть проект по созданию модуля веб-панели для OpenVZ в Linux.

Админка готова на 95%, но я застрял. Я понял, что каждую виртуальную машину нужно перенаправить на другой порт. И дело в том, что его нужно перенаправить на локальный IP. У них только 1 сетевая карта и только 1 общедоступный IP-адрес, поэтому они будут использовать для каждой виртуальной машины локальный IP-адрес.

Скажем:

Мы создаем виртуальную машину 101 с локальным IP 192.168.199.105 для прослушивания SSH на порте 5050, и у нас есть общедоступный IP 88.252.14.32. Как настроить IPTABLES для пересылки ssh-запросов с 88.252.14.32:5050 на 192.168.199.105:5050?

Сервер имеет NAT, и для Apache это просто с vhost, но для SSH - не знаю, как это сделать. Прошу помощи прямыми примерами, а не словами. Спасибо.

Вы можете попробовать прочитать этот учебник. Он описывает iptables хорошо. По вашему вопросу вы можете использовать правила ПЕРЕДАЧИ в nat стол. Это будет выглядеть так:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 5050 -j DNAT --to-destination 192.168.199.105:5050
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 

Вы должны изменить eth0 на имя вашего интерфейса.