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

IPFW? Не идут пакеты в мир...

Добавлено: 2006-03-15 13:22:17
Urgor
FreeBSD 6.0-RELEASE
Вся система настраивалась по докам с вашего сайта, конфиг для файрвола был взят первый...
В rc.conf:

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

gateway_enable="YES"
ifconfig_xl0="inet 192.168.0.200  netmask 255.255.255.0"
firewall_enable="YES" 
firewall_type="/etc/rc.firewall"
firewall_logging="YES" 
nat_enable="YES" 
natd_interface="ppp0" 
natd_flags="-m -u"
clamav_clamd_enable="YES"
sshd_enable="YES"
inetd_enable="YES"
named_flags="-u bind"
nisdomainname="NO"
mysql_enable="YES"
squid_enable="YES" 
asu-002# ipfw show

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

00100    0      0 check-state
00200  224  14520 allow ip from any to any via lo0
# Это для сквида, который ломится к c-icap
00300   32   1920 allow tcp from 127.0.0.1 to 217.195.64.xxx out via ppp0
00400    0      0 deny log logamount 100 ip from any to 127.0.0.0/8
00500    0      0 deny log logamount 100 ip from 127.0.0.0/8 to any
00600    0      0 deny ip from any to 10.0.0.0/8 in via ppp0
00700    0      0 deny ip from any to 172.16.0.0/12 in via ppp0
00800    0      0 deny ip from any to 192.168.0.0/16 in via ppp0
00900    0      0 deny ip from any to 0.0.0.0/8 in via ppp0
01000    0      0 deny ip from any to 169.254.0.0/16 in via ppp0
01100    0      0 deny ip from any to 224.0.0.0/4 in via ppp0
01200    0      0 deny ip from any to 240.0.0.0/4 in via ppp0
01300    0      0 deny icmp from any to any frag
01400    0      0 deny log logamount 100 icmp from any to 255.255.255.255 in via ppp0
01500    0      0 deny log logamount 100 icmp from any to 255.255.255.255 out via ppp0
01600   28   2778 fwd 127.0.0.1,3128 tcp from 192.168.0.0/24 to any dst-port 80 via ppp0
01700  305  21604 divert 8668 ip from 192.168.0.0/24 to any out via ppp0
01800   21   3478 divert 8668 ip from any to 217.195.64.xxx in via ppp0
01900    0      0 deny ip from 10.0.0.0/8 to any out via ppp0
02000    0      0 deny ip from 172.16.0.0/12 to any out via ppp0
02100    0      0 deny ip from 192.168.0.0/16 to any out via ppp0
02200    0      0 deny ip from 0.0.0.0/8 to any out via ppp0
02300    0      0 deny ip from 169.254.0.0/16 to any out via ppp0
02400    0      0 deny ip from 224.0.0.0/4 to any out via ppp0
02500    0      0 deny ip from 240.0.0.0/4 to any out via ppp0
02600  361  47971 allow tcp from any to any established
02700   13    930 allow ip from 217.195.64.xxx to any out xmit ppp0
02800    0      0 allow udp from any 53 to any via ppp0
02900    0      0 allow udp from any 53 to any via xl0
03000    0      0 allow udp from any to any dst-port 123 via ppp0
03100   43   3464 allow icmp from any to any icmptypes 0,8,11
03200    0      0 allow tcp from any to 217.195.64.xxx dst-port 80 via ppp0
03300    0      0 allow tcp from any to 217.195.64.xxx dst-port 25 via ppp0
03400    0      0 allow tcp from any to 192.168.0.200 dst-port 25 via xl0
03500    1     48 allow tcp from any to 192.168.0.200 dst-port 22 via xl0
03600  174   8352 allow tcp from any to any via xl0
03700 3886 351891 allow udp from any to any via xl0
03800   33   1848 allow icmp from any to any via xl0
03900    0      0 deny ip from any to any
65535    0      0 deny ip from any to any
Пробую пингануть маил.ру
asu-002# ping 194.67.57.26

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

PING 194.67.57.26 (194.67.57.26): 56 data bytes
^C
--- 194.67.57.26 ping statistics ---
7 packets transmitted, 0 packets received, 100% packet loss
При этом с моего компа пингуются как сетевуха так и внешний интерфейс на FreeBSDшной машине. С провом естессно сконнектились. По крайней мере до добавления файрвола дозванивался нормально, дерево портов обновил и все приложения нормально скачались...

Вот конфигурация ядра:

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

machine		i386
cpu		I686_CPU
ident		main_kernel

# To statically compile in device wiring instead of /boot/device.hints
options        IPFIREWALL
options        IPFIREWALL_VERBOSE
options        IPFIREWALL_VERBOSE_LIMIT=100
options        IPFIREWALL_FORWARD
options        IPDIVERT
options        DUMMYNET
options	TCP_DROP_SYNFIN

