<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>TTLequals0</title>
    <description></description>
    <link>https://TTLequals0.com/</link>
    <atom:link href="https://TTLequals0.com/feed.xml" rel="self" type="application/rss+xml" />
    <pubDate>Thu, 14 Mar 2024 23:53:43 +0000</pubDate>
    <lastBuildDate>Thu, 14 Mar 2024 23:53:43 +0000</lastBuildDate>
    <generator>Jekyll v3.9.5</generator>
    
      <item>
        <title>OpenVPN Endpoint In ~3 Minutes on AWS</title>
        <description>&lt;p&gt;This is an improvement on a &lt;a href=&quot;http://blog.ttlequals0.com/openvpn-endpoint-on-aws-in-10-minutes/&quot; target=&quot;_blank&quot;&gt;previous post&lt;/a&gt; but this time it takes less time and is completely scripted. This process now only involves cloning a &lt;a href=&quot;https://github.com/ttlequals0/autovpn&quot; target=&quot;_blank&quot;&gt;git repo&lt;/a&gt; and running a single script. The total time it takes to deploy an OpenVPN endpoint is roughly 3 minutes, although i have seen it take less.&lt;/p&gt;
&lt;p&gt;The process is very simple but also assumes that you already have API keys in place and the boto python library installed. Also as a note this is my first attempt interacting with the AWS python API so the script might not be perfect and probably can be improved upon.&lt;/p&gt;
&lt;p&gt;The script works by executing a bash script supplying AWS keypair name as argument that then runs a python script that creates the ec2 instance and needed security groups returning the IP address. The bash script then uses the returned IP address and uses it to establish an SSH connection to the instance and configures OpenVPN. When all is finished an OpenVPN config file will be located in current working directory.&lt;/p&gt;
&lt;p&gt;Note: The openvpn-autoinstall.sh script in the autovpnn directory is what gets executed on the newly created ec2 instance to configure OpenVPN. Also this script is till a work in progress many changes will be made over time.&lt;/p&gt;
&lt;p&gt;&lt;script id=&quot;asciicast-39964&quot; src=&quot;https://asciinema.org/a/39964.js&quot; async=&quot;&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;&lt;br /&gt;
USAGE:&lt;/p&gt;
&lt;p&gt;This script assumes that all AWS credentials and tools are already setup on system.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Clone rep to system.&lt;/li&gt;
&lt;li&gt;Execute autovpn with -k options to deploy to your default AWS region. ./autovpn -k macbook&lt;/li&gt;
&lt;li&gt;OpenVPN config files are downloaded to current working directory.&lt;/li&gt;
&lt;li&gt;Import the OpenVPN config file into VPN client.&lt;/li&gt;
&lt;li&gt;Connect to VPN.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;DESCRIPTION:

autovpn - AWS OpenVPN Deployment Tool.
Project found at &lt;a href=&quot;https://github.com/ttlequals0/autovpn&quot;&gt;https://github.com/ttlequals0/autovpn&lt;/a&gt;

USAGE:
ACTION [OPTIONS]
-h Displays this message.
-i AWS Instance type (Optional, Default is t2.micro)
t2.nano t2.micro t2.small t2.medium t2.large *
-k Specify the name of AWS keypair (Required) **
-r Specify AWS Region (Optional, will use default region)
us-east-1 us-west-1 us-west-2 eu-west-1 eu-west-1
ap-southeast-1 ap-northeast-1 ap-northeast-2 ap-southeast-2
sa-east-1 cn-north-1 ***

NOTES:

* - In reality any instance size can be given but the t2.micro is more than
enough.
** - If you choose to deploy an endpoint in a different region make sure
you have a keypair setup in that region.
*** - Since all ami's aren't located in all regions the ami being used will
need to be changed to one that exists in that region. An option to do this
will be added soon for now this will need to be manually changed in python
script.
&lt;/pre&gt;
</description>
        <pubDate>Sun, 13 Mar 2016 21:06:14 +0000</pubDate>
        <link>https://TTLequals0.com/2016/03/13/openvpn-endpoint-in-3-minutes-on-aws/</link>
        <guid isPermaLink="true">https://TTLequals0.com/2016/03/13/openvpn-endpoint-in-3-minutes-on-aws/</guid>
        
        
      </item>
    
      <item>
        <title>OpenVPN Endpoint on AWS in 10 Minutes</title>
        <description>&lt;p&gt;Note: This setup can be used on Red Hat or Debian based system on pretty much and VPS for example &lt;a href=&quot;https://www.digitalocean.com/?refcode=dbee1c57c396&quot; target=&quot;_blank&quot;&gt;DigitalOcean&lt;/a&gt;. Skip to &lt;a href=&quot;#ovpnconfig&quot;&gt;OpenVPN Server Setup&lt;/a&gt; to configure server on a non AWS instance. The script that is being used can be found on &lt;a href=&quot;https://github.com/ttlequals0/openvpn-install&quot;&gt;GitHub&lt;/a&gt; if you want to review it or fork it.&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;Overview&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;The purpose of this post is to show how to setup an OpenVPN endpoint on AWS for free in roughly 10 minutes. There are plenty of free VPN solutions that could be found on the internet but most have limitations. A few of the main issues with using a random VPN solution on the internet is they usually have low bandwidth limits unless you opt for paid version. Some of the solutions inject add into webpages you visit. The two major issues with using a random VPN solutions are security related. Issue one is that the endpoint can not be trusted the provider might be capturing all user traffic for a number of reasons.  The second commonly seen issue is that the client that is provided gives the user access to the VPN but also uses there system as and endpoint or it install other software.&lt;/p&gt;
