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


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: HOWTO: Iptables для новичков  (Прочитано 530354 раз)

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

Оффлайн ANt1T

  • Новичок
  • *
  • Сообщений: 42
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #330 : 29 Мая 2009, 17:26:37 »
Эмм... по поиску не нашел...
Доброго времени суток, подскажите плз.
Есть следующая ситуация.
Сеть в квартире + 2 канала интернет. 1 для впн (внешний ип), 2 для анлим инета. соответственно 2 роутера, пускающие инет в домашнюю сеть.
Как бы поставить Ubuntu сервер (2 сетевые карты), чтобы роутить впн трафик на один ИП, а весь остальной на другой(аська, скайп, инет...)?
Так вот, можете подсказать, как это всё лучше сотворить, самый простой конфиг, ничего не ограничевая. Просто маршрутизацию на такую прелесть. (с портами и правилами я вроде понял всё, сам настрою).
Спасибо.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #331 : 29 Мая 2009, 20:07:10 »
Можетя буду глупо выглядеть, но все-же я новичек.
Вопрос не новый, но я уже устал бороться своими силами, в инете мног чего написано, но у меня ничего не получается.
Я сделел шлюз на Ubuntu-сервере...настроил DHCP, SQUID.
Мне нужно пробросить 3389 порт из интернета на внутренний комп (192.168.0.2)
eth0 - инет(ip xxx.xxx.xxx.xxx); eth1 - внутренняя сеть(192.168.0.1)

если не сложно, то укажите два варианта с внешней на внутреннюю.
прямой: 3389->3389
с изменением портов 12345->3389

Заранее благодарен

Добрый совет - не делать этого.
Воспользуйся умением SSH сервера(+клиентов) мапить порты.
RDP штука дырявая по определению.

Пользователь решил продолжить мысль 29 Мая 2009, 20:14:42:
Эмм... по поиску не нашел...
Доброго времени суток, подскажите плз.
Есть следующая ситуация.
Сеть в квартире + 2 канала интернет. 1 для впн (внешний ип), 2 для анлим инета. соответственно 2 роутера, пускающие инет в домашнюю сеть.
Как бы поставить Ubuntu сервер (2 сетевые карты), чтобы роутить впн трафик на один ИП, а весь остальной на другой(аська, скайп, инет...)?
Так вот, можете подсказать, как это всё лучше сотворить, самый простой конфиг, ничего не ограничевая. Просто маршрутизацию на такую прелесть. (с портами и правилами я вроде понял всё, сам настрою).
Спасибо.

Переведи на русский, а? Похоже, ты сам не представляешь ясно, что ты хочешь сделать.
« Последнее редактирование: 29 Мая 2009, 20:14:42 от AnrDaemon »
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

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

Оффлайн G-Dogg

  • Любитель
  • *
  • Сообщений: 73
  • Йа нубат
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #332 : 30 Мая 2009, 08:44:17 »
написал iptables скрипт для 3х ай пи (планируется для 60-70), хочу поинетересоваться - правильно ли
написал для 3х IP на основе МэдКоксовских рекомендаций и примеров. Вопрос в цепочке FORWARD :
1. может вместо -i надо -s ??
2. как правильно DROP-нуть
3. вообще правильно я сделал?

(Нажмите, чтобы показать/скрыть)

Оффлайн Lion-Simba

  • Старожил
  • *
  • Сообщений: 1126
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #333 : 30 Мая 2009, 10:24:42 »
написал iptables скрипт для 3х ай пи (планируется для 60-70), хочу поинетересоваться - правильно ли
написал для 3х IP на основе МэдКоксовских рекомендаций и примеров. Вопрос в цепочке FORWARD :
1. может вместо -i надо -s ??
-i <имя входного интерфейса>
-s <IP-адрес источника пакета>
2. как правильно DROP-нуть
Смотря что нужно дропнуть.
Оказываю индивидуальную платную техподдержку широкого профиля. Обращаться в ЛС или Jabber.

