Страница 1 из 1

Как в ipfw сделать исключение из таблицы?

Добавлено: 2018-03-04 13:23:37
Духовитин
Добрый день Уважаемые!

Подскажите плиз, что-то не могу сообразить. У меня есть две таблицы
table 1 - таблица со всеми пользователями
table 2 - таблица с исключениями из 1 - ой
Как мне в правилах ipfw написать это исключение?

Типа такого

Код: Выделить всё

ipfw add deny all from any to {"table(1)" and not "table(2)"}
Я так понял, что or в правилах быть может, а and нет.

Как в ipfw сделать исключение из таблицы?

Добавлено: 2018-03-04 16:42:43
Духовитин
Сразу дополню, на вопрос а почему не исключить из списка table 1 содержащиеся в table 2 адреса, отвечаю:
В table 1 указаны подсети 192.168.0.0/24
А в table 2 отдельные адреса - исключения: 192.168.0.10/32

Как в ipfw сделать исключение из таблицы?

Добавлено: 2018-03-05 8:34:19
Neus
Проще написать 2 правила.

Как в ipfw сделать исключение из таблицы?

Добавлено: 2018-03-05 10:11:58
Духовитин
Ясно, спасибо!

Но всё же мне кажется странно что OR реализован, а AND нет.

Как в ipfw сделать исключение из таблицы?

Добавлено: 2018-03-05 11:06:58
Neus
Реализация AND тут бессмысленна.

Как в ipfw сделать исключение из таблицы?

Добавлено: 2018-03-06 0:48:41
rmn
(A and not B) == not (not A or B)

Как в ipfw сделать исключение из таблицы?

Добавлено: 2018-03-06 15:00:04
Neus
:-D

Как в ipfw сделать исключение из таблицы?

Добавлено: 2019-01-16 22:02:27
fly380
Дабы не плодить темы задам вопрос в этой. Смысл тот же: есть таблица

Код: Выделить всё

cat /etc/tables/full_block | while read ip; do
      ${fwcmd} table 1 add $ip 1
   done
${fwcmd} add deny log logamount 2048 all from table\(1\) to any in via ${extif}
содержащая 1483 записи отдельных IP и целых подсетей. Так вон нужно разрешить доступ (туда и обратно) к примеру IP 128.199.36.165 из заблокированной сети 128.199.0.0/16. Как это осуществить?
Если перед

Код: Выделить всё

${fwcmd} add deny log logamount 2048 all from table\(1\) to any in via ${extif}
добавляю

Код: Выделить всё

${fwcmd} add allow ip from 128.199.36.165 to any in via ${extif}
сам шлюз начинает ходить на этот IP, а вот компы в локалке никак. Даже если

Код: Выделить всё

${fwcmd} add allow all from 128.199.36.165 to any
все равно ходить туда может только шлюз. Как разрешить всем из локальной сети ходить на этот IP?
P.S extif интерфейс смотрящий в нет LanIn интерфейс смотрящий в локаль

Как в ipfw сделать исключение из таблицы?

Добавлено: 2019-01-18 1:56:21
FiL
а что еще запрещено в фаерволе? или это единственные два правила?

Как в ipfw сделать исключение из таблицы?

Добавлено: 2019-01-18 12:31:45
snorlov
У вас же скриптик, кто не дает вам сначала сделать нужную таблицу, к примеру work_table, которую и грузить в файер

Как в ipfw сделать исключение из таблицы?

Добавлено: 2019-01-18 13:39:15
fly380
Спасибо что отозвались! Вчера решил вопрос в конфиге фаервола было так:

Код: Выделить всё

${fwcmd} table 1 flush

${fwcmd} zero

${fwcmd} -f flush
${fwcmd} nat 1 delete

# Сетевая карта в которую вставлен провод от провайдера.
	extif="igb1"

# Сетевая карта смотрящая во внутреннюю сеть.
	LanIn="igb0"

setup_loopback

# Заполнение таблиц
   cat /etc/tables/full_block | while read ip; do
      ${fwcmd} table 1 add $ip 1
   done
${fwcmd} add allow ip from 128.199.36.165 to any
${fwcmd} add deny log logamount 2048 ip from table\(1\) to any in via ${extif}

# kernel nat - most trendy.
${fwcmd} nat 1 config if ${extif} log reset same_ports
${fwcmd} add nat 1 all from 10.10.0.0/21 to any out via ${extif}
${fwcmd} add nat 1 ip from any to any in via ${extif}
${fwcmd} add allow ip from any to any via ${extif}

# Разрешаем трафик внутренней сети на внутреннем интерфейсе.
${fwcmd} add allow all from any to any via igb0

# Доступ в DNS серверу.
${fwcmd} add allow tcp from any to ${IpOut} 53 in via ${extif} setup

# Запрещаем всё и пишим в лог.
${fwcmd} add 65534 deny log all from any to any
на мудрено с натом. Переделал

Код: Выделить всё

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

Код: Выделить всё

${fwcmd} table 1 flush

${fwcmd} zero

${fwcmd} -f flush
${fwcmd} nat 1 delete

# Сетевая карта в которую вставлен провод от провайдера.
	extif="igb1"

# Сетевая карта смотрящая во внутреннюю сеть.
	LanIn="igb0"

setup_loopback

# Заполнение таблиц запрета на вход
   cat /etc/tables/full_block | while read ip; do
      ${fwcmd} table 1 add $ip 1
   done

# Исключение запрета на вход
   cat /etc/tables/AllowSites | while read ip; do
      ${fwcmd} table 2 add $ip 1
   done   

# kernel nat - most trendy.
${fwcmd} nat 1 config if ${extif} log reset same_ports
${fwcmd} add nat 1 all from any to any in via ${extif}
${fwcmd} add allow ip from table\(2\) to any in via ${extif}
${fwcmd} add deny log logamount 2048 all from table\(1\) to any in via ${extif}
${fwcmd} add nat 1 all from 10.10.0.0/21 to any out via ${extif}
${fwcmd} add allow ip from any to any out via ${extif}

# Разрешаем трафик внутренней сети на внутреннем интерфейсе.
${fwcmd} add allow all from any to any via igb0

# Доступ в DNS серверу.
${fwcmd} add allow tcp from any to ${IpOut} 53 in via ${extif} setup

# Запрещаем всё и пишим в лог.
${fwcmd} add 65534 deny log all from any to any
все побежало заблокированные сидят тихо а разрешенные ходят. И тут возник новый вопрос. Подскажите как сделать редирект при обращении из локалки на заблокированный IP на страницу к примеру 10.10.1.2:9443 на которой я указал что туда не ходи?

Как в ipfw сделать исключение из таблицы?

Добавлено: 2019-01-26 20:46:52
dekloper
пометить пакетик.. а дальше гоуту куда положено..