options 	SCHED_4BSD		# 4BSD scheduler
options 	PREEMPTION		# Enable kernel thread preemption
options 	INET			# InterNETworking
options 	FFS			# Berkeley Fast Filesystem
options 	SOFTUPDATES		# Enable FFS soft updates support
options 	UFS_ACL			# Support for access control lists
options 	UFS_DIRHASH		# Improve performance on big directories
options 	MD_ROOT			# MD is a potential root device
options 	CD9660			# ISO 9660 Filesystem
options 	PROCFS			# Process filesystem (requires PSEUDOFS)
options 	PSEUDOFS		# Pseudo-filesystem framework
options 	GEOM_GPT		# GUID Partition Tables.
options 	COMPAT_43		# Compatible with BSD 4.3 [KEEP THIS!]
options 	COMPAT_FREEBSD4		# Compatible with FreeBSD4
options 	COMPAT_FREEBSD5		# Compatible with FreeBSD5
options 	SYSVSHM			# SYSV-style shared memory
options 	SYSVMSG			# SYSV-style message queues
options 	SYSVSEM			# SYSV-style semaphores
options 	_KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
options 	ADAPTIVE_GIANT		# Giant mutex is adaptive.
device		apic			# I/O APIC

# Bus support.
device		isa
device		pci

# ATA and ATAPI devices
device		ata
device		atadisk		# ATA disk drives
device		atapicd		# ATAPI CDROM drives
options 	ATA_STATIC_ID	# Static device numbering

# atkbdc0 controls both the keyboard and the PS/2 mouse
device		atkbdc		# AT keyboard controller
device		atkbd		# AT keyboard
device		psm		# PS/2 mouse
device		vga		# VGA video card driver
device		splash		# Splash screen and screen saver support

# syscons is the default console driver, resembling an SCO console
device		sc

device		agp		# support several AGP chipsets

# Add suspend/resume support for the i8254.
device		pmtimer

# Serial (COM) ports
device		sio		# 8250, 16[45]50 based serial ports

# PCI Ethernet NICs.
device		em		# Intel PRO/1000 adapter Gigabit Ethernet Card

# PCI Ethernet NICs that use the common MII bus controller code.
# NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
device		miibus		# MII bus support
device		fxp		# Intel EtherExpress PRO/100B (82557, 82558)
device		wb		# Winbond W89C840F
device		xl		# 3Com 3c90x (``Boomerang'', ``Cyclone'')

# ISA devices that use the old ISA shims
#device		le

# Pseudo devices.
device		loop		# Network loopback
device		random		# Entropy device
device		ether		# Ethernet support
device		sl		# Kernel SLIP
device		ppp		# Kernel PPP
device		tun		# Packet tunnel.
device		pty		# Pseudo-ttys (telnet etc)
device		gif		# IPv6 and IPv4 tunneling

# The `bpf' device enables the Berkeley Packet Filter.
# Be aware of the administrative consequences of enabling this!
# Note that 'bpf' is required for DHCP.
device		bpf		# Berkeley packet filter

Добавлено: 2006-03-15 13:37:33
Urgor
Гм. Поглядел логи почтовика, а там:

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

Checking for rejected mail:
2006-03-14 16:06:57 H=mail.ongp.ru [217.17.170.3] F=<ящик@домен.ру> rejected RCPT <ящик@домен.ру>: Unrouteable address
2006-03-14 16:09:02 H=(ns.rustest.spb.ru) [194.190.197.238] F=<ящик@домен.ру> rejected RCPT <ящик@домен.ру>: Unrouteable address
2006-03-14 16:22:50 H=24-241-23-27.dhcp.oxfr.ma.charter.com [24.241.23.27] F=<ящик@домен.ру> rejected RCPT <ящик@домен.ру>: Go Away! You are spammer.
Т.е. у почтовика соединение с инетом идет...

Добавлено: 2006-03-15 13:57:16
Alex Keda
ppp0 - адрес не динамический ли?
и 300 правило - оно точно нужно?

