URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID10
Нить номер: 5041
[ Назад ]

Исходное сообщение
"IPFW отбрасывает пакеты для которых есть разрешающие правила"

Отправлено Isuaven , 06-Июн-12 17:55 
Доброго всем времени суток. Только начинаю изучать основы FreeBSD, поэтому не пинайте сильно ногами плз :) По поиску ничего не смог найти. Суть проблемы такова:
По документации http://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/firew... практически 1 в 1 скатал файл правил для варианта с NATом, в результате получив такое(лишнее не привожу, дабы избежать оверквотинга):

#################################################################
#!/bin/sh
ipfw -q -f flush
sysctl net.inet.ip.fw.autoinc_step=10
cmd="ipfw -q add"
skip="skipto 65000"
pif="bfe0"
ipfw nat 1 config log if $pif reset same_ports deny_in
$cmd nat 1 ip from any to any in via $pif
$cmd check-state
....
$cmd $skip tcp from any to any 80 out via $pif setup keep-state
$cmd $skip tcp from any to any 443 out via $pif setup keep-state
$cmd $skip tcp from any to any 5938 out via $pif setup keep-state
$cmd $skip udp from any to any 5938 out via $pif keep-state
....
$cmd 60000 deny log all from any to any out via $pif
$cmd 64000 deny log all from any to any
$cmd 65000 nat 1 ip from any to any out via $pif
$cmd allow ip from any to any
#################################################################

И при этом /var/log/security загаживается с первых же секунд и не переставая сообщениями типа:
Jun  6 01:50:24 myserver kernel: ipfw: 60000 Deny TCP 10.12.12.5:49584 173.194.32.54:443 out via bfe0
Jun  6 01:50:24 myserver kernel: ipfw: 60000 Deny TCP 10.12.12.5:49592 199.47.218.147:80 out via bfe0
Jun  6 01:50:24 myserver kernel: ipfw: 60000 Deny TCP 10.12.12.5:49588 92.43.21.138:5938 out via bfe0
Jun  6 01:50:25 myserver kernel: ipfw: 60000 Deny TCP 10.12.12.5:49579 199.47.218.147:80 out via bfe0
Jun  6 01:50:25 myserver kernel: ipfw: 60000 Deny TCP 10.12.12.5:49592 199.47.218.147:80 out via bfe0

Где собственно 10.12.12.5 - компьютер в локальной сети, а
173.194.32.54:443 - google
199.47.218.147:80 - dropbox
92.43.21.138:5938 - teamwiever
И все 3 сервиса на компьютере работают на первый взгляд нормально(почта, синхронизация файлов, удаленное управление)!

Почему такое происходит? Что не так? Заранее спасибо.


Содержание

Сообщения в этом обсуждении
"IPFW отбрасывает пакеты для которых есть разрешающие правила"
Отправлено Дум Дум , 08-Июн-12 16:40 
А ipfw show что показывает?

"IPFW отбрасывает пакеты для которых есть разрешающие правила"
Отправлено Isuaven , 10-Июн-12 22:04 
> А ipfw show что показывает?

Показывает такое:

00010 1486 376555 allow ip from any to any via xl0
00020    8    760 allow ip from any to any via lo0
00030  508 168327 nat 1 ip from any to any in via bfe0
00040    0      0 check-state
00050    0      0 skipto 65000 tcp from any to any dst-port 53 out via bfe0 setup keep-state
00060   32   2447 skipto 65000 udp from any to any dst-port 53 out via bfe0 keep-state
00070  272  84666 skipto 65000 tcp from any to any dst-port 80 out via bfe0 setup keep-state
00080   44   9875 skipto 65000 tcp from any to any dst-port 443 out via bfe0 setup keep-state
00090    0      0 skipto 65000 tcp from any to any dst-port 25 out via bfe0 setup keep-state
00100    0      0 skipto 65000 tcp from any to any dst-port 110 out via bfe0 setup keep-state
00110    0      0 skipto 65000 tcp from me to any out via bfe0 setup uid root keep-state
00120    0      0 skipto 65000 icmp from any to any out via bfe0 keep-state
00130    0      0 skipto 65000 tcp from any to any dst-port 37 out via bfe0 setup keep-state
00140    0      0 skipto 65000 tcp from any to any dst-port 119 out via bfe0 setup keep-state
00150    0      0 skipto 65000 tcp from any to any dst-port 22 out via bfe0 setup keep-state
00160    0      0 skipto 65000 udp from any to any dst-port 123 out via bfe0 keep-state
00170    0      0 skipto 65000 tcp from any to any dst-port 43 out via bfe0 setup keep-state
00180   21   2352 skipto 65000 udp from any to any dst-port 27000-27030 out via bfe0 keep-state
00190    3    132 skipto 65000 tcp from any to any dst-port 27014-27050 out via bfe0 setup keep-state
00200    0      0 skipto 65000 tcp from any to any dst-port 5938 out via bfe0 setup keep-state
00210    2    248 skipto 65000 udp from any to any dst-port 5938 out via bfe0 keep-state
00220   15    930 skipto 65000 udp from any to any dst-port 7024,7022 out via bfe0 keep-state
00230    0      0 skipto 65000 tcp from any to any dst-port 61620 out via bfe0 setup keep-state
00260    0      0 deny ip from 192.168.0.0/16 to any in via bfe0
00270    0      0 deny ip from 172.16.0.0/12 to any in via bfe0
00280    0      0 deny ip from 10.0.0.0/8 to any in via bfe0
00290    0      0 deny ip from 127.0.0.0/8 to any in via bfe0
00300    0      0 deny ip from 0.0.0.0/8 to any in via bfe0
00310    0      0 deny ip from 169.254.0.0/16 to any in via bfe0
00320    0      0 deny ip from 192.0.2.0/24 to any in via bfe0
00330    0      0 deny ip from 204.152.64.0/23 to any in via bfe0
00340    0      0 deny ip from 224.0.0.0/3 to any in via bfe0
00350    0      0 deny icmp from any to any in via bfe0
00360    0      0 deny tcp from any to any dst-port 113 in via bfe0
00370    0      0 deny tcp from any to any dst-port 137 in via bfe0
00380    0      0 deny tcp from any to any dst-port 138 in via bfe0
00390    0      0 deny tcp from any to any dst-port 139 in via bfe0
00400    0      0 deny tcp from any to any dst-port 81 in via bfe0
00410    0      0 deny ip from any to any frag in via bfe0
00420    0      0 deny tcp from any to any established in via bfe0
00430    0      0 allow tcp from any to me dst-port 22 in via bfe0 setup limit src-addr 2
00440    0      0 allow tcp from any to me dst-port 21 in via bfe0 setup limit src-addr 2
00450    0      0 deny log logamount 100 ip from any to any in via bfe0
60000  272  37522 deny log logamount 10000 ip from any to any out via bfe0
64000    0      0 deny log logamount 100 ip from any to any
65000  389 100650 nat 1 ip from any to any out via bfe0
65010    0      0 allow ip from any to any
65535    3    304 allow ip from any to any
## Dynamic rules (84):
00070    3    662 (15s) STATE tcp 10.12.12.5 60985 <-> 178.33.227.102 80
00180    7    736 (3s) STATE udp 10.12.12.5 56491 <-> 146.66.152.15 27019


