The Notebook Review forums were hosted by TechTarget, who shut down them down on January 31, 2022. This static read-only archive was pulled by NBR forum users between January 20 and January 31, 2022, in an effort to make sure that the valuable technical information that had been posted on the forums is preserved. For current discussions, many NBR forum users moved over to NotebookTalk.net after the shutdown.
Problems? See this thread at archive.org.

    pFsense for Those tired of Consumer Routers

    Discussion in 'Networking and Wireless' started by Aivxtla, Mar 14, 2020.

  1. Aivxtla

    Aivxtla Notebook Evangelist

    Reputations:
    709
    Messages:
    650
    Likes Received:
    890
    Trophy Points:
    106
    This is mostly just based on my experience and there's no one size fits all, so if your'e happy with what you have and its working well stay with it and probably don't mess with it and this may not be worth the effort or cost, but if you are tired of consumer routers due to various issues and need additional features, functions and proper firmware updates even after more than 2-3 years you may want to take a look at Pfsense.

    I got fed up with the firmware quality of consumer routers and decided to try pFsense. If anyone is interested they can get a $150-250 Qotom or similar box on Amazon or even an old PC and install Pfsense and use their current router as an Access Point cum switch. Do note that it does take a bit of learning or guidance and its not for everyone, but even as a novice myself a few great videos by Lawrence Systems on YouTube got me setup in regards to the basics, pFblocker, OpenVPN and Traffic Limiting for Bufferbloat management. Took me only about 20-30 mins to get all the previously mentioned functions ready. I switched my RAX120 to AP mode with my NAS connected to the RAX120's 5Gbe port.

    Basic Setup and getting online:

    pFblocker: (Don't use the Geo Blocking part unless you really need to)

    Traffic Limiters: (for Buffer Bloat)


    For VPN profiles from providers ExpressVPN etc have links on their own site on how to setup manually.


    pFsense Home Page on my SuperMicro 1U Unit

    Home Page.png


    DNS Setup & Resolving:
    By default pFsense does DNS resolving itself rather than using the ISP for security, you can go to DNS Resolver and select Forwarding mode for a speedup and enable DNS over TLS for security in forwarding mode if you want to use third part DNSs. (First disable DNSSEC when switching to forwarding)

    Switch Resolver to Forwarding.png

    If using Third party DNS Servers you can enable those in general setup, I added an image below with CloudFlare primary & secondary IPv4/IPv6 DNS servers. Also disable WAN DNS override so it won't use ISP DNS servers. If you want speed in resolving, ISP DNSs’ can and will be faster in most cases at the cost of security.

    Third Party DNS.png

    Enabling Hardware Crypto and Thermal Sensors for Intel & AMD CPUs:
    In the Advanced -> Miscellaneous section you can enable hardware crypto (helps VPN) and Thermal sensors as shown in the attached image.

    Enable Hardware Crypto and Thermal Sensors.png

    pFblockerNG (Use the Development Version):
    You can get pFblockerNG by going to the package manager in the System section, after install it shows up under Firewall section, it has a guided setup by default.

    Another simple guide: https://www.linuxincluded.com/block-ads-malvertising-on-pfsense-using-pfblockerng-dnsbl/
    One thing I should mention about pfblocker NG is that it has a section you can enable called TLD (Top Level Domain Blocking). Be careful as that feature can take a lot of RAM depending on your block lists' size. Im using upwards of 4.5GB RAM on my unit with TLD function enabled with my large number of blocklists.

    A few short topics from the makers of pFsense including limiters, captive portals etc.



    I went a bit more extreme and recently bought an Intel Xeon D-1541 (EDIT: Now using an AMD EPYC 3251) based SuperMicro 1U unit to install ESXi VM for pFsense and FreeNAS side by side. I so far only installed pFsense (2.4.5) and I must say it's far more powerful ( honestly even a $200 Intel based Qotom box is probably more powerful than the best consumer router in terms of routing and VPN), reliable and the sheer amount of functions available are amazing including packages like pFblockerNG piHole like ad/tracking blocking but more powerful. OpenVPN and tracking options (ie ntoppng) are really great and the limiter and traffic shaping functions seem to be far better than most consumer routers. I liked OpenWRT on consumer units but with a lot of hardware acceleration functions being lost due to closed source binaries and the fact that even though I can even use OpenWRT on my Xeon D it just doesn't seem as friendly out of the the box as pFsense.

    Will add more info as time permits or on request.
     
    Last edited: Sep 16, 2020
    etern4l, Primes, Aroc and 2 others like this.
  2. downloads

    downloads No, Dee Dee, no! Super Moderator

    Reputations:
    7,729
    Messages:
    8,722
    Likes Received:
    2,230
    Trophy Points:
    331
    Very interesting and by the looks of it more user friendly than OpenWRT...
     
    etern4l and Aivxtla like this.
  3. hacktrix2006

    hacktrix2006 Hold My Vodka, I going to kill my GPU

    Reputations:
    677
    Messages:
    2,183
    Likes Received:
    1,421
    Trophy Points:
    181
    Another OpenWRT user here and yes I agree PfSense does look more user friendly however I have used PfSense I know that it can be user unfriendly.



    Sent from my SNE-LX1 using Tapatalk
     
  4. downloads

    downloads No, Dee Dee, no! Super Moderator

    Reputations:
    7,729
    Messages:
    8,722
    Likes Received:
    2,230
    Trophy Points:
    331
    @hacktrix2006 OK, so if you've used both how would you compare them as far as user experience is concerned?
    I get it that it can be user unfriendly but overall?
     
  5. hacktrix2006

    hacktrix2006 Hold My Vodka, I going to kill my GPU

    Reputations:
    677
    Messages:
    2,183
    Likes Received:
    1,421
    Trophy Points:
    181
    Firstly my last time I used PfSense was when it was at build 2.0 so a lot would of changed. Easiest way would be for me to install PfSense into a Hyper-V to see what has changed.

    However, for normal users or even people that use OpenWRT there is still a learning curve in certain area's of PfSense and vice versa.

    If it was taken on first boot experience the PfSense would win that hands down due to its wizard at the start, where as OpenWRT doesn't have it.

    When I was using build 2.0 the bit that was steep learning curve was firewall rules and setting up vlans.

    But at the end of the day where PfSense excels in some places OpenWRT will excel in others.

    Although PfSense GUI is better to be honest.

    Sent from my SNE-LX1 using Tapatalk
     
    downloads and Aivxtla like this.
  6. Aivxtla

    Aivxtla Notebook Evangelist

    Reputations:
    709
    Messages:
    650
    Likes Received:
    890
    Trophy Points:
    106
    OpenWRT does have great documentation I managed to compile my own by builds for my R7800 despite being new thanks to the effort they put into the docs and their throughness (I did have to make certain changes to my build environment vs the docs as it didn’t work right away using their instructions) and great community too. I loved that they had Cake SQM available, when I was with my VDSL ISP it helped bring my Bufferbloat from a D-F to an A with very little tinkering.

    However as you said the Wizards in pFsense do make it easier to just get up and running and all the needed packages are right there and no need add or compile extra things like I needed on my R7800 OpenWRT builds (LEDE at the time since most of the DEVs split with OWRT due to an internal conflict that is now resolved) vs their stock builds.


    In certain instances with consumer routers due to OpenWRT covering a vast array of devices certain changes they made to support one “similar” chipset could be detrimental to another like some changes to enhance support for the IPQ4XX series caused issues with the R7800’s stability though later rectified in later patches.

    As you said they both excel in their on way and I totally agree some areas do require a learning curve. I will say though the OWRT community is very polite even when people ask the same old questions without searching forums or maybe they just missed the info, the experts kindly tell them to look throughly or just help sometimes. From looking at pFsense forums it seems they’re less accommodating to that.
     
    Last edited: Mar 15, 2020
    Aroc, downloads and hacktrix2006 like this.
  7. Tech Junky

    Tech Junky Notebook Deity

    Reputations:
    341
    Messages:
    1,492
    Likes Received:
    605
    Trophy Points:
    131
    pfsense/wrt/tomato/etc....

    If you're looking for multi use / function going with a custom build is the way to go and linux is going to be your underlying OS.

    I setup a router/firewall/wifi/nas/dvr/etc all in one box using ubuntu / hostapd / iptables / pihole for DNS blocking of ads and bad domains

    With Nordvpn using wireguard through "nordlynx" profile I'm able to get 97% throughput over VPN on a gig connection vs the old ovpn profiles maxing at 100mbps.

    Once you get the hang of what needs to go where and how they cross function it's fairly easy to modify things as you need to. It's a bit of a stumbling toddler when you start and then think of things that will improve performance by streamlining things such as combining iptables entries into match-sets vs individual entries per line. Being able to block countries worth of IP CIDR entries i a match set improves your processing of the rules and speeds of throughput. Tweaking your hostapd.service files to auto restart when they fail keeps you from having to connect to the machine with a monitor and keyboard.

    It all kind of comes down to what you want to do, use it for, and being comfortable with tweaking linux to your mercy.
     
  8. Aivxtla

    Aivxtla Notebook Evangelist

    Reputations:
    709
    Messages:
    650
    Likes Received:
    890
    Trophy Points:
    106
    Yeah I have looked at a Linux alternatives like Clear OS and Untangle but they have various paywalls for various functions, and the good free ones like Vyos aren’t very intuitive as I’m not at the level where I can handle a CLI only distro, I see no real alternative with a GUI and nothing really seems as intuitive or as simple as pfSense or OPNSense at that level. While you can turn Ubuntu into a router and play around with iptables it just seems more effort than it’s worth and clunky, when something like this already exists. Plus pf in FreeBSD seems a bit more simpler than iptables which can be messier and more can go wrong. Additionally I’ve found pfblockerng on Pfsense to be more powerful than pihole. Everything you mentioned is more work me than something just works out of the box and installing pfblocker or ntopng is just a click away in the package manager... and importantly everything is laid out nicely in the GUI as this distro is specifically tuned for networking, so I see nothing to gain from doing all what you are saying, in my use case.

    Again as you said to each their own depending on need and level of skill.
     
    Last edited: Sep 3, 2020
    Aroc and downloads like this.
  9. Tech Junky

    Tech Junky Notebook Deity

    Reputations:
    341
    Messages:
    1,492
    Likes Received:
    605
    Trophy Points:
    131
    Here's my complete condensed / tuned iptables....

    # Generated by iptables-save v1.8.4 on Mon Aug 31 14:58:34 2020
    *security
    :INPUT ACCEPT [0:0]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [1:144]
    COMMIT
    # Completed on Mon Aug 31 14:58:34 2020
    # Generated by iptables-save v1.8.4 on Mon Aug 31 14:58:34 2020
    *raw
    :pREROUTING ACCEPT [0:0]
    :OUTPUT ACCEPT [1:144]
    :BLOCK - [0:0]
    :FORWARD - [0:0]
    :LOGNDROP - [0:0]
    COMMIT
    # Completed on Mon Aug 31 14:58:34 2020
    # Generated by iptables-save v1.8.4 on Mon Aug 31 14:58:34 2020
    *mangle
    :pREROUTING ACCEPT [0:0]
    :INPUT ACCEPT [0:0]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [1:144]
    :pOSTROUTING ACCEPT [1:144]
    :BLOCK - [0:0]
    :LOGNDROP - [0:0]
    COMMIT
    # Completed on Mon Aug 31 14:58:34 2020
    # Generated by iptables-save v1.8.4 on Mon Aug 31 14:58:34 2020
    * nat
    :pREROUTING ACCEPT [0:0]
    :INPUT ACCEPT [0:0]
    :OUTPUT ACCEPT [0:0]
    :pOSTROUTING ACCEPT [0:0]
    -A POSTROUTING -o bo0 -j MASQUERADE WAN
    -A POSTROUTING -o nordlynx -j MASQUERADE Nord
    COMMIT
    # Completed on Mon Aug 31 14:58:34 2020
    # Generated by iptables-save v1.8.4 on Mon Aug 31 14:58:34 2020
    *filter
    :INPUT DROP [0:0]
    :FORWARD DROP [0:0]
    :OUTPUT DROP [0:0]
    :BANNED - [0:0]
    :pERMIT-FWD - [0:0]
    :pERMIT-IN - [0:0]
    :pERMIT-OUT - [0:0]
    -A INPUT -j BANNED
    -A INPUT -j PERMIT-IN
    -A FORWARD -j PERMIT-FWD
    -A OUTPUT -j PERMIT-OUT
    -A BANNED -i bo0 -m conntrack --ctstate NEW -j SET --add-set banned src
    -A BANNED -i nordlynx -m conntrack --ctstate NEW -j SET --add-set banned src
    -A BANNED -m set --match-set banned src,src -j DROP

    -A PERMIT-FWD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    -A PERMIT-FWD -i br0 -o bo0 -j ACCEPT
    -A PERMIT-FWD -i br0 -o nordlynx -j ACCEPT
    -A PERMIT-FWD -j LOG --log-prefix "BLOCK FORWARD: "
    -A PERMIT-IN -i bo0 -m set --match-set banned src -j DROP
    -A PERMIT-IN -i nordlynx -m set --match-set banned src -j DROP
    -A PERMIT-IN -i bo0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    -A PERMIT-IN -i nordlynx -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    -A PERMIT-IN -i lo -j ACCEPT
    -A PERMIT-IN -i br0 -j ACCEPT
    -A PERMIT-IN -j LOG --log-prefix "BLOCK INPUT: "
    -A PERMIT-OUT -o bo0 -m set --match-set banned dst -j DROP
    -A PERMIT-OUT -o nordlynx -m set --match-set banned dst -j DROP
    -A PERMIT-OUT -o bo0 -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
    -A PERMIT-OUT -o nordlynx -m conntrack --ctstate NEW,RELATED,ESTABLISHED -j ACCEPT
    -A PERMIT-OUT -o lo -j ACCEPT
    -A PERMIT-OUT -o br0 -j ACCEPT
    -A PERMIT-OUT -j LOG --log-prefix "BLOCK OUTPUT: "
    COMMIT
    # Completed on Mon Aug 31 14:58:34 2020

    Basically just have to enable NAT and put an entry or two to allow "forwarding" inside/outside... instead of tackling udp/tcp ports to block I just block everything "NEW" inbound as I'm not running services that should be reachable from the real world. Those sources get auto added to the ipset as they hit the rule and no longer have to be processed if they hit again. If they get banned on entry there's a good chance they should be banned for outbound traffic as well which is the rule under Permit-Out.

    I just save a copy to a location on the network and edit the file in notepad++ and then restore the file with the changes w/o doing all of the CLI work on it. Overhead is quite minimal with this approach and no loss in speeds and the CPU doesn't take a hit even at full load on the network. The higher the load though the more instances of WG kick into overdrive to handle the throughput but no performance hits to other programs running.

    For surveillance I run ntopng for logging things and being able inspect the traffic sources/destinations and which ports they're using. (web gui)

    Pihole (web gui) for domain / ad blocking

    webmin (web gui) monitors system performance / can be used to edit CLI files as well instead of SSHing into your box
     
  10. Tech Junky

    Tech Junky Notebook Deity

    Reputations:
    341
    Messages:
    1,492
    Likes Received:
    605
    Trophy Points:
    131
    So, i rand into a bit of a hiccup with Nord over the last couple of days. They released a new version of the client on *nix and it failed to setup the nordlynx adapter to successfully connect. I blew away the profiles and reinstalled but to no avail would it actually connect again using wireguard or even legacy ovpn profiles.

    I figured it might be something on their end and let it sit for a couple of days while securing things through a socks5 server instead. Dug around a bit and stumbled upon a reddit post that had the repo info in it and while it worked on 3.8.0 that's also wasn't working since the update to 3.8.1. Pulled the 3.7.4 version and it's working again. Disabled the apt source for updates though until they get their stuff together on further releases.

    https://repo.nordvpn.com/deb/nordvpn/debian/pool/main/ (didn't think to look at the source file post update)

    I'm not exactly sure what they changed in the newer releases but, obviously something major got zapped in the process that makes it not work. Hard to figure out though w/o it being open source and transparent to read through or do a compare between the code in both files.

    The socks isn't too bad but, speeds are a bit more limited due to congestion on their limited servers since they took the function off the majority of servers and now there are only 42 that connect that way. Must be a conflict between socks and WG since the 4000+ servers w/ WG don't have socks enabled.

    Also, went on a hunt for other WG compatible services and there's only 3 running WG options thus far.

    ******************************************************************************************************************************
    If you go here
    https://nordvpn.com/coupon/deal/?coupon= thevpnman75&utm_medium=affiliate&utm_term=a_16072020_FtheVPN_man_Tach_d&utm_content&utm_campaign=off15&utm_source=aff33768

    Gives you the 3-year option @ $107.55 ($2.99/mo) + ebates / rakuten 20% off ($86.04 / $2.39/mo)

    Unless of course you have a subscription already you can login and renew w/ code WIRED for the lowest price $89/36 months + another 20% rebate if you use Rakuten bringing it down another $17.80. (($1.97/mo))
     
    Last edited: Sep 5, 2020