Добавлено: 2006-03-15 14:46:17
Urgor
ip статический, он же прописан в DNS как MX... почта с инета на машину валится нормально.
По поводу 300... в данном случае есть оно, или же его нет пакеты в нет не уходят :(
А у тебя в файрволе связка сквида с икапом как настраивалась? Просто после его (икапа) доустановки я и добавил это правило, но сквид уже ругнулся:

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

While attempting to retrieve the URL: http://194.67.57.26/ 
the following error was encountered: 
* ICAP protocol error. 
Some aspect of the ICAP communication failed. Possible problems: 
* ICAP server is not reachable. 
* Illegal response from ICAP server. 

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

asu-002# sockstat
USER     COMMAND    PID   FD PROTO  LOCAL ADDRESS         FOREIGN ADDRESS
urgor    sshd       1041  3  tcp4   192.168.0.200:22      192.168.0.37:3174
urgor    sshd       1041  4  stream -> ??
root     sshd       1038  3  tcp4   192.168.0.200:22      192.168.0.37:3174
root     sshd       1038  5  stream -> ??
mysql    mysqld     662   3  tcp4   *:3306                *:*
mysql    mysqld     662   4  stream /tmp/mysql.sock
squid    perl5.8.7  639   0  tcp4   127.0.0.1:52966       127.0.0.1:61219
squid    perl5.8.7  639   1  tcp4   127.0.0.1:52966       127.0.0.1:61219
squid    perl5.8.7  638   0  tcp4   127.0.0.1:50550       127.0.0.1:65198
squid    perl5.8.7  638   1  tcp4   127.0.0.1:50550       127.0.0.1:65198
squid    perl5.8.7  637   0  tcp4   127.0.0.1:62001       127.0.0.1:49975
squid    perl5.8.7  637   1  tcp4   127.0.0.1:62001       127.0.0.1:49975
squid    perl5.8.7  636   0  tcp4   127.0.0.1:63239       127.0.0.1:63723
squid    perl5.8.7  636   1  tcp4   127.0.0.1:63239       127.0.0.1:63723
squid    perl5.8.7  634   0  tcp4   127.0.0.1:57906       127.0.0.1:52817
squid    perl5.8.7  634   1  tcp4   127.0.0.1:57906       127.0.0.1:52817
root     inetd      618   4  tcp4   *:21                  *:*
squid    perl5.8.7  617   0  tcp4   127.0.0.1:50464       127.0.0.1:64919
squid    perl5.8.7  617   1  tcp4   127.0.0.1:50464       127.0.0.1:64919
squid    perl5.8.7  616   0  tcp4   127.0.0.1:51274       127.0.0.1:57302
squid    perl5.8.7  616   1  tcp4   127.0.0.1:51274       127.0.0.1:57302
squid    perl5.8.7  615   0  tcp4   127.0.0.1:64072       127.0.0.1:63453
squid    perl5.8.7  615   1  tcp4   127.0.0.1:64072       127.0.0.1:63453
squid    perl5.8.7  614   0  tcp4   127.0.0.1:65261       127.0.0.1:63497
squid    perl5.8.7  614   1  tcp4   127.0.0.1:65261       127.0.0.1:63497
squid    perl5.8.7  613   0  tcp4   127.0.0.1:55500       127.0.0.1:58211
squid    perl5.8.7  613   1  tcp4   127.0.0.1:55500       127.0.0.1:58211
squid    squid      566   5  udp4   *:57858               *:*
squid    squid      566   7  tcp4   127.0.0.1:58211       127.0.0.1:55500
squid    squid      566   8  tcp4   127.0.0.1:63497       127.0.0.1:65261
squid    squid      566   9  tcp4   127.0.0.1:63453       127.0.0.1:64072
squid    squid      566   10 tcp4   127.0.0.1:57302       127.0.0.1:51274
squid    squid      566   11 tcp4   127.0.0.1:64919       127.0.0.1:50464
squid    squid      566   12 tcp4   127.0.0.1:52817       127.0.0.1:57906
squid    squid      566   13 tcp4   127.0.0.1:63723       127.0.0.1:63239
squid    squid      566   14 tcp4   127.0.0.1:49975       127.0.0.1:62001
squid    squid      566   15 tcp4   127.0.0.1:65198       127.0.0.1:50550
squid    squid      566   16 tcp4   127.0.0.1:61219       127.0.0.1:52966
squid    squid      566   22 tcp4   *:3128                *:*
squid    squid      564   4  dgram  -> /var/run/log
squid    c-icap     552   3  tcp4   *:1344                *:*
squid    c-icap     552   4  dgram  -> /var/run/logpriv
squid    c-icap     551   3  tcp4   *:1344                *:*
squid    c-icap     551   4  dgram  -> /var/run/logpriv
squid    c-icap     550   3  tcp4   *:1344                *:*
squid    c-icap     550   4  dgram  -> /var/run/logpriv
squid    c-icap     547   3  tcp4   *:1344                *:*
squid    c-icap     547   4  dgram  -> /var/run/logpriv
mailnull exim-4.60- 542   3  tcp4   *:25                  *:*
root     authdaemon 535   5  stream /var/run/authdaemond/socket.tmp
root     authdaemon 534   5  stream /var/run/authdaemond/socket.tmp
root     authdaemon 533   5  stream /var/run/authdaemond/socket.tmp
root     authdaemon 532   5  stream /var/run/authdaemond/socket.tmp
root     authdaemon 531   5  stream /var/run/authdaemond/socket.tmp
root     couriertcp 530   3  tcp4   *:110                 *:*
root     courierlog 529   4  dgram  -> /var/run/logpriv
root     couriertcp 515   3  tcp4   *:143                 *:*
root     courierlog 514   4  dgram  -> /var/run/logpriv
root     authdaemon 499   5  stream /var/run/authdaemond/socket.tmp
root     courierlog 498   4  dgram  -> /var/run/logpriv
clamav   clamd      485   0  stream /var/run/clamav/clamd
root     sshd       462   3  tcp4   *:22                  *:*
root     syslogd    347   3  dgram  /var/run/log
root     syslogd    347   4  dgram  /var/run/logpriv
root     syslogd    347   5  udp4   *:514                 *:*
root     devd       318   4  stream /var/run/devd.pipe

Добавлено: 2006-03-15 14:56:07
Alex Keda
у меня первый файрволл (собстно он же - мой и есть). Всё прекрасно завелось. Я статью по своей машине и писал....

Добавлено: 2006-03-15 16:19:34
Urgor
Выкинул nat, все заработало... возможно это все из-за ppp.
Ладно. Подожду когда оптику притащат =)

