Доброго всем времени суток. Только начинаю изучать основы 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 show что показывает?
> А 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
То есть, натится правильно, но не все? Может посмотреть в сторону 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)?
> То есть, натится правильно, но не все? Может посмотреть в сторону 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... Вечером проверю отпишусь.
Насколько я понимаю, конструкция для tcp 'setup keep-state' запоминает (keep-state) в таблице динамических правил правила для пакетов, имеющих признак (setup) установки соединения. Когда прилетает пакет, такого признака не имеющий, а динамического правила для него уже или еще нет (устарело и сброшено, либо пакет левый), он проскочит до 60000. Это ИМХО.
возьми в руки 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), потом приступай к разводке нужного. Так проще понимать.