&lt;p&gt;This solution uses a free  AWS EC2 t2.micro instance all that is required is creating an AWS account. For the OpenVPN installation it is completely scripted only requiring a few questions to be answered. I have been using an AWS issue for some time now with no apparent issues.  I am not going to show how to navigate through the AWS management console since it pretty self explanatory. Also before the creation of the EC2 instances make sure your public key is in AWS management console.&lt;/p&gt;
&lt;p&gt;The limitations of using the AWS free tier.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;750 hours of &lt;a href=&quot;https://aws.amazon.com/ec2/&quot;&gt;Amazon EC2&lt;/a&gt; Linux t2.micro instance usage (1 GiB of memory and 32-bit and 64-bit platform support) – enough hours to run continuously each month&lt;/li&gt;
&lt;li&gt;30 GB of &lt;a href=&quot;https://aws.amazon.com/ebs/&quot;&gt;Amazon Elastic Block Storage&lt;/a&gt; in any combination of General Purpose (SSD) or Magnetic, plus 2 million I/Os (with EBS Magnetic) and 1 GB of snapshot storage&lt;/li&gt;
&lt;li&gt;15 GB of bandwidth out aggregated across all AWS services&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&lt;strong&gt;AWS Setup&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;On the AWS management console in the EC2 we are going to want to launch a new instance. The OS can be Red Hat or Debian based, for this I chose to use an Ubuntu Server 14.04 LTS image. Since this is only a VPN endpoint CPU performance and Disk space isn't that big of a deal making the t2.micro instance the best choice plus its also in the free tier.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/assets/Screenshot-2015-08-16-14.24.30.png&quot;&gt;&lt;img src=&quot;/assets/Screenshot-2015-08-16-14.24.30.png&quot; alt=&quot;Screenshot 2015-08-16 14.24.30&quot; width=&quot;1596&quot; height=&quot;966&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On the &quot;Configure Instance Details&quot; page the only change that needs to be made is to check the box &quot;&lt;label for=&quot;gwt-uid-651&quot;&gt;Protect against accidental termination&quot;.&lt;/label&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/assets/Screenshot-2015-08-16-14.32.09.png&quot;&gt;&lt;img  src=&quot;/assets/Screenshot-2015-08-16-14.32.09.png&quot; alt=&quot;Screenshot 2015-08-16 14.32.09&quot; width=&quot;1596&quot; height=&quot;962&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The &quot;Add Storage&quot; page no change need to be made unless for some reason you desire more disk space. Keep in mind the free tier can only use 30GB of storage total.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/assets/Screenshot-2015-08-16-14.43.43.png&quot;&gt;&lt;img src=&quot;/assets/Screenshot-2015-08-16-14.43.43.png&quot; alt=&quot;Screenshot 2015-08-16 14.43.43&quot; width=&quot;1596&quot; height=&quot;962&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On the &quot;Tag Instance&quot; page in the &quot;value&quot; section is where you would name the instance.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/assets/Screenshot-2015-08-16-14.47.02.png&quot;&gt;&lt;img  src=&quot;/assets/Screenshot-2015-08-16-14.47.02.png&quot; alt=&quot;Screenshot 2015-08-16 14.47.02&quot; width=&quot;1596&quot; height=&quot;803&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The &quot;Configure Security Group&quot; page is the most important part of the setup since the instance is NATed the appropriate ports need to be opened and mapped correctly. Make sure &quot;Create a &lt;b&gt;new&lt;/b&gt; security group: is checked. the security group name and description can be set to whatever is desired. The following rules need to exits for this to work.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt; SSH TCP port 22 with source from anywhere&lt;/li&gt;
&lt;li&gt;Custom UDP Rule UDP port 1194 source from Anywhere (Default OpenVPN port&quot;)&lt;/li&gt;
&lt;li&gt;DNS (UDP) UDP port 53 source from anywhere (Used as alternate OpenVPN port&quot;)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href=&quot;/assets/Screenshot-2015-08-16-14.56.47.png&quot;&gt;&lt;img  src=&quot;/assets/Screenshot-2015-08-16-14.56.47.png&quot; alt=&quot;Screenshot 2015-08-16 14.56.47&quot; width=&quot;1596&quot; height=&quot;964&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On the &quot;Review and Launch&quot; page double check to make sure everything looks correct. Click &quot;Launch&quot; and make sure to chose the correct key pair.&lt;/p&gt;
&lt;p&gt;Once the Instance is launched find the public ip of instance on the AWS management console in the EC2 section. Also the log on username can be found from this page in my case the default user is Ubuntu. SSH to the the instances ubuntu@ip.address.&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;&lt;a name=&quot;ovpnconfig&quot;&gt;&lt;/a&gt; OpenVPN Server Setup&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;Now its time for the actual OpenVPN configuration. Note from this point on these steps can be applied to any Red Hat or Debian based system on pretty much and VPS. My other got to VPS provider is &lt;a href=&quot;https://www.digitalocean.com/?refcode=dbee1c57c396&quot; target=&quot;_blank&quot;&gt;DigitalOcean&lt;/a&gt;. The script that is being used can be found on &lt;a href=&quot;https://github.com/ttlequals0/openvpn-install&quot;&gt;GitHub&lt;/a&gt; if you want to review it or fork it.&lt;/p&gt;
&lt;p&gt;Once you are connected to your instance you are going to want to switch to root since all of the following steps will be adding packages and making other system changes.&lt;/p&gt;
&lt;p&gt;As root run the following one liner to start the setup process.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
wget git.io/v35Kx --no-check-certificate -O openvpn-install.sh; bash openvpn-install.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt; Make sure the ip address is a private ip address on AWS or public ip address depending on you setup. If this looks good hit enter.&lt;/li&gt;
&lt;li&gt;What port do you want OpenVPN to listen on? 1194 is chosen by default but can be set to anything. If you chose different port make sure to make the appropriate changes to the security group on AWS.&lt;/li&gt;
&lt;li&gt;Do you want OpenVPN to be available at port 53 too? This is useful if the network your on is trying to block VPNs.&lt;/li&gt;
&lt;li&gt;Do you want to enable internal networking for the VPN? This will allow VPN clients to communicate between each other over the VPN. the Default is &quot;No&quot;.&lt;/li&gt;
&lt;li&gt;What DNS servers do you want to use with the VPN? 1) Current system resolvers, 2) OpenDNS, 3) Level 3 4) Hurricane Electric or 5) Google.&lt;/li&gt;
&lt;li&gt;Last give a name for the client cert no spaces, or special characters.&lt;/li&gt;
&lt;li&gt;If everything looks good hit enter to continue the setup or ctrl+c and run script again to make changes.&lt;a href=&quot;/assets/Screenshot-2015-08-16-15.57.15.png&quot;&gt;&lt;img  src=&quot;/assets/Screenshot-2015-08-16-15.57.15.png&quot; alt=&quot;Screenshot 2015-08-16 15.57.15&quot; width=&quot;2027&quot; height=&quot;1150&quot; /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;On an AWS instance or NATed VPS the script will prompt for the public ip address of the instance. This is usually the same ip used for SSH.&lt;a href=&quot;/assets/Screenshot-2015-08-16-16.09.09.png&quot;&gt;&lt;img  src=&quot;/assets/Screenshot-2015-08-16-16.09.09.png&quot; alt=&quot;Screenshot 2015-08-16 16.09.09&quot; width=&quot;2027&quot; height=&quot;1150&quot; /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;At this point the server setup is complete all thats left is to download client config file and setup client.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Client Setup&lt;/h2&gt;
&lt;p&gt;Now that the Server is setup all that s left is to configure the client used to connect to the VPN. The config file can be used on Windows, Linux, OS X, iOS and Android.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;First we need to download the client configuration file easiest way is to use SCP &lt;code&gt;scp user@server-ip:~/client.ovpn Downloads/&lt;/code&gt;. or WinSCP on Windows&lt;/li&gt;
&lt;li&gt;Install an OpenVPN client for your OS&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Windows&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The OpenVPN client for Windows can be found on &lt;a href=&quot;https://openvpn.net/index.php/open-source/downloads.html&quot;&gt;OpenVPN's Downloads page&lt;/a&gt;. Choose the appropriate installer version for your version of Windows.&lt;/li&gt;
&lt;li&gt;After installing OpenVPN, copy the unified *&lt;code&gt;.ovpn&lt;/code&gt; profile to:
&lt;pre class=&quot;code-pre &quot;&gt;&lt;code&gt;C:\Program Files\OpenVPN\config
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;When you launch OpenVPN, it will automatically see the profile and makes it available.&lt;/li&gt;
&lt;li&gt;Another Client I like to use is &lt;a href=&quot;https://www.sparklabs.com/viscosity/&quot; target=&quot;_blank&quot;&gt;Viscosity&lt;/a&gt; which cost $10&lt;/li&gt;
&lt;li&gt;Note OpenVPN client need to be ran as Administrator&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;OS X&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use &lt;a href=&quot;https://tunnelblick.net/downloads.html&quot; target=&quot;_blank&quot;&gt;Ttunnelblick&lt;/a&gt; which is free or my favorite &lt;a href=&quot;https://www.sparklabs.com/viscosity/&quot; target=&quot;_blank&quot;&gt;Viscosity&lt;/a&gt; which cost $10&lt;/li&gt;
&lt;li&gt;To import move config file to ~ and within the client import the *.ovpn file.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Testing VPN&lt;/h2&gt;
&lt;p&gt;Once server is setup and client is installed lets check the current ip address of our client by simply typing &quot;my ip&quot; into google.  This will return the ip address assigned by your ISP and as you appear on the Internet.&lt;/p&gt;
&lt;p&gt;Now connect the OpenVPN client and connect  to your VPN and go to google again and type &quot;my ip&quot; you should see a different ip address. If  you also want to to see what DNS servers are being used go to &lt;a href=&quot;https://www.dnsleaktest.com/&quot;&gt;DNSLeakTest&lt;/a&gt; and run &quot;Extended Test&quot; will check your DNS settings and confirm you are now using the DNS resolvers pushed by your VPN.&lt;/p&gt;
&lt;p&gt;At this  point you now have a full functioning VPN in a matter of minutes.&lt;/p&gt;
</description>
        <pubDate>Sun, 16 Aug 2015 22:04:12 +0000</pubDate>
        <link>https://TTLequals0.com/2015/08/16/openvpn-endpoint-on-aws-in-10-minutes/</link>
        <guid isPermaLink="true">https://TTLequals0.com/2015/08/16/openvpn-endpoint-on-aws-in-10-minutes/</guid>
        
        
      </item>
    
      <item>
        <title>Windows 10 build 10122 Fun.</title>
        <description>&lt;p&gt;Throughout my testing of the windows 10 Tech Preview build I have experienced the good and the bad of testing new operating systems. I have recently installed build 10122 which is currently the latest build and everything seemed to be running well until it started to go down hill. When I was just sitting at the desktop explorer.exe went into a loop of crashes and restarts. After a few minutes of this I went with windows troubleshooting 101 reboot the system. After the reboot is when the fun started.&lt;/p&gt;