Добавлено: 2006-04-06 14:45:58
Urgor
Что-то мне с натом клинически не везет :(

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

C:\Documents and Settings>ping 217.195.65.9

Обмен пакетами с 217.195.65.9 по 32 байт:

Превышен интервал ожидания для запроса.
Превышен интервал ожидания для запроса.
Превышен интервал ожидания для запроса.
Превышен интервал ожидания для запроса.

Статистика Ping для 217.195.65.9:
    Пакетов: отправлено = 4, получено = 0, потеряно = 4 (100% потерь),

C:\Documents and Settings>ipconfig /all
Настройка протокола IP для Windows

        Имя компьютера  . . . . . . . . . : inf_sys
        Основной DNS-суффикс  . . . . . . : domain.com
        Тип узла. . . . . . . . . . . . . : неизвестный
        IP-маршрутизация включена . . . . : нет
        WINS-прокси включен . . . . . . . : нет
        Порядок просмотра суффиксов DNS . : domain.com

Подключение по локальной сети - Ethernet адаптер:

        DNS-суффикс этого подключения . . :
        Описание  . . . . . . . . . . . . : 3Com 3C920 Integrated Fast Etherne
контроллер (3C905C-TX совместимый)
        Физический адрес. . . . . . . . . : 00-01-03-0F-14-C1
        Dhcp включен. . . . . . . . . . . : да
        Автонастройка включена  . . . . . : да
        IP-адрес  . . . . . . . . . . . . : 192.168.0.7
        Маска подсети . . . . . . . . . . : 255.255.255.0
        Основной шлюз . . . . . . . . . . : 192.168.0.200
        DHCP-сервер . . . . . . . . . . . : 192.168.0.1
        DNS-серверы . . . . . . . . . . . : 217.195.65.9
                                            192.168.0.1
        Аренда получена . . . . . . . . . : 6 апреля 2006 г. 14:42:49
        Аренда истекает . . . . . . . . . : 14 апреля 2006 г. 14:42:49

C:\Documents and Settings>nslookup www.ya.ru
DNS request timed out.
    timeout was 2 seconds.
*** Can't find server name for address 217.195.65.9: Timed out
Server:  server.kk.com
Address:  192.168.0.1

*** server.kk.com can't find www.ya.ru: Non-existent domain
т.е. пинги не уходят и адрес не определяется, страница не грузится. Если прописать как прокси напрямую, то все ок. Но тогда не работают пайпы и статистика....
Вот конфиг фарвола:

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

FwCMD="/sbin/ipfw" # собственно где лежит бинарник ipfw
LanOut="xl1"            # внешний интерфейс
LanIn="xl0"             # внутренний интерфейс
IpOut="84.204.194.250"  # внешний IP адрес машины
IpIn="192.168.0.200"    # внутренний IP машины
NetMask="24"            # маска сети (если она разная для внешней
                        # и внутренней сети - придётся вводить ещё
                        # одну переменную, но самое забавное, что
                        # можно и забить - оставить 24 - всё будет
                        # работать, по крайней мере я пробовал -
                        # работаало на 4-х машинах, в разных сетях,
                        # с разными масками - настоящими разными! но -
                        # это неправильно.)
NetIn="192.168.0.0"     # Внутренняя сеть

# Сбрасываем все правила:
${FwCMD} -f flush

# Проверяем - соответствует ли пакет динамическим правилам:
${FwCMD} add check-state

${FwCMD} add pipe 1 ip from ${IpOut} to ${NetIn}/${NetMask}
${FwCMD} pipe 1 config bw 100Mbit/s
${FwCMD} add pipe 2 ip from ${IpIn} to ${NetIn}/${NetMask}
${FwCMD} pipe 2 config bw 100Mbit/s
${FwCMD} add pipe 3 ip from ${NetIn}/${NetMask} to me
${FwCMD} pipe 3 config bw 100Mbit/s

# --pipe (Add auto pipe rules from MySQL)
${FwCMD} add pipe 10 ip from not ${NetIn} to 192.168.0.37
${FwCMD} pipe 10 config bw 64000bit/s
# Butorin
${FwCMD} add pipe 13 ip from not ${NetIn} to 192.168.0.28
${FwCMD} pipe 13 config bw 50000bit/s
# director
${FwCMD} add pipe 14 ip from not ${NetIn} to 192.168.0.50
${FwCMD} pipe 14 config bw 128000bit/s
# Denisenko
${FwCMD} add pipe 15 ip from not ${NetIn} to 192.168.0.131
${FwCMD} pipe 15 config bw 128000bit/s
# fin001 -- telebank
${FwCMD} add pipe 16 ip from not ${NetIn} to 192.168.0.77
${FwCMD} pipe 16 config bw 64000bit/s


# Разрешаем весь траффик по внутреннему интерфейсу (петле)
# Вообще я во многих местах читал что без него может ничё не заработать вообще
# и прочие страшилки. Работает - почта, апач, .... А вот squid - не работает :)
# так что без него и правда - никуда.
${FwCMD} add allow ip from any to any via lo0

# рубим попытки lo0 куда-то лезть и откуда-то лезть на lo0 (вот честно - ни
# одного пакета по этим правилам не зарубилось за всё время... Может в этом
# моё счастье? :))
${FwCMD} add deny log ip from any to 127.0.0.0/8
${FwCMD} add deny log ip from 127.0.0.0/8 to any

# Вводим запреты:
# режем частные сети на внешнем интерфейсе - по легенде он у нас
# смотрит в интернет, а значит пакетам этим браться неоткуда на нём.
# рубим частные сeти
${FwCMD} add deny ip from any to 10.0.0.0/8 in via ${LanOut}
${FwCMD} add deny ip from any to 172.16.0.0/12 in via ${LanOut}
${FwCMD} add deny ip from any to 192.168.0.0/16 in via ${LanOut}
${FwCMD} add deny ip from any to 0.0.0.0/8 in via ${LanOut}
# рубим автоконфигуреную частную сеть
${FwCMD} add deny ip from any to 169.254.0.0/16 in via ${LanOut}
# рубаем мультикастовые рассылки
${FwCMD} add deny ip from any to 224.0.0.0/4 in via ${LanOut}
# рубаем мультикастовые рассылки
${FwCMD} add deny ip from any to 240.0.0.0/4 in via ${LanOut}
# рубим фрагментированные icmp
${FwCMD} add deny icmp from any to any frag
# рубим широковещательные icmp на внешнем интерфейсе
${FwCMD} add deny log icmp from any to 255.255.255.255 in via ${LanOut}
${FwCMD} add deny log icmp from any to 255.255.255.255 out via ${LanOut}

# а тут собственно файрволл и начался:

# отправляем всех на frox
${FwCMD} add fwd ${IpIn},2121 tcp from ${NetIn}/${NetMask} to any 21 via ${LanOut}
# отправляем всех на squid (в данном случае - прокси прозрачный)
${FwCMD} add fwd 127.0.0.1,3128 tcp from ${NetIn}/${NetMask} to any 80 via ${LanOut}

# пропускаем траффик через трансляцию сетевых адресов (NAT)
${FwCMD} add divert natd ip from ${NetIn}/${NetMask} to any out via ${LanOut}
${FwCMD} add divert natd ip from 192.168.0.1   to ${IpOut} in via ${LanOut}
${FwCMD} add divert natd ip from 192.168.0.7   to ${IpOut} in via ${LanOut}
# --divert (Add auto divert rules from MySQL)
${FwCMD} add divert natd ip from 192.168.0.37  to ${IpOut} in via ${LanOut}
${FwCMD} add divert natd ip from 192.168.0.28  to ${IpOut} in via ${LanOut}
${FwCMD} add divert natd ip from 192.168.0.50  to ${IpOut} in via ${LanOut}
${FwCMD} add divert natd ip from 192.168.0.131 to ${IpOut} in via ${LanOut}

# рубим траффик к частным сетям через внешний интерфейс
# заметтьте - эти правила отличаются от тех что были выше!
${FwCMD} add deny ip from 10.0.0.0/8 to any out via ${LanOut}
${FwCMD} add deny ip from 172.16.0.0/12 to any out via ${LanOut}
#${FwCMD} add deny ip from 192.168.0.0/16 to any out via ${LanOut}
${FwCMD} add deny ip from 0.0.0.0/8 to any out via ${LanOut}
# рубим автоконфигуреную частную сеть
${FwCMD} add deny ip from 169.254.0.0/16 to any out via ${LanOut}
# рубаем мультикастовые рассылки
${FwCMD} add deny ip from 224.0.0.0/4 to any out via ${LanOut}
# рубаем мультикастовые рассылки
${FwCMD} add deny ip from 240.0.0.0/4 to any out via ${LanOut}


# разрешаем все установленные соединения (если они установились -
# значит по каким-то правилам они проходили.)
${FwCMD} add allow tcp from any to any established
# разрешаем весь исходящий траффик (серверу-то в инет можно? :))
${FwCMD} add allow ip from ${IpOut} to any out xmit ${LanOut}

# разрешаем DNS снаружи (нам же надо узнавать IP по именам машин?)
${FwCMD} add allow udp from any 53 to any via ${LanOut}
${FwCMD} add allow udp from any 53 to any via ${LanIn}
# разрешаем DNS входящий снаружи - если на этой машине работает named
# и держит какую-то зону. В остальных случаях - не нужно
#${FwCMD} add allow udp from any to any 53 via ${LanOut}
# разрешаем UDP (для синхронизации времени - 123 порт)
${FwCMD} add allow udp from any to any 123 via ${LanOut}
# разрешаем ftp снаружи (оба правила - для пасивного режима):
#${FwCMD} add allow tcp from any to ${IpOut} 21 via ${LanOut}
#${FwCMD} add allow tcp from any to ${IpOut} 40000-65534 via ${LanOut}
# разрешаем некоторые типы ICMP траффика - эхо-запрос,
# эхо-ответ и время жизни пакета истекло
${FwCMD} add allow icmp from any to any icmptypes 0,8,11
# открываем снаружи 80 порт - если у нас есть WWW сервер на машине
#${FwCMD} add allow tcp from any to ${IpOut} 80 via ${LanOut}
# открываем снаружи 25 порт (SNMP) если на машине крутится почта
${FwCMD} add allow tcp from any to ${IpOut} 25 via ${LanOut}
${FwCMD} add allow tcp from any to ${IpIn}  25 via ${LanIn}
# открываем снаружи 22 порт - если надо будет ходить на машину по ssh
${FwCMD} add allow tcp from any to ${IpIn} 22 via ${LanIn}
# открываем снаружи 143 порт(если надо смотреть почту снаружи по IMAP)
#${FwCMD} add allow tcp from any to ${IpOut} 143 via ${LanOut}
# открываем снаружи 110 порт(если надо смотреть почту снаружи по POP)
#${FwCMD} add allow tcp from any to ${IpOut} 110 via ${LanOut}

# по поводу следующих трёх правил, для tcp, udp и icmp - их можно
# заменить одним правилом:
#${FwCMD} add allow ip from any to any via ${LanIn}
# но для удобства наладки и контроля происходящего я предпочитаю три отдельных
# правила, хотя могут быть грабли - например протокол gre не пройдёт -
# придётся стругать отдельное правило для него, типа
#${FwCMD} add allow gre from any to any via ${LanIn}
# итак:
# разрешаем весь tcp траффик внутри локалки (на внутреннем интерфейсе)
${FwCMD} add allow tcp from any to any via ${LanIn}
# разрешаем весь udp траффик внутри локалки (на внутреннем интерфейсе)
${FwCMD} add allow udp from any to any via ${LanIn}
# разрешаем весь icmp траффик внутри локалки (на внутреннем интерфейсе)
${FwCMD} add allow icmp from any to any via ${LanIn}

# ICQ
${FwCMD} add allow tcp from ${NetIn}/${NetMask} to any 5190 out via ${LanOut}
${FwCMD} add allow udp from ${NetIn}/${NetMask} to any 5190 out via ${LanOut}
# DNS
${FwCMD} add allow tcp from ${NetIn}/${NetMask} to any out via ${LanOut}
${FwCMD} add allow udp from ${NetIn}/${NetMask} to any out via ${LanOut}

# запрещаем всё и всем. Если тип файрволла не open то это правило добавится
# автоматически, но всё-же ну его. Лучше сам. Надёжней.
${FwCMD} add deny log ip from any to any

Добавлено: 2006-04-06 15:46:39
Urgor
Причем в логах видно что они уйти пытаются:

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

Apr  6 16:42:14 asu-002 kernel: ipfw: 2500 Divert 8668 UDP 192.168.0.7:1082 217.195.65.9:53 out via xl1
Apr  6 16:43:02 asu-002 kernel: ipfw: 2500 Divert 8668 ICMP:8.0 192.168.0.7 84.204.194.249 out via xl1
Apr  6 16:43:17 asu-002 last message repeated 3 times
Apr  6 16:46:29 asu-002 kernel: ipfw: 2500 Divert 8668 ICMP:8.0 192.168.0.7 84.204.194.249 out via xl1
Apr  6 16:46:44 asu-002 last message repeated 3 times
Apr  6 16:47:15 asu-002 kernel: ipfw: 2500 Divert 8668 UDP 192.168.0.7:1088 217.195.65.9:53 out via xl1

Добавлено: 2006-04-07 9:36:31
Urgor
Ну мазафака :twisted: Это видно карма совсем хреновая :evil:
Два дня изучал доки по ipfw и natd, поднял все на тестовой машине как описано в хандбуке -- работает! А все из-за того что в /etc/rc.conf было написано nat_enable="YES" :!:

Добавлено: 2006-05-06 17:57:18
Roman
Ситуация такая ... даю команду

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

 ipfw show
в ответ ....

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

65435   16  396  deny ip from any to any   
Вопрос ...как узнать какие пакеты и куда были зарублены, читал где-то, что в последнем правиле на надо поставить "log" в

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

${fwcmd} add deny log ip from  any to any
Вопрос и куда этот лог сохраняется ????

Добавлено: 2006-05-06 20:23:49
northern
правильно:

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

${FwCMD} add deny log ip from any to any
а лог лежит (у меня 6фря) :
/var/log/security

Добавлено: 2006-05-08 9:39:32
Roman
У меня FreeBSD 5.4, но лог действительно там (/var/log/security)....Спасибо !

Такая же проблема...

Добавлено: 2006-06-08 7:19:02
Dmitry
FreeBSD 6.0-RELEASE
Вся система настраивалась по докам с вашего сайта...

В rc.conf:

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

gateway_enable="YES" 
ifconfig_xl0="inet 192.168.103.107  netmask 255.255.252.0" (внешняя)
ifconfig_bfe0="inet 10.22.0.1  netmask 255.255.0.0" (внутренняя)
gateway_enable="YES"
firewall_enable="YES" 
firewall_type="/etc/rc.firewall" 
natd_enable="YES" 
natd_interface="xl0" 
natd_flags="-m -u" 
компьютер с WinXP подключен напрямую (оверкроссом) к bfe0
шлюзом указан 10.22.0.1
при таком раскладе выход во внешнюю сеть невозможен
если отключаю весь natd (в rc.conf) и прописываю

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

ipnat_enable="YES"
ipnat_program="/sbin/ipnat"
ipnat_flags="-CF -f /etc/ipnat.rules"
---------
(#ipnat.rules - map xl0 10.22.0.0/24->0/32
---------
тогда все работает нормально (за исключением emule, которая никак не может
приконнекититься к серверу)
вопрос такой:
что же я делаю неправильно?
почему natd не хочет транслировать запросы обратно клиенту?
и работает ли тогда IPWIREWALL ?
----------------------------
хотел установить samba-3.0.14a
требует autoconf259 input file
если не затруднит, подскажите как
этот "input" файл для saba создать?
-----------------------------
-----------------------------
на другой FreeBSD 6
пересобрать ядро хотел.
не получается :(
ругается на синтаксис в разных файлах
находящихся в /usr/src/sys/dev ......
хотя никогничего там не исправлял
что делать ? подскажите пожалуйста!

Добавлено: 2006-06-08 8:36:07
Alex Keda
natd работает не сам по себе, а вместе с файрволлом.
правила покажи.

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

Port:   samba-3.0.22,1
Path:   /usr/ports/net/samba3
Info:   A free SMB and CIFS client and server for UNIX
Maint:  timur@gnu.org
B-deps: autoconf-2.59_2 cups-base-1.1.23.0_9 gettext-0.14.5_2 gnutls-1.2.11 jpeg-6b_4 libgcrypt-1.2.2_1 libgpg-error-1.3 libiconv-1.9.2_2 m4-1.4.4 openldap-client-2.2.30 perl-5.8.8 pkg-config-0.20_2 png-1.2.8_3 popt-1.7_1 tiff-3.8.2
R-deps: cups-base-1.1.23.0_9 gettext-0.14.5_2 gnutls-1.2.11 jpeg-6b_4 libgcrypt-1.2.2_1 libgpg-error-1.3 libiconv-1.9.2_2 openldap-client-2.2.30 perl-5.8.8 pkg-config-0.20_2 png-1.2.8_3 popt-1.7_1 tiff-3.8.2
WWW:    http://www.samba.org/
это щас в портах. а 3,0,14 уже пара лет... порты обнови и ставь из портов

Добавлено: 2006-06-08 9:21:49
Dmitry
lissyara писал(а):natd работает не сам по себе, а вместе с файрволлом.
правила покажи.
правила обязательно покажу, завтра принесу...
прямо с утра

Re: Такая же проблема...

Добавлено: 2006-06-09 9:35:08
Dmitry
конфигурация ядра:

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

machine      i386 
cpu      I686_CPU 
ident      main_kernel 

options        IPFIREWALL 
options        IPFIREWALL_VERBOSE 
options        IPFIREWALL_VERBOSE_LIMIT=10 
options        IPFIREWALL_FORWARD 
options        IPDIVERT 
options   TCP_DROP_SYNFIN 
все остальное оставил по умолчанию (пока)

конфиг rc.firewall :

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

#!/bin/sh -

if [ -z "${source_rc_confs_defined}" ]; then
	if [ -r /etc/defaults/rc.conf ]; then
		. /etc/defaults/rc.conf
		source_rc_confs
	elif [ -r /etc/rc.conf ]; then
		. /etc/rc.conf
	fi
fi
setup_loopback () {
	${fwcmd} add 100 pass all from any to any via lo0
	${fwcmd} add 200 deny all from any to 127.0.0.0/8
	${fwcmd} add 300 deny ip from 127.0.0.0/8 to any
}

if [ -n "${1}" ]; then
	firewall_type="${1}"
fi

	fwcmd="/sbin/ipfw -q"
	;;
esac

${fwcmd} -f flush

case ${firewall_type} in
[Oo][Pp][Ee][Nn]|[Cc][Ll][Ii][Ee][Nn][Tt])
	case ${natd_enable} in
	[Yy][Ee][Ss])
		if [ -n "${natd_interface}" ]; then
			${fwcmd} add 50 divert natd all from any to any via ${natd_interface}
		fi
		;;
	esac
esac

	${fwcmd} add 65000 pass all from any to any
	;;

[Ss][Ii][Mm][Pp][Ll][Ee])
	LanOut="xl0"
	NetOut="192.168.100.0/24"
	IpOut="192.168.103.107"

	# set these to your inside interface network and netmask and ip
	LanIn="bfe0"
	NetIn="10.22.0.0/24"
	ip_lan="10.22.0"

	setup_loopback

	${fwcmd} add deny ip from any to 10.0.0.0/8 in via ${LanOut}
	${fwcmd} add deny ip from any to 172.16.0.0/12 in via ${LanOut}
	${fwcmd} add deny ip from any to 192.168.0.0/16 in via ${LanOut}
	${fwcmd} add deny ip from any to 0.0.0.0/8 in via ${LanOut}
	${fwcmd} add deny ip from any to 169.254.0.0/16 in via ${LanOut}
	${fwcmd} add deny ip from any to 224.0.0.0/4 in via ${LanOut}
	${fwcmd} add deny ip from any to 240.0.0.0/4 in via ${LanOut}
	${fwcmd} add deny icmp from any to any frag
	${fwcmd} add deny log icmp from any to 255.255.255.255 in via ${LanOut}
	${fwcmd} add deny log icmp from any to 255.255.255.255 out via ${LanOut}
	${fwcmd} add divert natd ip from ${NetIn} to any out via ${LanOut}
	${fwcmd} add divert natd ip from any to ${IpOut} in via ${LanOut}
	${fwcmd} add deny ip from 10.0.0.0/8 to any out via ${LanOut}
	${fwcmd} add deny ip from 172.16.0.0/12 to any out via ${LanOut}
	${fwcmd} add deny ip from 192.168.0.0/16 to any out via ${LanOut}
	${fwcmd} add deny ip from 0.0.0.0/8 to any out via ${LanOut}
	${fwcmd} add deny ip from 169.254.0.0/16 to any out via ${LanOut}
	${fwcmd} add deny ip from 224.0.0.0/4 to any out via ${LanOut}
	${fwcmd} add deny ip from 240.0.0.0/4 to any out via ${LanOut}
	${fwcmd} add allow icmp from any to any icmptypes 0,8,11
	${fwcmd} add allow ip from any to ${NetIn} in via ${LanIn}
	${fwcmd} add allow ip from ${NetIn} to any out via ${LanIn}
	${fwcmd} add allow tcp from any to any established
	${fwcmd} add allow udp from any to ${IpOut} 53 in via ${LanOut}
	${fwcmd} add allow udp from ${IpOut} 53 to any out  via ${LanOut}
	${fwcmd} add allow udp from any 53 to ${IpOut} in via ${LanOut}
	${fwcmd} add allow udp from ${IpOut} to any 53 out via ${LanOut}
	${fwcmd} add allow udp from any to any 123 via ${LanOut}
	${fwcmd} add allow tcp from any to ${oip} 53 in via ${LanOut} setup
	${fwcmd} add allow tcp from ${IpOut} to any out via ${LanOut} setup
	${fwcmd} add allow tcp from any to ${IpOut} in via ${LanOut} setup
	${fwcmd} add deny ip from any to any
	;;

