Добрый день!
Толи из-за того что неделя к концу подходит толи еще из-за чего то смотрю на чистый 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. проверяю подключение из внешней сети, другой сегмент.
iptables и dnat в свою внешнюю сеть
Модератор: SLEDopit
Re: iptables и dnat в свою внешнюю сеть
вам нужно подумать, в какие цепочки попадает пакет, идущий через ваш хост =)
- esvaf
- Бывший модератор
- Сообщения: 844
- Статус: экс- LinuxForum.Ru team
- ОС: CentOS 5.3
- Контактная информация:
Re: iptables и dnat в свою внешнюю сеть
mangle(prerouting)-nat(prerouting)-mangle(forward)-filter(forward)-mangle(postrouting)-nat(postrouting)
Во всех цепочках действие по умолчанию - accept. Других правил пока нет.
Re: iptables и dnat в свою внешнюю сеть
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
Re: iptables и dnat в свою внешнюю сеть
Совершенно верно. Просто нужно после 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
iptables -t nat -A POSTROUTING --dst х.х.71.49 -p tcp --dport 5050 -j SNAT --to-source х.х.71.28