&lt;p&gt;As the system was booting I got the good old BSOD and the system continued to boot loop.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/assets/2015-05-24-19.45.27.jpg&quot;&gt;&lt;img src=&quot;/assets/2015-05-24-19.45.27.jpg&quot; alt=&quot;2015-05-24 19.45.27&quot; width=&quot;1427&quot; height=&quot;803&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So I got the flash drive that had the windows install media on it to use some of the troubleshooting tools. The first thing was run the startup repair utility hoping it would be a quick easy fix. Turns out I would not be that lucky startup repair was unable to fix issue.&lt;/p&gt;
&lt;p&gt;Next I tried system restore since I have recently installed graphics drivers but system restore was a no go as well. The utility claimed it could not perform system restore due to filesystem corruption and to check the disk. So of course iI ran the utility and it found no errors on the disk. I decided to give this another shot and the same error compelling about filesystem corruption.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/assets/2015-05-24-19.56.05.jpg&quot;&gt;&lt;img src=&quot;/assets/2015-05-24-19.56.05.jpg&quot; alt=&quot;2015-05-24 19.56.05&quot; width=&quot;1427&quot; height=&quot;803&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Since this PC didn't have  much software installed I went the Refresh your PC option. This also ended in failure.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/assets/2015-05-24-20.00.44.jpg&quot;&gt;&lt;img src=&quot;/assets/2015-05-24-20.00.44.jpg&quot; alt=&quot;2015-05-24 20.00.44&quot; width=&quot;1427&quot; height=&quot;803&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I could not use the Roll-Back to previous version option since this was a clean install. Leaving me with the Reinstall using Installation Media option which also did not go well. The installation process failed at first reboot.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/assets/2015-05-24-20.10.08.jpg&quot;&gt;&lt;img src=&quot;/assets/2015-05-24-20.10.08.jpg&quot; alt=&quot;2015-05-24 20.10.08&quot; width=&quot;1427&quot; height=&quot;803&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Booted up using installation media and decided to give this another try since I had nothing to lose and was immediately presented with this.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/assets/2015-05-24-20.16.57.jpg&quot;&gt;&lt;img src=&quot;/assets/2015-05-24-20.16.57.jpg&quot; alt=&quot;2015-05-24 20.16.57&quot; width=&quot;1427&quot; height=&quot;803&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Then after that I got a really descriptive dialogue box.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/assets/2015-05-24-20.19.38.jpg&quot;&gt;&lt;img src=&quot;/assets/2015-05-24-20.19.38.jpg&quot; alt=&quot;2015-05-24 20.19.38&quot; width=&quot;1427&quot; height=&quot;803&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;I eventually ended up wiping the drive and reinstalling Windows 10 instead of wasting more time troubleshooting this. Overall I do think Microsoft is doing a good job with Windows 10 and I look forward to continue testing new builds.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
</description>
        <pubDate>Mon, 25 May 2015 02:25:46 +0000</pubDate>
        <link>https://TTLequals0.com/2015/05/25/windows-10-build-10122-fun/</link>
        <guid isPermaLink="true">https://TTLequals0.com/2015/05/25/windows-10-build-10122-fun/</guid>
        
        
      </item>
    
      <item>
        <title>The Real Way to Lock Mac with Keyboard Shortcut.</title>
        <description>&lt;p&gt;There has been a number of times that I just simply want to lock my Mac at work or at home with a simple keyboard shortcut. To my surprise there really was no shortcut for example win &lt;strong&gt;key + L&lt;/strong&gt; on windows or &lt;strong&gt;ctrl + alt + L&lt;/strong&gt; on systems using Gnome.  When I did a few quick Google searches on how to do this many sites suggested using  &lt;strong&gt;c&lt;/strong&gt;&lt;strong&gt;ontrol+Shift+Eject &lt;/strong&gt;or &lt;strong&gt;Control+Shift+Power &lt;/strong&gt;after enabling &quot;require password immediately after  sleep or screen saver begins.&quot;. There are some problems with these suggestions. the first issue is this not only locks the computer it also put it to sleep which means the computer has to wake up first before the lock screen appears. The second issue is  many keyboard i use do not have an &quot;Eject&quot; or &quot;Power&quot; key on them.&lt;/p&gt;
