Page 4 of 12 FirstFirst ... 23456 ... LastLast
Results 46 to 60 of 174

Thread: помогите с конфигурацией iptables

  1. #46
    Join Date
    Aug 2006
    Location
    Moscow, Russia
    Posts
    788
    На роутере данная команда будет блокировать только новые соединения на 5190 порт. Для блокирования всех исходящих пакетов:
    iptables -I FORWARD -s 192.168.1.2 -p tcp --dport 5190 -j DROP

  2. #47
    Quote Originally Posted by Mam(O)n View Post
    На роутере данная команда будет блокировать только новые соединения на 5190 порт. Для блокирования всех исходящих пакетов:
    iptables -I FORWARD -s 192.168.1.2 -p tcp --dport 5190 -j DROP
    Во-первых, это все не правда, блокируются все соединения с указанного адреса на порт 5190, во-вторых, Ваша команда написана с ошибкой, в-третьих, iptables -A добавить правило в конец, а iptables -I в указанное место, которое в вашей команде пропущено.

    Quote Originally Posted by Игорь View Post
    Очень прошу совету, помогите понять почему не едут лыжи.
    Хочу запретить аську, контру и разное другое по мелочи для определенного айпи, делаю так
    iptables -A FORWARD -s 192.168.1.2 -p tcp --dport 5190 -j DROP
    а она работает хоть бы хны
    Посылание на хелп с примерами приветствуются, нашел http://www.opennet.ru/docs/RUS/iptables/ но это как для моей задачи слишком фундаментально имхо.
    В общем спасайте камрады, а то сеструху с универа выгонят, ночью просыпается и асится , потом опаздывает.
    Указанное Вами правило добавляется в конец цепочки FORWARD, возможно что ранее есть правило -j ACCEPT которое и позволяет соединению устанавливаться.
    Покажите результат выполнения команды iptables -v --line-numbers -L FORWARD

  3. #48
    Join Date
    Aug 2006
    Location
    Moscow, Russia
    Posts
    788
    Quote Originally Posted by Ilmarinen View Post
    Во-первых, это все не правда, блокируются все соединения с указанного адреса на порт 5190
    Я не ясно выразился. Я хотел подчеркнуть, что с моей командой будут болкироваться не только новые tcp соединения на 5190 порт.

    Quote Originally Posted by Ilmarinen View Post
    во-вторых, Ваша команда написана с ошибкой
    Она работает, я что то делаю не так?

    Quote Originally Posted by Ilmarinen View Post
    а iptables -I в указанное место, которое в вашей команде пропущено.
    Курим man iptables:
    -I, --insert chain [rulenum] rule-specification
    Insert one or more rules in the selected chain as the given rule number. So, if the rule number is 1, the rule or rules
    are inserted at the head of the chain. This is also the default if no rule number is specified.

    Quote Originally Posted by Ilmarinen View Post
    Указанное Вами правило добавляется в конец цепочки FORWARD, возможно что ранее есть правило -j ACCEPT которое и позволяет соединению устанавливаться.
    По-умолчанию есть правило, которое пропускает уже установленные соединения в целях оптимизации. И если правило добавлять в конец цепочки то оно не будет влиять на уже установленные tcp сессии:
    Code:
    [root@router ~]$ iptables -L FORWARD -vn
    Chain FORWARD (policy ACCEPT 1599 packets, 95300 bytes)
     pkts bytes target     prot opt in     out     source               destination         
        0     0 ACCEPT     all  --  br0    br0     0.0.0.0/0            0.0.0.0/0          
        0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0          state INVALID 
     2517  140K TCPMSS     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0          tcp flags:0x16/0x02 TCPMSS clamp to PMTU 
    81907   50M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0          state RELATED,ESTABLISHED 
        0     0 DROP       all  --  !br0   ppp0    0.0.0.0/0            0.0.0.0/0          
        0     0 DROP       all  --  !br0   vlan1   0.0.0.0/0            0.0.0.0/0          
     2881  207K SECURITY   all  --  !br0   *       0.0.0.0/0            0.0.0.0/0          state NEW 
     2880  207K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0          ctstate DNAT 
        0     0 DROP       all  --  *      br0     0.0.0.0/0            0.0.0.0/0
    Last edited by Mam(O)n; 28-11-2007 at 08:12.

  4. #49
    Quote Originally Posted by Mam(O)n View Post
    Я не ясно выразился. Я хотел подчеркнуть, что с моей командой будут болкироваться не только новые tcp соединения на 5190 порт.
    Возможно мы друг друга не поняли. Ваше правило само по себе дропает все пакеты согласно указанным критериям без относительно того новое это соединение или нет, другое дело, что в стандартной конфигурации есть правила в цепочке FORWARD которые пропускают пакеты в рамках уже установленных соединений.
    Она работает, я что то делаю не так?
    Курим man iptables:
    Ну это да прогнал, по причине того, что редко пользуюсь -I, забыл, что 1 там по умолчанию
    По-умолчанию есть правило, которое пропускает уже установленные соединения в целях оптимизации. И если правило добавлять в конец цепочки то оно не будет влиять на уже установленные tcp сессии:
    Точно так же там есть правило которое пропускает и новые соединения "изнутри" (правило номер 8 в Вашем примере), поэтому я и попросил показать существующие правила.
    А советовать добавить правило первым не зная того, что там еще в цепочке есть, как-то несколько рискованно. Я бы его поставил третьим в указанном Вами варианте (в моем это номер четыре, так как есть еще правило
    Code:
    1     130M  108G MACS       all  --  br0    any     anywhere             anywhere
    .

  5. #50
    Join Date
    Aug 2006
    Location
    Moscow, Russia
    Posts
    788
    Quote Originally Posted by Ilmarinen View Post
    Возможно мы друг друга не поняли. Ваше правило само по себе дропает все пакеты согласно указанным критериям без относительно того новое это соединение или нет, другое дело, что в стандартной конфигурации есть правила в цепочке FORWARD которые пропускают пакеты в рамках уже установленных соединений.
    Дык об чем и речь, поэтому правило вставляю в начало таблицы.

    Quote Originally Posted by Ilmarinen View Post
    Точно так же там есть правило которое пропускает и новые соединения "изнутри" (правило номер 8 в Вашем примере)
    Правило №8 в моем примере существует(по-умолчанию) дабы пропускать входящие соединения из wan в lan которые маскардятся, дабы они не дропнулись следующим правилом, которое устанавливается при WAN & LAN Filter => WAN to LAN Filter => Enable WAN to LAN Filter? Yes и Packets(WAN to LAN) not specified will be: DROP. Это правило в данном случае неинтересно.
    Quote Originally Posted by Ilmarinen View Post
    А советовать добавить правило первым не зная того, что там еще в цепочке есть, как-то несколько рискованно.
    Так у нас задача то именно дропнуть все транзитные пакеты на 5190 порт с источником ip=192.168.1.2. И чем же рисковано вставлять это правило в начало? Если только в lan не находится сервер который обрабатывает 5190 порт и со стороны wan есть клиент с ip=192.168.1.2. Но в этом случае достаточно к правилу добавить -i br0
    Quote Originally Posted by Ilmarinen View Post
    Я бы его поставил третьим
    В данном случае можно и третьим. Но вот теперь какраз и рискованно. Ведь неизвестно, что за правила могут оказатся перед ним под номером 1 и 2. Там может попастся и -j ACCEPT.
    Last edited by Mam(O)n; 28-11-2007 at 10:07.

  6. #51
    Join Date
    Dec 2003
    Location
    Russian Federation
    Posts
    8,356
    Quote Originally Posted by Ilmarinen View Post
    Во-первых, это все не правда, блокируются все соединения с указанного адреса на порт 5190, во-вторых, Ваша команда написана с ошибкой, в-третьих, iptables -A добавить правило в конец, а iptables -I в указанное место, которое в вашей команде пропущено.
    Это называется флуд. Либо пишите по делу, что конкретно неправильно, либо не пишите ничего.
    И избегайте категоричных высказываний типа "всё не правда".

  7. #52
    Join Date
    Mar 2007
    Location
    Russia, Ryazan
    Posts
    696
    Quote Originally Posted by Ilmarinen View Post
    Во-первых, это все не правда, блокируются все соединения с указанного адреса на порт 5190, во-вторых, Ваша команда написана с ошибкой, в-третьих, iptables -A добавить правило в конец, а iptables -I в указанное место, которое в вашей команде пропущено.
    Хм... Указывать на безграмотность в iptables не кому-нибудь, а Mam(O)nу, на мой (и, полагаю, не только мой) взгляд лучшему эксперту нашего форума именно в этом вопросе, причем делать это в форме на грани корректности, да еще с неполной аргументацией (без указания на конкретную ошибку), да еще и не разобравшись толком в допускаемом синтаксисе для опции -I, но тем не менее пребывая в полной уверенности в своей правоте по этой позиции...
    Вы, батенька, сильно рискуете.

  8. #53
    Вот до команды:
    Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
    num pkts bytes target prot opt in out source destination
    1 0 0 ACCEPT all -- br0 br0 anywhere anywhere
    2 0 0 DROP all -- any any anywhere anywhere state INVALID
    3 18682 13M ACCEPT all -- any any anywhere anywhere state RELATED,ESTABLISHED
    4 0 0 DROP all -- !br0 vlan1 anywhere anywhere
    5 0 0 SECURITY all -- !br0 any anywhere anywhere state NEW
    6 550 27730 ACCEPT all -- br0 any anywhere anywhere
    7 0 0 ACCEPT all -- any any anywhere anywhere ctstate DNAT
    8 0 0 DROP all -- any br0 anywhere anywhere
    Вот после:

    [admin@(none) root]$ iptables -I FORWARD -s 192.168.1.2 -p tcp --dport 5190 -j DROP
    [admin@(none) root]$ iptables -v --line-numbers -L FORWARD
    Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
    num pkts bytes target prot opt in out source destination
    1 0 0 DROP tcp -- any any 192.168.1.2 anywhere tcp dpt:5190
    2 0 0 ACCEPT all -- br0 br0 anywhere anywhere
    3 0 0 DROP all -- any any anywhere anywhere state INVALID
    4 18904 13M ACCEPT all -- any any anywhere anywhere state RELATED,ESTABLISHED
    5 0 0 DROP all -- !br0 vlan1 anywhere anywhere
    6 0 0 SECURITY all -- !br0 any anywhere anywhere state NEW
    7 558 28002 ACCEPT all -- br0 any anywhere anywhere
    8 0 0 ACCEPT all -- any any anywhere anywhere ctstate DNAT
    9 0 0 DROP all -- any br0 anywhere anywhere
    [admin@(none) root]$
    Все работает, Mam(O)n просто огромное спасибо.

  9. #54

    iptables subnet 1:1 NAT

    Подскажите, пожалуйста, можно ли на 500gP сделать сабж (прошивка от Олега, последняя)?

    Хочется что то вроде:
    Code:
    iptables -t nat -I PREROUTING -i br0 -d 2.0.0.0/8 -j DNAT --to-destination 10.0.0.0/8
    iptables -t nat -I POSTROUTING -s 10.0.0.0/8 -o br0 -j SNAT –-to-source 2.0.0.0/8
    Но iptables по умолчанию не понимает таких диапазонов в "--to-xxx" параметрах.
    Code:
    iptables v1.2.7a: Bad IP address `10.0.0.0/8'
    Если написать "10.0.0.0-10.255.255.255" вместо "10.0.0.0/8" то похоже вместо замены только первой цифры заменяется весь адрес на "10.0.0.0", чего не требуется...

    ps Хочется такую штуку сделать для подключения к еще одной городской локалке, где адреса пересекаются...
    Last edited by AYuusuke; 11-12-2007 at 22:37. Reason: -i в POSTROUTING не бывает ))

  10. #55
    Join Date
    Dec 2003
    Location
    Russian Federation
    Posts
    8,356
    Quote Originally Posted by AYuusuke View Post
    Попробую переформулировать вопрос: что нужно сделать что бы к Олеговской прошивке прикрутить iptables поновее (суда по FAQ-у на netfilter-е, то что я хочу работает в последних iptables-ах)?
    Пересобрать прошивку? Или можно поставить какой нибудь пакет? Или может бинарник только пере собрать будет достаточно?...
    Есть такая target - NETMAP, она входит в прошивку. Только вот она правлена АСУСом и я не уверен, буде оно работать или нет.

  11. #56
    Quote Originally Posted by Oleg View Post
    Есть такая target - NETMAP, она входит в прошивку. Только вот она правлена АСУСом и я не уверен, буде оно работать или нет.
    Спасибо за совет, попробовал этот NETMAP. Результат почти такой же как c DNAT/SNAT-ом - судя по документации и различным tutorial-ам это то что мне нужно, но в нашей коробочке оно не работает.

    Выглядит это как полностью отсутствующий ответ даже от рутера когда выполняю tracert на интересующий меня хост.

    Вот такие правила я соорудил (даже исключил диапазон, для начала пытаюсь хотя бы для одного адреса подстановку сделать, с полным диапазоном 10.0.0.0/8 результат такой же):
    Code:
    iptables -t nat -I PREROUTING -d 2.4.43.75/32 -j NETMAP --to 10.4.43.75/32
    iptables -t nat -I POSTROUTING -s 10.4.43.75/32 -j NETMAP --to 2.4.43.75/32
    Результат (со стационарного компа):
    Code:
    P:\>tracert -d 2.4.43.75
    
    Tracing route to 2.4.43.75 over a maximum of 30 hops
    
      1     *        *        *     Request timed out.
      2  ^C
    C SNAT/DNAT один адрес работает:
    Code:
    iptables -t nat -I PREROUTING -d 2.4.43.75/32 -j DNAT --to 10.4.43.75
    iptables -t nat -I POSTROUTING -s 10.4.43.75/32 -j SNAT --to 2.4.43.75
    (10.0.17.66 - WL-500gP)
    Code:
    P:\>tracert -d 2.4.43.75
    
    Tracing route to 2.4.43.75 over a maximum of 30 hops
    
      1    <1 ms    <1 ms    <1 ms  10.0.17.66
      2     1 ms     1 ms     1 ms  2.4.43.75
      3     1 ms     1 ms     1 ms  2.4.43.75
      4     3 ms     3 ms     4 ms  2.4.43.75
      5     1 ms     2 ms     2 ms  2.4.43.75
    
    Trace complete.
    Судя по тому как ASUS-овцы его используют, подпилили реализацию этого NETMAP-а серьезно (мапить в тупую разные по размеру диапазоны друг в друга вообщем то невозможно, наверно там какая то дополнительная логика есть):
    Code:
    Chain PREROUTING (policy ACCEPT)
    target     prot opt source               destination
    NETMAP     udp  --  anywhere             192.168.30.54      udp spt:6112 10.0.17.64/28
    
    Chain POSTROUTING (policy ACCEPT)
    target     prot opt source               destination
    NETMAP     udp  --  10.0.17.64/28        anywhere           udp dpt:6112 192.168.30.54/32
    (192.168.30.54 - адрес на wan порту, 10.0.17.64/28 в lan-е, интересующие меня 10.0.0.0/8 доступны через gateway 192.168.24.1).

    У меня возникло 3 следующих вопроса:
    1. Много где пишут что NETMAP доступен только в ядрах 2.5-2.6, у нас как я понимаю 2.4. Если ли информация о том, есть ли где то в глубине ядра, правильный таки NETMAP?
    2. Олег, не могли бы вы показать где в исходниках потрудились асусовцы, может я смогу придумать какой нибудь workaround не требующий перекомпиляции...
    3. Некоторые tutorial-ы предлагают NETMAP размещать в mangle таблице (другие наоборот запрещают это), в нашей коробочке добавляесть только в nat таблицу. Кто прав?

    Или я сделал какую то простую ошибку?

    ps Нашел интересную ссылку: http://www.linuxkernel.ru/?q=node/222 - тут вроде требуется пересобрать только iptables, теоретически нужное мне преобразование я мог бы оформить в виде кода на c++, но вот как и что нужно собирать/регистрировать/подкладывать я пока плохо понимаю. Может какой нибудь гуру в Linux-е подсказать как для нашей коробочки будут выглядеть нужные команды сборки?
    Last edited by AYuusuke; 13-12-2007 at 15:14. Reason: ps

  12. #57
    Join Date
    Dec 2003
    Location
    Russian Federation
    Posts
    8,356
    Ещё есть вариант с командой ip (iproute2 Есть в прошивке):

    http://linux-ip.net/html/nat-stateless.html

    Там вроде где-то было про сеть в сеть.

  13. #58
    Quote Originally Posted by Oleg View Post
    Ещё есть вариант с командой ip (iproute2 Есть в прошивке):

    http://linux-ip.net/html/nat-stateless.html

    Там вроде где-то было про сеть в сеть.
    О, спасибо! Данная штука работает (преобразование сеть в сеть для source и destination полей пакетов). Эх, только теперь я понял, что этого мне все равно мало Раньше плохо разбирался со всеми стадиями маршрутизации/подмены адресов, сейчас понимаю около половины...

    Вернемся к начальной задаче - сделать доступ к 2-м, пересекающимся по адресам, локалкам. Т.е. у WL-500gP делается 2 WAN интерфейса (vlan1 и vlan2) (предположим что непосредственно сегменты в которые смотрят интерфейсы не пересекаются, 10.1.1.5/24 и 10.2.2.6/24 соответственно, с локальным сегментом допустим все тоже хорошо). Т.к. у обоих провайдеров есть 2 большие сети локальных ресурсов (пересекающиеся адреса 10.0.0.0/8), хочется иметь возможность коннектиться ко всем, без дополнительных телодвижений. Например следующая схема: связь с адресами 10.0.0.0/8 должна идти на первого провайдера, на 2.0.0.0/8 на второго (с автоматическим преобразованием к нормальным адресам). Удобнее всего это делать с помошью обычного роутинга.

    Суть преобразования же следующая:
    1) на vlan2 поле source входящих пакетов 10.0.0.0/8 -> 2.0.0.0/8,
    причем подмена поля source должна производится ДО маршрутизации - чтобы было понятно с какого интерфейса он пришел;
    2) на vlan2 поле destination исходящих пакетов 2.0.0.0/8 -> 10.0.0.0/8,
    причем подмена поля destination должна производится ПОСЛЕ маршрутизации - чтобы пакет был уже на нужном out-интерфейсе.
    SNAT и DNAT же (как и соответствующие правила iproute2) работают в противоположном порядке (что конечно же правильно, но не помогает решить нужную мне задачу) - SNAT в POSTROUTING, DNAT в PREROUTING.

    Пока единственное решение которое я вижу это подключить еще одну коробочку (наверно любой простой 2-х портовый маршрутизатор) на 2-й WAN порт WL-500gP, что бы она делала безусловное преобразование адресов, а главный рутер уже только маршрутизировал 10.0.0.0/8 и 2.0.0.0/8 подсети. Очень хочется избежать необходимости покупки еще одного рутера.

    Чувствуется что задача очень специфичная, и простого решения нет, но если у кого то возникнут еще какие нибудь мысли по этому поводу, с удовольствием выслушаю.

  14. #59
    А Вы изучали бессмертную страничку: http://www.docum.org/docum.org/kptd/?

    Навскидку не могу пока сказать, но мне кажется что эта задача должна быть вполне выполнима. Вечером приду домой, подумаю. В частности, возможно, каким-то образом можно просто грязно пропатчить поля src IP/dst IP в таблице mangle в цепочках PREROUTING и POSTROUTING соответственно. Гм, не помню точно где, но вроде видел средства для чуть ли не побайтного редактирования служебных полей IP заголовка... или то в tc было...
    Last edited by zap; 14-12-2007 at 15:37.

  15. #60
    Join Date
    Dec 2003
    Location
    Russian Federation
    Posts
    8,356
    Хм... Действительно, вчера меня как-то унесло не туда. В POSTROUTING/PREROUTING у mangle можно попробовать.

Page 4 of 12 FirstFirst ... 23456 ... LastLast

Similar Threads

  1. How to run two webservers
    By sesamebike in forum WL-500g/WL-500gx Tutorials
    Replies: 36
    Last Post: 13-03-2007, 08:05
  2. How to automatically start post-boot?
    By VaZso in forum WL-500g Q&A
    Replies: 8
    Last Post: 04-07-2006, 11:48
  3. SSH and iptables trouble
    By tokyoturnip in forum WL-500g Q&A
    Replies: 4
    Last Post: 11-06-2006, 17:14
  4. WL-500gx WAN & LAN Filter example
    By pshah in forum WL-500g Q&A
    Replies: 1
    Last Post: 24-09-2005, 13:50
  5. How to configure Firewall/iptables
    By samoht in forum WL-500g/WL-500gx Tutorials
    Replies: 3
    Last Post: 14-08-2005, 01:28

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •