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

    How to release/renew DHCP

    Scheduled Pinned Locked Moved DHCP and DNS
    27 Posts 8 Posters 14.5k 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.
    • dotdashD
      dotdash
      last edited by

      It appears dhclient-script is used for this, not dhclient. Are you scripting something, and can't use the release and renew off the status/interfaces page?

      JKnottJ 3 Replies Last reply Reply Quote 0
      • JKnottJ
        JKnott @dotdash
        last edited by

        @dotdash

        That doesn't appear to do a full release of the lease. All I capture is the request and ack. If I do a release/renew in Windows, the capture has all 4 DHCP steps of discovery, offer, request & ack.

        I'll have to see if the dhclient-script rebind command will do the trick.

        PfSense running on Qotom mini PC
        i5 CPU, 4 GB memory, 32 GB SSD & 4 Intel Gb Ethernet ports.
        UniFi AC-Lite access point

        I haven't lost my mind. It's around here...somewhere...

        1 Reply Last reply Reply Quote 0
        • JKnottJ
          JKnott @dotdash
          last edited by

          @dotdash

          According to the FreeBSD man pages, dhclient-script is called by dhclient. Calling it directly doesn't seem to do anything.

          PfSense running on Qotom mini PC
          i5 CPU, 4 GB memory, 32 GB SSD & 4 Intel Gb Ethernet ports.
          UniFi AC-Lite access point

          I haven't lost my mind. It's around here...somewhere...

          1 Reply Last reply Reply Quote 0
          • JKnottJ
            JKnott @dotdash
            last edited by

            @dotdash

            On Linux:
            dhclient <interface> causes a request & ack
            dhclient -r <interface> causes a release
            dhclient <interface> now causes discover, offer, request & ack.

            On pfSense, -r option doesn't exist and just running dhclient returns a message that the client is already running. There doesn't seem to be a way to cleanly generate the full 4 step dhcp process.

            PfSense running on Qotom mini PC
            i5 CPU, 4 GB memory, 32 GB SSD & 4 Intel Gb Ethernet ports.
            UniFi AC-Lite access point

            I haven't lost my mind. It's around here...somewhere...

            JKnottJ 1 Reply Last reply Reply Quote 0
            • JKnottJ
              JKnott @JKnott
              last edited by

              @JKnott

              Doesn't anyone know how to do this? It seems strange that something that's trivial on Linux and Windows can't be done in pfSense.

              PfSense running on Qotom mini PC
              i5 CPU, 4 GB memory, 32 GB SSD & 4 Intel Gb Ethernet ports.
              UniFi AC-Lite access point

              I haven't lost my mind. It's around here...somewhere...

              1 Reply Last reply Reply Quote 0
              • dotdashD
                dotdash
                last edited by

                I think

                service dhclient restart em0
                

                works on stock FreeBSD (don't have a test box handy). but this errors on my test pfSense and says the interface is not set for dhcp. (it is)

                service netif restart
                

                Should work, but will restart all interfaces.
                You could look at the code on the status_interfaces page to see what it is doing. It's not fair to say you can't release and renew easily on pfSense, as there is a button right on the status page. Maybe not easy to script?

                JKnottJ 1 Reply Last reply Reply Quote 0
                • JKnottJ
                  JKnott @dotdash
                  last edited by

                  @dotdash

                  /root: service dhclient restart re0
                  're0' is not a DHCP-enabled interface
                  dhclient already running? (pid=76670).

                  As for "service netif restart", I had to reboot pfSense to get out of that one.

                  It's not fair to say you can't release and renew easily on pfSense, as there is a button right on the status page.

                  When I use that, even with Relinquish Lease selected, it does not go through the full 4 step DHCP process. As I mentioned above, I only capture the request and ack. The discover and offer are nowhere to be seen. So, yeah, it is fair to say that.

                  PfSense running on Qotom mini PC
                  i5 CPU, 4 GB memory, 32 GB SSD & 4 Intel Gb Ethernet ports.
                  UniFi AC-Lite access point

                  I haven't lost my mind. It's around here...somewhere...

                  1 Reply Last reply Reply Quote 0
                  • dotdashD
                    dotdash
                    last edited by

                    I've never captured the traffic, but I haven't had a problem using the release and renew the handful of times I've needed it. Yours doesn't release/renew properly? Does it log an error?

                    JKnottJ 2 Replies Last reply Reply Quote 0
                    • JKnottJ
                      JKnott @dotdash
                      last edited by

                      @dotdash

                      I haven't checked the logs, but use Packet Capture or Wireshark frequently. Clearly, Packet Capture is working, as it captures the request and ack. Also, on both Linux and Windows, just renewing, without doing a release provides the same result. On both, I have to specifically release to get all 4 steps.

                      PfSense running on Qotom mini PC
                      i5 CPU, 4 GB memory, 32 GB SSD & 4 Intel Gb Ethernet ports.
                      UniFi AC-Lite access point

                      I haven't lost my mind. It's around here...somewhere...

                      1 Reply Last reply Reply Quote 0
                      • JKnottJ
                        JKnott @dotdash
                        last edited by

                        @dotdash

                        Why not try it and see what happens. Run Packet Capture to capture port 67, then release DHCP and see what's captured.

                        PfSense running on Qotom mini PC
                        i5 CPU, 4 GB memory, 32 GB SSD & 4 Intel Gb Ethernet ports.
                        UniFi AC-Lite access point

                        I haven't lost my mind. It's around here...somewhere...

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

                          Hello!

                          I am not knowledgeable about dhcp, but I have been trying to learn more. I have been poking around and found a few things that might be useful...or useless....

                          Just kind of stream of consciousness....

                          There appears to be multiple versions of dhclient on pfsense. The one you get by just running "dhclient" points to /sbin/dhclient and is ancient(?) - no "-r" option.

                          There is another dhclient at /usr/local/sbin/dhclient. This is the one the gui uses for things like releasing the wan with "Relinquish lease" in Status -> Interfaces. This appears to be a more recent isc version of dhclient and does support the "-r" option.

                          The gui uses something like this to relinquish the lease :

                          /usr/local/sbin/dhclient -4 -d -r 
                             -lf  /var/db/dhclient.leases.igb0 
                             -cf  /var/etc/dhclient_wan.conf 
                             -sf /usr/local/sbin/pfSense-dhclient-script
                          

                          It looks like it would be pretty simple to roll together a short php script that would mimic the release/relinquish/renew functionality of the gui.

                          There is also a pre-rolled script that seems like it might do much the same thing :

                          /etc/rc.linkup stop igb0
                          /etc/rc.linkup start igb0
                          

                          As far a forcing a dhcp rebind (bcast discover) as opposed to a renew (ip directed to previous server), I dont know. It seems like pfsense pretty strictly follows the dhcp renew/rebind approach. If the "relinquish lease" command above doesnt force a rebind, maybe you could nuke the /var/db/dhclient.leases.igb0 file before doing a renew. This might force a rebind.

                          John

                          Lex parsimoniae

                          JKnottJ 2 Replies Last reply Reply Quote 1
                          • JKnottJ
                            JKnott @serbus
                            last edited by

                            @serbus

                            I'll give that other client a try later. However, the commands to release and rebind should just work, as they do in Linux and Windows. It shouldn't be necessary to touch any files. I don't understand why it doesn't seem to work properly with pfSense out of the box. If the other client is what it takes, why isn't it used?

                            On this site, there are occasionally problems with connecting to the Internet. I often tell people to capture the full DHCP sequence, but that apparently won't work with the current DHCP client.

                            PfSense running on Qotom mini PC
                            i5 CPU, 4 GB memory, 32 GB SSD & 4 Intel Gb Ethernet ports.
                            UniFi AC-Lite access point

                            I haven't lost my mind. It's around here...somewhere...

                            1 Reply Last reply Reply Quote 0
                            • JKnottJ
                              JKnott @serbus
                              last edited by

                              @serbus

                              That other client seems to have done the trick. One curious thing though is I didn't see a release as I do with Linux and Windows.

                              This begs the question of why that client is not used, if the default one is so old.

                              PfSense running on Qotom mini PC
                              i5 CPU, 4 GB memory, 32 GB SSD & 4 Intel Gb Ethernet ports.
                              UniFi AC-Lite access point

                              I haven't lost my mind. It's around here...somewhere...

                              S 1 Reply Last reply Reply Quote 0
                              • S
                                serbus @JKnott
                                last edited by

                                @JKnott

                                Hello!

                                There seems to be a relationship between the release option and dhclient running in daemon mode. Pfsense is running dhclient as a daemon and windows/linux might not be.

                                I dont know anything about the dhclient packages or how/why they are ordered in the path.

                                John

                                Lex parsimoniae

                                JKnottJ 1 Reply Last reply Reply Quote 0
                                • JKnottJ
                                  JKnott @serbus
                                  last edited by

                                  @serbus

                                  I just did some more testing. It seems that if I release with that other client, I have to use the default client to renew, for it to show on the interface status.

                                  This looks like something the developers should look into, as it can produce confusing situations, in addition to not being able to do a proper release with the default dhclient.

                                  PfSense running on Qotom mini PC
                                  i5 CPU, 4 GB memory, 32 GB SSD & 4 Intel Gb Ethernet ports.
                                  UniFi AC-Lite access point

                                  I haven't lost my mind. It's around here...somewhere...

                                  S 1 Reply Last reply Reply Quote 0
                                  • S
                                    serbus @JKnott
                                    last edited by serbus

                                    @JKnott

                                    Hello!

                                    It looks like the /sbin/dhclient is used to run/control the daemon, while the /usr/local/sbin/dhclient is just used to send the courtesy "relinquish" message to the dhcp server.

                                    There appears to be many things that happen in pfsense when you release/renew dhcp leases on the wan, probably more than on a workstation client. I dont know what effect going straight at the dhclient interface could have on the rest of the system. It might be better to use the higher level apis that are provided to do the release/renew, if possible. YMMV.

                                    John

                                    Lex parsimoniae

                                    JKnottJ 1 Reply Last reply Reply Quote 0
                                    • JKnottJ
                                      JKnott @serbus
                                      last edited by

                                      @serbus

                                      I wanted a simple way to release/renew it for testing. It's easy enough with Linux & Windows, but not pfSense. Why should there be 2 versions of dhclient, which provide different results?

                                      Many years ago, I worked on the team that developed standard desktops (OS/2, NT & W95) for IBM Canada. Part of my work involved testing to make sure things worked properly and consistently. Such a thing wouldn't have been tolerated.

                                      PfSense running on Qotom mini PC
                                      i5 CPU, 4 GB memory, 32 GB SSD & 4 Intel Gb Ethernet ports.
                                      UniFi AC-Lite access point

                                      I haven't lost my mind. It's around here...somewhere...

                                      keyserK 1 Reply Last reply Reply Quote 0
                                      • F Fallon referenced this topic on
                                      • J
                                        jtm200
                                        last edited by

                                        tl;dr to renew DHCP lease run /sbin/dhclient -c /var/etc/dhclient_wan.conf $INTERFACE

                                        How I find that command

                                        1. From the Admin Web UI, I clicked Release WAN
                                        2. From a shell terminal,
                                          I "scraped" the command-line by first running as user root
                                          while true; do ps -A | grep dhclient; echo; done
                                          
                                        3. from the Admin Web UI, I clicked Renew WAN
                                        4. in the shell terminal, the particular renewal command was briefly listed

                                        Command output

                                        For me, I see

                                        $ /sbin/dhclient -c /var/etc/dhclient_wan.conf em0
                                        Cannot open or create pidfile: No such file or directory
                                        dhclient 68253 - - PREINIT
                                        DHCPREQUEST on em0 to 255.255.255.255 port 67
                                        DHCPACK from 11.22.33.44
                                        bound to 55.66.77.88 -- renewal in 91710 seconds.
                                        

                                        (run as user root)

                                        Thanks @serbus for sharing your research!

                                        1 Reply Last reply Reply Quote 0
                                        • keyserK
                                          keyser Rebel Alliance @JKnott
                                          last edited by

                                          @jknott I wonder if this has been “cleaned up” and simplified with 23.01 as that is a wastly never OS release and has required netgate to refactor a lot of the UI and services tooling.

                                          Love the no fuss of using the official appliances :-)

                                          JKnottJ 1 Reply Last reply Reply Quote 0
                                          • JKnottJ
                                            JKnott @keyser
                                            last edited by

                                            @keyser said in How to release/renew DHCP:

                                            I wonder if this has been “cleaned up” and simplified with 23.01

                                            No idea.

                                            PfSense running on Qotom mini PC
                                            i5 CPU, 4 GB memory, 32 GB SSD & 4 Intel Gb Ethernet ports.
                                            UniFi AC-Lite access point

                                            I haven't lost my mind. It's around here...somewhere...

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