&lt;p&gt;Over some time I discovered a partial solution for locking the screen. The only slight issue was it needed to be done from a terminal window. This was fine for me since I spend most of my time at a terminal window anyways. This was accomplished by creating an alias with the command and perimeter to signal the computer to lock screen.&lt;/p&gt;
&lt;pre&gt;alias lock='/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend'&lt;/pre&gt;
&lt;p&gt;Finally  I have found a way to lock screen using a keyboard shortcut that didn't put the computer to sleep first. I accomplished this by using a built in tool on the Mac called &quot;Automator&quot; by creating a custom system service.&lt;/p&gt;
&lt;p&gt;First launch Automator by using Spotlight search and select Service for the type of document.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/assets/Screenshot-2015-05-09-16.04.28.png&quot;&gt;&lt;img src=&quot;/assets/Screenshot-2015-05-09-16.04.28.png&quot; alt=&quot;launch&quot; width=&quot;1112&quot; height=&quot;979&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Set the service receives &quot;no input&quot; from the dropdown box.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/assets/Screenshot-2015-05-09-16.07.59.png&quot;&gt;&lt;img src=&quot;/assets/Screenshot-2015-05-09-16.07.59.png&quot; alt=&quot;Screenshot 2015-05-09 16.07.59&quot; width=&quot;1112&quot; height=&quot;979&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Search for &quot;shell&quot; in the search box and double click &quot;Run Shell Script&quot; and paste the following into the box.&lt;/p&gt;
&lt;pre&gt;/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -suspend&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;/assets/Screenshot-2015-05-09-16.10.37.png&quot;&gt;&lt;img src=&quot;/assets/Screenshot-2015-05-09-16.10.37.png&quot; alt=&quot;Screenshot 2015-05-09 16.10.37&quot; width=&quot;1112&quot; height=&quot;979&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Save the service and call it &quot;LockMac&quot; or whatever is desired and close Automator.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/assets/Screenshot-2015-05-09-16.14.13.png&quot;&gt;&lt;img src=&quot;/assets/Screenshot-2015-05-09-16.14.13.png&quot; alt=&quot;Screenshot 2015-05-09 16.14.13&quot; width=&quot;1112&quot; height=&quot;979&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now got to System Preferences &amp;gt; Keyboard &amp;gt; Shortcuts and select &quot;Services&quot;. Scroll down until the service that was just created using Automator is seen it should be toward the bottom. Make sure the the box to the left is checked to enable it.  Then click on the word &quot;none&quot; to assign the desired shortcut keys.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/assets/Screenshot-2015-05-09-16.22.13.png&quot;&gt;&lt;img src=&quot;/assets/Screenshot-2015-05-09-16.22.13.png&quot; alt=&quot;Screenshot 2015-05-09 16.22.13&quot; width=&quot;780&quot; height=&quot;693&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/assets/Screenshot-2015-05-09-16.26.52.png&quot;&gt;&lt;img src=&quot;/assets/Screenshot-2015-05-09-16.26.52.png&quot; alt=&quot;Screenshot 2015-05-09 16.26.52&quot; width=&quot;780&quot; height=&quot;693&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;At this point try out the keyboard shortcut, if everything works properly the lock screen will appear.&lt;/p&gt;
</description>
        <pubDate>Sat, 09 May 2015 21:37:05 +0000</pubDate>
        <link>https://TTLequals0.com/2015/05/09/the-real-way-to-lock-mac-with-keyboard-shortcut/</link>
        <guid isPermaLink="true">https://TTLequals0.com/2015/05/09/the-real-way-to-lock-mac-with-keyboard-shortcut/</guid>
        
        
      </item>
    
      <item>
        <title>Adding / Removing  Users to Mailing Lists via Powershell</title>
        <description>&lt;p&gt;This is a quick post for adding and removing users to mailing lists via Powershell.&lt;/p&gt;
