[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[openbsd] Re: Странная фишка с новым pf
On Sat, Nov 07, 2009 at 03:04:04PM +0200, irix wrote:
> Hello Openbsd,
>
> Обновлялся до карента когда уже синтаксис pf поковыряли как у scrub
> так и наты с редиректами. На одной машинке которая цепляется в
> укртелеком ядрённым pppoe клиентом на 4.5 был полный ажур. Но когда
> обновил и секцию scrub in заменил на match in all scrub (no-df) раз
> в несколько дней начали отваливатся несколько компьютеров от
> интернета ни пинги ничего не ходит. Причём компьютеры меняються
> произвольно из 15 стабильно два, три компа не работают а когда когда
> начинают глючить другие, те которые раньше не работали начинают
> работать. Когда захожу и руками просто перегружаю правила pfctl -f
> /etc/pf.conf все компы начинаю работать нормально в течении
> нескольких дней, а потом всё по новой.
>
> Опция set reassemble в конфиге не фигурирует, судя по ману по
> умолчанию она включена.
>
> Порядок правил
>
> #Scrub all
> match in all scrub (no-df)
>
> #enable nat on ext_if
> match out on $ext_if from !($ext_if) nat-to ($ext_if:0)
>
> #enable nat on sl_if
> match out on $sl_if from !($sl_if) nat-to ($sl_if:0)
>
> #DC++ Redirect for dc_host
> match in on $sl_if inet proto { tcp udp } to ($sl_if) port $dc_port rdr-to $dc_host
>
> #Antispoof rules
> antispoof quick for { lo $int_if }
>
> #Last anchor for ftp-proxy
> anchor "ftp-proxy/*"
>
> #Redirect ftp connections for ftp-proxy
> match in on $int_if inet proto tcp to !(self) port ftp rdr-to 127.0.0.1 port 8021
>
>
> Дальше идут правила фильтрации.
>
> Идро генерик.
>
> И как исправить ситуацию.
0. Ознакомиться с проблемой: http://marc.info/?l=openbsd-misc&m=125594592125229&w=2
1. Применить патч:
itp[p1]:/usr/src>cvs di -r1.118 -r1.120 sys/net/pf_norm.c
Index: sys/net/pf_norm.c
===================================================================
RCS file: /cvs/src/sys/net/pf_norm.c,v
retrieving revision 1.118
retrieving revision 1.120
diff -u -p -r1.118 -r1.120
--- sys/net/pf_norm.c 25 Jun 2009 09:30:28 -0000 1.118
+++ sys/net/pf_norm.c 1 Sep 2009 15:51:06 -0000 1.120
@@ -1,4 +1,4 @@
-/* $OpenBSD: pf_norm.c,v 1.118 2009/06/25 09:30:28 sthen Exp $ */
+/* $OpenBSD: pf_norm.c,v 1.120 2009/09/01 15:51:06 jsing Exp $ */
/*
* Copyright 2001 Niels Provos <provos@citi.umich.edu>
@@ -113,11 +113,6 @@ void pf_free_fragment(struct pf_fragm
struct pf_fragment *pf_find_fragment(struct ip *, struct pf_frag_tree *);
struct mbuf *pf_reassemble(struct mbuf **, struct pf_fragment **,
struct pf_frent *, int);
-void pf_scrub_ip(struct mbuf **, u_int16_t, u_int8_t,
- u_int8_t);
-#ifdef INET6
-void pf_scrub_ip6(struct mbuf **, u_int8_t);
-#endif
#define DPFPRINTF(x) do { \
if (pf_status.debug >= PF_DEBUG_MISC) { \
@@ -541,7 +536,7 @@ pf_normalize_ip(struct mbuf **m0, int di
goto drop;
/* Clear IP_DF if we're in no-df mode */
- if (!(pf_status.reass & PF_REASS_NODF) && h->ip_off & htons(IP_DF)) {
+ if (pf_status.reass & PF_REASS_NODF && h->ip_off & htons(IP_DF)) {
u_int16_t ip_off = h->ip_off;
h->ip_off &= htons(~IP_DF);
2. Попробовать снова.
--
To unsubscribe send an e-mail to openbsd+unsubscribe@uaoug.org.ua
For retrieval in messages archive http://www.uaoug.org.ua/archive