Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Dimasm
Зарегистрирован: 25.04.2005 Сообщения: 454
|
Добавлено: Вт Мар 06 2007 23:17 Заголовок сообщения: способен ли на это iptables |
|
|
Раньше было так.
На компьютере "А" стояла БД и файловый сервер, ОС WinXP
его IP был 192.168.10.1
У пользователей сети, сетевые диски настроенны на ресурс
\\192.168.10.1\....
Есть несколько программ, ODBC которых настроены на сервер 192.168.10.1
Теперь появился компьютер "Б", на который переехал фаловый сервер
Linux - Samba
Чтобы не менять настройки сетевого диска у пользователей, я изменил IP адреса. теперь:
"А" - 192.168.10.21
"Б" - 192.168.10.1
Название ресурса тоже, IP адрес тот же... в общем по диску все без проблемм лазают...
Только вот программы работать не хотят, ну нет теперь на 192.168.10.1 SQL сервера.
Перенастраивать все ODBC дюже проблематично, да и IP может снова поменяться.
Теперь сам вопрос: возможно ли средствами iptables перенаправить пакеты идущие к определённому порту ПК 192.168.10.1 ... на тот же порт ПК 192.168.10.21 ???
вернее перенаправить можно, но будут ли программы полноценно работать с SQL сервером??? _________________ С уважением Dimasm |
|
Вернуться к началу |
|
|
and3008
Зарегистрирован: 12.10.2001 Сообщения: 14893 Откуда: Н.Новгород
|
Добавлено: Ср Мар 07 2007 00:09 Заголовок сообщения: |
|
|
iptables это умеет. Перенаправление трафика с порта на порт внутри компа работает. Однако тестить надо.
Чтобы не бояться проблемы со сменой IP-адресов давным давно был придуман файл hosts, который потом перерос в службу DNS.
Идея понятна? Или уже понял что делать надо? |
|
Вернуться к началу |
|
|
Denjs
Зарегистрирован: 29.08.2003 Сообщения: 137
|
Добавлено: Ср Мар 07 2007 13:04 Заголовок сообщения: |
|
|
думаю с iptables это получится.
в разумном варианте - сделать типа "личный нат" для одной машины и одного порта.
т.е. клиент будет считать что она работает с "Б", а "Б" будет переотправлять запросы по этому порту от своего имени на "А". "А" будет думать что с ним работает "Б".
(Почему нат? а не скажем простое перенаправление? чтобы ответы к клиенту приходили от той машины к которой он послал запрос... а то получится так, что запрос пошел на Б а ответ пришел с А - думаю так работать ничего не будет.)
Другое дело - такой "извращенный нат" надо сделать для всех портов что у использует программа...
Проще наверное Вынести А в другую физическую подсеть... имхо... но думаю получится сделать и нат внутри одной сети. |
|
Вернуться к началу |
|
|
Dimasm
Зарегистрирован: 25.04.2005 Сообщения: 454
|
Добавлено: Ср Мар 07 2007 23:28 Заголовок сообщения: |
|
|
как я понимаю, если делать перенаправление то...
допустим ПК "А" -192.168.10.14 пытается подключиться к
192.168.10.1 - "В" TCP 5432 - БД postgreSQL.
Но сама база находится на 192.168.10.21
Если у нас работает REJECT, то пакеты приходящие на порт 5432 (192.168.10.1), будут в неизменённом виде отправляться на 192.168.10.21
Сервер (192.168.10.21) будет думать что с ним общается 192.168.10.14
И ответы посылать ему (192.168.10.14).
То есть от клиента пакеты будут идти по маршруту
192.168.10.14->192.168.10.1->192.168.10.21
а от сервера к клиенту
192.168.10.21->192.168.10.14
если делать через NAT, то надо две подсети на одном интерфейсе
т.е. алиасы вешать. мне кажется сложности лишние, да и по условиям задачи компы в одной сети
Хотя вы правы, надо пробовать.
Как я понял из ответов, теоретическая возможность этого есть _________________ С уважением Dimasm |
|
Вернуться к началу |
|
|
and3008
Зарегистрирован: 12.10.2001 Сообщения: 14893 Откуда: Н.Новгород
|
Добавлено: Чт Мар 08 2007 00:36 Заголовок сообщения: |
|
|
Не путайте REJECT с REDIRECT
Первое отбрасывает пакет и уведомляет приславшую пакет сторону о этом факте, второе перенаправляет трафик.
Вообще аккуратно с опциями. Неверные действия могут привести к неожиданным результатам, вплоть до полной неработоспособности сетевой системы компа. Спасет только сброс всех правил с консоли. |
|
Вернуться к началу |
|
|
Dimasm
Зарегистрирован: 25.04.2005 Сообщения: 454
|
Добавлено: Чт Мар 08 2007 08:50 Заголовок сообщения: |
|
|
Верно, я ошибся с REJECT
Изучение теории расстраивает
Цитата: | 6.5.7. Действие MIRROR
Действие MIRROR может использоваться вами только для экспериментов и в демонстрационных целях, поскольку это действие может привести к "зацикливанию" пакета и в результате к "Отказу от обслуживания". В результате действия MIRROR в пакете, поля source и destination меняются местами (invert the source and destination fields) и пакет отправляется в сеть. Использование этой команды может иметь весьма забавный результат, наверное, со стороны довольно потешно наблюдать, как какой нибудь кульхацкер пытается "взломать" свой собственный компьютер!
|
В памяти отложилось последнее предложение, и я предпологал что можно так извратиться
далее...
Цитата: | 6.5.9. Действие REDIRECT
Выполняет перенаправление пакетов и потоков на другой порт той же самой машины. К примеру, можно пакеты, поступающие на HTTP порт перенаправить на порт HTTP proxy. Действие REDIRECT очень удобно для выполнения "прозрачного" проксирования (transparent proxying), когда машины в локальной сети даже не подозревают о существовании прокси.
REDIRECT может использоваться только в цепочках PREROUTING и OUTPUT таблицы nat. И конечно же это действие можно выполнять в подцепочках, вызываемых и вышеуказанных. Для действия REDIRECT предусмотрен только один ключ.
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080 |
К сожалению тоже не катит
Denjs был прав
наверное более близко к требуемому - DNAT
Цитата: | 6.5.2. Действие DNAT
DNAT (Destination Network Address Translation) используется для преобразования адреса места назначения в IP заголовке пакета. Если пакет подпадает под критерий правила, выполняющего DNAT, то этот пакет, и все последующие пакеты из этого же потока, будут подвергнуты преобразованию адреса назначения и переданы на требуемое устройство, хост или сеть. Данное действие может, к примеру, успешно использоваться для предоставления доступа к вашему web-серверу, находящемуся в локальной сети, и не имеющему реального IP адреса. Для этого вы строите правило, которое перехватывает пакеты, идущие на HTTP порт брандмауэра и выполняя DNAT передаете их на локальный адрес web-сервера. Для этого действия так же можно указать диапазон адресов, тогда выбор адреса назначения для каждого нового потока будет производиться случайнам образом. |
iptables -t nat -A PREROUTING --dst 192.168.10.1 -p tcp --dport 5432 -j DNAT \
--to-destination 192.168.10.21
Я пока ещё не пробовал, но если в цепочке моих рассуждений есть ошибка - поправьте меня _________________ С уважением Dimasm |
|
Вернуться к началу |
|
|
|