Оффлайн Tokh

  • Активист
  • *
  • Сообщений: 705
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #334 : 30 Мая 2009, 21:27:35 »
написал iptables скрипт для 3х ай пи (планируется для 60-70)... в цепочке FORWARD :
1. может вместо -i надо -s ??
3. вообще правильно я сделал?

Я так думаю, что надо и то и другое. Потому как нет гарантий, что на внешнем интерфейсе не окажутся входящие пакеты с внутренними адресами и наоборот. Эти возможности надо рассмотреть. Другое дело, что эти проверки можно растащить по разным цепям. Об этом ниже.

По части производительности.

Иногда бывает, что адресов гораздо больше чем нужных им портов. Я бы сделал как в http://www.opennet.ru/docs/RUS/iptables/index.html
Сначала выборка по протоколу (tcp, udp, ICMP), потом по номеру порта, потом уже по адресу клиента. Тогда получается, что правила меньше нагружают комп. И вместо Вашего "данный адрес может ходить через конкретный набор портов", получится "через данный порт и протокол может ходить кокретный набор адресов". Или другими словами, при этом получится для каждого протокола отдельная таблица (список) разрешённых портов (для ICMP нет понятия порт), а затем для каждого номера порта отдельная таблица допущенных адресов. Когда адресов много, то это ускоряет обработку.

Политика по умолчанию, настроена на DROP, т.е. она сбросит всё, что не было разрешено. Поэтому конкретно такие штуки как
$IPTABLES -A FORWARD -i $LAN_IFACE -j DROP
лишние.

Но такие блокировки могут быть полезны, если через интернет организован VPN канал, содержимое которого нельзя выпускать в интернет. Если канал "упадёт" и его виртуальный адаптер станет несуществующим, то при определённой конфигурации трафик для VPN канала может пойти напрямую в инет. Из этого и тогда, при таких сервисах напрямую надо резать, только резать надо не в этой цепи, а в POSTROUTING, в табличке nat, непосредственно перед действием SNAT или перед маскарадингом. И при этом учитывать IP адреса или их диапазон в сочетании с исходящим адаптером, равным инет адаптеру. В POSTROUTING уже последняя точка, там оказываются пакеты уже обработанные согласно маршрутов, поэтому именно такое надёжнее резать там. Надёжнее - на случай своих логических ошибок.

Я бы подумал над журналированием разрешённого трафика тоже. В случае споров это позволяет самому быть уверенным в том, что какой-либо факт был или не был.

Иногда из цепочки INPUT можно выкинуть всю локалку, но оставив только избранное. Тогда, кстати, может пригодиться предложенный выше подход. Для Forward уже есть цепочки-таблички "допушенных" адресов. А из цепи Input, точно также как и из Forward, можно передавать "ход" в теже самые цепочки-таблички "допушенных" адресов, что используются для Forward (одна цепочка-табличка может быть использована несколькими другими). Если это согласуется с задуманным. Задумать-то можно поразному...
« Последнее редактирование: 30 Мая 2009, 21:32:08 от u-375 »
StarDict и Mueller помогут против английского мануала.

Оффлайн malartem

  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #335 : 01 Июня 2009, 11:19:21 »
Добрый совет - не делать этого.
Воспользуйся умением SSH сервера(+клиентов) мапить порты.
RDP штука дырявая по определению.

