Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    Scheduled blocks won't work without manual states reset

    Scheduled Pinned Locked Moved Firewalling
    71 Posts 25 Posters 21.7k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • O
      Overhacked
      last edited by

      The relevant code that kills states when a scheduled rule expires is this pfSense project patch to the FreeBSD pf code: https://github.com/pfsense/FreeBSD-src/commit/49045005c714cd18a0f844d1a70047abaab7523a

      The code keeps track of states that are part of a schedule rule by tagging them as they are created, so it is a trivial matter to remove them when the schedule expires. It seems it would be a bit more complicated to dig through all the states looking for the ones that match a scheduled block. I had hoped to tackle this with a patch; maybe some day.

      Apologies for posting an apology with no action, but I wanted to leave a lasting note here of where the relevant code is so that I or someone else can find it in the future.

      P.S. I am using the "pass rule that expires" work-around to make sure that states get killed when my scheduled reject rule begins.

      1 Reply Last reply Reply Quote 0
      • S
        sonidoP
        last edited by

        How can I apply the patch?
        My pfsense version is 2.3.2-RELEASE-p1  and use the web interface patches, How much do test, the result is:
        Patch can NOT be applied cleanly (detail)
        Patch can NOT be reverted cleanly (detail)

        /usr/bin/patch –directory=/ -t -p1 -i /var/patches/586c4515ba093.patch --check --forward --ignore-whitespace

        Hmm...  Looks like a unified diff to me...
        The text leading up to this was:

        |From 49045005c714cd18a0f844d1a70047abaab7523a Mon Sep 17 00:00:00 2001
        |From: Renato Botelho
        |Date: Mon, 17 Aug 2015 13:52:56 -0300
        |Subject: [PATCH] Importing pfSense patch schedule_label.RELENG_10.diff
        |
        |–-
        | sbin/pfctl/parse.y        | 44 ++++++++++++++++++++++++++++++++++++++++++--
        | sbin/pfctl/pfctl.c        | 32 +++++++++++++++++++++++++++++++-
        | sys/net/pfvar.h          |  7 +++++++
        | sys/netpfil/pf/pf_ioctl.c | 24 ++++++++++++++++++++++++
        | 4 files changed, 104 insertions(+), 3 deletions(-)
        |
        |diff --git a/sbin/pfctl/parse.y b/sbin/pfctl/parse.y
        |index 2991473..62a78d1 100644
        |--- a/sbin/pfctl/parse.y

        +++ b/sbin/pfctl/parse.y
        No file to patch.  Skipping...
        Hunk #1 ignored at 235.
        Hunk #2 ignored at 343.
        Hunk #3 ignored at 446.
        Hunk #4 ignored at 491.
        Hunk #5 ignored at 1913.
        Hunk #6 ignored at 2371.
        Hunk #7 ignored at 3722.
        Hunk #8 ignored at 5123.
        Hunk #9 ignored at 5132.
        Hunk #10 ignored at 5185.
        Hunk #11 ignored at 5196.
        Hunk #12 ignored at 5459.
        Hunk #13 ignored at 6091.
        13 out of 13 hunks ignored while patching sbin/pfctl/parse.y
        Hmm...  The next patch looks like a unified diff to me...
        The text leading up to this was:

        |diff --git a/sbin/pfctl/pfctl.c b/sbin/pfctl/pfctl.c
        |index 64b4a05..1e957f6 100644
        |--- a/sbin/pfctl/pfctl.c

        +++ b/sbin/pfctl/pfctl.c
        No file to patch.  Skipping...
        Hunk #1 ignored at 78.
        Hunk #2 ignored at 118.
        Hunk #3 ignored at 656.
        Hunk #4 ignored at 2024.
        Hunk #5 ignored at 2138.
        Hunk #6 ignored at 2352.
        6 out of 6 hunks ignored while patching sbin/pfctl/pfctl.c
        Hmm...  The next patch looks like a unified diff to me...
        The text leading up to this was:

        |diff --git a/sys/net/pfvar.h b/sys/net/pfvar.h
        |index 0b8f0ac..ba8b1d9 100644
        |--- a/sys/net/pfvar.h

        +++ b/sys/net/pfvar.h
        No file to patch.  Skipping...
        Hunk #1 ignored at 488.
        Hunk #2 ignored at 1288.
        Hunk #3 ignored at 1373.
        3 out of 3 hunks ignored while patching sys/net/pfvar.h
        Hmm...  The next patch looks like a unified diff to me...
        The text leading up to this was:

        |diff --git a/sys/netpfil/pf/pf_ioctl.c b/sys/netpfil/pf/pf_ioctl.c
        |index 96abf2c..23b9efc 100644
        |--- a/sys/netpfil/pf/pf_ioctl.c

        +++ b/sys/netpfil/pf/pf_ioctl.c
        No file to patch.  Skipping...
        Hunk #1 ignored at 1709.
        1 out of 1 hunks ignored while patching sys/netpfil/pf/pf_ioctl.c
        done

        /usr/bin/patch --directory=/ -f -p1 -i /var/patches/586c4515ba093.patch --check --reverse --ignore-whitespace

        Hmm...  Looks like a unified diff to me...
        The text leading up to this was:

        |From 49045005c714cd18a0f844d1a70047abaab7523a Mon Sep 17 00:00:00 2001
        |From: Renato Botelho
        |Date: Mon, 17 Aug 2015 13:52:56 -0300
        |Subject: [PATCH] Importing pfSense patch schedule_label.RELENG_10.diff
        |
        |–-
        | sbin/pfctl/parse.y        | 44 ++++++++++++++++++++++++++++++++++++++++++--
        | sbin/pfctl/pfctl.c        | 32 +++++++++++++++++++++++++++++++-
        | sys/net/pfvar.h          |  7 +++++++
        | sys/netpfil/pf/pf_ioctl.c | 24 ++++++++++++++++++++++++
        | 4 files changed, 104 insertions(+), 3 deletions(-)
        |
        |diff --git a/sbin/pfctl/parse.y b/sbin/pfctl/parse.y
        |index 2991473..62a78d1 100644
        |--- a/sbin/pfctl/parse.y

        +++ b/sbin/pfctl/parse.y
        No file to patch.  Skipping...
        Hunk #1 ignored at 235.
        Hunk #2 ignored at 342.
        Hunk #3 ignored at 444.
        Hunk #4 ignored at 489.
        Hunk #5 ignored at 1911.
        Hunk #6 ignored at 2366.
        Hunk #7 ignored at 3710.
        Hunk #8 ignored at 5106.
        Hunk #9 ignored at 5114.
        Hunk #10 ignored at 5165.
        Hunk #11 ignored at 5173.
        Hunk #12 ignored at 5434.
        Hunk #13 ignored at 6065.
        13 out of 13 hunks ignored while patching sbin/pfctl/parse.y
        Hmm...  The next patch looks like a unified diff to me...
        The text leading up to this was:

        |diff --git a/sbin/pfctl/pfctl.c b/sbin/pfctl/pfctl.c
        |index 64b4a05..1e957f6 100644
        |--- a/sbin/pfctl/pfctl.c

        +++ b/sbin/pfctl/pfctl.c
        No file to patch.  Skipping...
        Hunk #1 ignored at 78.
        Hunk #2 ignored at 117.
        Hunk #3 ignored at 654.
        Hunk #4 ignored at 2003.
        Hunk #5 ignored at 2117.
        Hunk #6 ignored at 2325.
        6 out of 6 hunks ignored while patching sbin/pfctl/pfctl.c
        Hmm...  The next patch looks like a unified diff to me...
        The text leading up to this was:

        |diff --git a/sys/net/pfvar.h b/sys/net/pfvar.h
        |index 0b8f0ac..ba8b1d9 100644
        |--- a/sys/net/pfvar.h

        +++ b/sys/net/pfvar.h
        No file to patch.  Skipping...
        Hunk #1 ignored at 488.
        Hunk #2 ignored at 1287.
        Hunk #3 ignored at 1367.
        3 out of 3 hunks ignored while patching sys/net/pfvar.h
        Hmm...  The next patch looks like a unified diff to me...
        The text leading up to this was:

        |diff --git a/sys/netpfil/pf/pf_ioctl.c b/sys/netpfil/pf/pf_ioctl.c
        |index 96abf2c..23b9efc 100644
        |--- a/sys/netpfil/pf/pf_ioctl.c

        +++ b/sys/netpfil/pf/pf_ioctl.c
        No file to patch.  Skipping...
        Hunk #1 ignored at 1709.
        1 out of 1 hunks ignored while patching sys/netpfil/pf/pf_ioctl.c
        done

        Is this solution included in a beta version or binari files compiled?

        Thanks for any help.

        1 Reply Last reply Reply Quote 0
        • O
          Overhacked
          last edited by

          Sorry to mislead. The link I posted is not a patch to add this feature, it is the CURRENT pfSense code that implements state killing for expiring pass rules.

          The code works by finding states that have been marked by the scheduled pass rule. To implement state killing for scheduled block rules, new code would be needed to find all not marked states that match the block rule, which this code doesn't do at all.

          1 Reply Last reply Reply Quote 0
          • M
            M_Devil
            last edited by

            Searching the forum I ran into this thread. Seems my post from this morning relates to this issue.
            In my case even a (UDP) state returns after manual kill of state enabling Skype to keep running. Please have a look at: https://forum.pfsense.org/index.php?topic=125534.0

            Earlier in this thread I read about same issue (Skype keeps running).

            1 Reply Last reply Reply Quote 0
            • T
              thecableguy
              last edited by

              Good luck, I have been chasing this for months..

              I find the rules work until you modify the schedule portion of the rule.. If you manually clear states for the target IP after changing the schedule, they do re-establish, even though people on this forum swear this shouldn't happen.

              I find the only way to fix is to try to reset all states and if that doesn't fix, reboot.

              Seems to be something broken with the schedules and how they relate to the rules.

              1 Reply Last reply Reply Quote 0
              • -
                -RYknow
                last edited by

                So in my hunting it would appear that setting up a schedule with pfsense isn't very likely to happen? I'm messing with this here at home first, as I have a customer with a similar request. So at home my daughters ipod has become the guinea pig.

                Basically I have created a static mapping for her device. I've also created a schedule. I've created a block rule for the IP of the ipod, as well as an allow rule, which has the schedule selected. It appears to be working for the most part, however imessage continues to work.

                I downloaded the cron package, and I was going to use the pfctl -F command. Is this going to work, or am I beating a dead horse here with this setup?

                -RYknow

                1 Reply Last reply Reply Quote 0
                • T
                  thecableguy
                  last edited by

                  I have had hit and miss success with the cron task and filtering Steam.

                  My setup is to BLOCK the ALIAS and then place an ALLOW rule with schedule ABOVE the BLOCK rule in the LAN tab.

                  The wheels fall off if I modify a schedule. I find clearing states does not work as expected and a full reboot is required to get things back on track after adjusting the schedule.

                  1 Reply Last reply Reply Quote 0
                  • -
                    -RYknow
                    last edited by

                    I'll need to double check how I have things setup.

                    I'm wondering if my issue is IPv6 related? Does that make any sense?

                    -RYknow

                    1 Reply Last reply Reply Quote 0
                    • T
                      thecableguy
                      last edited by

                      Possibly but I have blocked IPv6 on my network.

                      1 Reply Last reply Reply Quote 0
                      • -
                        -RYknow
                        last edited by

                        That's my next step. I'll just block it and see if it fixes my problem.

                        EDIT: IPv6 seems to have been the ticket. Since disabling IPv6 traffic on my network, all the devices are working correctly with the above mentioned schedule.

                        -RYknow

                        1 Reply Last reply Reply Quote 0
                        • T
                          thecableguy
                          last edited by

                          @-RYknow:

                          That's my next step. I'll just block it and see if it fixes my problem.

                          EDIT: IPv6 seems to have been the ticket. Since disabling IPv6 traffic on my network, all the devices are working correctly with the above mentioned schedule.

                          -RYknow

                          Have you modified schedules, waited until the next schedule change and found the states remain on some UDP packets?

                          1 Reply Last reply Reply Quote 0
                          • -
                            -RYknow
                            last edited by

                            Yes. I was never able to get it to work correctly with the ipod. I ended up just creating the schedule via the unifi software… but I would like to get it sorted at the router level instead.

                            -RYknow

                            1 Reply Last reply Reply Quote 0
                            • T
                              thecableguy
                              last edited by

                              The thing that surprises me the most is how long this issue has been floating around without being addressed.. Surely there would be others who could use this feature?

                              1 Reply Last reply Reply Quote 0
                              • -
                                -RYknow
                                last edited by

                                Yeah, you triggered my memory about this and I went and played with it last night… I set an ipod up with just strickly a block rule, (picked block... and chose the IP). and imessage still works... I have I have ipv6 disabled, as I was thinking maybe the traffic was using ipv6.... but imessage still works. Very strange.

                                -RYknow

                                1 Reply Last reply Reply Quote 0
                                • T
                                  thecableguy
                                  last edited by

                                  Yeah, I can get this working on a test laptop reliably with a cron task to kill off states after the schedule expires but it doesn't work on the existing rules.

                                  I will delete all the rules and start fresh.

                                  1 Reply Last reply Reply Quote 0
                                  • T
                                    thecableguy
                                    last edited by

                                    Did you have any limiters on your rules for the Ipod?

                                    1 Reply Last reply Reply Quote 0
                                    • -
                                      -RYknow
                                      last edited by

                                      I don't have any limiters on the iPod. Initially I was using a schedule I had created. At this point for testing I've gotten rid of the schedule completely, and I'm just using the block rule. When I disable it for any length of time, and re-enable it, the imessage stuff still works.

                                      I'm going to test it some more over the weekend, I moved the ipod block to be the very first rule in the list. See if that makes much of a difference.

                                      -RYknow

                                      1 Reply Last reply Reply Quote 0
                                      • T
                                        thecableguy
                                        last edited by

                                        I am really confused now, I deleted all pass/block rules and now the schedule works on one host but not the other?

                                        I even copied the rule and just changed the alias to suit the new rules…

                                        I'm going to default my router one more time and if that doesn't fix it, I'm going to try another product.

                                        1 Reply Last reply Reply Quote 0
                                        • T
                                          twinbytes
                                          last edited by

                                          I've tried several variations I found online for using a Cron job to kill the states after a rule becomes active and none of them work.  The only way to ensure Skype and active game sessions get killed after the scheduled block rules kick in is to manually reset the states in the Diagnostics menu.  It's a brand new install.

                                          If someone can suggest the exact spelling with the full path of the Cron job other than what I already tried or maybe a different way other than Cron jobs if there is a way?  I've tried the following Cron commands:

                                          /sbin/pfctl -F state
                                          /sbin/pfctl -k >IP on the block list<

                                          1 Reply Last reply Reply Quote 0
                                          • T
                                            thecableguy
                                            last edited by

                                            I can confirm:

                                            /sbin/pfctl -F state works sometimes (cron task)
                                            pfctl -F state works sometimes (cron task)

                                            /sbin/pfctl -k >IP on the block list<works sometimes="" (cron="" task)<br="">pfctl -k >IP on the block list <works sometimes="" (cron="" task)<br="">Both also seem to work in the Diagnostics/Command Prompt however, nothing reliably clears established UDP states.

                                            After the PASS schedule expires, all states are cleared and then a few (Steam and Teamspeak in my case) immediately re-establish.</works></works>

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post
                                            Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.