LINUX.ORG.RU
ФорумAdmin

Задачка по iptables


0

0

Приветствую обитателей форума.

Условия такие: есть некий хост, в нём несколько сетевых интерфейсов. Адреса на интерфейсах динамические. Внимание, вопрос: надо все входящие tcp-соединения (с любого интерфейса) на порт https перебросить (forward) на некий другой хост. Проходящий https трогать нельзя. Спасибо.

хм вот когда понимаешь, что штатный ipfw во FreeBSD совсем неплох
без волшебного слова _me_ решение вашего случая получается очень уж никрасиво :(
учитывая, что DNAT только PREROUTING или OUTPUT

hizel ★★★★★
()

Может "-m addrtype --dst-type LOCAL" поможет?

mky ★★★★★
()

имхо "-m addrtype --dst-type LOCAL" здесь не поможет, так как (говорят) что информация о типе адреса (т.е. LOCAL он или не LOCAL) берется из роутинга, а в цепочке PREROUTING решение о маршрутизации ещё не принято....

по идее тут xinetd поможет, что то вроде

service HTTPS
{
type = UNLISTED
port = 443
socket_type = stream
protocol = tcp
wait = no
user = root
disable = no
redirect = local_ip local_port
}

либо каждый раз при смене адреса на интерфейсе запускать скрипт, который узнает новые адреса и обновит правила iptables в цепочке PREROUTING. За основу можно взять например скрипт, генерируемый FirewallBuilder'ом, если свой лень писать.

З.Ы. а позвольте узнать - а как клиенты узнают динамический IP сервера? Админу звонят? Или вы DNS терзаете каждый раз при смене IP на интерфейсах?

Sharp777
()
Ответ на: комментарий от Sharp777

Спасибо ответившим.

zhiltsov:

Хотелось обойтись без дополнительных процессов :)

mky:

Сейчас попробовать не могу - у меня нет такого модуля. Но склоняюсь к тому, что работать не будет (по причине, описанной Sharp777)

Sharp777:

Скриптом некрасиво - лучше уж proxy/forwarder. Адреса узнают классически - dyndns.org

abramoff
() автор топика
Ответ на: комментарий от Sharp777

Глянул исходники ядра, там addrtype оргранизует отдельный поиск.
Поэтому в man'е и нет запрета на вызов его из PREROUTING.
Проверил на Debian Etch, все работает как хотел топикстартер.
То есть добавил правила:

iptables -t nat -A PREROUTING -p tcp -dport 2222 -m addrtype --dst-type LOCAL -j DNAT --to-destination 10.33.2.111
iptables -t nat -A PREROUTING -p tcp -dport 2222 -j DNAT --to-destination 10.33.2.110

И коннекты на локальный адрес тачки (10.33.2.15) уходят на 10.33.2.111, а остальные на 10.33.2.110.

P.S. Присоединяюсь к вашему вопросу, что это за сервер такой, у которого ip-динамические и зачем это надо?

mky ★★★★★
()
Ответ на: комментарий от mky

mky:

Спасибо, буду пробовать. По поводу сервера: провайдер даёт только динамические ip. Нужно сделать так, чтобы клиент из Интернета и из локальной сети попадал на второй сервер (который в LAN) без перенастройки клиента. Конечно, не все адреса на сервере динамические (я так упростил описание задачи, что не меняет сути в общем).

abramoff
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.