Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: iptables DNAT  (Прочитано 8382 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн komex

  • Автор темы
  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
iptables DNAT
« : 25 Января 2011, 01:15:00 »
Здравствуйте.
Вопрос уже избитый, но проблема все же есть. Задача простая - перенаправить порты.
Сеть имеет следующий вид:
Стоит комп, который имеет 2 сетевухи: одна в инет, другая в свою маленькую сеть. Интеренет через vpn (есть инет, сеть провайдера и моя сеть) со статическим IP.
Так же есть n компов в моей сети. На одном из них запущен сервис (для удобства допустим, что это http на 80 порту).
Нужно, что бы обращаясь через интернет на 80 порт, был переброс на 80 порт этой машины в моей сети.
Делаю так:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.0.5:80Но при обращении telnet через инет выдает timeout. Если напрямую, то подключается.
В чем может быть проблема?

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13761
    • Просмотр профиля
Re: iptables DNAT
« Ответ #1 : 25 Января 2011, 08:37:37 »
добавил бы ещё в правило destination-адрес - было бы нормальное правило?
форвард разрешён? какие ещё правила в таблесы прикручены?
Хоть доки читал?

Оффлайн komex

  • Автор темы
  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Re: iptables DNAT
« Ответ #2 : 25 Января 2011, 10:10:57 »
добавил бы ещё в правило destination-адрес - было бы нормальное правило?
форвард разрешён? какие ещё правила в таблесы прикручены?
Хоть доки читал?

Пробовал разные варианты. destination-адрес тоже указывал. Вся штука в том, что раньше работало, а потом вдруг перестало (хотя скорее всего не вдруг, а что-то накрутил).
Доки читал. Вот то, что я делаю:
iptables -t nat -F
iptables -F
iptables -t nat -A PREROUTING -p tcp --dport 9177 -j DNAT --to-destination 192.168.0.2:9177
iptables -t nat -A PREROUTING -p udp --dport 9178 -j DNAT --to-destination 192.168.0.2:9178
iptables -t nat -A PREROUTING -p tcp --dport 9179 -j DNAT --to-destination 192.168.0.2:9179
iptables -t nat -A PREROUTING --dst <Внешний IP> -p tcp --dport 58559 -i ppp0 -j DNAT --to-destination 192.168.0.2:58559
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 4450 -j DNAT --to-destination 192.168.0.5:445
iptables -t nat -A PREROUTING -p tcp --dport 49160 -j DNAT --to-destination 192.168.0.1:49160
iptables -t nat -A POSTROUTING -j MASQUERADE
iptables -t nat -A PREROUTING -i eth1 -p tcp -s 192.168.0.0/24 ! -d 192.168.0.0/24 --dport 80 -j REDIRECT --to-port 3128

Все нормально тут?

Оффлайн censor

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
Re: iptables DNAT
« Ответ #3 : 25 Января 2011, 12:06:47 »
попробуй
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.2:80
если политика для FORWARD отличная от ACCEPT, добавь
iptables -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

http://www.debianhelp.ru/iptables/iptables-tutorial.html#DNATTARGET
« Последнее редактирование: 25 Января 2011, 15:48:45 от censor »

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13761
    • Просмотр профиля
Re: iptables DNAT
« Ответ #4 : 25 Января 2011, 12:10:34 »
Для анализа работы правил надо показывать результирующие, например так
sudo iptables-saveлибо
sudo iptables -nvL
sudo iptables -nvL -t nat

Из скрипта смутила команда
iptables -t nat -A POSTROUTING -j MASQUERADEТочно весь траффик надо маскарадить?

Ну и отсутствие destination-адреса во всех правилах перенаправления  (кроме порта 58559), как бы намекает, что он шлюз обслуживает эти порты со всех сторон, т.е. перенаправляет с любого интерфейса.

Оффлайн komex

  • Автор темы
  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Re: iptables DNAT
« Ответ #5 : 25 Января 2011, 18:28:36 »
попробуй
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.2:80
если политика для FORWARD отличная от ACCEPT, добавь
iptables -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

http://www.debianhelp.ru/iptables/iptables-tutorial.html#DNATTARGET

Не помогло.

Из скрипта смутила команда
iptables -t nat -A POSTROUTING -j MASQUERADEТочно весь траффик надо маскарадить?

Ну и отсутствие destination-адреса во всех правилах перенаправления  (кроме порта 58559), как бы намекает, что он шлюз обслуживает эти порты со всех сторон, т.е. перенаправляет с любого интерфейса.

Хм. Если честно, на этот вопрос затрудняюсь ответить. Вроде бы, когда я настраивал маршрутизацию, без этого не работало. Комп раздает инет и сетку на другие компы. Можно обойтись без MASQUERADE?

И пусть обслуживает со всех сторон, какая разница? Тем более, что я пробовал и с указанием destination-адреса, разницы нет.

Вот вывод iptables-save:
# Generated by iptables-save v1.4.4 on Tue Jan 25 18:12:49 2011
*filter
:INPUT ACCEPT [2420168:750574738]
:FORWARD ACCEPT [40149:4099718]
:OUTPUT ACCEPT [2954819:2673132317]
COMMIT
# Completed on Tue Jan 25 18:12:49 2011
# Generated by iptables-save v1.4.4 on Tue Jan 25 18:12:49 2011
*nat
:PREROUTING ACCEPT [3244868:295284497]
:OUTPUT ACCEPT [1834105:156198525]
:POSTROUTING ACCEPT [1067:49118]
-A PREROUTING -p tcp -m tcp --dport 9177 -j DNAT --to-destination 192.168.0.2:9177
-A PREROUTING -p udp -m udp --dport 9178 -j DNAT --to-destination 192.168.0.2:9178
-A PREROUTING -p tcp -m tcp --dport 9179 -j DNAT --to-destination 192.168.0.2:9179
-A PREROUTING -i ppp0 -p tcp -m tcp --dport 58559 -j DNAT --to-destination 192.168.0.2:58559
-A PREROUTING -p tcp -m tcp --dport 49160 -j DNAT --to-destination 192.168.0.1:49160
-A PREROUTING -s 192.168.0.0/24 ! -d 192.168.0.0/24 -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
-A POSTROUTING -j MASQUERADE
COMMIT
# Completed on Tue Jan 25 18:12:49 2011


Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: iptables DNAT
« Ответ #6 : 25 Января 2011, 18:37:44 »
-I PREROUTING -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

Так, как у вас, ВЕСЬ трафик на 80 порт будет роутится, в том числе навигация по интернету.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн komex

  • Автор темы
  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Re: iptables DNAT
« Ответ #7 : 25 Января 2011, 19:08:05 »
-I PREROUTING -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

Так, как у вас, ВЕСЬ трафик на 80 порт будет роутится, в том числе навигация по интернету.

Ммм. Не совсем понял, что вы имели в виду. Про 80 порт в начале я сказал для примера. Мне нужно просто пробросить порт.
И что означает данная команда? И как она будет выглядеть полностью?

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: iptables DNAT
« Ответ #8 : 25 Января 2011, 19:39:59 »
После таких вопросов - man iptables
Пока не поймёте, как вообще работает брандмауэр, настраивать его - дело гиблое.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн Unreg

  • Активист
  • *
  • Сообщений: 751
  • Ubuntu 8.04 / Acer Aspire One 110 > Debian 5.04
    • Просмотр профиля
    • LJ
Re: iptables DNAT
« Ответ #9 : 25 Января 2011, 21:01:23 »
такой не скромный вопрос
на хосте 192.168.0.2 порт tcp/9177 что нибудь прослушивает?


Оффлайн komex

  • Автор темы
  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Re: iptables DNAT
« Ответ #10 : 25 Января 2011, 23:41:45 »
После таких вопросов - man iptables
Пока не поймёте, как вообще работает брандмауэр, настраивать его - дело гиблое.

Может это уровень немного выше чем базовый? Мне же надо просто настроить простые правила. Я так и сделал, читая ман и форумы. Какое-то время работало, потом перестало. И правила почему-то не выполняются. Вот и хотелось бы узнать, какие могут быть варианты. Считаю, что лучше спросить тех, кто в этом разбирается, чем по много раз перечитывать документацию. Но если наиболее простые варианты не сработают, буду глубже читать доки.
Так расскажете попроще что надо сделать или все же настаиваете на man и гугл?

такой не скромный вопрос
на хосте 192.168.0.2 порт tcp/9177 что нибудь прослушивает?

Да, это для DC++.

Гарри Кашпировский

  • Гость
Re: iptables DNAT
« Ответ #11 : 25 Января 2011, 23:45:58 »
Цитировать
Нужно, что бы обращаясь через интернет на 80 порт, был переброс на 80 порт этой машины в моей сети.
Пара вопросов: VPN-туннелю на вашем конце присваивается реальный адрес?
Провайдер случаем не пркрыл 80-й порт с наружи? (Некоторые любят так делать)

Оффлайн komex

  • Автор темы
  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Re: iptables DNAT
« Ответ #12 : 25 Января 2011, 23:59:53 »
Цитировать
Нужно, что бы обращаясь через интернет на 80 порт, был переброс на 80 порт этой машины в моей сети.
Пара вопросов: VPN-туннелю на вашем конце присваивается реальный адрес?
Провайдер случаем не пркрыл 80-й порт с наружи? (Некоторые любят так делать)

Да, адрес реальный. И снаружи не закрыто. На этой же машине запущены сервисы, к которым можно обращаться через инет. Не работает именно перенаправление портов.
И 80 порт - только для простоты. Нужно перенаправлять любые порты, но правила мои почему-то не срабатывают. Хотя раньше работали.

Оффлайн Unreg

  • Активист
  • *
  • Сообщений: 751
  • Ubuntu 8.04 / Acer Aspire One 110 > Debian 5.04
    • Просмотр профиля
    • LJ
Re: iptables DNAT
« Ответ #13 : 26 Января 2011, 00:07:35 »
sudo iptables -t nat -I PREROUTING -p tcp -m tcp --dport 80 -j LOG; sudo tail -f /var/log/{syslog,messages}через, например, http://www.yougetsignal.com/tools/open-ports/ обращаетесь к своему внешнему адресу

Оффлайн komex

  • Автор темы
  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Re: iptables DNAT
« Ответ #14 : 26 Января 2011, 00:56:06 »
sudo iptables -t nat -I PREROUTING -p tcp -m tcp --dport 80 -j LOG; sudo tail -f /var/log/{syslog,messages}через, например, http://www.yougetsignal.com/tools/open-ports/ обращаетесь к своему внешнему адресу

Ничего не понимаю. Теперь перенаправление работает снова! Просто пришел, проверил через указанный сайт - показывает, что порт открыт. Проверяю telnet'ом - и правда открыт. Проверяю другой порт. Сайт говорит, что открыт, telnet не подключается. Что это может значить?

 

Страница сгенерирована за 0.018 секунд. Запросов: 21.