"IPFW отбрасывает пакеты для которых есть разрешающие правила"
Отправлено Дум Дум , 13-Июн-12 09:16 
То есть, натится правильно, но не все? Может посмотреть в сторону net.inet.ip.fw.dyn_max (http://ipfw.ism.kiev.ua/nipfw.html) и разных net.inet.ip.fw.ляля_lifetime (http://bezopasnik.org/unix/dok/BSDA-course/apes01.html)?

"IPFW отбрасывает пакеты для которых есть разрешающие правила"
Отправлено Isuaven , 13-Июн-12 13:27 
> То есть, натится правильно, но не все? Может посмотреть в сторону net.inet.ip.fw.dyn_max
> (http://ipfw.ism.kiev.ua/nipfw.html) и разных net.inet.ip.fw.ляля_lifetime (http://bezopasnik.org/unix/dok/BSDA-course/apes01.html)?

Быть может и так, вечером покручу - посмотрю что будет. Хотя я тут подумал, что может мой косяк в том что, как и в вопросе http://www.opennet.me/openforum/vsluhforumID10/5045.html&nbs...параметр net.inet.ip.fw.one_pass установлен в 1... Вечером проверю отпишусь.


"IPFW отбрасывает пакеты для которых есть разрешающие правила"
Отправлено Дум Дум , 13-Июн-12 09:50 
Насколько я понимаю, конструкция для tcp 'setup keep-state' запоминает (keep-state) в таблице динамических правил правила для пакетов, имеющих признак (setup) установки соединения. Когда прилетает пакет, такого признака не имеющий, а динамического правила для него уже или еще нет (устарело и сброшено, либо пакет левый), он проскочит до 60000. Это ИМХО.

"IPFW отбрасывает пакеты для которых есть разрешающие правила"
Отправлено gruzzy , 07-Дек-13 17:42 
возьми в руки IP-пакет и пройдись по правилам.
я так понимаю, xl0 - внутренний интерфейс, bfe0 - внешний
идет клиент на гугель-443 к примеру, то есть в начале у нас идет SETUP.
входит на интерфейс xl0, попадает на правило 10 - разрешено. пакет уходит на второй круг. теперь он исходящий пакет, должен быть выпнут наружу в соответствии с таблицей маршрутизации. он успешно доходит до правила 80, которое создает динамическую запись и скидывает пакет на правило 65000, там его в НАТ и наружу.
теперь клиент шлёт уже не-SETUP пакеты, поэтому правило 80 не сработает, хотя исходящий пакет и попадет на него благодаря check-state. после "провала" на правиле 80 у пакета одна дорога - на правило 60000

Если кратко - убери check-state и keep-state. Эти директивы обычно применяют для правильного роутинга пакетов входящих с наружи на внутренние машины, то есть когда у тебя пудличные сервисы за НАТ-ом.
Когда ты просто раздаешь интернет для внутренней сети такие динамические правила не приносят никакой пользы, особенно для начинающих.

Мой совет тебе как новичку - всегда сначала зарубай левый трафик (типа 192.168.0.0/16 to any in via bfe0), потом приступай к разводке нужного. Так проще понимать.