&lt;p&gt;1. Open a powershell window. Open start menu and type &quot;powershell&quot;. Roght click on it and click &quot;Run as Administrator&quot;&lt;/p&gt;
&lt;p&gt;2. Set Office365 login credential, in dialogue box use full email address ex: sample.user@domain.com&lt;/p&gt;
&lt;pre&gt;$UserCredential = Get-Credential&lt;/pre&gt;
&lt;p&gt;3. Connect to Office365&lt;/p&gt;
&lt;pre&gt;$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection&lt;/pre&gt;
&lt;p&gt;4. Import powershell session&lt;/p&gt;
&lt;pre&gt;Import-PSSession $Session&lt;/pre&gt;
&lt;p&gt;5. Add or move users to group. Users must be specified using full email address. ex. sample.user@domain.com. Note: It is possible to use &quot;for loop&quot; if adding a bunch of users.&lt;/p&gt;
&lt;p&gt;Add User&lt;/p&gt;
&lt;pre&gt;Add-DistributionGroupMember -Identity &quot;mailing-list&quot; -Member &quot;sample.user@domain.com&quot;&lt;/pre&gt;
&lt;p&gt;Remove User&lt;/p&gt;
&lt;pre&gt;Remove-DistributionGroupMember -Identity &quot;mailing-list&quot; -Member &quot;sample.user@domain.com&quot;&lt;/pre&gt;
&lt;p&gt;6. Be sure to disconnect the remote PowerShell session when you're finished. Failing to disconnect session may result in using up all available connections and will have to wait for them to expire.&lt;/p&gt;
&lt;pre&gt;Remove-PSSession $Session&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
</description>
        <pubDate>Wed, 15 Apr 2015 01:12:36 +0000</pubDate>
        <link>https://TTLequals0.com/2015/04/15/adding-removing-users-to-mailing-lists-via-powershell/</link>
        <guid isPermaLink="true">https://TTLequals0.com/2015/04/15/adding-removing-users-to-mailing-lists-via-powershell/</guid>
        
        
      </item>
    
      <item>
        <title>Home Network (Personal Cloud)</title>
        <description>&lt;p&gt;This post is to show off my home network. Although I call it a home network all of my infrastructure is not located in my apartment but it's all managed remotely. I have setup a site to site VPN between my apartment and the location where all my servers are located. All servers are virtualized using fully licensed vSphere 5.5.&lt;/p&gt;
&lt;p&gt;The main use for all of my infrastructure is what I call a whole home / cloud DVR. All my tv shows are recorded, processed removing all commercials, converted for optimal streaming and posted to my media server. All of this is done automatically and has been working for years. I have tweaked the process a few times for more efficiency.&lt;/p&gt;
&lt;p&gt;The other purpose is used for a lab environment. This allows me to practice system administration and test new technologies.&lt;/p&gt;
&lt;p&gt;Home infrastructure broken down:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mac Mini
&lt;ul&gt;
&lt;li&gt;Runs vSphere 5.5&lt;/li&gt;
&lt;li&gt;Main purpose is Veeam Backup Server.&lt;/li&gt;
&lt;li&gt;16 GB  RAM&lt;/li&gt;
&lt;li&gt;2x 250 GB Samsung EVO 840 SSDs&lt;/li&gt;
&lt;li&gt;2x 1GB NICs&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Qnapp TS-669L
&lt;ul&gt;
&lt;li&gt;Used mainly for backups.&lt;/li&gt;
&lt;li&gt;6x 3TB WD Reds. (RAID 5)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;FringeBox 1100
&lt;ul&gt;
&lt;li&gt;pfSense Firewall / Router&lt;/li&gt;
&lt;li&gt;Used for remote VPN and site to site VPN.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Cisco SG200-26 Gigabit Ethernet Switch&lt;/li&gt;
&lt;li&gt;ASUS RS720-E7/RS12-E 2U
&lt;ul&gt;
&lt;li&gt;Runs vSphere 5.5&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;line-height: 1.6471;&quot;&gt;2x Intel Xeon E5-2640 v2&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;64 GB RAM (4x 16 GB) Kingston Technology&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;line-height: 1.6471;&quot;&gt;2x 120 GB Samsung EVO 840 SSDs (RAID 1)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;11x 2TB HGST 7200 SAS Drives (RAID 6)&lt;/li&gt;
&lt;li&gt;Current VMs
&lt;ul&gt;
&lt;li&gt;Graphite in Docker (CentOS 6.5)&lt;/li&gt;
&lt;li&gt;Plex Main Server (win 7)&lt;/li&gt;
&lt;li&gt;Plex Test server (Win 7)&lt;/li&gt;
&lt;li&gt;Recording server (Win 7)&lt;/li&gt;
&lt;li&gt;FreeRADIUS server (Ubuntu 14.04)&lt;/li&gt;
&lt;li&gt;FTP (Server 2012 R2)&lt;/li&gt;
&lt;li&gt;File Server (Server 2012)&lt;/li&gt;
&lt;li&gt;DNS (CentOS 6.5)&lt;/li&gt;
&lt;li&gt;Internal stikked sever (CentOS 6.5)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Test Server (old media server)
&lt;ul&gt;
&lt;li&gt;Runs vSphere 5.5&lt;/li&gt;
&lt;li&gt;Core i7 3770K&lt;/li&gt;
&lt;li&gt;16 GB RAM&lt;/li&gt;
&lt;li&gt;4x 2TB WD Greens&lt;/li&gt;
&lt;li&gt;4x 1GB NICs&lt;/li&gt;
&lt;li&gt;currently running VMs
&lt;ul&gt;
&lt;li&gt;Nested CloudStack Environment.&lt;/li&gt;
&lt;li&gt;Nested VSAN&lt;/li&gt;
&lt;li&gt;A couple of Windows and Linux systems&lt;/li&gt;
&lt;li&gt;CHEF server 12&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;APC Smart-UPS RM SMT1500RM2U&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Recently all equipment was moved from homemade rack to a proper rack.&lt;/p&gt;
&lt;p&gt;Before:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/assets/2014-03-23-10.41.05.jpg&quot;&gt;&lt;img  src=&quot;/assets/2014-03-23-10.41.05.jpg&quot; alt=&quot;2014-03-23 10.41.05&quot; width=&quot;348&quot; height=&quot;784&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/assets/2015-03-28-20.10.10.jpg&quot;&gt;&lt;img  src=&quot;/assets/2015-03-28-20.10.10.jpg&quot; alt=&quot;2015-03-28 20.10.10&quot; width=&quot;574&quot; height=&quot;914&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a style=&quot;line-height: 1.6471;&quot; href=&quot;/assets/2015-03-28-20.10.05.jpg&quot;&gt;&lt;img  src=&quot;/assets/2015-03-28-20.10.05.jpg&quot; alt=&quot;2015-03-28 20.10.05&quot; width=&quot;514&quot; height=&quot;914&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Note: Wasn't completely finished re-racking equipment when pictures were taken.&lt;/p&gt;
</description>
        <pubDate>Mon, 13 Apr 2015 21:03:05 +0000</pubDate>
        <link>https://TTLequals0.com/2015/04/13/home-network-personal-cloud/</link>
        <guid isPermaLink="true">https://TTLequals0.com/2015/04/13/home-network-personal-cloud/</guid>
        
        
      </item>
    
      <item>
        <title>OpenVPN with 2FA using FreeRADIUS and Google Authenticator</title>
        <description>&lt;p&gt;This implementation of OpenVPN is using pfSense with FreeRADIUS and Google Authenticator PAM (pluggable authentication module) to generate One-time passcodes. The end result is the user is prompted for credentials, they use their username and password + One-time passcode to authenticate.&lt;/p&gt;
