Код: Выделить всё
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=50
Код: Выделить всё
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=50
Как это не надо?terminus писал(а):вам тогда вообще никаких настроек ната не надо делать. он должен работать на внешнем интерфейсе (как сейчас вроде правильно) и не надо redirect_port.
единственное если vpn pptp то надо еще запустить модуль libalias:Код: Выделить всё
kldload alias_pptp.ko
а так пойдёт?terminus писал(а):ядро должно быть собрано сКод: Выделить всё
options IPFIREWALL_VERBOSE options IPFIREWALL_VERBOSE_LIMIT=50
Код: Выделить всё
zabbix# sysctl -a | grep net.inet.ip.fw.verbose
net.inet.ip.fw.verbose_limit: 50
net.inet.ip.fw.verbose: 1
zabbix#
хзvintovkin писал(а):
а так пойдёт?Код: Выделить всё
zabbix# sysctl -a | grep net.inet.ip.fw.verbose net.inet.ip.fw.verbose_limit: 50 net.inet.ip.fw.verbose: 1 zabbix#
Да вы правы... Есть такая галка UDP/NAT , но он доходит тока до интерфейса xl2 рутера и там и дохнет. А вот куда дальше пакеты деваются я не могу посмотреть. Потому и прошу совета. Если я убираю редирект - та же картина. Давайте итог подведем. Что я должен оставить из правил и настроек ната? Я все поправлю и отпишу результат... И еще... Отдебажить поподробнее прохождение пакетов через интерфейсы и нат можно как-то или нет?terminus писал(а):"настроек ната не надо делать" - в смысле редиректов портов как у вас выше было (redirect_port udp 1.2.3.4:500 500). Зачем это если клиент за натом, а VPN сервер вообще где-то в другой сети?
vpn клиент и сервер умеют работать через нат? обычно в их настройках есть специальная галочка с названием типа "via NAT device" - тогда трафик IPSec инкапсулируется в UDP и спокойно ходит через нат. проверьте.
куда оно денется?!terminus писал(а):
хз![]()
заработало?
Код: Выделить всё
ipfw add log deny icmp from any to any
Код: Выделить всё
tail -f /var/log/security
Div писал(а): Да вы правы... Есть такая галка UDP/NAT , но он доходит тока до интерфейса xl2 рутера и там и дохнет. А вот куда дальше пакеты деваются я не могу посмотреть. Потому и прошу совета. Если я убираю редирект - та же картина. Давайте итог подведем. Что я должен оставить из правил и настроек ната? Я все поправлю и отпишу результат... И еще... Отдебажить поподробнее прохождение пакетов через интерфейсы и нат можно как-то или нет?
Код: Выделить всё
ipfw add 1 allow all from 192.168.2.23 to any via xl2
ipfw add 2 allow all from ant to 192.168.2.23 via xl2
упрощать конфирацию ipfw до минимума. выставлять счетчики перед и после интересующих правил. использовать tcpdump.И еще... Отдебажить поподробнее прохождение пакетов через интерфейсы и нат можно как-то или нет?
Код: Выделить всё
# Stop RFC1918 nets on the outside interface
${fwcmd} add deny all from 192.168.0.0:255.255.0.0 to any via ${oif}
${fwcmd} add deny all from any to 192.168.0.0:255.255.0.0 via ${oif}
Код: Выделить всё
# Stop RFC1918 nets on the outside interface
${fwcmd} add deny tcp from 192.168.0.0:255.255.0.0 to any via ${oif}
${fwcmd} add deny tcp from any to 192.168.0.0:255.255.0.0 via ${oif}
Код: Выделить всё
ip_vpn="1.2.3.5" #внешняя машина с випин сервером
Код: Выделить всё
# Allow NAT udp out from adm mashine
${fwcmd} add allow udp from ${iadmip} to ${ip_vpn} via ${iif}
${fwcmd} add allow udp from ${ip_vpn} to ${iadmip} via ${iif}
${fwcmd} nat 10 config if ${oif} reset same_ports deny_in redirect_port udp ${oip}:500 500
${fwcmd} add nat 10 udp from ${iadmip} to any out xmit ${oif}
${fwcmd} add nat 10 udp from ${ip_vpn} to any in recv ${oif}
Код: Выделить всё
Invalid argument
ipfw: size mismatch (have 68 want 72)
ipfw:
getsockopt(IP_FW_ADD)
:
Invalid argument
Firewall rules loaded.
Firewall logging enabled.
net.inet.ip.fw.enable:
1
->
1
Additional IP options:
.
Mounting NFS file systems:
.
ELF ldconfig path: /lib /usr/lib /usr/lib/compat /usr/local/lib /usr/local/lib/compat/pkg /usr/local/lib/compat /usr/local/lib/compat/pkg /usr/local/lib/mysql
a.out ldconfig path: /usr/lib/aout /usr/lib/compat/aout
Creating and/or trimming log files:
.
Starting syslogd.
Checking for core dump on /dev/ad4s1b...
savecore: no dumps found
Initial i386 initialization:
.
Additional ABI support:
.
Clearing /tmp (X related).
Starting local daemons:
.
Updating motd
.
Mounting late file systems:
.
Starting proftpd.
- setting default address to 10.1.1.213
Starting nmbd.
rl0: link state changed to UP
/libexec/ld-elf.so.1:
/usr/local/sbin/nmbd: invalid PT_PHDR
Starting smbd.
/libexec/ld-elf.so.1:
/usr/local/sbin/smbd: invalid PT_PHDR
Starting mysql.
Starting zabbix_server.
Starting zabbix_agentd.
Starting squid.
Performing sanity check on apache22 configuration:
Syntax OK
Starting apache22.
Configuring syscons:
keymap
scrnmap
font8x16
font8x14
font8x8
blanktime
allscreens
.
Starting sshd.
Starting cron.
Local package initialization:
.
net.inet.ip.fw.verbose_limit:
0
->
50
Starting inetd.
Starting background file system checks in 60 seconds.
Wed Dec 2 09:24:39 MSK 2009
Dec 2 09:24:45 zabbix login: ROOT LOGIN (root) ON ttyv0
ipfw: size mismatch (have 64 want 68)
ipfw: size mismatch (have 76 want 80)
ipfw: size mismatch (have 92 want 96)
ipfw: size mismatch (have 68 want 72)
ipfw: size mismatch (have 68 want 72)
Dec 2 09:29:28 zabbix shutdown: shutdown by root:
Stopping inetd.
Shutting down daemon processes:
.
Stopping cron.
Stopping sshd.
Stopping apache22.
Waiting for PIDS: 750
.
Stopping squid.
Waiting for PIDS: 710
.
Stopping zabbix_agentd.
Waiting for PIDS: 691 702 703 704 705 706 707
.
Stopping zabbix_server.
Waiting for PIDS: 684 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742
.
Stopping mysql.
Stopping proftpd.
Waiting for PIDS: 616
.
Shutting down local daemons:
.
Stopping devd.
Writing entropy file:
.
.
Dec 2 09:29:41 zabbix syslogd: exiting on signal 15
Enter full pathname of shell or RETURN for
/bin/sh
:
#
#
#
Loading configuration files.
kernel dumps on /dev/ad4s1b
Entropy harvesting:
interrupts
ethernet
point_to_point
kickstart
.
Fast boot: skipping disk checks.
Setting hostuuid: 80a28947-502c-1210-825b-8fd1742a55b4.
Setting hostid: 0x75b7ade6.
Mounting local file systems:
.
net.inet6.ip6.auto_linklocal:
0
->
0
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
options=3<RXCSUM,TXCSUM>
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=8<VLAN_MTU>
ether 00:19:db:52:4c:3c
inet 10.1.1.213 netmask 0xffff0000 broadcast 10.255.255.255
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
add net default: gateway 10.1.1.1
Additional routing options:
.
Starting devd.
ipfw: size mismatch (have 64 want 68)
ipfw:
getsockopt(IP_FW_ADD)
:
Invalid argument
ipfw: size mismatch (have 76 want 80)
ipfw:
getsockopt(IP_FW_ADD)
:
Invalid argument
ipfw: size mismatch (have 92 want 96)
ipfw:
getsockopt(IP_FW_ADD)
:
Invalid argument
ipfw: size mismatch (have 68 want 72)
ipfw:
getsockopt(IP_FW_ADD)
:
Invalid argument
ipfw: size mismatch (have 68 want 72)
ipfw:
getsockopt(IP_FW_ADD)
:
Invalid argument
Firewall rules loaded.
Firewall logging enabled.
net.inet.ip.fw.enable:
1
->
1
Additional IP options:
.
Mounting NFS file systems:
.
ELF ldconfig path: /lib /usr/lib /usr/lib/compat /usr/local/lib /usr/local/lib/compat/pkg /usr/local/lib/compat /usr/local/lib/compat/pkg /usr/local/lib/mysql
a.out ldconfig path: /usr/lib/aout /usr/lib/compat/aout
Creating and/or trimming log files:
.
Starting syslogd.
Checking for core dump on /dev/ad4s1b...
savecore: no dumps found
Initial i386 initialization:
.
Additional ABI support:
.
Clearing /tmp (X related).
Starting local daemons:
.
Updating motd
.
Mounting late file systems:
.
Starting proftpd.
- setting default address to 10.1.1.213
Starting nmbd.
/libexec/ld-elf.so.1:
/usr/local/sbin/nmbd: invalid PT_PHDR
Starting smbd.
/libexec/ld-elf.so.1:
/usr/local/sbin/smbd: invalid PT_PHDR
Starting mysql.
Starting zabbix_server.
Starting zabbix_agentd.
Starting squid.
Performing sanity check on apache22 configuration:
Syntax OK
Starting apache22.
Configuring syscons:
keymap
scrnmap
font8x16
font8x14
font8x8
blanktime
allscreens
.
Starting sshd.
Starting cron.
Local package initialization:
.
Starting inetd.
Starting background file system checks in 60 seconds.
Wed Dec 2 09:30:00 MSK 2009
Dec 2 09:30:05 zabbix login: ROOT LOGIN (root) ON ttyv0
zabbix#
да да да!!!!!!!!!!!!!terminus писал(а):плохо обновились значит. или мир не пересобрали/не поставили, или сторонний софт который с ядром работает.
Код: Выделить всё
zabbix# uname -a
FreeBSD zabbix 8.0-RELEASE FreeBSD 8.0-RELEASE #0: Tue Dec 1 15:24:26 MSK 2009 ed@zabbix:/usr/obj/usr/src/sys/GENERIC i386
zabbix#
что делает таил?terminus писал(а):Код: Выделить всё
ipfw add log deny icmp from any to any
Код: Выделить всё
tail -f /var/log/security
спсterminus писал(а):логи фаервола пойдут в файл /var/log/security
команда tail -f /var/log/security используется для слежения за изменениями в файле в реальном времени - будет выводить все, что появляется в /var/log/security на экран.
Функция ip_output() первым делом смотрит в таблицу маршрутизации, определяя,
каков шлюз и на каком интерфейсе он находится. С этой информацией пакет вновь
передается в ipfw, в котором опять пробегается по всем правилам. После выхода
из ipfw_chk() в ip_output(), если ядро было скомпилировано с соответствующей
опцией, проверяется, не был ли применен ipfw fwd - если да, то просмотр
таблицы маршрутизации выполняется заново с целью получить MAC-адрес нового
шлюза. Затем пакет в точке (7) покидает ip_output() и передается дальше, на
L2 и потом к драйверам интерфейсов.
Код: Выделить всё
01040 219 20500 allow ip from any to any via sk0
01050 0 0 deny ip from any to 192.168.0.0/16 in recv tun0
01060 0 0 deny ip from 192.168.0.0/16 to any in recv tun0
01070 0 0 deny ip from any to 172.16.0.0/12 in recv tun0
01080 0 0 deny ip from 172.16.0.0/12 to any in recv tun0
01090 0 0 deny ip from any to 10.0.0.0/8 in recv tun0
10100 0 0 deny ip from 10.0.0.0/8 to any in recv tun0
10110 0 0 deny ip from any to 169.254.0.0/16 in recv tun0
10120 0 0 deny ip from 169.254.0.0/16 to any in recv tun0
10125 14 1984 fwd 127.0.0.1,3128 tcp from 192.168.1.0/24 to any dst-port 80 out via tun0
10130 40 2508 nat 1 ip from any to any via tun0
65534 1 328 deny ip from any to any
65535 51839 16671754 allow ip from any to any
Код: Выделить всё
#!/bin/sh
ipfw='ipfw'
innet='192.168.1.0/24'
inif='sk0'
outip='93.91.236.61'
outif='tun0'
${ipfw} -f flush
# правила разрешающие трафик через локальный интерфейс lo0
# будут добавляться автоматически сами при старте фаервола
# 100 allow ip from any to any via lo0
# 200 deny ip from any to 127.0.0.0/8
# 300 deny ip from 127.0.0.0/8 to any
# разрешаем все через интерфейс локальной сети
${ipfw} add 1040 allow ip from any to any via ${inif}
# боимся непонятного
${ipfw} add 1050 deny ip from any to 192.168.0.0/16 in recv ${outif}
${ipfw} add 1060 deny ip from 192.168.0.0/16 to any in recv ${outif}
${ipfw} add 1070 deny ip from any to 172.16.0.0/12 in recv ${outif}
${ipfw} add 1080 deny ip from 172.16.0.0/12 to any in recv ${outif}
${ipfw} add 1090 deny ip from any to 10.0.0.0/8 in recv ${outif}
${ipfw} add 10100 deny ip from 10.0.0.0/8 to any in recv ${outif}
${ipfw} add 10110 deny ip from any to 169.254.0.0/16 in recv ${outif}
${ipfw} add 10120 deny ip from 169.254.0.0/16 to any in recv ${outif}
#Заворачиваем трафик в проксик
${ipfw} add 10125 fwd 127.0.0.1,3128 tcp from ${innet} to any http out via ${outif}
# настройка ната (хоть убей не понимаю что делается этой сточкой)
${ipfw} nat 1 config log if ${outif} reset same_ports deny_in redirect_port tcp ${outip}:6881 6881 redirect_port udp ${outip}:4444 4444 redirect_port tcp 192.168.1.24:25 25
# заварачиваем все что проходит через внешний интерфейс в нат
${ipfw} add 10130 nat 1 ip from any to any via ${outif}
# боимся непонятного
${ipfw} add 65534 deny all from any to any
Это ведь просто пример был для того чтобы показать как делать пробрасивание портов. Зачем копируете не разобравшись (тем более, что в прмере все было расписано о том, что как работает)? Уберите все redirect_port.Если бы кто-нить рассказал, что же мы делаем той загадочной сточкой и что за странные айпи 192.168.1.24
интерфейс tun0 скорее всего появляетя после того как в процессе загрузки отрабатывает фаервол - ipfw при старте не имеет информации о tun0 поэтому и ниче не работает. поместите ваш скрипт с настройками касающимеся запуска ната в /usr/local/etc/rc.c/firewallstart.sh тогда он будет отрабатывать после запуска демона pppoe и сможет настроить нат как надо.
Оо... После перезагрузки правил, - все работает, даже если внешний ${outip} указан неверно. И так до ребута. После ребута снова Hostname lookup failure. Перезагружаешь правила файервола, - и снова все бегает, хотя вшенший ip уже другой. Во чудо
Код: Выделить всё
#!/bin/sh
ipfw='ipfw'
outif='tun0'
# настройка ната
${ipfw} nat 1 config log if ${outif} reset same_ports deny_in
# заварачиваем все что проходит через внешний интерфейс в нат
${ipfw} add 10130 nat 1 ip from any to any via ${outif}
Код: Выделить всё
# правила разрешающие трафик через локальный интерфейс lo0
# будут добавляться автоматически сами при старте фаервола
# 100 allow ip from any to any via lo0
# 200 deny ip from any to 127.0.0.0/8
# 300 deny ip from 127.0.0.0/8 to any
terminus писал(а):Это ведь просто пример был для того чтобы показать как делать пробрасивание портов. Зачем копируете не разобравшись (тем более, что в прмере все было расписано о том, что как работает)? Уберите все redirect_port.
Мне эта мысль сегодня во сне пришла. Я уже даже во сне настриваю сервterminus писал(а):интерфейс tun0 скорее всего появляетя после того как в процессе загрузки отрабатывает фаервол - ipfw при старте не имеет информации о tun0 поэтому и ниче не работает.
Сделано. Там только больший кусок надо переместить, и первый блок "боимся всего непонятного" - он же тож внешний интерфейс слушает. И заворот на проксик, он тоже слушает его.terminus писал(а):вот это вырежте из основного скрипта и закинте в тот отдельный firewallstart.sh:
Обещаю исправиться! Очень тяжко заставить мозг работать после форточекterminus писал(а):и не копируйте никогда чужие конфиги и примеры не разобравшись как следует в них самих, и в комментариях к ним.
Сделал. После рестарта сервера имею:terminus писал(а):поместите ваш скрипт с настройками касающимеся запуска ната в /usr/local/etc/rc.c/firewallstart.sh тогда он будет отрабатывать после запуска демона pppoe и сможет настроить нат как надо.
Код: Выделить всё
00100 0 0 allow ip from any to any via lo0
00200 0 0 deny ip from any to 127.0.0.0/8
00300 0 0 deny ip from 127.0.0.0/8 to any
01040 247 25428 allow ip from any to any via sk0
65534 55 14924 deny ip from any to any
65535 0 0 allow ip from any to any
Код: Выделить всё
00100 0 0 allow ip from any to any via lo0
00200 0 0 deny ip from any to 127.0.0.0/8
00300 0 0 deny ip from 127.0.0.0/8 to any
01040 545 57694 allow ip from any to any via sk0
01050 0 0 deny ip from any to 192.168.0.0/16 in recv tun0
01060 0 0 deny ip from 192.168.0.0/16 to any in recv tun0
01070 0 0 deny ip from any to 172.16.0.0/12 in recv tun0
01080 0 0 deny ip from 172.16.0.0/12 to any in recv tun0
01090 0 0 deny ip from any to 10.0.0.0/8 in recv tun0
10100 0 0 deny ip from 10.0.0.0/8 to any in recv tun0
10110 0 0 deny ip from any to 169.254.0.0/16 in recv tun0
10120 0 0 deny ip from 169.254.0.0/16 to any in recv tun0
10125 15 3379 fwd 127.0.0.1,3128 tcp from 192.168.1.0/24 to any dst-port 80 out via tun0
10130 63 13220 nat 1 ip from any to any via tun0
65534 71 19892 deny ip from any to any
65535 0 0 allow ip from any to any
сделайте такСкрипт почему-то не стартует автоматом =(
Код: Выделить всё
chmod 755 /usr/local/etc/rc.d/firewallstart.sh
Божественно!!!terminus писал(а):сделайте таки попробуйте сновоКод: Выделить всё
chmod 755 /usr/local/etc/rc.d/firewallstart.sh
Код: Выделить всё
${ipfw} nat 1 config log if ${outif} reset same_ports deny_in
Код: Выделить всё
00100 60 13998 allow ip from any to any via lo0
00200 0 0 deny ip from any to 127.0.0.0/8
00300 0 0 deny ip from 127.0.0.0/8 to any
01040 2680 799218 allow ip from any to any via sk0
01050 0 0 deny ip from any to 192.168.0.0/16 in recv tun0
01060 0 0 deny ip from 192.168.0.0/16 to any in recv tun0
01070 0 0 deny ip from any to 172.16.0.0/12 in recv tun0
01080 0 0 deny ip from 172.16.0.0/12 to any in recv tun0
01090 0 0 deny ip from any to 10.0.0.0/8 in recv tun0
10100 0 0 deny ip from 10.0.0.0/8 to any in recv tun0
10110 0 0 deny ip from any to 169.254.0.0/16 in recv tun0
10120 0 0 deny ip from 169.254.0.0/16 to any in recv tun0
10125 525 102113 fwd 127.0.0.1,3128 tcp from 192.168.1.0/24 to any dst-port 80 out via tun0
10130 1315 494071 nat 1 ip from any to any via tun0
65534 20 4891 deny ip from any to any
65535 0 0 allow ip from any to any