David,
I tried the diff above and it worked. Thank you so much..

On Wed, 7 Apr 2021 at 16:11, David Gwynne <da...@gwynne.id.au> wrote:

> On Mon, Apr 05, 2021 at 09:51:53AM +0300, Hakan SARIMAN wrote:
> > Hello Misc,
> >
> >
> > I think divert-packet feature with NAT/NAPT is broken.
> >
> > I can not reach to web server when I use divert-packet with rdr-to.
> >
> > Is this a known bug or a new issue?
>
> There's no other options? Just those two?
>
> I think it's been around for a long time, but no one's hurt themselves
> with it because they haven't combined nat/rdr with divert-packet
> yet.
>
> I believe the diff below will fix the bug. There's some discussion going
> on behind the scenes about whether this is the right fix though.
>
> >
> > When I use divert-packet + rdr-to here is the situation:
> >
> >
> > # MY PF RULES
> >
> > pass in log quick on pppoe0 inet proto tcp from any to (pppoe0:0) port 81
> > rdr-to 10.10.12.27 port 81
> >
> > pass out log quick on vport12 inet proto tcp from any to 10.10.12.27 port
> > 81 divert-packet port 700
>
> Index: pf.c
> ===================================================================
> RCS file: /cvs/src/sys/net/pf.c,v
> retrieving revision 1.1112
> diff -u -p -r1.1112 pf.c
> --- pf.c        23 Feb 2021 11:43:40 -0000      1.1112
> +++ pf.c        5 Apr 2021 10:16:31 -0000
> @@ -6848,8 +6848,10 @@ pf_test(sa_family_t af, int fwdir, struc
>         if ((*m0)->m_pkthdr.pf.flags & PF_TAG_GENERATED)
>                 return (PF_PASS);
>
> -       if ((*m0)->m_pkthdr.pf.flags & PF_TAG_DIVERTED_PACKET)
> +       if ((*m0)->m_pkthdr.pf.flags & PF_TAG_DIVERTED_PACKET) {
> +               CLR((*m0)->m_pkthdr.pf.flags, PF_TAG_DIVERTED_PACKET);
>                 return (PF_PASS);
> +       }
>
>         if ((*m0)->m_pkthdr.pf.flags & PF_TAG_REFRAGMENTED) {
>                 (*m0)->m_pkthdr.pf.flags &= ~PF_TAG_REFRAGMENTED;
>


-- 
Saygılarımla,

Hakan SARIMAN

Reply via email to