&lt;p&gt;For the server that will run FreeRADIUS I choose to to use Ubuntu server 14.04 LTS in a VM.&lt;/p&gt;
&lt;p&gt;The first thing is to install NTP there are two main reasons for this. The first is since Google Authenticator uses TOTP algorithm (time-based one-time password) having an out of sync system clock will lead to the passcodes that are generated being invalid. The second reason is since I decided to run the server in a VM there is a higher risk of time drift which would also result in invalid passcodes.&lt;/p&gt;
&lt;pre&gt; sudo apt-get update
sudo apt-get install ntp
&lt;/pre&gt;
&lt;p&gt;Up next install the FreeRADIUS package and all of the necessary dependencies.&lt;/p&gt;
&lt;pre&gt; sudo apt-get install build-essential libpam0g-dev freeradius libqrencode3 git&lt;/pre&gt;
&lt;p&gt;Download the Google Authenticator source from Github. Since it has been moved there from Google Code.&lt;/p&gt;
&lt;pre&gt; git clone https://github.com/google/google-authenticator/
cd ~
cd google-authenticator/libpam/
make
make install
&lt;/pre&gt;
&lt;p&gt;Since we will be using local accounts on the server its a good idea to make a group to put users in if they no longer need access instead of removing them.&lt;/p&gt;
&lt;pre&gt;addgroup disabled-radius&lt;/pre&gt;
&lt;h2&gt;FreeRADIUS Configuration.&lt;/h2&gt;
&lt;p&gt;FreeRadius configuration. With this configuration there is one aspect im not thrilled about but unfortunately as of now it has to be done. The problem is since FreeRadius needs to be able to read each users .google_authenticator token in their home directory FreeRadius needs to run as root. Since this isn't the best security practice I suggest to limit access to this machine and only use it for FreeRADIUS.&lt;/p&gt;
&lt;p&gt;The first file that needs to be modified is  /etc/freeradius/radiusd.conf we need to configure FreeRadius to use the root user and group.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/assets/Screenshot-2015-04-07-14.33.51.png&quot;&gt;&lt;img  src=&quot;/assets/Screenshot-2015-04-07-14.33.51.png&quot; alt=&quot;freeradius.conf&quot; width=&quot;930&quot; height=&quot;585&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;change from this:&lt;/p&gt;
&lt;pre&gt;user = freerad
group = freerad
&lt;/pre&gt;
&lt;p&gt;To this:&lt;/p&gt;
&lt;pre&gt;user = root
group = root
&lt;/pre&gt;
&lt;p&gt;The next file that needs to be edited is /etc/freeradius/users. We need to add the disabled-radius group to the &quot;Deny access for a group of users.&quot; section.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/assets/Screenshot-2015-04-07-14.46.04.png&quot;&gt;&lt;img  src=&quot;/assets/Screenshot-2015-04-07-14.46.04.png&quot; alt=&quot;user.conf&quot; width=&quot;770&quot; height=&quot;302&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Add this to the end of the commented out section.&lt;/p&gt;
&lt;pre&gt; DEFAULT Group == &quot;disabled-radius&quot;, Auth-Type := Reject
Reply-Message = &quot;Your account has been disabled.&quot;
&lt;/pre&gt;
&lt;p&gt;We also going to add the rule to use PAM libraries for authentication.&lt;/p&gt;
&lt;pre&gt;DEFAULT Auth-Type := PAM&lt;/pre&gt;
&lt;p&gt;Next up to edit is /etc/freeradius/sites-enabled/default. This will enable the use of PAM for the FreeRADIUS server. To do this uncomment &quot;pam&quot; after the line &quot;#  Pluggable Authentication Modules.&quot;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/assets/Screenshot-2015-04-07-15.00.23.png&quot;&gt;&lt;img  src=&quot;/assets/Screenshot-2015-04-07-15.00.23.png&quot; alt=&quot;PAM&quot; width=&quot;880&quot; height=&quot;1063&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now we need to edit/etc/pam.d/radiusd to tell FreeRADIUS to use &lt;span style=&quot;line-height: 1.6471;&quot;&gt; local unix password plus the Google Authenticator passcode.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;line-height: 1.6471;&quot;&gt;&lt;a href=&quot;/assets/Screenshot-2015-04-07-15.06.39.png&quot;&gt;&lt;img  src=&quot;/assets/Screenshot-2015-04-07-15.06.39.png&quot; alt=&quot;use pam&quot; width=&quot;796&quot; height=&quot;334&quot; /&gt;&lt;/a&gt;Comment out all of the lines that begin with &quot;@&quot; and add the following to the end.&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt; auth requisite pam_google_authenticator.so forward_pass
auth required pam_unix.so use_first_pass
&lt;/pre&gt;
&lt;p&gt;To change the shared secret or to specify which clients will be connecting to the server this file needs to be edited. /etc/freeradius/clients.conf There many ways to specify the hosts that communicate with this server for authentication.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/assets/Screenshot-2015-04-07-16.33.27.png&quot;&gt;&lt;img  src=&quot;/assets/Screenshot-2015-04-07-16.33.27.png&quot; alt=&quot;Screenshot 2015-04-07 16.33.27&quot; width=&quot;704&quot; height=&quot;730&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;User Configuration.&lt;/h2&gt;
&lt;p&gt;Once FreeRADIUS is configured we are going to create a test user to see if it all works. The password can be simple since this is for testing and this user can be disabled or removed from system later. I used &quot;test123&quot; as password.&lt;/p&gt;
&lt;pre&gt;adduser test-user&lt;/pre&gt;
&lt;p&gt;After the user is created go ahead and login as that user.&lt;/p&gt;
&lt;pre&gt;su test
google-authenticator&lt;/pre&gt;
&lt;p&gt;If all goes this will be the output. Now that we have the QR code import it into the Google Authenticator app (or whatever is being used for OTP tokens).&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/assets/Screenshot-2015-04-07-15.34.27.png&quot;&gt;&lt;img  src=&quot;/assets/Screenshot-2015-04-07-15.34.27.png&quot; alt=&quot;qr&quot; width=&quot;905&quot; height=&quot;1021&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Test Configuration.&lt;/h2&gt;
&lt;p&gt;Time to test the configuration. First restart the FreeRADIUS service so the new configuration gets loaded.&lt;/p&gt;
&lt;pre&gt;sudo service freeradius restart&lt;/pre&gt;
&lt;p&gt;Use the following command to see if user can authenticate with the localhost.&lt;/p&gt;
&lt;pre&gt;radtest username unix_password+google_auth localhost 18120 testing123&lt;/pre&gt;
&lt;p&gt;example:&lt;/p&gt;
&lt;pre&gt;radtest test-user test123708169 localhost 18120 testing123&lt;/pre&gt;
&lt;p&gt;If everything is configured properly and the authentication the output should look like this.&lt;br /&gt;
&lt;a href=&quot;/assets/Screenshot-2015-04-07-15.52.16.png&quot;&gt;&lt;img  src=&quot;/assets/Screenshot-2015-04-07-15.52.16.png&quot; alt=&quot;local test&quot; width=&quot;994&quot; height=&quot;210&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;OpenVPN Configuration.&lt;/h2&gt;
&lt;p&gt;Now its time to tell OpenVPN to use RADIUS for authentication. Log into pfSense web interface and navigate to System &amp;gt; User Manager and click on the servers tab and then the &quot;+&quot; to add a new one.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/assets/Screenshot-2015-04-07-16.40.50.png&quot;&gt;&lt;img  src=&quot;/assets/Screenshot-2015-04-07-16.40.50.png&quot; alt=&quot;Screenshot 2015-04-07 16.40.50&quot; width=&quot;801&quot; height=&quot;622&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;After the RADIUS server navigate to VPN&amp;gt; OpenVPN then edit server and select the newly added server in the &quot;Backend for Authentication&quot; box.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/assets/Screenshot-2015-04-07-16.42.27.png&quot;&gt;&lt;img  src=&quot;/assets/Screenshot-2015-04-07-16.42.27.png&quot; alt=&quot;Screenshot 2015-04-07 16.42.27&quot; width=&quot;879&quot; height=&quot;460&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Test to see if router can communicate with RADIUS server by going to Diagnostics &amp;gt; Authentication. Select the RADIUS server from dropdown and enter username and unix password + one-time passcode.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/assets/Screenshot-2015-04-07-16.50.30.png&quot;&gt;&lt;img  src=&quot;/assets/Screenshot-2015-04-07-16.50.30.png&quot; alt=&quot;Screenshot 2015-04-07 16.50.30&quot; width=&quot;895&quot; height=&quot;547&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Troubleshooting.&lt;/h2&gt;
&lt;p&gt;If for some reason the FreeRADIUS fails to start or cant communicate with host try this to see if there are any errors when starting service.&lt;/p&gt;
&lt;pre&gt;sudo service freeradius stop
sudo freeradius -X&lt;/pre&gt;
&lt;p&gt;If the service starts correctly the expected output is this:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/assets/Screenshot-2015-04-07-16.04.13.png&quot;&gt;&lt;img  src=&quot;/assets/Screenshot-2015-04-07-16.04.13.png&quot; alt=&quot;trouble&quot; width=&quot;1061&quot; height=&quot;1056&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Another good tool for testing radius server is NTRadPing.&lt;/p&gt;
&lt;p&gt;Output for bad credentials:&lt;br /&gt;
&lt;a href=&quot;/assets/Screenshot-2015-04-07-16.09.15.png&quot;&gt;&lt;img  src=&quot;/assets/Screenshot-2015-04-07-16.09.15.png&quot; alt=&quot;Screenshot 2015-04-07 16.09.15&quot; width=&quot;682&quot; height=&quot;423&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Output for unable to communicate with server:&lt;br /&gt;
&lt;a href=&quot;/assets/Screenshot-2015-04-07-16.10.21.png&quot;&gt;&lt;img  src=&quot;/assets/Screenshot-2015-04-07-16.10.21.png&quot; alt=&quot;Screenshot 2015-04-07 16.10.21&quot; width=&quot;683&quot; height=&quot;425&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Output for successful authentication:&lt;br /&gt;
&lt;a href=&quot;/assets/Screenshot-2015-04-07-16.11.58.png&quot;&gt;&lt;img  src=&quot;/assets/Screenshot-2015-04-07-16.11.58.png&quot; alt=&quot;Screenshot 2015-04-07 16.11.58&quot; width=&quot;692&quot; height=&quot;432&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If there is issues communicating with the server it may be necessary to add allow rules for the device that will be using the server. In my case my router is accessing the server.&lt;/p&gt;
&lt;pre&gt;sudo iptables -A INPUT -p udp -s 192.168.9.1 --dport 1812 -i eth0 -j ACCEPT
sudo iptables -A INPUT -p udp -s 192.168.9.1 --dport 1813 -i eth0 -j ACCEPT
sudo iptables -A INPUT -p udp -s 192.168.9.1 --dport 1814 -i eth0 -j ACCEPT&lt;/pre&gt;
&lt;p&gt;save firewall settings:&lt;/p&gt;
&lt;pre&gt;sudo sh -c &quot;iptables-save &amp;gt; /etc/iptables.rules&quot;&lt;/pre&gt;
&lt;p&gt;Invoke these rules at boot i added this line at the eth0 interface configuration in /etc/network/interfaces.&lt;/p&gt;
&lt;pre&gt;pre-up iptables-restore &amp;lt; /etc/iptables.rules&lt;/pre&gt;
</description>
        <pubDate>Tue, 07 Apr 2015 21:54:49 +0000</pubDate>
        <link>https://TTLequals0.com/2015/04/07/openvpn-with-2fa-using-freeradius-and-google-authenticator/</link>
        <guid isPermaLink="true">https://TTLequals0.com/2015/04/07/openvpn-with-2fa-using-freeradius-and-google-authenticator/</guid>
        
        
      </item>
    
      <item>
        <title>Google Domains Dynamic DNS on pfSense</title>
        <description>&lt;p&gt;This is a quick write up on how to configure Google Domains Dynamic DNS on pfSense. Since Google Domains is fairly new it is not officially supported in pfSense nor is there any good documentation on how to do accomplish this&lt;/p&gt;
