Доброго времени суток.На сервере стоит Slackware 13.1, ип сервера скажем 10.10.10.10
Ип всем известен, все к нему обращаются за разными сервисами (http, ftp, dc++) и на опр. порт 1234 tcp скажем.Однако приложение это (которое 1234 обслуживает) есть только под винду. СТавить иксы, вайн на сервер не хочу. Хочу поставить рядом второе железо под виндой, ип будет 10.10.10.11
Скажите пожалуйсто как организовать переадресацию пакетов, приходящих на порт 1234 и перенаправлять их на сервер 10.10.10.11. Те по сути нужно подменить адрес назначения и выкинуть из интерфейса обратно.
Делал подобное:
iptables -t nat -A PREROUTING --dst 10.10.10.10 -p tcp --dport 1234 -j DNAT --to-destination 10.10.10.10:1234Однако никакого результата не получил.
В Linux новичёк.
Заранее спасибо за помошь.
iptables -t nat -A PREROUTING --dst 10.10.10.10 -p tcp --dport 1234 -j DNAT --to-destination 10.10.10.11:1234но есть нюансы, что значит рядом. клиенты тоже в этой подсети?
>iptables -t nat -A PREROUTING --dst 10.10.10.10 -p tcp --dport 1234 -j
>DNAT --to-destination 10.10.10.11:1234
>
>но есть нюансы, что значит рядом. клиенты тоже в этой подсети?Мм клиенты не в этой подсети, но второй сервер в этой подсети,
в данном случае представим серверную подсеть 10.10.10.0/24, а клиенты предположим в 172.0.0.0/8. Не суть...Но помоему будет достаточно, чтобы сервер пакеты отправлял на 10.10.10.11 изменяя лишь адрес назначения. А второй сервер (10.10.10.11) будет отправлять ответы на эти пакеты уже соглясуя со своим основным шлюзом, те пакеты найдут своё назначение.
>[оверквотинг удален]
>
>Мм клиенты не в этой подсети, но второй сервер в этой подсети,
>
>в данном случае представим серверную подсеть 10.10.10.0/24, а клиенты предположим в 172.0.0.0/8.
>Не суть...
>
>Но помоему будет достаточно, чтобы сервер пакеты отправлял на 10.10.10.11 изменяя лишь
>адрес назначения. А второй сервер (10.10.10.11) будет отправлять ответы на эти
>пакеты уже соглясуя со своим основным шлюзом, те пакеты найдут своё
>назначение.Надо еще форвард пакетов включить и в цепочку форвард правила добавить
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD --dst 10.10.10.10 -p tcp --dport 1234 -j ACCEPT
iptables -A FORWARD --src 10.10.10.10 -p tcp --sport 1234 -j ACCEPT
Форвардинг включенА правила разрешения сейчас не принципиальны, по умолчанию там политика ACCEPT.
http://www.opennet.me/openforum/vsluhforumID13/413.html#3
http://www.opennet.me/openforum/vsluhforumID10/3736.html#3>Однако никакого результата не получил.
>В Linux новичёк.Это недостатки, которые пройдут. Со временем.
>http://www.opennet.me/openforum/vsluhforumID13/413.html#3
>http://www.opennet.me/openforum/vsluhforumID10/3736.html#3
>
>>Однако никакого результата не получил.
>>В Linux новичёк.
>
>Это недостатки, которые пройдут. Со временем.Обе ссылки описывают самую типичную ситуацию переброса портов, описанием которой полон интернет. Вы предалгаете мне воткнуть в линуксовый сервер вторую сетевуху и соединить её с сервером под виндой? Вариант конечно рабочий 100%. Однако в планах использование виндового сервера несколькими линуксовыми серверами (на нём будут стоять commFort чат, два myAC под разные серверы). В итоге "локальная серверная сеть" разрастётся.
>Обе ссылки описывают самую типичную ситуацию переброса портов, описанием которой полон интернет.
>Вы предалгаете мне воткнуть в линуксовый сервер вторую сетевуху и соединить
>её с сервером под виндой?Нет. С чего Вы взяли?
port-forward со вх.порта на eth0 на другой сервер на том же eth0 строится точно так же. С одним нюансом -- snat в этой ситуации таки _необходим.
"Очень" нетипичная ситуация, ога...
+++
TCP соединения можно форвардитть всякого рода "проксями" -- redir http://www.opennet.me/openforum/vsluhforumID9/7327.html#2 , в xinetd есть такая функциональность, ... simpleproxy http://www.opennet.me/openforum/vsluhforumID10/3717.html#6 какой-то и пр. и пр.
Логика не давала написать правило обратного преобразования (SNAT), в моей ситуации оно по сути не нужно. Однако по всей видимости включается преобразование только когда описаны правила в обе стороныiptables -t nat -A PREROUTING -d 10.10.10.10 -p tcp --dport 1234 -j DNAT --to-destination 10.10.10.11:1234
iptables -t nat -A POSTROUTING -d 10.10.10.11 -p tcp --dport 1234 -j SNAT --to-source 10.10.10.10
Всё работает.
Кстати в первом моём посте, где я написал:
"Делал подобное:
iptables -t nat -A PREROUTING --dst 10.10.10.10 -p tcp --dport 1234 -j DNAT --to-destination 10.10.10.10:1234"Опечатка
--to-destination 10.10.10.11:1234
>Логика не давала написать правило обратного преобразования (SNAT), в моей ситуации оно
>по сути не нужно. Однако по всей видимости включается преобразование только
>когда описаны правила в обе стороны
>это не логика, это скорей незнание как работает сеть. и кстати типичная ошибка многих.
проанализируйте как шел пакет от клиента и как он возвращался и с какими адресами, если не использовать SNAT.http://www.opennet.me/docs/RUS/iptables/#DNATTARGET читайте внимательно то что под табличкой.
эти правила независимы друг от друга.
>[оверквотинг удален]
>
>Всё работает.
>
>Кстати в первом моём посте, где я написал:
>"Делал подобное:
>iptables -t nat -A PREROUTING --dst 10.10.10.10 -p tcp --dport 1234 -j
>DNAT --to-destination 10.10.10.10:1234"
>
>Опечатка
>--to-destination 10.10.10.11:1234
Спасибо за помошь, теперь всё встало на свои места.
Действителньо по другому представлял этот момент.
Возникла другая проблема. Когда начал использовать это на практике, выяснилось что на адресе назнаения (конечный сервер на винде) адресом источника является адрес сервера переадресовавшего подключение, а не адрес клиента. Что вполне ожидаемо впринципи, нат ведь. Но нужно чтобы на виндовом сервере были ип адреса клиентов.Подобное можно как то реализовать?
Можно. Проверил - у меня работает.
Вторая сетевая, мост и виндовый сервер "за мостом".[ЛВС] --- eth0 [ Lin*: br0=eth0+eth1 + DNAT ] eth1 --- [ Win* ]
Можно обойтись без SNAT-а, одним DNAT-ом.
---
Если использовать редиректор-приложение (redir, simpleproxy, xinetd или подобный), по-любому на второй сервер открывается второе соединение -- и с адреса промежуточного сервера.
>Возникла другая проблема. Когда начал использовать это на практике, выяснилось что на
>адресе назнаения (конечный сервер на винде) адресом источника является адрес сервера
>переадресовавшего подключение, а не адрес клиента. Что вполне ожидаемо впринципи, нат
>ведь. Но нужно чтобы на виндовом сервере были ип адреса клиентов.
>
>
>Подобное можно как то реализовать?второй сервер в другую подсеть и тогда для пакетом идущих к нему snat можно не делать