iptables и dnat в свою внешнюю сеть

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС для молодых и начинающих системных администраторов.

Модератор: SLEDopit

Ответить
Аватара пользователя
esvaf
Бывший модератор
Сообщения: 844
Статус: экс- LinuxForum.Ru team
ОС: CentOS 5.3
Контактная информация:

iptables и dnat в свою внешнюю сеть

Сообщение esvaf »

Добрый день!
Толи из-за того что неделя к концу подходит толи еще из-за чего то смотрю на чистый Iptalbes на новые ворота. Хотя собственно так оно и есть.
Есть сервер, на который поставили iptables в accept по умолчанию. Все сервисы как работали, так и работают. Но есть задача форвардить порт 5050 на другой сервер из этой же внешней сети, т.е.
клиент устанавливает соединение на x.x.71.28 tcp 5050 но через DNAT на практике должен общаться c x.x.71.49 tcp 5050

Пробую
iptables -t nat -A PREROUTING --dst х.х.71.28 -p tcp --dport 5050 -j DNAT --to-destination х.х.71.49

нифига - телнет на этот порт отваливается по времени (кстати без правила оно говорит connection refused, что вполне логично)

В порядке эксперимента было сделано
iptables -t nat -A OUTPUT --dst х.х.71.28 -p tcp --dport 5050 -j DNAT --to-destination х.х.71.49
При таком раскладе если делать с сервера, который должен натить (х.х.71.28) telnet x.x.71.28 5050, то все срабатывает правильно.

Но как быть с внешними подключениями?
P.S. проверяю подключение из внешней сети, другой сегмент.
Спасибо сказали:
Аватара пользователя
butch
Сообщения: 331
ОС: :OC

Re: iptables и dnat в свою внешнюю сеть

Сообщение butch »

вам нужно подумать, в какие цепочки попадает пакет, идущий через ваш хост =)
Спасибо сказали:
Аватара пользователя
esvaf
Бывший модератор
Сообщения: 844
Статус: экс- LinuxForum.Ru team
ОС: CentOS 5.3
Контактная информация:

Re: iptables и dnat в свою внешнюю сеть

Сообщение esvaf »

butch писал(а):
07.05.2009 16:45
вам нужно подумать, в какие цепочки попадает пакет, идущий через ваш хост =)

mangle(prerouting)-nat(prerouting)-mangle(forward)-filter(forward)-mangle(postrouting)-nat(postrouting)

Во всех цепочках действие по умолчанию - accept. Других правил пока нет.
Спасибо сказали:
Аватара пользователя
danger08
Сообщения: 715
ОС: Linux (CentOS, Ubuntu)
Контактная информация:

Re: iptables и dnat в свою внешнюю сеть

Сообщение danger08 »

esvaf писал(а):
07.05.2009 16:30
Добрый день!
Толи из-за того что неделя к концу подходит толи еще из-за чего то смотрю на чистый Iptalbes на новые ворота. Хотя собственно так оно и есть.
Есть сервер, на который поставили iptables в accept по умолчанию. Все сервисы как работали, так и работают. Но есть задача форвардить порт 5050 на другой сервер из этой же внешней сети, т.е.
клиент устанавливает соединение на x.x.71.28 tcp 5050 но через DNAT на практике должен общаться c x.x.71.49 tcp 5050

Пробую
iptables -t nat -A PREROUTING --dst х.х.71.28 -p tcp --dport 5050 -j DNAT --to-destination х.х.71.49

нифига - телнет на этот порт отваливается по времени (кстати без правила оно говорит connection refused, что вполне логично)

Классические грабли, почитайте здесь: http://www.opennet.ru/docs/RUS/iptables/#DNATTARGET; в частности, все, что после фразы: "А теперь посмотрим, что произойдет, если запрос посылается с узла, расположенного в той же локальной сети. Для простоты изложения примем адрес клиента в локальной сети равным $LAN_BOX." (в вашем случае, представьте что LAN - это глобальная сеть за вашим роутером - и все встанет на свои места).

Если не поймете - напишу поподробнее, в чем проблема (но с информацией по ссылке, думаю, разберетесь).
Блогосайт - http://www.fateyev.com
Спасибо сказали:
pelmen
Сообщения: 1268
ОС: debian

Re: iptables и dnat в свою внешнюю сеть

Сообщение pelmen »

Совершенно верно. Просто нужно после DNAT сделать SNAT, так как Ваш реальный сервер х.х.71.49 будет отправлять ответы Вашему Клиенту, а тот будет отбрасывать эти ответы, так как ждет их не от него а от х.х.71.28. По-этому нужно, чтобы х.х.71.49 отправлял ответы х.х.71.28, а тот обратно Клиенту, типа это он ответил. Короче:
iptables -t nat -A POSTROUTING --dst х.х.71.49 -p tcp --dport 5050 -j SNAT --to-source х.х.71.28
Спасибо сказали:
Ответить