[Cc][Ll][Oo][Ss][Ee][Dd])
	setup_loopback
	;;
[Uu][Nn][Kk][Nn][Oo][Ww][Nn])
	;;
*)
	if [ -r "${firewall_type}" ]; then
		${fwcmd} ${firewall_flags} ${firewall_type}
	fi
	;;
esac

Добавлено: 2006-06-09 10:20:15
Alex Keda
ipfw list
ipfw show
===
и порльзуйся тегами для разметки. читать удобней.

Добавлено: 2006-06-09 10:40:26
Dmitry
lissyara писал(а):ipfw list
ipfw show
===
и порльзуйся тегами для разметки. читать удобней.
и в то м в другом случае (ipfw list и ipfw show)
показывает одно и то же...
65435 16 396 deny ip from any to any

Добавлено: 2006-06-09 10:44:40
Alex Keda
Значит у тебя файл файрволла не подгружается.

Добавлено: 2006-06-09 10:49:57
Dmitry
lissyara писал(а):ipfw list
ipfw show
===
и порльзуйся тегами для разметки. читать удобней.
сейчас ipfw show = 65535 8752 2550449 all ip from any to any

а в чем тогда можно поискать ошибку ???

Добавлено: 2006-06-09 10:52:23
Dmitry
в смысле - где???

Добавлено: 2006-06-09 10:56:42
Alex Keda
для начала сделая скрипт фаера попроще. в пару правил, чтоб видно было - он цепляется вообще, или нет.

Добавлено: 2006-06-09 11:19:50
Dmitry
lissyara писал(а):для начала сделая скрипт фаера попроще. в пару правил, чтоб видно было - он цепляется вообще, или нет.
попробую...
о результате во вторник скажу