techblog.jeppson.org
Open in
urlscan Pro
216.170.171.60
Public Scan
Submitted URL: http://techblog.jeppson.org/
Effective URL: https://techblog.jeppson.org/
Submission: On February 15 via manual from SE — Scanned from SE
Effective URL: https://techblog.jeppson.org/
Submission: On February 15 via manual from SE — Scanned from SE
Form analysis
3 forms found in the DOMGET https://techblog.jeppson.org/
<form role="search" method="get" class="search-form" action="https://techblog.jeppson.org/">
<label>
<span class="screen-reader-text">Search for:</span>
<input type="search" class="search-field" placeholder="Search …" value="" name="s">
</label>
<input type="submit" class="search-submit" value="Search">
</form>
POST https://www.paypal.com/cgi-bin/webscr
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<div class="paypal-donations">
<input type="hidden" name="cmd" value="_donations">
<input type="hidden" name="bn" value="TipsandTricks_SP">
<input type="hidden" name="business" value="jollysaintnick@gmail.com">
<input type="hidden" name="item_name" value="Techblog.jeppson.org donation">
<input type="hidden" name="rm" value="0">
<input type="hidden" name="currency_code" value="USD">
<input type="image" style="cursor: pointer;" src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif" name="submit" alt="PayPal - The safer, easier way to pay online.">
<img class="lazy loaded" alt="" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" data-src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1" data-was-processed="true">
</div>
</form>
GET https://techblog.jeppson.org/
<form role="search" method="get" class="search-form" action="https://techblog.jeppson.org/">
<label>
<span class="screen-reader-text">Search for:</span>
<input type="search" class="search-field" placeholder="Search …" value="" name="s">
</label>
<input type="submit" class="search-submit" value="Search">
</form>
Text Content
TECHNICUS Search Primary Menu Skip to content * Virtualization * Analytics * CLI * Networking * OS * Mobile * Web * Hardware * Gaming Search for: CLI, Networking RESTART WIREGUARD INTERFACE IN OPENWRT February 1, 2023 nicholas Leave a comment One annoying issue with wireguard in OpenWRT is the fact that it won’t re-check DNS on connection failure. In the event that my public IP changes (dynamic IP) the OpenWRT wireguard client doesn’t ever get the memo, even when DNS is updated. I discovered here that you can tell OpenWRT via the command line to stop and start the wireguard interface. This forces a new DNS check and then the tunnel builds successfully. The command: ubus call network.interface.wg0 down && ubus call network.interface.wg0 up Success! Throw this into a cron job and you have an automated failsafe to ensure a reconnect after IP change. OpenWRTwireguard Networking WIREGUARD ONE-WAY TRAFFIC ON USG PRO 4 AFTER DUAL WAN SETUP October 18, 2022 nicholas Leave a comment I have a site-to-site VPN between my Ubiquiti USG Pro-4 and an OpenWRT device over wireguard . It’s worked great until I got a secondary WAN connection as a failover connection since my primary cable connection has been flaky lately. When you introduce dual-WAN on Ubiquiti devices you have to manually configure everything since the GUI assumes only one WAN connection. I configured my manual DNAT (port forwards) for each interface successfully but struggled to figure out why suddenly my Wireguard VPN between my two sites only went one way (remote side could ping all hosts on local side, but not visa-versa.) After some troubleshooting I realized the firewall itself could ping the remote subnet just fine, it just wasn’t allowing local hosts to do so. I couldn’t find anything in firewall logs. Eventually I came across this very helpful page from hackad.nu that helped me to solve my problem. The solution was to add a Firewall Modify rule specifically for the eth0 interface (where all my LAN traffic is routed through) to allow the source address of the subnets I want to traverse the VPN, then apply that modifier to the LAN_IN firewall rule for that interface. I had to do it for any VLANs I wanted to be able to use the Wireguard tunnel as well (vifs of eth0, VLAN 50 in my case) Here is the relevant config.gateway.json sections, namely “firewall” and “interfaces”: { "firewall": { "modify": { "Wireguard": { "rule": { "10": { "action": "modify", "description": "Allow Wireguard traffic", "modify": { "table": "10" }, "source": { "address": "10.1.0.0/16" } } } } }, "interfaces": { "ethernet": { "eth0": { "firewall": { "in": { "ipv6-name": "LANv6_IN", "modify": "Wireguard", "name": "LAN_IN" } }, "vif": { "50": { "firewall": { "in": { "ipv6-name": "LANv6_IN", "modify": "Wireguard", "name": "LAN_IN" } } } } } } } } } This did the trick! Wireguard is working both directions again, this time with my dual WAN connections. Dual WANfailoverfirewallJSONsite to siteUbiquitiUSGVPNwireguard CLI, Networking PRIORITIZE WIFI WITH NETWORK MANAGER IN ARCH September 26, 2022 nicholas Leave a comment My cable internet has been horrid lately. I wanted to be able to hotspot to my phone while maintaining LAN connections to my servers while the cable company takes its sweet time to fix things. Even though I connected to wifi on my phone, my desktop still prioritized the broken connection and wouldn’t use my phone to get to the internet. I verified this by looking at the routing table and running traceroute sudo ip route ... default via 10.137.1.1 dev br0 proto dhcp src 10.10.1.124 metric 425 default via 172.10.10.1 dev wlp69s0 proto dhcp src 172.10.10.4 metric 600 ... traceroute google.com --max-hops=1 1 _gateway (10.10.50.1) 0.409 ms 0.449 ms 0.483 ms The LAN connection’s default gateway had a lower metric than the mobile hotspot connection (lower takes precedence.) To fix this I ran this networkmanager command (thanks to this post for the inspiration) sudo nmcli connection modify "Nicholas’s iPhone" ipv4.route-metric 50 I noticed DNS traffic was also prioritizing my LAN, which I didn’t want. I fixed it with nmcli as well (thanks to this post) sudo nmcli connection modify "Nicholas’s iPhone" ipv4.dns-priority 1 I then noticed I couldn’t get to certain LAN subnets. I then realized I needed to add some static routes so they don’t try to go over my hotspot connection (which I learned about here) sudo nmcli connection modify bridge-br0 +ipv4.routes "10.10.50.0/24 10.10.1.1" Note you may need to refresh your connection once you’ve made changes. You can either disconnect and reconnect to force a refresh, or run this command (as outlined here.) sudo nmcli con up bridge-br0 #or whatever your LAN interface name is Once I refreshed my settings, I was able to get internet via my phone while maintaining all my local network settings. Arch LinuxlinuxNetworkManagertraceroutewifi CLI CONVERT MUSIC TO IPHONE RINGTONES September 23, 2022 nicholas Leave a comment I’ve recently crossed into the dark side and gotten my first iPhone. I wanted to set up ringtones for my contacts but discovered that Apple is pretty picky about ringtone file format. After some searching I found the ffmpeg command to run to get the ringtones into a file iPhones are happy with. The criteria are: * aac codec * m4r filename * 30 seconds or less in duration I ran into a snag with various things I was trying to convert apparently having more than one stream. I would get the error message Could not find tag for codec h264 in stream #0, codec not currently supported in container I had to use the map command to specify exactly which stream I wanted (just the audio one.) I discovered which stream I wanted by running the ffmpeg -i command on the file to see its available streams. I also discovered that some songs reported incorrect duration. This was fixed with the -write_xing 0 option. Thanks to this gist for the inspiration. Here is the full command to turn music into an Apple-compatible ringtone. Modify -ss and -to to suit your needs (starting time, to ending time) ffmpeg -i <input file> -codec:a aac -ss 00:00:59.5 -to 00:01:21.5 -f ipod -map 0:0 -write_xing 0 ringtone.m4r If taking a ringtone from a video file, I had to specify I wanted stream 1 instead of stream 0: ffmpeg -i Batman-\ The\ Animated\ Series\ -\ S02E01\ -\ Shadow\ of\ the\ Bat\ \(1\)\ SDTV.avi -codec:a aac -ss 00:00:20.5 -to 00:00:43.5 -f ipod -write_xing 0 -map 0:1 batman_ringtone.m4r Once you have the right m4r file, you simply need to plug your iPhone into your computer and fire up iTunes. You can then drag the file into the "Tones" section on the left under "Devices". AppleffmpegiPhonetranscoding CLI, Web UPDATING ZIMBRA TO LATEST VERSION August 21, 2022 nicholas Leave a comment Recently a remote code execution bug came to light with Zimbra. It prompted me to update to the latest patch. I had some e-mail deliverability issues afterward. Here are my patch notes: * Download the latest version from https://www.zimbra.com/try/zimbra-collaboration-open-source/ * Follow instructions as listed here: https://wiki.zimbra.com/wiki/Zimbra_Releases/8.8.15/P32#Redhat * Untar downloaded file, cd into directory and run ./install.sh as root * Re-install latest patches (I had frustrating 500 errors until I discovered this was the fix) * sudo yum reinstall zimbra-patch * Re-do any customization you’ve done to zimbra core * https://techblog.jeppson.org/2022/08/configure-zimbra-to-use-anymxrelay/ * In my case, it was adding these lines to the smtp-amavis section: -o smtp_tls_security_level=none -o smtp_tls_wrappermode=no * Restart Zimbra services * sudo -u zimbra zmcontrol restart emailpostfixZimbra CLI, Web CONFIGURE ZIMBRA TO USE ANYMXRELAY August 10, 2022 nicholas 1 Comment It turns out if you want to configure Zimbra to use an external SMTP relay service it can be a bit of a headache if that service doesn’t use port 25 or 587 to receive encrypted relay mail. Such is the case with AnyMXRelay. I decided to use AnyMXRelay to relay my mail since my Linode box keeps getting put on weird shadow blocklists despite mxtoolbox saying everything was fine. It took some digging but I finally found this article on Zimbra’s wiki outlining what needs to happen. There are a few manual settings that need to be put in place on the command line in order to get this to work – namely, smtp_tls_wrappermode and smtp_tls_security_level. In addition to the steps taken in this how-to for sending mail through a relay, you must also make these changes: postconf -e smtp_tls_wrappermode=yes # No Zimbra setting for smtp_tls_wrappermode yet zmprov ms `zmhostname` zimbraMtaSmtpTlsSecurityLevel encrypt zmprov ms `zmhostname` zimbraMtaSmtpTlsCAfile /opt/zimbra/ssl/zimbra/commercial/commercial_ca.crt zmprov ms `zmhostname` zimbraMtaSmtpSaslSecurityOptions noanonymous zmprov ms `zmhostname` zimbraMtaSmtpSaslAuthEnable yes zmprov ms `zmhostname` zimbraMtaSmtpSaslPasswordMaps lmdb:/opt/zimbra/conf/relay_password Zimbra 8.5+ periodically applies settings automatically, so once you’ve made these changes, watch /var/log/zimbra.log for these lines zmconfigd[25662]: Fetching All configs zmconfigd[25662]: All configs fetched in 0.07 seconds ... zmconfigd[25662]: All restarts completed in 1.80 sec Once you see them, you can send some test mail. Tail /var/log/zimbra.log to see if it worked or to see any error messages. If you get these error messages: HANGUP after 0.08 from [IP]:56518 in tests before SMTP handshake #or# status=deferred (Cannot start TLS: handshake failure) It means you must also add two configuration lines to the amavis configuration file in /opt/zimbra/common/conf/master.cf.in -o smtp_tls_security_level=none -o smtp_tls_wrappermode=no So the complete section looks like this: smtp-amavis unix - - n - %%zimbraAmavisMaxServers%% smtp -o smtp_tls_security_level=none -o smtp_tls_wrappermode=no -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes -o max_use=20 Once you made the changes, save the file and restart all zimbra services with zmcontrol restart The above disables TLS security for the antivirus piece. This could cause security issues if you Zimbra configuration is distributed to multiple hosts. In my case, this is an all-in-one server, so it does not matter. Once I made the above changes, mail flowed through my external SMTP server successfully! emailpostfixSMTP relayTLSZimbra CLI, Networking OPENWRT WIREGUARD CLIENT June 13, 2022 nicholas Leave a comment My notes on how to configure an OpenWRT device to be a wireguard client (site to site VPN) More or less follow the instructions from https://openwrt.org/docs/guide-user/services/vpn/wireguard/client I commented out the IPv6 stuff as well as the pre-shared key. I also had already defined firewall rules so I skipped that section. One note: make sure your WG_ADDR has the proper subnet mask (I made the mistake of making it a /32 when it needed to be a /24) # Configuration parameters WG_IF="wg0" WG_SERV="remote_wireguard_server_address" WG_PORT="remote_wireguard_port" WG_ADDR="wireguard_subnet/wireguard_subnet_mask (/24 for example)" #WG_ADDR6="fdf1:e8a1:8d3f:9::2/64" # Generate keys #umask go= #wg genkey | tee wgserver.key | wg pubkey > wgserver.pub #wg genkey | tee wgclient.key | wg pubkey > wgclient.pub #wg genpsk > wgclient.psk # Client private key WG_KEY="$(cat wgclient.key)" # Pre-shared key #WG_PSK="$(cat wgclient.psk)" # Server public key WG_PUB="public_key_of_wireguard_server" # Configure network uci -q delete network.${WG_IF} uci set network.${WG_IF}="interface" uci set network.${WG_IF}.proto="wireguard" uci set network.${WG_IF}.private_key="${WG_KEY}" uci add_list network.${WG_IF}.addresses="${WG_ADDR}" #uci add_list network.${WG_IF}.addresses="${WG_ADDR6}" # Add VPN peers uci -q delete network.wgserver uci set network.wgserver="wireguard_${WG_IF}" uci set network.wgserver.public_key="${WG_PUB}" #uci set network.wgserver.preshared_key="${WG_PSK}" uci set network.wgserver.endpoint_host="${WG_SERV}" uci set network.wgserver.endpoint_port="${WG_PORT}" uci set network.wgserver.route_allowed_ips="1" uci set network.wgserver.persistent_keepalive="25" uci add_list network.wgserver.allowed_ips="10.137.50.0/24" #uci add_list network.wgserver.allowed_ips="::/0" uci commit network /etc/init.d/network restart OpenWRTVPNwireguard CLI, OS ADD MULTIPLE SEARCH DOMAINS IN CENTOS 7 June 8, 2022 nicholas Leave a comment I needed to add multiple domains to search DNS with on my Cent7 box. It turns out there are two ways to do it. Cent7 uses networkmanager, so you can use the cli tool to add what you want, or you can edit the file directly. Using nmcli: sudo nmcli con mod eth0 ipv4.dns-search "domain1.org,domain2.org,domain3.org" This causes nmcli to add this line to your network interface config file (/etc/sysconfig/network-scripts/ifcfg-eth0 in my case) DOMAIN="domain1.org domain2.org domain3.org" After either using nmcli or manually editing your file, simply restart the network service and your search domains now work! CentOSCentOS 7DNSNetworkManager CLI SELECT ALL MATCHES IN VS CODE May 31, 2022 nicholas Leave a comment I came across a need to select all matches in VS Code. This was the procedure, thanks to stack overflow. I altered them for Mac, since that’s what I was using. For Windows/Linux, substitute CMD with CTRL 1. CMD + F 2. Type your search string 3. CMD + SHIFT + L to select all occurrences found (max. 999) 4. ESC (or close search dialog with top-right X) 5. CMD + C 6. Open new file 7. CMD + V Works great! It’s a way for me to easily get ONLY my search string from a file and discard the rest. VS Code CLI, Networking WIREGUARD ON A USG PRO 4 April 8, 2022 nicholas 5 Comments I ran into some issues when trying to configure an OpenVPN tunnel between my Ubiquiti USG Pro 4 and a Debian VPS. I was very disappointed to discover that the version of OpenVPN on the USG only supports TLS 1.0! My issue was the Debian side rejecting that as insecure. Thankfully, it was fairly painless to get Wireguard configured on the USG Pro 4. I was hesitant to do so at first because I knew every time my USG was updated I would lose the wireguard pacakge. Fortunately that can be resolved by configuring a post-install script. Thanks to ilar.in and calypte.cc and this github gist for the steps on how to do so. * Download the latest ugw4 package from https://github.com/WireGuard/wireguard-vyatta-ubnt/releases and install it on your USG. * Create post-install script to ensure wireguard survives version updates: * Install edge-os packages curl -O https://raw.githubusercontent.com/britannic/install-edgeos-packages/master/install-pkgs sudo install -o root -g root -m 0755 install-pkgs /config/scripts/post-config.d/install-pkgs * Add wireguard DEB package to persistent storage that the script will look for: sudo mkdir -p /config/data/install-packages cd /config/data/install-packages curl -fLSs https://github.com/WireGuard/wireguard-vyatta-ubnt/releases/download/1.0.20200729-1/ugw4-v1-v1.0.20200729-v1.0.20200513.deb * Generate a public/private keypair for USG use cd /config/auth umask 077 wg genkey > wg_private.key wg pubkey < wg_private.key > wg_public.key * Generate config.gateway.json config to use wireguard "interfaces": { ... "wireguard": { "wg0": { "address": "<IP_OF_USG_ON_WG_CLIENT_SUBNET>", "listen-port": "<WG_LISTEN_PORT>", "peer": { "<ENDPOINT_CLIENT_PUBLIC_KEY>": { "allowed-ips": "0.0.0.0/0", "endpoint": "<ENDPOINT_CLIENT_ADDRESS>:<ENDPOINT_CLIENT_PORT> " } }, "private-key": "/config/auth/priv.key", "route-allowed-ips": false }, "wg1": { "address": "<IP_OF_USG_ON_WG_SERVER_SUBNET", "firewall": { "in": { "name": "LAN_IN" }, "local": { "name": "LAN_LOCAL" }, "out": { "name": "LAN_OUT" } }, "listen-port": "<USG_WG_SERVER_LISTEN_PORT>", "mtu": "1352", "peer": { "<PUBLIC_KEY_OF_WG_CONNECTING_CLIENT": { "allowed-ips": "<SUBNETS_ON_REMOTE_HOST>" } }, "private-key": "/config/auth/wg-server.priv", "route-allowed-ips": true } } }, I have two different wireguard interfaces configured – wg0 to be a client to another server, and wg1 to be a server accepting other clients (site-to-site VPN.) If you want to have multiple peers defined on a single wireguard interface, encapsulate the peers with brackets like so: "peer": [{ "--pubkey--": { "allowed-ips": [ "172.255.252.2/32" ], "persistent-keepalive": 60 } }, { "--pubkey--": { "allowed-ips": [ "172.255.252.3/32" ], "persistent-keepalive": 60 } } ], TEST CONFIGURATION FIRST Before committing your config.gateway.json code, test it line by line by SSHing into the USG-Pro 4 and entering config mode. Then type out your JSON lines one at a time, with each key being a new argument separated by a space. The first section above would look like this: configure edit interfaces set wireguard wg0 address WIREGUARD_ADDRESS set wireguard wg0 listen-port WG_LISTEN_PORT set wireguard wg0 peer ENDPOINT_CLIENT_PUBLIC_KEY allowed-ips 0.0.0.0/0 set wireguard wg0 peer ENDPOINT_CLIENT_PUBLIC_KEY endpoint ENDPOINT_ADDRESS:ENDPOINT_PORT set wireguard wg0 private-key /config/auth/priv.key set wireguard wg0 route-allowed-ips false commit If the commit works without error, you can then drop out of the configure section and look at your wireguard config: exit sudo wg show If all looks well, then copy your config.gateway.json to your controller and trigger a reprovision. Verify after provisioning: sudo netstat -npl | grep <WIREGUARD_PORT> | grep udp TROUBLESHOOTING USG NOT CONNECTING TO CHANGED ENDPOINT ADDRESS If you change the address of the wireguard endpoint, USG pro will not connect to that new address. You have to delete and re-create the interface (thanks to https://github.com/Lochnair/vyatta-wireguard/issues/72#issuecomment-423840448 for the information) Fix this by deleting the wireguard interface admin@Firewall:~$ configure [edit] admin@Firewall# delete interfaces wireguard [edit] admin@Firewall# commit Then reprovision by making a small change, force provision, then change back, and force another provision (annoying) or alternatively reboot firewall. WIREGUARD SHOWS ESTABLISHED BUT PING DOESN’T WORK Example error: From 10.99.13.1 icmp_seq=5 Destination Host Unreachable ping: sendmsg: Required key not available To figure out what’s going on, enable logging to kernel buffer (dmesg) Thanks to procustodibus.com for the info. echo module wireguard +p > /sys/kernel/debug/dynamic_debug/control With debug on, ping again and check kernel messages (dmesg) [Tue Dec 21 22:16:12 2021] wireguard: wg0: No peer has allowed IPs matching 10.99.13.2 This showed I didn’t have my access control properly configured. Modify /etc/wireguard/wg0.conf on your client config and make sure your AllowedIPs are properly letting traffic through. AllowedIPs = 10.99.13.0/24 USG NOT ALLOWING CONNECTIONS Clients unable to connect to USG despite having a good config. Double check your firewall rules. I had neglected to create a WAN LOCAL rule allowing UDP packets on my wireguard port. Once that was configured, handshakes completed successfully. FIREWALLS CAN’T PING EACH OTHER I had an issue where the firewalls would pass traffic through, but they couldn’t ping each other. The solution was to add the VPN subnet you created to allowed-ips on both sides of the connection. JSONsite to siteUbiquitiUSGVPNwireguard POSTS NAVIGATION 1 2 … 34 Next → WELCOME This blog is meant as a dumping ground for my technical musings. It is mostly for my own sake but I am making it public in the off chance that it might be useful to someone else. If you find the content on this site useful, please donate to contribute to server costs. Thank you! TAGS * Active Directory * apache * Arch Linux * awk * BASH * CentOS * CentOS 7 * crouton * Debian * DNS * find * firewall * for loop * freeBSD * freeNAS * grep * hardware * KVM * linux * LVM * migration * Mint * mount * mysql * openvpn * PCI passthrough * php * ProxMox * rsync * samba * scripting * sed * Sophos UTM * Splunk * SSH * Ubuntu * ubuntu 14.04 * varnish * VPN * Windows * Windows 10 * wordpress * xen * Xenserver * ZFS ARCHIVES * February 2023 (1) * October 2022 (1) * September 2022 (2) * August 2022 (2) * June 2022 (2) * May 2022 (1) * April 2022 (3) * March 2022 (2) * December 2021 (1) * November 2021 (1) * October 2021 (1) * September 2021 (1) * July 2021 (1) * May 2021 (1) * April 2021 (1) * March 2021 (2) * February 2021 (1) * January 2021 (1) * December 2020 (2) * November 2020 (1) * October 2020 (1) * August 2020 (2) * July 2020 (1) * June 2020 (2) * May 2020 (5) * April 2020 (4) * March 2020 (4) * February 2020 (8) * January 2020 (1) * December 2019 (2) * November 2019 (1) * October 2019 (5) * September 2019 (1) * August 2019 (8) * July 2019 (2) * June 2019 (2) * May 2019 (1) * April 2019 (3) * March 2019 (3) * February 2019 (1) * January 2019 (2) * December 2018 (6) * November 2018 (5) * October 2018 (3) * September 2018 (4) * August 2018 (5) * July 2018 (4) * June 2018 (7) * May 2018 (2) * April 2018 (4) * March 2018 (5) * February 2018 (1) * January 2018 (2) * December 2017 (6) * October 2017 (3) * September 2017 (1) * August 2017 (4) * June 2017 (2) * May 2017 (1) * April 2017 (3) * March 2017 (5) * February 2017 (3) * January 2017 (3) * December 2016 (3) * November 2016 (3) * October 2016 (7) * August 2016 (8) * July 2016 (4) * June 2016 (4) * May 2016 (2) * April 2016 (5) * March 2016 (2) * February 2016 (8) * January 2016 (4) * December 2015 (4) * November 2015 (4) * October 2015 (2) * September 2015 (4) * August 2015 (4) * July 2015 (8) * June 2015 (2) * May 2015 (4) * April 2015 (4) * March 2015 (6) * February 2015 (10) * January 2015 (10) * December 2014 (8) * November 2014 (8) * October 2014 (13) * September 2014 (19) * August 2014 (9) * July 2014 (1) NICK'S TECHNICAL MUSINGS SEARCH Search for: RECENT COMMENTS * Anonymous on Generate SuperMicro IPMI license * Gabor Roman on Transfer VMs between Xenserver pools * Branislav Zeljak on UBUNTU 20.04 cloned VM same DHCP IP fix * Supermacro on Generate SuperMicro IPMI license * Tim on x11vnc XOpenDisplay failed fix RECENT POSTS * Restart wireguard interface in OpenWRT * Wireguard one-way traffic on USG Pro 4 after dual WAN setup * Prioritize wifi with Network Manager in Arch * Convert music to iPhone ringtones * Updating Zimbra to latest version CATEGORIES * Analytics * CLI * Gaming * Hardware * Mobile * Networking * OS * Virtualization * Web Free DNS Proudly powered by WordPress