я б с большим удовольствием.....но к сожалению не знаю как. :(
мне просто нужно проборосить РДП... хотел iptables, но уже правил 20 пробывал, ниче не получается.
теперь не знаю, что делать

Пользователь решил продолжить мысль 01 Июня 2009, 07:34:07:
так как-же мне пробросить порт 3389 ???

Пользователь решил продолжить мысль 02 Июня 2009, 08:39:12:
я так понимаю, тем кто спец в iptables или тем кто пробросил порт 3389 объяснить как это сделать не должно составить особого труда...
напишите если не так сложно...... очень надо :-[
« Последнее редактирование: 02 Июня 2009, 11:05:03 от malartem »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #336 : 02 Июня 2009, 20:03:18 »
А почитать самому? Это настолько просто, что я даже не знаю, с чего начать объяснение.
Наверное, проще всего будет отослать к хелпу putty - после него всё должно стать кристалльно ясно.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

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

Оффлайн G-Dogg

  • Любитель
  • *
  • Сообщений: 73
  • Йа нубат
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #337 : 03 Июня 2009, 07:22:49 »
написал iptables скрипт для 3х ай пи (планируется для 60-70)... в цепочке FORWARD :
1. может вместо -i надо -s ??
3. вообще правильно я сделал?

Я так думаю, что надо и то и другое. Потому как нет гарантий, что на внешнем интерфейсе не окажутся входящие пакеты с внутренними адресами и наоборот. Эти возможности надо рассмотреть. Другое дело, что эти проверки можно растащить по разным цепям. Об этом ниже.

По части производительности.

Иногда бывает, что адресов гораздо больше чем нужных им портов. Я бы сделал как в http://www.opennet.ru/docs/RUS/iptables/index.html
Сначала выборка по протоколу (tcp, udp, ICMP), потом по номеру порта, потом уже по адресу клиента. Тогда получается, что правила меньше нагружают комп. И вместо Вашего "данный адрес может ходить через конкретный набор портов", получится "через данный порт и протокол может ходить кокретный набор адресов". Или другими словами, при этом получится для каждого протокола отдельная таблица (список) разрешённых портов (для ICMP нет понятия порт), а затем для каждого номера порта отдельная таблица допущенных адресов. Когда адресов много, то это ускоряет обработку.

Политика по умолчанию, настроена на DROP, т.е. она сбросит всё, что не было разрешено. Поэтому конкретно такие штуки как
$IPTABLES -A FORWARD -i $LAN_IFACE -j DROP
лишние.

Но такие блокировки могут быть полезны, если через интернет организован VPN канал, содержимое которого нельзя выпускать в интернет. Если канал "упадёт" и его виртуальный адаптер станет несуществующим, то при определённой конфигурации трафик для VPN канала может пойти напрямую в инет. Из этого и тогда, при таких сервисах напрямую надо резать, только резать надо не в этой цепи, а в POSTROUTING, в табличке nat, непосредственно перед действием SNAT или перед маскарадингом. И при этом учитывать IP адреса или их диапазон в сочетании с исходящим адаптером, равным инет адаптеру. В POSTROUTING уже последняя точка, там оказываются пакеты уже обработанные согласно маршрутов, поэтому именно такое надёжнее резать там. Надёжнее - на случай своих логических ошибок.

Я бы подумал над журналированием разрешённого трафика тоже. В случае споров это позволяет самому быть уверенным в том, что какой-либо факт был или не был.

Иногда из цепочки INPUT можно выкинуть всю локалку, но оставив только избранное. Тогда, кстати, может пригодиться предложенный выше подход. Для Forward уже есть цепочки-таблички "допушенных" адресов. А из цепи Input, точно также как и из Forward, можно передавать "ход" в теже самые цепочки-таблички "допушенных" адресов, что используются для Forward (одна цепочка-табличка может быть использована несколькими другими). Если это согласуется с задуманным. Задумать-то можно поразному...

Статью по iptables читал на 3 раза, все равно туплю, если бы мне на примере показали как разделить юзеров согласно вышенаписанному - был бы признателен

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #338 : 03 Июня 2009, 08:12:42 »
На листочке нарисуй схему. Поможет.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

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

Оффлайн malartem

  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #339 : 03 Июня 2009, 10:00:50 »
А почитать самому? Это настолько просто, что я даже не знаю, с чего начать объяснение.
Наверное, проще всего будет отослать к хелпу putty - после него всё должно стать кристалльно ясно.

я уже несколько раз весь мануал по iptables перечитал. Не помогает. Правила не срабатывают...
Проще говоря я сделал роутер по мануалу https://forum.ubuntu.ru/index.php?topic=3244.0
настроил dhcp сервер, поднял ssh, webmin(но он косячный, поэтому снес).. все работает.. инет у всех работает прекрасно, на клиентских машинах ниче прописывать не надо..
а вот пробросить порт из вне не могу.

пример правила 12345 -> 3389
iptables -A FORWARD -i eth0 -d 192.168.0.2 -p tcp --dport 3389 -j ACCEPT 
iptables -t nat -A PREROUTING -p tcp -d ххх.ххх.ххх.ххх --dport 12345 -j DNAT --to-destination 192.168.0.2:3389

напрямую проброс 3389
iptables -t nat -A PREROUTING -p tcp -d ххх.ххх.ххх.ххх --dport 3389 -j DNAT --to-destination 192.168.0.2:3389 
iptables -t nat -A POSTROUTING -p tcp --dst 192.168.0.2 --dport 3389 -j SNAT --to-source ххх.ххх.ххх.ххх
iptables -A FORWARD -i eth0 -d 192.168.0.2 -p tcp --dport 3389 -j ACCEPT

что не так?

Оффлайн vivk

  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #340 : 03 Июня 2009, 11:19:41 »
может так?
sudo iptables -t nat -A PREROUTING -i eth0 -d ! 192.168.0.2 -p tcp -m multiport --dport 12345 -j DNAT --to ххх.ххх.ххх.ххх:3389

ну и в самом Squid убедится что порты открыты.
ubuntu 9.04

Оффлайн malartem

  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #341 : 03 Июня 2009, 13:21:37 »
может так?
sudo iptables -t nat -A PREROUTING -i eth0 -d ! 192.168.0.2 -p tcp -m multiport --dport 12345 -j DNAT --to ххх.ххх.ххх.ххх:3389

ну и в самом Squid убедится что порты открыты.
Не сработало.
Где в Squide смотреть открытые порты?
Я в Squid у себя менял следующие правила:
http_port 3128 transparent
cache_dir ufs /var/spool/squid 100 16 256
acl our_networks src 192.168.0.0/24
http_access allow all

повторяю.. я новичек, поэтому и спрашиваю
сколько вообще нужно правил для проброски порта???

все мои настройки связанные с доступом:
apt-get install dnsmasq
apt-get install ipmasq
apt-get install squid
/etc/squid/squid.conf
#изменения конфига
http_port 3128 transparent
cache_dir ufs /var/spool/squid 100 16 256
acl our_networks src 192.168.0.0/24
http_access allow all
iptables -t nat -A PREROUTING -i eth0 -d ! 192.168.0.0/24 -p tcp -m multiport --dport 80,8080 -j DNAT --to 192.168.0.1:3128
« Последнее редактирование: 03 Июня 2009, 14:21:52 от malartem »

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #342 : 03 Июня 2009, 15:06:19 »
А почитать самому? Это настолько просто, что я даже не знаю, с чего начать объяснение.
Наверное, проще всего будет отослать к хелпу putty - после него всё должно стать кристалльно ясно.

я уже несколько раз весь мануал по iptables перечитал.
....
что не так?

Да хватит уже мучаться-то...
https://forum.ubuntu.ru/index.php?topic=58162
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

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

Оффлайн malartem

  • Новичок
  • *
  • Сообщений: 13
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #343 : 04 Июня 2009, 09:34:05 »
яж говорю я не спец :-\
как с этим работать?
putty.exe -v -ssh -2 -P 22 -C -l user -pw password -R 3389:3389  xxx.dyndns.com, так я вижу на 127.0.0.1 rdp с
putty.exe -v -ssh -2 -P 22 -C -l user -pw password -R 3389:192.168.1.4:3389 xxx.dyndns.com

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 28511
    • Просмотр профиля
Re: HOWTO: Iptables для новичков
« Ответ #344 : 05 Июня 2009, 04:07:53 »
Млять, ну дал же тему... до конца почитать кто-то мешал, торопили? Со сковородкой занесенной над тобой стояли?
-R - мап порта из твоей сети в сеть сервера. Я могу представить себе, для чего это бывает надо, но оччень слабо.
-L - мап порта из сети сервера в твою. ЭТО тебе и надо.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

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

 

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