The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Диапазон с исключением, !*! neekonoff, 18-Апр-17, 02:25  [смотреть все]
Подскажите пжлста, как в shell указать что например подсеть 192.168.1.0/24 кроме адресов 192.168.1.50 и 192.168.1.60?
Или может быть дайте правильную формулирвку для гугления.
Спасибо.
  • Диапазон с исключением, !*! ACCA, 04:33 , 18-Апр-17 (1)
    > Подскажите пжлста, как в shell указать что например подсеть 192.168.1.0/24 кроме адресов
    > 192.168.1.50 и 192.168.1.60?

    Правильная формулировка для гугления - "XY problem"

    shell-у подсеть на х* не нужна. Ты что-то другое имел в виду. Подумай и скажи толком, что ты хочешь сделать.

  • Диапазон с исключением, !*! ss, 09:52 , 18-Апр-17 (2)
    > Подскажите пжлста, как в shell указать что например подсеть 192.168.1.0/24 кроме адресов
    > 192.168.1.50 и 192.168.1.60?
    > Или может быть дайте правильную формулирвку для гугления.
    > Спасибо.

    например так:
    exclude 50,60
    обработку exclude вам естественно надо реализовать самостоятельно в скрипте.
    например если доступ к адресам 192.168.1.0/24 у вас разворачивается в цикле-
    то добавить правило внутрь цикла-
    if exists exclude then nop (посмотрите как это реализуется в вашей версии shell)

  • Диапазон с исключением, !*! михалыч, 12:53 , 18-Апр-17 (3) –1
    > Подскажите пжлста, как в shell указать что например подсеть 192.168.1.0/24 кроме адресов
    > 192.168.1.50 и 192.168.1.60?
    > Или может быть дайте правильную формулирвку для гугления.
    > Спасибо.

    всё зависит от контекста, смотря для чего это нужно

    например, для .htaccess
    RewriteCond %{REMOTE_ADDR} !192\.168\.1\.50
    RewriteCond %{REMOTE_ADDR} !192\.168\.1\.60
    RewriteCond %{REMOTE_ADDR} 192\.168\.1\.[1-254]

    можно вырубить и диапазон адресов
    RewriteCond %{REMOTE_ADDR} !10\.0\.[1-70]\.[1-254]

    для файервола ipfw в FreeBSD

    разрешить для всех в сети 192.168.1.0.24 кроме 50 и 60
    ipfw add 501 allow all from any to '192.168.1.0{1-49}'
    ipfw add 502 allow all from any to '192.168.1.0{51-59}'
    ipfw add 503 allow all from any to '192.168.1.0{61-254}'

    для файервола pf опять же в FreeBSD можно так
    pass in from !192.168.1.50

    если ip из черного списка можно объединить в меньшую подсеть,
    то иногда удобнее работать именно с подсетью сразу,
    например, нужно исключить ip 192.168.1.5/32 и 192.168.1.6/32
    тогда, объединив их в подсеть 192.168.1.4/30 можно исключать уже подсеть
    применительно к pf
    pass in from !192.168.1.4/30

    конечно, в таком случае мы жертвуем двумя адресам:
    на network 192.168.1.4 и на broadcast 192.168.1.7
    зато взамен получаем большую гибкость и меньшее количество правил

    как сказал ACCA
    > Подумай и скажи толком, что ты хочешь сделать

    и для чего

    • Диапазон с исключением, !*! neekonoff, 16:09 , 18-Апр-17 (4) –1
      >[оверквотинг удален]
      > например, нужно исключить ip 192.168.1.5/32 и 192.168.1.6/32
      > тогда, объединив их в подсеть 192.168.1.4/30 можно исключать уже подсеть
      > применительно к pf
      > pass in from !192.168.1.4/30
      > конечно, в таком случае мы жертвуем двумя адресам:
      > на network 192.168.1.4 и на broadcast 192.168.1.7
      > зато взамен получаем большую гибкость и меньшее количество правил
      > как сказал ACCA
      >> Подумай и скажи толком, что ты хочешь сделать
      > и для чего

      Мне для скрипта с правилами IPFW.
      Спасибо!

      • Диапазон с исключением, !*! ACCA, 16:56 , 18-Апр-17 (5)
        > Мне для скрипта с правилами IPFW.

        Нормальный у тебя shell. Ну тогда слушай - https://www.freebsd.org/doc/handbook/firewalls-ipfw.html, почитай хотя бы раздел 29.4.3

        Порядок правил имеет значение, кто первый встретился того и тапки. Например:

        ipfw -q add 00310 allow all from 192.168.1.50/32 to any in via dc0
        ipfw -q add 00320 deny  all from 192.168.1.0/16  to any in via dc0


        allow там или deny - сам разбирайся, ты ничего про это не сказал.

        • Диапазон с исключением, !*! neekonoff, 17:25 , 18-Апр-17 (6) –1
          >> Мне для скрипта с правилами IPFW.
          > Нормальный у тебя shell. Ну тогда слушай - https://www.freebsd.org/doc/handbook/firewalls-ipfw.html,
          > почитай хотя бы раздел 29.4.3
          > Порядок правил имеет значение, кто первый встретился того и тапки. Например:
          > ipfw -q add 00310 allow all from 192.168.1.50/32 to any in via
          > dc0
          > ipfw -q add 00320 deny  all from 192.168.1.0/16  to any
          > in via dc0
          > allow там или deny - сам разбирайся, ты ничего про это не
          > сказал.

          Да это я понимаю. Хэндбук уже курил. И даже вот это курил http://www.lissyara.su/articles/freebsd/tuning/ipfw_nat/
          Спасибо

          Раз уже здесь отвечаете, помогите решить задачу.. Уже сломал мозг.

          Есть машина FreeBSD 10.3, внутренний (например fxp0) и внешний (em0) интерфейсы. IPFW kernel NAT.
          На внутреннем подсеть 10.1.10.0/24 и хост с Exchange 2013 (например 10.1.10.12), к которому нужно пробросить 25, 80 и 443 порты.
          Подскажите структуру срипта с правилами. И чтоб еще в дальнейшем можно было dummynet подключить.. То есть с выключенным net.inet.ip.fw.one_pass
          Я, взяв за основу пример из хэндбука https://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/fire... , обламался. И уже неделю продолжаю обламываться.
          Вот, что набросал я, но оно не работает:

          #!/bin/sh
          ipfw -q -f flush
          cmd="ipfw -q add"

          $cmd 010 allow all from any to any via lo0
          $cmd 020 allow all from any to any via fxp0

          ipfw -q nat 1 config ip 1.2.3.4 same_ports reset deny_in \
                                  redirect_port tcp 10.1.10.12:80 80 \
                                  redirect_port tcp 10.1.10.12:443 443 \
                                  redirect_port tcp 10.1.10.12:25 25

          $cmd 100 nat 1 ip from any to any in via em0
                                  
          $cmd 200 check-state

          $cmd 300 skipto 800 tcp from 10.1.10.0/24 to any out via em0 setup keep-state

          $cmd 400 deny all from any to any frag in via em0
          $cmd 500 deny tcp from any to any established in via em0

          $cmd 600 tcp from any to 10.1.10.12 25,443 in via em0 setup keep-state

          $cmd 700 deny all from any to any via em0

          $cmd 800 nat 1 ip from any to any out via em0

          $cmd 900 allow all from any to any
          $cmd 999 deny all from any to any

          ----------------------------------------------------------
          sysctl net.inet.ip.fw.one_pass=0

          Подскажите, почему нет связи с 10.1.10.12 извне?

          Ведь входящий трафик на внешний IP 1.2.3.4 на порт, например, 443:
          На проходе IN:
          1. Приходит на правило 100. Меняется адрес назначения (так как редирект_порт)
          2. Далее выходит изната и, т.к. one_pass=0, доходит до правила 600 (в динамической таблице создается запись для пар адресов внутреннего и внешнего адреса), выходит из прохода IN и попадает в проход OUT.
          На проходе OUT:
          3. Доходит до правила 020 и отправляется на внутренний хост 10.1.10.12:443.

          Ответный трафик от хоста 10.1.10.12
          На проходе IN:
          4. Доходит до правила 020, входит из прохода IN и попадает в проход OUT.
          На проходе OUT:
          5. Доходит до правила 200 и отправляется на внешний адрес (т.к. запись о соединении уже есть в динамической таблице).

          Подскажите, где ошибка?

          На всякий случай, вот оригинальная тема https://www.opennet.dev/openforum/vsluhforumID1/96869.html

          Я уже готов за понимание (ну или хотя бы за готовый срипт) глаз отдать, как один известный персонаж скандинавских баек. Ну или в крайнем случае пиво )




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру