LINUX.ORG.RU
ФорумAdmin

iptables DNAT c SNAT


0

1

Есть 3 компа.
1. 192.168.0.1/24 (без шлюза)
2. 192.168.1.1/24 (без шлюза)
3. 192.168.0.2/24 eth0
192.168.1.2/24 eth1

Как пробросить порт 80 с 1-го на 2-ой через 3 НЕ ПРОПИСЫВАЯ на них адрес шлюза?

т.е. 1 обращается к 3 по 80 порту, а попадает на 2, а 2 в это время думает, что к нему обращается 3. Iptables такое умеет (например DNAT с подставлением ip, или DNAT в связке с SNAT)?



Последнее исправление: lioncub (всего исправлений: 1)

может проще через redirect в [x]inetd?

madcore
()

Хоть DNAT в связке с SNAT, хоть redirect в [x]inetd, 2 в это время думает, что к нему обращается 3 со всеми вытекающими от сюда последствиями. Логи веб-сервера в этом случае лишний груз, везде будет 3, кто ломает не увидишь.

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

Будут, но не такие как у веб-сервера, такие можно и iptables сотворить. TCP-сервис проще NAT'ов, но правильно настроенная DMZ все же лучше (не без помощи все той же iptables).

lvi
()

Да, умеет. Пишите DNAT правило, которое пакеты от 192.168.0.1 идущие на 192.168.0.2 перенаправит на 192.168.1.1, а потом SNAT правило, которое заменит у этих пакетов src-адрес.

Понятно, что эти пакеты надо разрешить в FORWARD и включить маршрутизацию.

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

Да не, snat работает, как фильтровать. Первым dnat крутит, когда до snat'а дело доходит в пакетах уже нет внешнего IP. Если надо строго по внешнему IP, то надо маркировать. А чтоб к внешнему IP обращаться ото всюду, и этого мало.

Поэтому xinetd и проще. Отвечает откуда хочешь. Вот пример файла в /etx/xinetd.d. Но нормальный сервер все же лучше в отдельную сетку.

service wwwredir
{
disable = no
type = UNLISTED
port = 80
socket_type = stream
protocol = tcp
wait = no
user = root
redirect = 192.168.0.222 80
#bind = внешний_IP
# no_access = 62.105.0.0/24
}

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