&lt;p&gt;Lets start by setting up the Dynamic DNS in Google Domains. This part is pretty straight forward.&lt;/p&gt;
&lt;p&gt;On the DNS tab in Google Domains scroll down to the &quot;Synthetic records&quot; portion.  Select Dynamic DNS from the dropdown, fill in the subdomain name and select add.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/assets/Screenshot-2015-03-23-18.41.22.png&quot;&gt;&lt;img  src=&quot;/assets/Screenshot-2015-03-23-18.41.22.png&quot; alt=&quot;synthetic Record&quot; width=&quot;944&quot; height=&quot;173&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Once the record is added expand the entry to reveal the record information. It show just an &quot;A&quot; record with an IP of 0.0.0.0 since nothing is configure yet. Click on the &quot;View credentials&quot; link to unmask the Username and Password.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/assets/Screenshot-2015-03-23-18.47.34.png&quot;&gt;&lt;img  src=&quot;/assets/Screenshot-2015-03-23-18.47.34.png&quot; alt=&quot;DNS Record&quot; width=&quot;912&quot; height=&quot;239&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;On the pfSense router navigate to Services &amp;gt; Dynamic DNS. On the DynDNS tab click the + sign to add new entry. From the &quot;Service type&quot; dropdown select &quot;custom&quot; since Google Domains is not an option and needs to be configured manually. Set the &quot;Interface to monitor&quot; and &quot;Interface to send update from&quot; to WAN. Fill in the Username and password with the information provided from Google Domains. For the &quot;Update URL&quot; copy the link below and change the hostname to the subdomain that was set in Google Domains. Also update &quot;Result Match&quot; with the information below.&lt;/p&gt;
&lt;p&gt;Update Url:&lt;/p&gt;
&lt;pre&gt;https://domains.google.com/nic/update?hostname=test.ttlequals0.com&lt;/pre&gt;
&lt;p&gt;Result Match:&lt;/p&gt;
&lt;pre&gt;good %IP%|nochg %IP%&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;/assets/Screenshot-2015-03-23-18.58.55.png&quot;&gt;&lt;img  src=&quot;/assets/Screenshot-2015-03-23-18.58.55.png&quot; alt=&quot;DYNDNS config&quot; width=&quot;882&quot; height=&quot;880&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Once this is done click &quot;Save &amp;amp; Force Update&quot;. If all goes well within about a minute the Dynamic DNS &quot;A&quot; record should have the current IP of the router.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/assets/Screenshot-2015-03-23-19.22.20.png&quot;&gt;&lt;img  src=&quot;/assets/Screenshot-2015-03-23-19.22.20.png&quot; alt=&quot;DNS succes&quot; width=&quot;963&quot; height=&quot;266&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
</description>
        <pubDate>Tue, 24 Mar 2015 00:26:00 +0000</pubDate>
        <link>https://TTLequals0.com/2015/03/24/google-domains-dynamic-dns-on-pfsense/</link>
        <guid isPermaLink="true">https://TTLequals0.com/2015/03/24/google-domains-dynamic-dns-on-pfsense/</guid>
        
        
      </item>
    
  </channel>
</rss>
