<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>ScottDotDot </title>
	<atom:link href="http://s.co.tt/tag/routers/feed/" rel="self" type="application/rss+xml" />
	<link>http://s.co.tt</link>
	<description>Babblings of a computer curmudgeon.</description>
	<lastBuildDate>Mon, 26 Jan 2026 16:08:52 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.1</generator>
	<item>
		<title>Redundant VPN Tunnels via Different ISPs</title>
		<link>http://s.co.tt/2019/04/23/redundant-vpn-tunnels/</link>
		<comments>http://s.co.tt/2019/04/23/redundant-vpn-tunnels/#comments</comments>
		<pubDate>Tue, 23 Apr 2019 18:57:12 +0000</pubDate>
		<dc:creator><![CDATA[Scott]]></dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[OpenVPN]]></category>
		<category><![CDATA[routers]]></category>
		<category><![CDATA[tunnel]]></category>
		<category><![CDATA[VPN]]></category>

		<guid isPermaLink="false">http://s.co.tt/?p=2016</guid>
		<description><![CDATA[Intro My friends will tell you that I&#8217;m obsessed with redundancy, both in life and in I.T. At home I have two main internet connections, via Altice Optimum (&#8220;cable&#8221;) and Verizon FiOS. They&#8217;re both relatively high bandwidth, and are connected to my two core routers that operate in an active/passive configuration. Basically this: O------O +--------+ / \ &#124; &#124;------------/ O +------------------+--------------------&#124; Core &#124; / / &#124; Optimum Router &#124; &#124; Router &#124;----------O / +------------------+\ ______________&#124; 01 &#124; \ O \ / &#124; &#124;------------O \ \ / +--------+ / \ X Keepalived &#124; / Various O / \ Heartbeat &#124; O Networks / / \ +--------+ \ O +------------------+/ \_____________&#124; &#124;-----------\ \ &#124; FiOS Router &#124; &#124; Core &#124; \ O … <a class="continue-reading-link" href="http://s.co.tt/2019/04/23/redundant-vpn-tunnels/"> Continue reading</a>]]></description>
				<content:encoded><![CDATA[<h2>Intro</h2>
<p>My friends will tell you that I&#8217;m obsessed with redundancy, both in life and in I.T.</p>
<p>At home I have two main internet connections, via Altice Optimum (&#8220;cable&#8221;) and Verizon FiOS.  They&#8217;re both relatively high bandwidth, and are connected to my two core routers that operate in an active/passive configuration.  Basically this:</p>
<pre>
                                                                O------O
                                        +--------+             /        \
                                        |        |------------/          O
+------------------+--------------------|  Core  |           /          /
|  Optimum Router  |                    | Router |----------O          /
+------------------+\     ______________|   01   |           \        O
                     \   /              |        |------------O        \
                      \ /               +--------+           /          \
                       X          Keepalived |              /  Various   O
                      / \          Heartbeat |             O  Networks  /
                     /   \              +--------+          \          O
+------------------+/     \_____________|        |-----------\          \
|   FiOS Router    |                    |  Core  |            \          O
+------------------+--------------------| Router |-------------O        /
                                        |   02   |            /        /
                                        |        |-----------O        /
                                        +--------+            \      /
                                                               O----O		   
</pre>
<p>Hmmm.. I can&#8217;t tell if that thing on the right looks like a cloud or a turd.  Probably the latter.  I&#8217;ll skip the ASCII &#8220;art&#8221; next time.</p>
<p>But is that really enough?  Ever since &#8220;hurricane&#8221; Sandy I&#8217;ve been worried about losing both FiOS and Optimum simultaneously.  It&#8217;s never happened due to a coincidence of network failures on both providers, but it&#8217;s a different story if a tree takes out the lines.</p>
<p>Enter Sprint.  Many years ago, I <a href="/2014/08/25/netgear-lg-6100d-lte-gateway-for-sprint-review/">configured a Netgear 6100D</a> from Sprint to act as an emergency failover (and backdoor) so some things would stay up and running in the event of a failure.  But lately I started thinking about the scenario of a core router failure.</p>
<p>Now, I should point out that, aside from misconfiguration oopsies on my end, I&#8217;ve never had a complete failure of both core routers.</p>
<p>Nonetheless, wouldn&#8217;t it be better to have yet another router &#8212; sorta seperate from the other two &#8212; in case they go down for whatever reason?  And wouldn&#8217;t it be yet better if that new router wasn&#8217;t reliant on the Optimum and FiOS lines?  And wouldn&#8217;t it be even superer betterer if the new router also had two independent internet connections?</p>
<p>Yes.</p>
<p>This isn&#8217;t as costly as it sounds, btw.  My routers are just commodity hardware (right now they all happen to be Dell T110 II chassis with a bunch of NICs giving 12 ports per router).</p>
<p>The Sprint connection costs ~$15/mo (after taxes and fees) for 1GB per month (more than enough for the veritable trickle of pings that run through it on a regular basis).</p>
<p>And it was cheap enough for me to add a second cell connection via T-Mobile&#8217;s network, because I have Google Fi (aka Project Fi) which provides free &#8220;data only&#8221; SIMs that operate on TMo.  (Note that a full Fi phone will choose the best connection amongst TMo, Sprint, and Something Cellular.)  The &#8220;data only&#8221; SIM shares its allowance with my regualr Fi user account, so the cost there is negligible.  I did, however, purchase a Netgear LB1121 which is a very simple 4G LTE to Ethernet &#8220;adapter&#8221; (to call it a router would do disservice to actual routers).</p>
<p><a href="http://s.co.tt/2019/04/23/redundant-vpn-tunnels/network-diagram-or-whatever/" rel="attachment wp-att-2019"><img src="http://s.co.tt/wp-content/uploads/2019/04/Network-Diagram-or-Whatever-740x510.png" alt="Network Diagram or Whatever" width="740" height="510" class="aligncenter size-large wp-image-2019" /></a></p>
<p>To be fair, I think the ASCII diagram was better.</p>
<p>The one thing that might be perplexing about this diagram is the External Backup VPN01 machine in the lower-right.</p>
<p>Perhaps needless to say, the Sprint and TMo connections won&#8217;t have static IPs.  To make matters worse, they&#8217;ll only have one IP each.  I did prevously use dynamic DNS with the Sprint device, but the Netgear 6100D is a <a href="/2014/08/25/netgear-lg-6100d-lte-gateway-for-sprint-review/">HUGE pile of shit</a>.*</p>
<p>*The biggest embarassment for the 6100D is that it comes with a telnet interface exposed.  Which you can&#8217;t turn off.  Which has no password.  Which lets you view AND EDIT the config files for the entire device.  Oh, and did I mention that a config file includes the admin password?  IN PLAIN TEXT?  Disgusting.</p>
<p>Besides, dynamic DNS would still only afford me one non-redundant IP per connection, and cellular network IPs can change <strong>very</strong> frequently.</p>
<p>Hence I spooled up an Amazon EC2 instance and installed OpenVPN on it.  The backup router at my house connects to it via two independent tunnels, such that if one internet connection/VPN tunnel goes down, traffic will still flow on the other one.</p>
<h2>Network Interface Naming</h2>
<p>It took me a shockingly long time to figure out that this was a good idea, but I change the udev rules on my systems to rename the network ports to something logical.  Usually it&#8217;s the name of the network to which the port is connected.  So, for example:</p>
<blockquote><p>
File: <code>/etc/udev/rules.d/70-persistent-net.rules</code></p>
<p><code>SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1f:29:5a:c5:d7", ATTR{type}=="1", KERNEL=="eth*", NAME="<b>ethdev</b>"</code></p>
<p><code>SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1f:29:5a:c5:d6", ATTR{type}=="1", KERNEL=="eth*", NAME="<b>ethgst</b>"</code></p>
<p><code>SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="90:e2:ba:69:bf:91", ATTR{type}=="1", KERNEL=="eth*", NAME="<b>ethmgt</b>"</code>
</p></blockquote>
<p>That&#8217;s a snippet from one of my core routers.  (Note that I&#8217;m using CentOS/RedHat; The location and format of that file may differ.)  The interface names are bolded, and correlate this way:</p>
<p><code>ethdev</code> = Development network<br />
<code>ethgst</code> = Guest network<br />
<code>ethmgt</code> = Management network</p>
<p>Of course, if you rename the interfaces here you&#8217;ll have to rename them anywhere else.  <code>grep -R eth0 /etc/* 2> /dev/null</code> should find every existing use of <code>eth0</code> if, for example, that were the name of the interface before the change.  Particularly look at your network configuration scripts (<code>/etc/sysconfig/network-scripts/ifcfg-*</code> in my case) and your firewall rules which may or may not specify interface names.</p>
<p>Strictly speaking, it&#8217;s not necessary to start the interface name with &#8220;<code>eth</code>&#8220;, but I stick with that to distinguish, for example, hardline ethernet interfaces from VPN tunnel or WLAN interfaces.</p>
<p>And likewise I also name the VPN tunnels, usually based upon what&#8217;s on the opposite end of the tunnel.  But in the case of this article, I named them based upon the ISP via which the traffic transits.</p>
<h2>OpenVPN Server Configuration Files</h2>
<p>I&#8217;m using OpenVPN 2.4.7.  If you&#8217;re using a different version, the options presented here may differ.  But this should be acceptable for many a version.</p>
<p>Per my poorly construed diagram above, I want to connect a router at my house (<code>rtr-backup01</code>) to an Amazon EC2 instance in &#8220;the cloud&#8221; (<code>ext-backup-vpn01</code>).</p>
<p>The EC2 host is a nano instance, incidentally.  One CPU core, 1GB RAM, and 8GB disk space.  That&#8217;s actually more than what&#8217;s required for this purpose, so don&#8217;t go overboard in a similar circumstance.</p>
<p>There will be two VPN tunnels connecting those two hosts, which will be redundant to each other.  One tunnel will be connected via Sprint, and the other via T-Mobile.</p>
<p>Here&#8217;s the <code>tmobile</code> server config:  </p>
<p>(I show the <code>sprint</code> configs all together down below so you can see the differences, though they&#8217;re broadly similar.)</p>
<blockquote><p>
port 1199<br />
proto tcp<br />
dev tuntmobile<br />
ca ext-backup-vpn01/ca.crt<br />
cert ext-backup-vpn01/ext-backup-vpn01.crt<br />
key ext-backup-vpn01/ext-backup-vpn01.key<br />
dh ext-backup-vpn01/dh2048.pem<br />
server 10.208.3.0 255.255.255.0<br />
push &#8220;route 172.31.41.125 255.255.255.255&#8243;<br />
push &#8220;route 172.31.41.126 255.255.255.255&#8243;<br />
push &#8220;route 10.71.246.0 255.255.255.0&#8243;<br />
client-connect ext-backup-vpn01/ccd/client-connect-tmobile.bsh<br />
client-disconnect ext-backup-vpn01/ccd/client-disconnect-tmobile.bsh<br />
route-metric 10<br />
client-config-dir ext-backup-vpn01/ccd<br />
topology p2p<br />
cipher AES-128-CBC<br />
comp-lzo<br />
tcp-nodelay<br />
persist-key<br />
#persist-tun<br />
keepalive 5 30<br />
status /var/log/openvpn/ext-backup-vpn01-tmobile.status<br />
log /var/log/openvpn/ext-backup-vpn01-tmobile.log<br />
verb 3<br />
mute 20
</p></blockquote>
<p>The <code>port</code>, <code>proto</code>col, and <code>dev</code> fields are pretty standard and self explanatory.</p>
<p>Same goes for the <code>ca</code>, <code>cert</code>, <code>key</code> and <code>dh</code> fields.  I won&#8217;t get into the generation of certificates (etc.) here, but there are plenty of good tutorials on the subject.</p>
<p><code>server</code> must be different between the two tunnels, otherwise it&#8217;ll lead to confusion when trying to route traffic.  This essentially defines the network that will be used within the VPN tunnel, between the server and client.  (In this case there&#8217;s only ever going to be one client, but all clients would be allocated an address in this space.)</p>
<p>The <code>push</code> commands tell the clients which networks are accessible via the tunnel, on the server side.  In this example, the two addresses beginning with <code>172.31.41</code> are the private network addresses of the EC2 instance, as assigned by Amazon.  The network <code>10.71.246.0</code> is used by a different VPN instance, allowing me to connect to <code>ext-backup-vpn01</code> from anywhere.</p>
<p><strong>These are the two most important configuration items</strong>, at least as far as making these redundant tunnels function properly:</p>
<p><code>client-connect</code> and <code>client-disconnect</code> specify shell scripts that are run when the client connects and then disconnects, respectively.  In my case, the purpose of those scripts is to establish routes to the networks behind each client when they connect, and to tear down those routes when they disconnect.  I&#8217;ll post the full code for those below.</p>
<p><code>route-metric</code> is essentially ignored, as the two scripts mentioned above set the routes and their metrics.  Usually this setting would be used to establish the metric for routes created by OpenVPN, e.g. with the <code>route</code> configuration option.  I left it in the config as a reminder:  The <code>tmobile</code> routes have a metric of <code>10</code> whereas the <code>sprint</code> routes have a metric of <code>20</code>.</p>
<p><code>client-config-dir</code> points to a directory that contains various configuration options specific to each client.  I&#8217;ll also show that below.</p>
<p><code>topology p2p</code> specifies that it&#8217;s a point-to-point configuration.  (Not valid when using Windows.)  <a target="_blank" href="https://community.openvpn.net/openvpn/wiki/Topology">Here&#8217;s a more robust discussion of that option.</a></p>
<p><code>cipher</code>, <code>comp-lzo</code>, and <code>persist-key</code> are pretty standard options.  See <a target="_blank" href="https://openvpn.net/community-resources/reference-manual-for-openvpn-2-4/">the OpenVPN reference manual</a> for more info on these and all other options.</p>
<p><code>persist-tun</code> may be essential for other use cases, as it causes the tunnel interface (i.e. <code>tuntmobile</code>) to remain even when there&#8217;s no connectivity between server and client.  You may have some scripts or programs that rely on finding your tunnel&#8217;s interface, or it may be referenced elsewhere.  For example, I&#8217;m not sure what would happen if you referenced a transient network interface in your <code>iptables</code> config.  In my case, I want the tunnel interface to be torn down when the tunnel isn&#8217;t established.</p>
<p><strong>Another important option:</strong> <code>keepalive [interval] [timeout]</code>.  The interval parameter is the frequency at which the client &#8220;pings&#8221; the server to determine if the tunnel is still up.  The timeout parameter is the amount of time without a successful ping that would elapse before OpenVPN decides the tunnel is actually down.  Importantly, when it decides the tunnel is down, <strong>the <code>client-disconnect</code> script is run</strong>. </p>
<p>You may need to fine-tune <code>keepalive</code> to suit your needs, but remember that the <code>timeout</code> is the minimum amount of time that the primary tunnel will be down before its routes disappear, thereby allowing the secondary tunnel to take over traffic.</p>
<p>Due to the routing metric of the <code>tmobile</code> tunnel being lower (10) than that of the <code>sprint</code> tunnel (20), <code>tmobile</code> is the primary tunnel.  So when that connection goes down, it will take at least 30 seconds (but probably no more than 40-ish) for <code>sprint</code> to take over.</p>
<p><code>status</code>, <code>log</code>, <code>verb</code>, and <code>mute</code> all relate to logging (and status, natch), and can be set as desired.</p>
<h2>Client [Dis]connect Scripts</h2>
<p>Incidentally, these scripts don&#8217;t need to live in the <code>client-config-dir</code> (named <code>ccd</code>), but that&#8217;s where I felt like putting them.</p>
<p><strong>Note that they do need to be readable and executable by the OpenVPN process.</strong>  So if, for example, <code>openvpn</code> runs in the user:group context of <code>openvpn:openvpn</code>, then you&#8217;ll want to <code>chown openvpn:openvpn *</code> and <code>chmod ug+rx *</code> for your scripts (where <code>*</code> would only reference the applicable scripts).</p>
<p>Also, <strong>your OpenVPN process must have the ablity to create routes in the kernel routing table</strong> (though you can use tables other than the main/default table).  It can be useful, when troubleshooting, to run the OpenVPN process as <code>root:root</code>.  Once everything is working, you can manipulate the user/group context. </p>
<p>Here&#8217;s what I have in the script referenced by <code>client-connect ext-backup-vpn01/ccd/client-connect-tmobile.bsh</code> (one also exists for <code>sprint</code>, and is shown much farther down on this page):</p>
<blockquote><p>
#!/bin/bash<br />
while read ROUTE; do<br />
        ip route <b>add</b> $ROUTE via <b>$ifconfig_local</b> metric <b>10</b> >> /var/log/openvpn/client-connect-tmobile.log 2>&#038;1<br />
done < /etc/openvpn/ext-backup-vpn01/ccd/client-connection-routes<br />
exit 0
</p></blockquote>
<p>And here&#8217;s <code>client-connect ext-backup-vpn01/ccd/client-disconnect-tmobile.bsh</code> (one also exists for <code>sprint</code>:</p>
<blockquote><p>
#!/bin/bash<br />
while read ROUTE; do<br />
        ip route <b>del</b> $ROUTE via <b>$ifconfig_local</b> metric <b>10</b> >> /var/log/openvpn/client-disconnect-tmobile.log 2>&#038;1<br />
done < /etc/openvpn/ext-backup-vpn01/ccd/client-connection-routes<br />
exit 0
</p></blockquote>
<p>Both of those files reference the file <code>/etc/openvpn/ext-backup-vpn01/ccd/client-connection-routes</code>, which in my case contains:</p>
<blockquote><p>
10.201.0.0/16<br />
10.253.0.0/16<br />
10.1.1.0/24<br />
10.1.2.0/24<br />
192.168.0.0/21<br />
192.168.10.0/24<br />
10.250.0.0/16<br />
10.101.0.0/16<br />
10.121.0.0/16<br />
192.168.90.0/24<br />
192.168.81.0/24
</p></blockquote>
<p>Each of the networks above are accessible on the client end of the tunnels.</p>
<p>The scripts iterate through each line of <code>/etc/openvpn/ext-backup-vpn01/ccd/client-connection-routes</code>, calling <code>ip route add</code> or <code>ip route del</code> to either establish or remove the routes when the <code>client-connect</code> or <code>client-disconnect</code> scripts are called.</p>
<p><strong>The only difference between the <code>client-connect</code> and <code>client-disconnect</code> scripts above is that one contains <code>add</code> and the other contains <code>del</code>.</strong></p>
<p><strong>The only difference between the <code>tmobile</code> version of the scripts shown above and the <code>sprint</code> versions is the <code>metric</code>.</strong>  (And, as you can see, the name of the log file.. which is not required, but may help with debugging.)</p>
<p><strong>The astute viewers amongst you</strong> will say &#8220;WTF? That could all be done with one script!&#8221;</p>
<p>Kinda.</p>
<p>Because I&#8217;m running two separate instances of OpenVPN servers, each one needs both a connect and disconnect script.  (That&#8217;s 4 total.)  Those scripts could then call a single script which would do all the route manipulation.  I dunno, what I have is pretty functional, but yes, it could be a bit more streamlined.</p>
<p>Note that OpenVPN sets a whole bunch of environment variables in the context of each script when calling it.  See <a target="_blank" href="https://openvpn.net/community-resources/reference-manual-for-openvpn-2-4/">the OpenVPN reference manual</a> for a full list.  (The document doesn&#8217;t appear to have anchor tags, but search the page for &#8220;bytes_received&#8221;.  That&#8217;s the first variable in the list.)</p>
<p>So you could have all sorts of caveats (if/then) and other functionality within those scripts.  If you had multiple clients connecting to the same server instance, those variables would tell you who that client is, and as such you could take different actions for different clients.  It&#8217;s actually a pretty robust arrangement.</p>
<p>The only environment variable I&#8217;m using is <code>$ifconfig_local</code>, which is the IP address of the server on its end of the VPN tunnel.  So, in the examples above, <code>10.208.3.0 255.255.255.0</code> is the VPN&#8217;s network (defined by the <code>server</code> option in the config file), and so <code>10.208.3.1</code> is the server&#8217;s IP.  Thusly, <code>$ifconfig_local</code> is  <code>10.208.3.1</code>.</p>
<p>The last bit of the configs are the client config directory files.</p>
<p>Here&#8217;s the contents of <code>ext-backup-vpn01/ccd/client-tmobile01</code>.  </p>
<p>BTW, that directory is defined in the main OpenVPN config file by the parameter <code>client-config-dir</code>, and the file name (<code>client-tmobile01</code>) is the X509 name of the client certificate (defined when you created the certificate).</p>
<blockquote><p>
ifconfig-push 10.208.3.100 10.208.3.1<br />
iroute 10.201.0.0 255.255.0.0<br />
iroute 10.253.0.0 255.255.0.0<br />
iroute 10.1.1.0 255.255.255.0<br />
iroute 10.1.2.0 255.255.255.0<br />
iroute 192.168.0.0 255.255.248.0<br />
iroute 192.168.10.0 255.255.255.0<br />
iroute 10.250.0.0 255.255.0.0<br />
iroute 10.250.0.0 255.255.0.0<br />
iroute 10.101.0.0 255.255.0.0<br />
iroute 10.121.0.0 255.255.0.0<br />
iroute 192.168.90.0 255.255.255.0<br />
iroute 192.168.81.0 255.255.255.0
</p></blockquote>
<p>There is something important to note here: <strong><code>iroute</code> does NOT create routes in the kernel routing table.</strong>  That&#8217;s what the scripts above do.</p>
<p><code>iroute</code> tells OpenVPN itself that it is capable of transiting traffic to that network.  Hence every single one of those <code>iroute</code> commands correlates to a network in the file <code>/etc/openvpn/ext-backup-vpn01/ccd/client-connection-routes</code>, above.  <strong>The routes need to be enumerated in both places.</strong></p>
<p>(I only thought of this just now, but to avoid maintaining two different lists the <code>client-[dis]connect</code> scripts could iterate through the client config file and create a route in the kernel routing table for each of the <code>iroute</code> lines.)</p>
<h2>OpenVPN Client Config Files</h2>
<p>Here&#8217;s the OpenVPN conf file for the <code>tmobile</code> client:</p>
<blockquote><p>
client<br />
dev tuntmobile<br />
proto tcp<br />
port 1199<br />
local 10.222.3.5<br />
remote 50.60.70.80<br />
route-metric 10<br />
resolv-retry infinite<br />
persist-key<br />
dh client-tmobile01/dh2048.pem<br />
ca client-tmobile01/ca.crt<br />
cert client-tmobile01/client-tmobile01.crt<br />
key client-tmobile01/client-tmobile01.key<br />
topology p2p<br />
up-delay<br />
cipher AES-128-CBC<br />
comp-lzo<br />
verb 3<br />
status /var/log/openvpn/client-tmobile01.status<br />
log /var/log/openvpn/client-tmobile01.log
</p></blockquote>
<p>There&#8217;s nothing too crazy on the client side, but there are a few things to discuss:</p>
<p><code>local 10.222.3.5</code> is the address of the ethernet interface which connects to the T-Mobile cell modem / &#8220;router&#8221; (the Netgear LB1121).</p>
<p>I&#8217;ve changed <code>remote</code> to a nonsense address to protect the innocent, but it&#8217;s the public (Elastic) IP of my EC2 instance on which the <code>tmobile</code> OpenVPN server runs.</p>
<p><code>up-delay</code> is probably best defined by the OpenVPN reference manual:</p>
<blockquote><p>Delay TUN/TAP open and possible –up script execution until after TCP/UDP connection establishment with peer.In –proto udp mode, this option normally requires the use of –ping to allow connection initiation to be sensed in the absence of tunnel data, since UDP is a “connectionless” protocol.</p>
<p>On Windows, this option will delay the TAP-Win32 media state transitioning to “connected” until connection establishment, i.e. the receipt of the first authenticated packet from the peer.</p></blockquote>
<p>Needless to say, the client configuration for the <code>sprint</code> connection is nearly identical, and is shown below.</p>
<h2>The Sprint-Related Files</h2>
<p>Just for completeness, here are the full readouts of the files on the <code>sprint</code> server.</p>
<p>I marked in <b>bold</b> each place where the files differ from the <code>tmobile</code> files.</p>
<blockquote><p>
<b>port 1198</b><br />
proto tcp<br />
<b>dev tunsprint</b><br />
ca ext-backup-vpn01/ca.crt<br />
cert ext-backup-vpn01/ext-backup-vpn01.crt<br />
key ext-backup-vpn01/ext-backup-vpn01.key<br />
dh ext-backup-vpn01/dh2048.pem<br />
<b>server 10.208.2.0 255.255.255.0</b><br />
push &#8220;route 10.71.246.0 255.255.255.0&#8243;<br />
push &#8220;route 172.31.41.125 255.255.255.255&#8243;<br />
push &#8220;route 172.31.41.126 255.255.255.255&#8243;<br />
<b>client-connect ext-backup-vpn01/ccd/client-connect-sprint.bsh</b><br />
<b>client-disconnect ext-backup-vpn01/ccd/client-disconnect-sprint.bsh</b><br />
<b>route-metric 20</b><br />
client-config-dir ext-backup-vpn01/ccd<br />
topology p2p<br />
cipher AES-128-CBC<br />
comp-lzo<br />
tcp-nodelay<br />
persist-key<br />
#persist-tun<br />
keepalive 10 30<br />
<b>status /var/log/openvpn/ext-backup-vpn01-sprint.status</b><br />
<b>log /var/log/openvpn/ext-backup-vpn01-sprint.log</b><br />
verb 3<br />
mute 20
</p></blockquote>
<p>Note that I used <strong>the same server certification authority, certificate, and key file</strong> for both servers.  It&#8217;s perhaps not best practice, but honestly what does it matter&#8230; if someone compromises one tunnel&#8217;s encryption, then they compromise both.  But they&#8217;re redundant connections serving the same purpose, so the risk is minimal.  You may, of course, use completely different certificates for both.</p>
<p><code>client-connect-sprint.bsh</code>:</p>
<blockquote><p>
#!/bin/bash<br />
while read ROUTE; do<br />
        ip route add $ROUTE via $ifconfig_local <b>metric 20</b> >> /var/log/openvpn/client-connect-<b>sprint</b>.log 2>&#038;1<br />
done < /etc/openvpn/ext-backup-vpn01/ccd/client-connection-routes<br />
exit 0
</p></blockquote>
<p><code>client-disconnect-sprint.bsh</code>:</p>
<blockquote><p>
#!/bin/bash<br />
while read ROUTE; do<br />
        ip route del $ROUTE via $ifconfig_local <b>metric 20</b> >> /var/log/openvpn/client-disconnect-<b>sprint</b>.log 2>&#038;1<br />
done < /etc/openvpn/ext-backup-vpn01/ccd/client-connection-routes<br />
exit 0
</p></blockquote>
<p><code>ext-backup-vpn01/ccd/client-sprint01</code>:</p>
<blockquote><p>
ifconfig-push <b>10.208.2.100 10.208.2.1</b><br />
iroute 10.201.0.0 255.255.0.0<br />
iroute 10.253.0.0 255.255.0.0<br />
iroute 10.1.1.0 255.255.255.0<br />
iroute 10.1.2.0 255.255.255.0<br />
iroute 192.168.0.0 255.255.248.0<br />
iroute 192.168.10.0 255.255.255.0<br />
iroute 10.250.0.0 255.255.0.0<br />
iroute 10.250.0.0 255.255.0.0<br />
iroute 10.101.0.0 255.255.0.0<br />
iroute 10.121.0.0 255.255.0.0<br />
iroute 192.168.90.0 255.255.255.0<br />
iroute 192.168.81.0 255.255.255.0
</p></blockquote>
<p>Here&#8217;s the configuration file on the <code>sprint</code> <strong>client</strong>.</p>
<blockquote><p>
client<br />
<b>dev tunsprint</b><br />
proto tcp<br />
<b>port 1198</b><br />
<b>local 10.222.2.5</b><br />
<b>remote 10.20.30.40</b><br />
<b>route-metric 20</b><br />
resolv-retry infinite<br />
persist-key<br />
#persist-tun<br />
<b>dh client-sprint01/dh2048.pem<br />
ca client-sprint01/ca.crt<br />
cert client-sprint01/client-sprint01.crt<br />
key client-sprint01/client-sprint01.key</b><br />
cipher AES-128-CBC<br />
topology p2p<br />
up-delay<br />
comp-lzo<br />
verb 3<br />
<b>status /var/log/openvpn/client-sprint01.status<br />
log /var/log/openvpn/client-sprint01.log</b>
</p></blockquote>
<h2>In Conclusion</h2>
<p>With both tunnels providing routes to my home infrastructure via Amazon&#8217;s network and my EC2 instance, I have the ability to have unlimited static, public IPs for the Sprint and T-Mobile connections.</p>
<p>Using iptables&#8217; <code>DNAT</code> manipulation, I can reverse NAT those public IPs to any internal IP addresses I desire.</p>
<p>Moreover, I have a separate VPN server running on the EC2 instance which will allow me to connect to it, and therefore my entire infrastructure, using an OpenVPN client on one of my laptops, tablets, or phones.  That&#8217;s particularly useful when I&#8217;m traveling and my network goes dark.  Up until now, if my cable and FiOS connections went down or my core routers went down, I&#8217;d have no visibility as to what happened.  This was also true if I became subject to a DDOS attack.</p>
<p>Finally, by having the backup router and backup internet connections, I can route outgoing mail through them as a redundant path.  That means that my Zabbix servers (for system monitoring) and other scripts can communicate issues to me even during a widespread outage.</p>
<p>Overkill?</p>
<p>Definitely.</p>
<p>Fun?</p>
<p>Definitely.  </p>
<p>Though your mileage may vary ;)</p>
<h2>Gratuitous Pics</h2>
<div id="attachment_2047" style="width: 565px" class="wp-caption aligncenter"><a href="http://s.co.tt/wp-content/uploads/2019/04/IMG_20190425_232118.jpg"><img src="http://s.co.tt/wp-content/uploads/2019/04/IMG_20190425_232118-555x740.jpg" alt="Backup Router (Dell PowerEdge T110 II)" width="555" height="740" class="size-large wp-image-2047" /></a><p class="wp-caption-text">This is the backup router which maintains the VPN tunnels via Sprint and T-Mobile to Amazon&#8217;s network (and hence my EC2 instance).   In addition to the connections for those two cellular ISPs, it also connects to my FiOS line for direct VPN access.  The other connections are for various in-house networks.</p></div>
<div id="attachment_2048" style="width: 565px" class="wp-caption aligncenter"><a href="http://s.co.tt/2019/04/23/redundant-vpn-tunnels/img_20190425_232155/" rel="attachment wp-att-2048"><img src="http://s.co.tt/wp-content/uploads/2019/04/IMG_20190425_232155-555x740.jpg" alt="Netgear / T-Mobile LB1121 WWAN to LAN Router" width="555" height="740" class="size-large wp-image-2048" /></a><p class="wp-caption-text">This is the Netgear LB1121 which provides connectivity to T-Mobile&#8217;s network.  It&#8217;s not exactly feature rich, but it serves the purpose of providing an ethernet port routed to T-Mobile.  It does have PoE, though, which is pretty awesome.  Here I&#8217;m just using the internal antennae, and as you can see I get mediocre service in the basement.  (I may put this upstairs eventually&#8230; hmmm.)</p></div>
<div id="attachment_2049" style="width: 565px" class="wp-caption aligncenter"><a href="http://s.co.tt/2019/04/23/redundant-vpn-tunnels/img_20190425_232207/" rel="attachment wp-att-2049"><img src="http://s.co.tt/wp-content/uploads/2019/04/IMG_20190425_232207-555x740.jpg" alt="Netgear / Sprint 6100D WWAN to LAN Router" width="555" height="740" class="size-large wp-image-2049" /></a><p class="wp-caption-text">This is the Netgear 6100D, providing connectivity via Sprint&#8217;s network.  Even though the software of this device is terrible, it&#8217;s pretty good hardware-wise.  It even has PoE!  (But only on the WAN port for some bizarre reason.  That&#8217;s why it has 2 ethernet cables running to it; One is just for power.)  There&#8217;s also a coax cable attached to it, connecting to a directional antenna in my attic!  <a href="/2014/12/15/sprint-netgear-6100d-4g-antenna-installation-video/" style="color: #FFFFFF; text-decoration: underline;">I did a whole video about that install, which you can check out if you&#8217;re bored.</a>  :)</p></div>
]]></content:encoded>
			<wfw:commentRss>http://s.co.tt/2019/04/23/redundant-vpn-tunnels/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Netgear LG 6100D Sprint LTE Gateway &#8211; Advanced Configuration</title>
		<link>http://s.co.tt/2014/08/26/netgear-lg-6100d-sprint-lte-gateway-advanced-configuration/</link>
		<comments>http://s.co.tt/2014/08/26/netgear-lg-6100d-sprint-lte-gateway-advanced-configuration/#comments</comments>
		<pubDate>Tue, 26 Aug 2014 22:07:19 +0000</pubDate>
		<dc:creator><![CDATA[Scott]]></dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Netgear]]></category>
		<category><![CDATA[routers]]></category>
		<category><![CDATA[Sprint]]></category>

		<guid isPermaLink="false">http://s.co.tt/blog/?p=816</guid>
		<description><![CDATA[Man, oh man! I was getting frustrated with my new 6100D LTE gateway from Sprint. In fact, I posted a very long rant about it yesterday. This post is all about solutions. Really, it&#8217;s about one very big solution: http://[Netgear 6100D Address]/index.asp What is that? Oh, not much, just the native Netgear configuration GUI. It has about ten times the feature set of Sprint&#8217;s half-baked GUI. Seriously. Already have a problem? This didn&#8217;t happen to me at first, but I must have triggered some state within the 6100D that causes this screen to appear when returning to the Netgear GUI after having used the Sprint GUI: If you find yourself redirected to this utterly pointless landing page, just change the … <a class="continue-reading-link" href="http://s.co.tt/2014/08/26/netgear-lg-6100d-sprint-lte-gateway-advanced-configuration/"> Continue reading</a>]]></description>
				<content:encoded><![CDATA[<p>Man, oh man!  I was getting frustrated with my new 6100D LTE gateway from Sprint.  In fact, I posted a <a href="http://s.co.tt/blog/blog/2014/08/25/netgear-lg-6100d-lte-gateway-for-sprint-review/">very long rant about it yesterday</a>.</p>
<p><strong>This post is all about solutions.</strong></p>
<p>Really, it&#8217;s about one very big solution:</p>
<h2>http://<code><em>[Netgear 6100D Address]</em></code>/index.asp</h2>
<p><a href="http://s.co.tt/blog/wp-content/uploads/2014/08/6100D_netgear_genie_home_screen.png"><img src="http://s.co.tt.kisocdnb.net/blog/wp-content/uploads/2014/08/6100D_netgear_genie_home_screen-300x206.png" alt="Netgear 6100D Native GUI Home Screen" title="Netgear 6100D Native GUI Home Screen" width="300" height="206" class="aligncenter size-medium wp-image-824" /></a></p>
<p>What is that?  Oh, not much, just <strong>the native Netgear configuration GUI</strong>.</p>
<p>It has about <strong>ten times</strong> the feature set of Sprint&#8217;s half-baked GUI.  Seriously.</p>
<h3>Already have a problem?</h3>
<p>This didn&#8217;t happen to me at first, but I must have triggered some state within the 6100D that causes this screen to appear when returning to the Netgear GUI after having used the Sprint GUI:</p>
<p><a href="http://s.co.tt/blog/wp-content/uploads/2014/08/6100D_pointless_landing_page.png"><img src="http://s.co.tt.kisocdnb.net/blog/wp-content/uploads/2014/08/6100D_pointless_landing_page-300x185.png" alt="Netgear 6100D - Pointless landing page" title="Netgear 6100D - Pointless landing page" width="300" height="185" class="aligncenter size-medium wp-image-880" /></a></p>
<p>If you find yourself redirected to this <strong>utterly pointless</strong> landing page, just change the path of the URL to <code>/adv_index.asp</code> (I assume you want the advanced config page).</p>
<p>Clicking &#8220;Take me to the Internet&#8221; uselessly takes you to Netgear&#8217;s site.</p>
<h3>The good&#8230;</h3>
<p>What can it do that the Sprint branded GUI can&#8217;t?</p>
<ul>
<li><strong>Static routes</strong></li>
<li>Ability to turn the DLNA server off (Sprint doesn&#8217;t even mention it, but it&#8217;s enabled by default)</li>
<li>Multicast settings</li>
<li>UPnP advertisement settings (as opposed to just on or off)</li>
<li>Better port forwarding settings with port triggering</li>
<li>Wireless repeater settings</li>
<li><strong><del>The ability to disable the WiFi radios</del></strong><em>  Update: Though this option exists, hitting the &#8220;Apply&#8221; button on the page does nothing.</em></li>
<li>FTP server settings</li>
<li>Email notification settings (for alerts and logs)</li>
<li><strong>A DMZ server setting that lets you change all four octets</strong></li>
<li>VPN passthrough settings</li>
<li>RIP settings</li>
<li>QoS settings</li>
<li><strong>The menu system is generally organized in a logical fashion and it&#8217;s easy to navigate</strong></li>
<li>The ability to send and receive SMS messages (It doesn&#8217;t work for me, but that&#8217;s probably because my plan doesn&#8217;t include SMS)</li>
</ul>
<p>&#8230;and that&#8217;s just what I found on my first quick look.</p>
<p><strong>Sprint completely crippled this device.</strong></p>
<h3>&#8230;the bad and the ugly</h3>
<ul>
<li>Sometimes the Netgear GUI redirects you to a page that asks if you want to use a wizard to configure the router or configure it manually.  A minor annoyance.</li>
<li>The interface has a very 90s look and feel (as opposed to the Sprint-branded interface which is cleaner)</li>
<li>There&#8217;s a link to &#8220;documentation&#8221;, which opens up a window for the N600 Wireless Dual Band Gigabit Router*</li>
<li><strong>I still can&#8217;t find a place to turn off the telnet console</strong></li>
<li>Strangely the date and time settings only list &#8220;AU 2011-2012&#8243; as a daylight savings time option.</li>
<li>They really can&#8217;t get their timezone knowledge together.  On the Sprint GUI it lists &#8220;<strong>E</strong>ST (<strong>Central</strong> Standard Time)&#8221;, and in the Netgear GUI the timezone options are &#8220;EST&#8221;, &#8220;CST&#8221;, and &#8220;<strong>WST</strong>&#8221; (which should be PST).</li>
<li>After using the Netgear web GUI and going back to the Sprint-branded GUI, it requires that you agree to the EULA again.  This makes me think that at least one flag is getting wiped out when the Netgear GUI re-writes the config.</li>
</ul>
<p><em>*Check out the <a href="http://s.co.tt.kisocdnb.net/blog/wp-content/uploads/2014/08/Netgear_WNDRMAC_N600_Wireless_Router_User_Manual_20140826.pdf">N600 User Manual</a>.  It describes a lot of the 6100D settings in more detail than the Sprint documentation.</em></p>
<h3>Major flaws</h3>
<p>I don&#8217;t mean to harp on this, but it&#8217;s so significant that I can&#8217;t help it:</p>
<p><strong>There is an an unprotected telnet server that cannot be turned off, requires no authentication, and lets anyone view and MODIFY the router&#8217;s config.  This includes VIEWING THE ADMIN PASSWORD IN PLAINTEXT!</strong></p>
<p>I&#8217;ve hit another bug twice now:</p>
<p>For no consistent reason that I can discern, <strong>the device will start flooding the LAN with IGMP (multicast) messages.</strong>  For example:</p>
<pre><code>15:25:09.027136 IP (tos 0xc0, ttl 1, id 0, offset 0, flags [none], proto IGMP (2), length 36, options (RA))
    10.222.2.1 > 224.0.0.1: igmp query v3</code></pre>
<p>It&#8217;s creating these messages as fast as it can; When this is happening <code>igmpproxy</code> uses around 75% CPU with the remainder used for IO.  The GUI also becomes unresponsive.  Fortunately BusyBox (via telnet) does not, so a remote reboot is possible.</p>
<p>This IGMP activity lasts a few minutes, but then refreshing the GUI causes (?) it to start again.  I haven&#8217;t spent a lot of time testing this issue, but it is a PITA.</p>
<p>Then we have a nice one where <strong>the router seems use THE MAC ADDRESS for port forwarding regardless of the actual IP setting.</strong></p>
<p>For example, let&#8217;s look at this composite of screencaps:</p>
<p><a href="http://s.co.tt/blog/wp-content/uploads/2014/08/6100D_port_forwarding_by_mac.png"><img src="http://s.co.tt.kisocdnb.net/blog/wp-content/uploads/2014/08/6100D_port_forwarding_by_mac.png" alt="Netgear 6100D - Appears to do port forwarding by MAC" title="Netgear 6100D - Appears to do port forwarding by MAC" width="635" height="464" class="aligncenter size-full wp-image-864" /></a></p>
<p>What&#8217;s going on here?</p>
<p>On the top is the active <strong>port forwarding</strong> configuration of the 6100D, after a save.  On the bottom is a <code>tcpdump</code> of the traffic between the 6100D and my core router.</p>
<p>The 6100D is <strong>sending traffic to <code>10.222.2.3</code></strong> even though I have it <strong>set to send traffic to <code>10.222.1.1</code></strong>.</p>
<p>Where is it getting the IP address <code>10.222.2.3</code>?  Well, it&#8217;s right there in the lower right of the device settings.  <strong>But that option is NOT selected.</strong></p>
<p>Why is it showing that IP?  Without getting into too much detail, I have two core routers running in a master/backup configuration.  They each have a &#8220;real&#8221; IP on the <code>10.222.1.0/16</code> network (last octets being <code>3</code> and <code>4</code> respectively, as well as a VIP (last octet of <code>1</code>).</p>
<p>The routers are also my VPN servers, so I want VPN traffic (in this example) sent to the VIP, which is <code>10.222.1.1</code>.  This way it doesn&#8217;t matter if the backup router takes over;  The VIP will be reassigned to it and traffic will continue to flow.</p>
<p>The address of <code>10.222.<strong>2</strong>.3</code> came from a misconfiguration (my fault).  I forgot to change that when I changed the VIP.  That <strong>is no big deal</strong> in this case, because this is a <code>/16</code> (class B) network, and so <code>10.222.2.3</code> and <code>10.222.1.1</code> can coexist on it just fine.</p>
<p>My misconfiguration is not the cause of the problem, because even <strong>after</strong> I changed the &#8220;real&#8221; IP on the router to <code>10.222.1.3</code>, it still sent traffic to that IP instead of the VIP!</p>
<p><strong>However</strong>, both the &#8220;real&#8221; IP and the VIP have the same MAC address.  This shouldn&#8217;t be a problem either, because we only need to use the ARP table to find the MAC address for the IP, and not the other way around.  Here&#8217;s the ARP table on the 6100D:</p>
<p><a href="http://s.co.tt/blog/wp-content/uploads/2014/08/6100D_arp_table.png"><img src="http://s.co.tt.kisocdnb.net/blog/wp-content/uploads/2014/08/6100D_arp_table.png" alt="Netgear 6100D - ARP Table" title="Netgear 6100D - ARP Table" width="534" height="83" class="aligncenter size-full wp-image-867" /></a></p>
<p>For some reason it&#8217;s picking the first MAC address and forwarding traffic there;  I have no idea why they designed it like that!</p>
<p>Let&#8217;s dig into the config file (located at <code>/WFIO/current.cfg</code> in the 6100D&#8217;s unsecured BusyBox environment):</p>
<pre><code>table=FWPortRedirectionConfig;
columns=Enable;Nickname;Protocol;WANPortStart;WANPortEnd;LANIPAddress;LANPortStart;INSTNUM;isPredefined;isMore;portMapIndex;HostName;Permissions;Le
0;Westell Modem Service VoIP SIP;udp;5060;5060;MODEMREDIRECT;5060;1;1;0;0;;0;0;0;;
1;Westell Modem Service Envoy;tcp;6363;6363;MODEMREDIRECT;6363;2;1;0;0;;0;0;0;;
1;Westell Modem Service Rip;udp;520;520;MODEMREDIRECT;520;3;1;0;0;;0;0;0;;
1;VPN (SMR);tcp;1199;1199;10.222.1.3;1199;4;1;0;3;10.222.1.1;GUI, TR069;0;0;d4:ae:52:d4:62:02;</code></pre>
<p>First of all, why does it have two services <strong>enabled by default</strong> and <strong>not listed in the GUI?</strong></p>
<p>Secondly, the last line is my entry.  You&#8217;ll see that it has <code>10.222.1.3</code> listed as well as <code>10.222.1.1</code>.  Well, looking at the column headers it decided to stick in <code>10.222.1.3</code> as the <code>LANIPAddress</code>, with a <code>HostName</code> of <code>10.222.1.1</code>.</p>
<p>So the <strong>setting in the GUI for &#8220;Internal IP address&#8221; is actually the setting for the host name!?!?</strong></p>
<p>The worst part is that if I go into the BusyBox environment and manually change the <code>LANIPAddress</code> field to the correct IP, <strong>upon reboot it changes it right back</strong>.  There&#8217;s no way to win with this thing!</p>
<p>The problem arises that both of my core routers have different MAC addresses.  So if this thing is basing its decisions on the MAC address, what&#8217;s going to happen when the master fails and the backup takes over?  The master&#8217;s MAC address will be offline.  The VIP will still be online, but <strong>this thing may just ignore it</strong>.</p>
<p><em>(By the way, this is a testing environment.  That&#8217;s why you don&#8217;t see an entry in the ARP table for the backup router&#8217;s IP.)</em></p>
<p>I could remove the &#8220;real&#8221; IP address from the routers and just use a VIP, but that is irritating from an administrative perspective because the backup router will be unaddressable on this network.  Also, it may not solve the problem because the MAC address of the VIP will of course change in the event of a failure.</p>
<p>I also can&#8217;t give the master and backup the same MAC address, because that would confuse any device connected to this network.</p>
<p><em>Sigh.</em>  This will require more testing.</p>
<h3>SOLVED!</h3>
<p>The solution is simple, obvious, and of course it took a couple of hours to think of it:</p>
<p>Put the 6100D on its own <code>/24</code> and give the core routers a VIP in that <code>/24</code>.</p>
<p>In other words, the LAN configuration on the 6100D is now:</p>
<p>IP: <code>10.222.2.11</code><br />
Mask: <code>255.255.255.0</code></p>
<p>And the core routers now share:</p>
<p>VIP: <code>10.222.2.1</code> with a mask of <code>255.255.255.0</code></p>
<p>For administrative purposes (and expansion, etc) the master core router still holds its &#8220;real&#8221; IP of <code>10.222.1.3</code>, but it&#8217;s now masked as a <code>/24</code>, and it still has a VIP of <code>10.222.1.1/24</code>.</p>
<p>Despite having yet another IP on that physical network, it&#8217;s fenced from the others by its subnet mask (so the 6100D isn&#8217;t <strong>just</strong> basing its decisions on the MAC address).  Here we see the correct IP is detected for the core router&#8217;s MAC address:</p>
<p><a href="http://s.co.tt/blog/wp-content/uploads/2014/08/6100D_port_forwarding_correct_ip_for_mac.png"><img src="http://s.co.tt.kisocdnb.net/blog/wp-content/uploads/2014/08/6100D_port_forwarding_correct_ip_for_mac.png" alt="Netgear 6100D - Correct IP for MAC address" title="Netgear 6100D - Correct IP for MAC address" width="306" height="96" class="aligncenter size-full wp-image-892" /></a></p>
<p>Apparently the 6100D is a real slave to subnets.</p>
<h3>Config diffs</h3>
<p>Before fiddling with port forwarding and various other settings, I saved one setting in the Netgear GUI:  I added a static route.  That resulted in this snippet being added to the config file:</p>
<pre><code>table=StaticNetworkConfig;
columns=Enabled;Nickname;InterfaceTable;InterfaceReference;RouteType;IPDestination;IPNetmask;IPGateway;Metric;RIPAdvertised;SaveToFlash;INSTNUM;
1;Test Route;;;Network;10.78.1.0;255.255.255.0;10.222.1.1;10;1;1;2;</code></pre>
<p>The following entry was also added, even though I didn&#8217;t modify the NTP settings:</p>
<pre><code>table=NTPConfig;
columns=Enabled;NTPServer;NTPServerSec;Interval;DayLightSavingsUsed;LocalTimeZone;BackoffIntervalMin;BackoffIntervalMax;TimeZoneName;DayLightSavingsStart;DayLightSavingsEnd;
0;time-b.netgear.com;time-a.netgear.com;3600;1;GMT+5;5;60;;M4.1.0/02:00:00;M10.5.0/02:00:00;</code></pre>
<p>Otherwise it doesn&#8217;t look like anything else was altered, aside from some timestamps (phew).  More importantly, the router still works!</p>
<p>That&#8217;s important because I was concerned that the Netgear GUI might wipe out or otherwise alter important settings that the Sprint GUI had added in.</p>
<p><em>I keep talking about the GUIs because the fact is that <strong>I don&#8217;t know</strong> if there is any difference between the two GUIs as far as configuration management on the back end goes.  They may well use the same configuration management scheme, in which case of course they won&#8217;t conflict!  <strong>But it&#8217;s possible that they manage the config differently, and could kill each other&#8217;s settings.</strong></em></p>
<h3>Disclaimer</h3>
<p>I just found out about this roughly 30 minutes ago.  I have no idea what undesirable consequences might arise from changing settings in the Netgear GUI.  I don&#8217;t even know if all of them will work as intended.  So use this information at your own risk!</p>
]]></content:encoded>
			<wfw:commentRss>http://s.co.tt/2014/08/26/netgear-lg-6100d-sprint-lte-gateway-advanced-configuration/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Netgear LG 6100D LTE Gateway for Sprint Review &#8211; Bad Device, or the Worst Device?</title>
		<link>http://s.co.tt/2014/08/25/netgear-lg-6100d-lte-gateway-for-sprint-review/</link>
		<comments>http://s.co.tt/2014/08/25/netgear-lg-6100d-lte-gateway-for-sprint-review/#comments</comments>
		<pubDate>Mon, 25 Aug 2014 20:41:47 +0000</pubDate>
		<dc:creator><![CDATA[Scott]]></dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Rants]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Netgear]]></category>
		<category><![CDATA[rant]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[routers]]></category>
		<category><![CDATA[Sprint]]></category>

		<guid isPermaLink="false">http://s.co.tt/blog/?p=725</guid>
		<description><![CDATA[I recently obtained a Netgear LG6100D LTE Gateway from Sprint as a backup for my hard internet connections. The device seemed perfect on paper: Cellular connectivity for the home or business network! I&#8217;ve used some bad consumer routers in my day, but this is one of the worst I&#8217;ve encountered. Or maybe it&#8217;s that it looked so promising at first and then let me down so hard. Update (2014-08-26): I found that you can access the native Netgear web GUI. It has a heck of a lot more features, and solves many of the complaints I have with the &#8220;correct&#8221; way of configuring this device. Upon logging in the user interface is clean, fairly informative, and I noticed that the … <a class="continue-reading-link" href="http://s.co.tt/2014/08/25/netgear-lg-6100d-lte-gateway-for-sprint-review/"> Continue reading</a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://s.co.tt/blog/wp-content/uploads/2014/08/6100D_front_illustration_joke_9000.png"><img src="http://s.co.tt.kisocdnb.net/blog/wp-content/uploads/2014/08/6100D_front_illustration_joke_9000-300x80.png" alt="Netgear Joke 9000" title="Netgear Joke 9000" width="300" height="80" class="aligncenter size-medium wp-image-741" /></a></p>
<p>I recently obtained a Netgear LG6100D LTE Gateway from Sprint as a backup for my hard internet connections.  The device seemed perfect on paper: <strong>Cellular connectivity for the home or business network!</strong></p>
<p>I&#8217;ve used some bad consumer routers in my day, but this is one of the worst I&#8217;ve encountered.  Or maybe it&#8217;s that it looked so promising at first and then let me down so hard.</p>
<p><strong>Update (2014-08-26):</strong>  <a href="http://s.co.tt/blog/blog/2014/08/26/netgear-lg-6100d-sprint-lte-gateway-advanced-configuration/">I found that you can access the native Netgear web GUI.  It has a heck of a lot more features, and solves many of the complaints I have with the &#8220;correct&#8221; way of configuring this device.</a></p>
<p><a href="http://s.co.tt/blog/blog/2014/08/25/netgear-lg-6100d-lte-gateway-for-sprint-review/6100d_home_screen/" rel="attachment wp-att-726"><img src="http://s.co.tt.kisocdnb.net/blog/wp-content/uploads/2014/08/6100D_home_screen-300x249.png" alt="Netgear 6100D Home Screen" title="Netgear 6100D Home Screen" width="300" height="249" class="aligncenter size-medium wp-image-726" /></a></p>
<p>Upon logging in the user interface is clean, fairly informative, and I noticed that the values were updating automatically for <strong>Status</strong> and <strong>Data Usage</strong>.  Some AJAX is a nice touch on this kind of device.</p>
<p>The very first thing I decided to do upon seeing the Wi-Fi networks listed in the lower-left was to <strong>disable WiFi</strong>.  I&#8217;m going to be integrating this with my  existing network, and I already have multiple access points.</p>
<p><strong>Complaint 1:</strong>  There is no place to turn off WiFi.  You can turn off the &#8220;Guest Wi-Fi&#8221;, but can&#8217;t disable the 2.4Ghz and 5Ghz regular WiFi access points.</p>
<p>OK, fine.  Not a huge deal.  I set the passphrases to something ridiculously long and random, set the &#8220;Wi-Fi Range&#8221; to &#8220;Short&#8221;, hid the SSID and changed the connection rate to the lowest (narrowest) possible.  The device is in my basement, so hopefully that&#8217;ll be enough to prevent any Nosy Nellies from racking up charges on my data plan.</p>
<p>The next thing I did was to set up my LAN.  Here&#8217;s what the setup page looks like (I&#8217;m using some fake values for these screenshots):</p>
<p><a href="http://s.co.tt/blog/blog/2014/08/25/netgear-lg-6100d-lte-gateway-for-sprint-review/6100d_lan_settings/" rel="attachment wp-att-727"><img src="http://s.co.tt.kisocdnb.net/blog/wp-content/uploads/2014/08/6100D_lan_settings-300x271.png" alt="Netgear 6100D LAN Settings Page" title="Netgear 6100D LAN Settings Page" width="300" height="271" class="aligncenter size-medium wp-image-727" /></a></p>
<p>I did actually RTFM for the DMZ setting so that I was sure what it did:  All unsolicited traffic from public networks (the internet) will be forwarded to this address.</p>
<p>That&#8217;s perfect for me, because the only network devices downstream from the 6100D will be my routers.  They&#8217;ll handle all the firewalling and NATing.</p>
<p><strong>Complaint 2:</strong>  Although the LAN settings allow you to specify any netmask you want (I went with a /16, or 255.255.0.0), you can <strong>only change the last octet of the DMZ IP</strong>.  In other words, the DMZ device has to be on the same /24 as the 6100D.</p>
<p>Again, not a big deal, but for organizational purposes I would have liked to have had them on different /24s.</p>
<p>Because of that limitation I ended up messing with my settings.  Here&#8217;s how I had the router configured at one point:</p>
<p>LAN:  <code>10.222.2.1/16</code><br />
DMZ: <code>10.222.2.3</code></p>
<p>I then realized that those settings wouldn&#8217;t be ideal, and so I changed the LAN IP:</p>
<p>LAN:  <code>10.222.1.11/16</code></p>
<p>I saved it, and the third octet of the DMZ changed to &#8220;1&#8221; to match the third octet of the LAN IP.   Then I changed the last octet of the DMZ to &#8220;1&#8221;, saved, and wound up with these settings:</p>
<p>LAN:  <code>10.222.1.11/16</code><br />
DMZ: <code>10.222.1.3</code></p>
<p>But wait, the DMZ should be <strong>10.222.1.1</strong>.  I tried to change it again.  It remained stuck (even across reboots) at 10.222.1.3.</p>
<p>Then I looked at the actual network traffic going from the 6100D to my router.  DMZ traffic was going to <strong>10.222.2.3</strong> &#8212; the old setting.</p>
<p><strong>Complaint 3:</strong>  The DMZ IP address can become &#8220;stuck&#8221; on a value that doesn&#8217;t match what&#8217;s displayed in the GUI, and there is no way to change it.</p>
<p>I tried re-IPing the router back to 10.222.2.1 and then changing it and the DMZ value back in various different sequences.  No dice.</p>
<p>I was afraid to do a factory or settings reset, as I worried that might wipe out some cellular data settings that were preloaded by Sprint.  (In theory all it should need is the SIM, but you never know!)</p>
<p>I used the 6100D&#8217;s &#8220;Download / Backup&#8221; feature to download my config.  It was base64 encoded plaintext.  I decoded it and found this setting:</p>
<pre><code>table=StaticNatConfig;
columns=Enabled;LocalHostIPAddr;LocalHostMACAddr;
1;10.222.2.3;d4:ae:52:xx:xx:xx;</code></pre>
<p>Great!  That&#8217;s the setting!</p>
<p>I changed it, re-encoded the text to base64, and uploaded it to the device.  A JavaScript alert dialog warned me that the router was going to reboot&#8230; and nothing happened.</p>
<p>I did notice that the URL now had the suffix <strong>ErrorNum=3</strong>, so I suppose that the upload failed.  </p>
<p><strong>Complaint 4:</strong>  However no error was given in the GUI.  There was no indication that the upload had failed, and certainly not a reason for the failure.  (I want to be clear that I don&#8217;t blame the upload failure on Netgear; I probably didn&#8217;t notice/update some CRC or other information.  My objection is the lack of reasonable error reporting).</p>
<p>Lack of error reporting brings me to the system log.  I went there to see if there was explanation for the failed upload.  There was no mention of the upload, but&#8230;</p>
<p><strong>Complaint 5:</strong>  All the dates were in 1970.  Clearly this thing hadn&#8217;t synchronized with an NTP server or some such (even though it had been connected to the Sprint network for some time).  </p>
<p>That brings me to the &#8220;Date &#038; Time&#8221; settings:</p>
<p><a href="http://s.co.tt/blog/blog/2014/08/25/netgear-lg-6100d-lte-gateway-for-sprint-review/6100d_date_time_settings/" rel="attachment wp-att-730"><img src="http://s.co.tt.kisocdnb.net/blog/wp-content/uploads/2014/08/6100D_date_time_settings-300x231.png" alt="Netgear 6100D Date and Time Settings Page" title="Netgear 6100D Date and Time Settings Page" width="300" height="231" class="aligncenter size-medium wp-image-730" /></a></p>
<p>I decided to set the date and time manually.  I unchecked &#8220;Automatic Time Update&#8221; -&gt; &#8220;Enabled&#8221; and hit &#8220;Submit&#8221;.  I got alerted that the settings were saved successfully and, uhhh&#8230;</p>
<p><strong>Complaint 6:</strong>  There is no way to set the date and time manually.  Look:</p>
<p><a href="http://s.co.tt/blog/blog/2014/08/25/netgear-lg-6100d-lte-gateway-for-sprint-review/6100d_date_time_settings_manual/" rel="attachment wp-att-731"><img src="http://s.co.tt.kisocdnb.net/blog/wp-content/uploads/2014/08/6100D_date_time_settings_manual-300x227.png" alt="Netgear 6100D Date and Time Manual Settings Page" title="Netgear 6100D Date and Time Manual Settings Page" width="300" height="227" class="aligncenter size-medium wp-image-731" /></a></p>
<p>The &#8220;Local Time&#8221; field is static.  There is no way to set the date and time.  <strong>So why even be able to disable NTP in the first place?</strong>  (Oh, there&#8217;s a reason &#8212; we&#8217;ll get to it.)</p>
<p>Incidentally, it says &#8220;EST(Central Standard Time)&#8221; in the time zone dropdown.  I&#8217;ll not make that a separate complaint, but it gives you an idea of the amount of quality control that went into this thing.</p>
<p>While I was poking around in the plaintext config file, I found this little doozy:</p>
<pre><code>table=AdminInfo;rev=2;
columns=AdminUserID;AdminPassword;PWNotAllow;RemoteAccessEnable;SessionTimeoutEnable;SessionTimeoutInterval;SessionTimeoutTimeLeft;EnableGUIAuth;Preffered_Proto;RemoteHttpsEnable;EnableRecovery;SecQ1ID;SecAns1;SecQ2ID;SecAns2;UserRole;TimeStamp;
admin;<strong>MyActualPassword</strong>;password;;;;;1;;;0;0;;0;;0;;
admin;password;;0;0;20;16;1;0;1;0;;;;;;;
;;;;;;;;;;;;;;;;;
support;password;;;;;;1;;;;;;;;1;;
user;password;;;;;;1;;;;;;;;2;;</code></pre>
<p><strong>Complaint 7:</strong>  The admin password is stored in plaintext in the backup file.</p>
<p>OK, it&#8217;s base64 encoded which will put off the average user-level pair of prying eyes.  But I wouldn&#8217;t exactly feel comfortable leaving my router&#8217;s backup settings unencrypted on a network drive.</p>
<p><strong>Complaint 8:</strong>  What are those &#8220;user&#8221; and &#8220;support&#8221; accounts?  I tried logging in as both from the GUI and could not.   But is there some back door that I&#8217;m not aware of?  They&#8217;re not mentioned in the GUI, and there&#8217;s no way to change those passwords that I can see (<em>well, there is, but we&#8217;ll get to that</em>).</p>
<p>I don&#8217;t know about you, but I find superfluous and immutable user accounts to be sketchy at best.</p>
<p><strong>Let&#8217;s talk about why I&#8217;m using a DMZ host in this scenario.</strong></p>
<p>I already have redundant router/firewalls that are directly connected to the internet using my two hard line connections.  They both &#8220;own&#8221; public IPs and firewall/NAT traffic to and from my internal networks.  They&#8217;re simply PCs running CentOS having 9 ethernet ports each, and they work great.</p>
<p>For me, this DMZ setting will result in &#8220;double-NATing&#8221;.  In other words, all traffic coming into the 6100D will be DNATed to my router, and the router will DNAT it to my server.  That&#8217;s sub-optimal for a variety of reasons.</p>
<p>(Of course if this &#8220;router&#8221; actually let me add &#8220;routes&#8221; I could use its port forwarding feature and obviate the need for the second level of NATing.  We&#8217;ll get to that topic later on.)</p>
<p>The 6100D does offer a setting that&#8217;s extremely sexy on first glance:  <strong>IP Passthrough</strong>.</p>
<p>From the documentation:</p>
<blockquote><p>You can designate a computer behind the gateway to receive unsolicited traffic from the public <br />
network.</p>
<p>Note: The public WAN IP will be assigned to this computer.</p></blockquote>
<p>That sounds perfect!  Let&#8217;s look at the settings page for this feature:</p>
<p><a href="http://s.co.tt/blog/wp-content/uploads/2014/08/6100D_ip_passthrough_menu.png"><img src="http://s.co.tt.kisocdnb.net/blog/wp-content/uploads/2014/08/6100D_ip_passthrough_menu.png" alt="Netgear 6100D IP Passthrough Menu" title="Netgear 6100D IP Passthrough Menu" width="577" height="192" class="aligncenter size-full wp-image-784" /></a></p>
<p>Hmm..  &#8220;Device Name&#8221; is a drop-down with nothing in it.  And what&#8217;s the DHCP lease time?</p>
<p>The documentation says:</p>
<blockquote><p>In the Device Name drop-down list, select a computer.<br />
[..]<br />
In the DHCP Lease Time fields, enter the days, hours, minutes that you want to assign the public IP to this computer.</p></blockquote>
<p>That was not very helpful, which is typical of the documentation.</p>
<p><strong>Complaint 9:</strong>  This feature does not work.  There is <strong>never</strong> a computer listed in the &#8220;Device Name&#8221; dropdown.  In fact, I tried this with the 6100D connected directly to my laptop back when it was fresh from the factory and it still didn&#8217;t work.</p>
<p>Besides that complaint, a whole host of questions are raised:</p>
<ul>
<li>Does the computer to which the IP is &#8220;passed through&#8221; use the upstream DHCP server on Sprint&#8217;s network, or does it use the DHCP server on the 6100D?</li>
<li>If my cellular WAN IP address changes before the end of the lease time I&#8217;ve set, will it still update my computer&#8217;s address?  What <strong>exactly</strong> does that lease time mean?  And why is it there?  Why not just use the upstream lease settings?</li>
<li>Based upon what&#8217;s written in the documentation (&#8220;[time] that you want to assign the public IP to this computer&#8221;) is this really a DHCP setting, or does it mean that after that time period the IP will simply revert back to the 6100D instead of the downstream computer?
<li>Is it accomplishing the passthrough by bridging the WAN connection to the LAN connection?  Or does it use some kind of internal double-NATing?  In other words, by what mechanism does it &#8220;pass through&#8221; the IP?</li>
</ul>
<p><strong>Complaint 10:</strong>  Even if I did see my computer listed in the &#8220;Device Name&#8221; dropdown, this feature would be completely useless to me as it&#8217;s documented to the point of obscurity.</p>
<p>Speaking of obscurity:</p>
<p><strong>Complaint 11:</strong>  The &#8220;Custom&#8221; setting on the firewall is useless.  You cannot make custom firewall settings of any use.</p>
<p>Let me show you:</p>
<p><a href="http://s.co.tt/blog/blog/2014/08/25/netgear-lg-6100d-lte-gateway-for-sprint-review/6100d_custom_firewall_settings/" rel="attachment wp-att-732"><img src="http://s.co.tt.kisocdnb.net/blog/wp-content/uploads/2014/08/6100D_custom_firewall_settings-238x300.png" alt="Netgear 6100D Custom Firewall Settings Page" title="Netgear 6100D Custom Firewall Settings Page" width="238" height="300" class="aligncenter size-medium wp-image-732" /></a></p>
<p>Looks simple enough.  There are some default rules.  ICMP is allowed, and a variety of TCP and UDP services are blocked.  (Note that there is no &#8220;remove&#8221; button, but I suppose you could override these rules by putting another rule prior in the chain.  It&#8217;s not really &#8220;custom&#8221;, but whatever.)</p>
<p>The page does state:</p>
<blockquote><p>Control outbound traffic initiated from within the local network.<br />
Inbound traffic may be controlled by configuring Port Forwarding.</p></blockquote>
<p><em>Wonderful.</em>  So it&#8217;s more like <strong>half</strong> of a firewall.  <strong>Port forwarding is not firewalling.</strong>  I&#8217;m using the DMZ feature, not the port forwarding feature, yet I&#8217;d still like to block ports <strong>at the edge</strong>.  This is not only for security, but to avoid unnecessary data usage charges (more on that later).</p>
<p>But OK, let&#8217;s press the &#8220;Add&#8221; button:</p>
<p><a href="http://s.co.tt/blog/blog/2014/08/25/netgear-lg-6100d-lte-gateway-for-sprint-review/6100d_custom_firewall_settings_add/" rel="attachment wp-att-733"><img src="http://s.co.tt.kisocdnb.net/blog/wp-content/uploads/2014/08/6100D_custom_firewall_settings_add-300x181.png" alt="Netgear 6100D Custom Firewall Settings - Add Dialog" title="Netgear 6100D Custom Firewall Settings - Add Dialog" width="300" height="181" class="aligncenter size-medium wp-image-733" /></a></p>
<p>BTW &#8211; The &#8220;Rule Name&#8221; is actually the &#8220;Service Name&#8221;.  You set up services in another section of the GUI.  They are basically just named definitions of a port range and protocol.  In this case I have already configured &#8220;VPN (SMR)&#8221; in services to match my OpenVPN server settings.</p>
<p>&#8220;Action&#8221; allows you to set either &#8220;Allow Always&#8221; or &#8220;Block Always&#8221;.  I want allow.</p>
<p>Here&#8217;s why the custom firewall is meaningless:  </p>
<p><strong>THERE IS NO NETMASK FIELD!</strong>  A firewall wherein you&#8217;d have to black- or white-list <strong>every individual IP</strong> is <strong>useless</strong>.</p>
<p>If I leave the &#8220;Lan Users&#8221; or &#8220;Wan Users&#8221; blank, I get an error that the IP addresses are required.  If I set either to &#8220;0.0.0.0&#8221; (figuring maybe it would accept that as a wildcard) it gives an error that the IP is not valid.  So neither &#8220;intuitive&#8221; ways of inputting 0.0.0.0/0 are allowed, let alone a more nuanced netmask.</p>
<p><strong>Complaint 12:</strong>  The <a href="http://s.co.tt.kisocdnb.net/blog/wp-content/uploads/2014/08/netgear_lte_gateway_6100d_ug.pdf" target="_blank">documentation</a> is terribly vague about a lot of things, and the custom firewall in particular.  This is literally all it has to say on the matter:</p>
<blockquote><p>Custom is an advanced configuration option that allows you to edit the firewall configuration directly. Only expert users should attempt this</p></blockquote>
<p>I&#8217;ll grant that I&#8217;m <strong>not an expert</strong> on the Netgear 6100D custom firewall.  So maybe there&#8217;s something I&#8217;m missing.  But if there is, I can&#8217;t find it.</p>
<p>Oh, and those two screenshots that I&#8217;ve showed to you?  <strong>That&#8217;s all there is to the &#8220;custom&#8221; firewall.</strong>  The rule editing dialog is the same as the add dialog.  That&#8217;s it.</p>
<p>Speaking of custom things:</p>
<p><strong>Complaint 13:</strong>  There is <strong>no ability to edit the routing table(s)</strong>.</p>
<p>Leaving a heck of a lot out, here&#8217;s how I have the 6100D connected to my workstation:
<pre>WORKSTATION <-----> CORE ROUTER <-----> NETGEAR 6100D</pre>
<p>My network is similar to this:</p>
<p>Workstation: <code>10.10.1.50</code><br />
Core router:  <code>10.10.1.1, 10.222.1.1</code><br />
Netgear 6100D:  <code>10.222.1.11</code></p>
<p>But since I can&#8217;t add a custom route to the 6100D, it tries to route all packets destined for my workstation over the public internet!  Hence in order for me to even administer the device, I had to SNAT all traffic destined for 10.222.1.11/32 with a source of 10.222.1.1.  It&#8217;s pretty stupid that I have to do that, but it works.</p>
<p>It also means that (even if I wanted to) I couldn&#8217;t use the Netgear&#8217;s &#8220;port forwarding&#8221; (DNATing) in my environment &#8212; none of my servers are on the 10.222.0.0/16 network.</p>
<p><strong>Complaint 14: </strong>  Dynamic DNS:  Paid or Chinese.</p>
<p>The only two options for Dynamic DNS are DynDNS.org or 3322.org.</p>
<p>DynDNS.org no longer offers free DDNS services.  3322.org is apparently Pubyun, a Chinese company.  I have no problem with it being a Chinese company in general, and it looks like they&#8217;ve been doing DDNS since 2001.  However their website is in Chinese, and I can only assume that their servers are in China and that they may not provide support in English.</p>
<p>My problem is not with the two services on offer, it&#8217;s that <strong>they are the only two services on offer</strong> and that <strong>there is no custom option</strong>.</p>
<p>Fortunately I happen to know of a relatively new (and believe me, very unknown) <a href="http://kisolabs.com/products/dnsdynamofree" target="_blank">DDNS service from Kisolabs</a> that is both free <strong>and</strong> will let you spoof your device&#8217;s DNS so that it thinks it&#8217;s hitting DynDNS.org.</p>
<p>Let&#8217;s get to what is probably my biggest complaint of all.</p>
<p>In trying to resolve the DMZ IP address issue that I had, I said to myself, &#8220;hey Scott, this appears to be running some kind of *nix because the config file shows snippets of <CODE>iptables</CODE> commands.  Maybe you can SSH in.&#8221;  </p>
<p>So I issued a <CODE>nc -z 10.222.1.11 1-1023</CODE> with the following results:</p>
<pre><code>Connection to 10.222.1.11 23 port [tcp/telnet] succeeded!
Connection to 10.222.1.11 80 port [tcp/http] succeeded!
Connection to 10.222.1.11 179 port [tcp/bgp] succeeded!
Connection to 10.222.1.11 443 port [tcp/https] succeeded!</code></pre>
<p>Oh-kay.  No SSH, but telnet is open!?</p>
<pre><code># telnet 10.222.1.11
Trying 10.222.1.11...
Connected to 10.222.1.11.
Escape character is '^]'.

BusyBox v1.1.3 (2014.01.02-13:26+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

# ls /WFIO/current.cfg  
/WFIO/current.cfg <span style="color:#AA0000;">(&lt;- That's the configuration file that's manipulated by the GUI, and that's read on boot.)</span>
#</code></pre>
<p>Wait.  <strong>No authentication?</strong></p>
<p><strong>Complaint 15:  NO AUTHENTICATION.</strong></p>
<p>You&#8217;d think that maybe this would be an environment with some very strong deny permissions, but no.</p>
<p><strong>Complaint 16:  Not only are the configuration and even the GUI HTML files readable, THE CONFIG FILES ARE WRITABLE!</strong></p>
<p><strong>Complaint 17:</strong>  And <strong>THE CONFIGURATION FILE CONTAINS THE ADMIN PASSWORD IN PLAIN TEXT!</strong></p>
<p><strong>Complaint 18:</strong>  And <strong>THERE IS NO WAY TO DISABLE TELNET ACCESS from the GUI!</strong></p>
<p>And remember:  There is <strong>no way to turn off WiFi</strong>.</p>
<p>Who designed this thing????  It&#8217;s a security nightmare.</p>
<p>The only thing I can guess is that maybe Netgear charged its engineers with creating a honeypot, and they accidentally released that codebase to production for this device.</p>
<p>Oh, and search <a href="http://s.co.tt.kisocdnb.net/blog/wp-content/uploads/2014/08/netgear_lte_gateway_6100d_ug.pdf" target="_new">the user guide</a> for &#8220;telnet&#8221;.  You&#8217;ll find that it&#8217;s mentioned three times.  Once in regards to services that could be permitted by the firewall, once in the index, and once on page 109:</p>
<blockquote><p><b>Are Terminal Sessions Supported?</b><br />
Terminal sessions (for example, via telnet or ssh) are not supported.*</p></blockquote>
<p><em>*Documentation written by Kafka.</em></p>
<p><strong>ARE YOU KIDDING ME?</strong></p>
<p>The craziest part is that <strong>I haven&#8217;t even tried playing with most of the other settings.</strong>  I can&#8217;t imagine how many complaints I&#8217;d have if I actually delved into this!</p>
<p>Even just trying to navigate between the settings that I do need is counter-intuitive.  Let&#8217;s look at the left navigation bar:</p>
<p><a href="http://s.co.tt/blog/wp-content/uploads/2014/08/6100D_left_nav_bar.png"><img src="http://s.co.tt.kisocdnb.net/blog/wp-content/uploads/2014/08/6100D_left_nav_bar.png" alt="Netgear 6100D Left Navigation Bar" title="Netgear 6100D Left Navigation Bar" width="216" height="248" class="aligncenter size-full wp-image-769" /></a></p>
<p>You want to change the password to the router.  Quick, which menu item do you click on!?  Nope, I would&#8217;ve thought it was <strong>Security</strong> as well.  But it&#8217;s under <strong>Settings</strong>.</p>
<p>And what about dynamic DNS settings?  NOPE!  That&#8217;s in <strong>Security</strong>.</p>
<p>When you do go into <strong>Settings</strong> there are four tabs from which to choose:</p>
<p><a href="http://s.co.tt/blog/wp-content/uploads/2014/08/6100D_top_nav_settings_menu.png"><img src="http://s.co.tt.kisocdnb.net/blog/wp-content/uploads/2014/08/6100D_top_nav_settings_menu.png" alt="Netgear 6100D Settings Tabs" title="Netgear 6100D Settings Tabs" width="494" height="47" class="aligncenter size-full wp-image-770" /></a></p>
<p><strong>General</strong> is fair enough, but <strong>Network</strong> actually means &#8220;WAN / Cellular&#8221; and <strong>Router</strong> actually means &#8220;Basically Whatever&#8221;.  <strong>Manage VPN</strong> is refreshingly self-explanatory.</p>
<p>Here&#8217;s the sub-menu under the <strong>Router</strong> tab:</p>
<p><a href="http://s.co.tt/blog/wp-content/uploads/2014/08/6100D_top_nav_settings_router_sub_menu.png"><img src="http://s.co.tt.kisocdnb.net/blog/wp-content/uploads/2014/08/6100D_top_nav_settings_router_sub_menu.png" alt="Netgear 6100D Router Settings Sub-menu" title="Netgear 6100D Router Settings Sub-menu" width="657" height="98" class="aligncenter size-full wp-image-771" /></a></p>
<p>Most of this is just&#8230; wrong.</p>
<ul>
<li>Even though there&#8217;s a section for &#8220;Port Forwarding&#8221;, the DMZ port forwarding setting is under &#8220;Basic&#8221;.</li>
<li>Port filtering is here instead of under the <strong>Security</strong> menu.</li>
<li>&#8220;MAC Address Cloning&#8221; only specifies that it&#8217;s the &#8220;Router MAC Address&#8221;.  BUT THIS ROUTER HAS <strong>SEVEN</strong> INTERFACES!  Does this apply to any one of the four WiFi interfaces, the LAN interface, or one of the two WAN interfaces?  (The documentation makes it seem like it applies to the hardline WAN port &#8212; but all the other settings for the hard WAN interface are under the <strong>Network</strong> tab.  So why is this here??)</li>
<li>&#8220;File Sharing&#8221; should not be under the <strong>Router</strong> tab.  It shouldn&#8217;t even be a feature on this device.</li>
</ul>
<p>Hence, <strong>Complaint 19:</strong>  Poor organization of the menus.</p>
<p>Thanks for hanging in there!  I know it&#8217;s been a long ride, but let&#8217;s round this out to an even twenty:</p>
<p><strong>Complaint 20:</strong>  By default this thing suckles at your data plan.</p>
<p>It&#8217;s constantly in communication with various servers in the sprint.com and netgear.com domains.  I can see this in the system logs.  The requests appear to be for data usage information and NTP synchronization respectively.  By default it also checks for system updates (I am up to date, BTW).</p>
<p>I haven&#8217;t done any &#8220;scientific&#8221; testing, but look at this:</p>
<p><a href="http://s.co.tt/blog/blog/2014/08/25/netgear-lg-6100d-lte-gateway-for-sprint-review/6100d_data_usage_clip/" rel="attachment wp-att-737"><img src="http://s.co.tt.kisocdnb.net/blog/wp-content/uploads/2014/08/6100D_data_usage_clip.png" alt="Netgear 6100D Data Usage Example Screen Clip" title="Netgear 6100D Data Usage Example Screen Clip" width="351" height="204" class="aligncenter size-full wp-image-737" /></a></p>
<p>In the last 50 minutes it&#8217;s used 0.12MB of data.  My router is not pushing traffic to the 6100D, and I currently have no publicly addressable services served by it.  I&#8217;m administering it over the LAN port.  </p>
<p>That&#8217;s just &#8220;idle&#8221; utilization.</p>
<p>So, that&#8217;s 0.0024MB per minute.  Assuming that&#8217;s an average level of utilization then it uses <strong>104MB per month</strong> at idle.</p>
<p><strong>That&#8217;s over 10% of my data cap just gone!</strong>  Sprint actually sells a 100MB/month plan for this device.  Imagine your face when it uses up your entire data cap (and then some) on trivial, unwanted, unnecessary data!</p>
<p>OK, to be fair I can disable NTP or point it to local (LAN-connected) servers.  And maybe (<em>maaayyybe</em>) Sprint doesn&#8217;t actually bill for the data going to/from sprint.com.  But are most users going to know this?</p>
<p>And remember that even (possibly) unbilled data to/from sprint.com will spawn DNS requests.  Are you using Sprint&#8217;s DNS servers?  Do they charge for that traffic?</p>
<p>But what about unsolicited requests on blocked ports?  Does every TCP SYN count against my data plan?  Does every UDP packet destined for my IP count against it?</p>
<p>Moreover, since <strong>I can&#8217;t set up custom firewall rules</strong> and <strong>don&#8217;t want to use &#8220;port forwarding&#8221;</strong> the 6100D is going to happily SYN/ACK any TCP connection and forward the packets right along to my DMZ host!  So someone could rack up huge charges on my connection just by spamming my IP  with large packets, even if I don&#8217;t reply!</p>
<p><strong>In conclusion: </strong>  The Netgear 6100D LTE Gateway is not ready for prime time.  I couldn&#8217;t even recommend it for home use due to gaping security holes, let alone in a business environment as Sprint suggests:</p>
<p><a href="http://s.co.tt/blog/blog/2014/08/25/netgear-lg-6100d-lte-gateway-for-sprint-review/sprint_lte_for_home_or_office/" rel="attachment wp-att-738"><img src="http://s.co.tt.kisocdnb.net/blog/wp-content/uploads/2014/08/sprint_lte_for_home_or_office.png" alt="Sprint LTE for Home or Office (Yeah, right)" title="Sprint LTE for Home or Office (Yeah, right)" width="440" height="254" class="aligncenter size-full wp-image-738" /></a></p>
<p><strong>What about me?</strong>  I&#8217;m going to keep it.  It&#8217;s my only reasonable option.  Sprint has the most competitive pricing of any of the major providers, and this hardware appears to be the best available (at prices I&#8217;m willing to pay).  I have found workarounds for all of the complaints that are strictly relevant to my environment.  The security holes are acceptable to me because I&#8217;m using a one-off password and my LAN interface is firewalled off from being accessed by all but my own workstation.</p>
<p>It&#8217;s still the worst networking device I&#8217;ve seen since the &#8220;Cisco&#8221; (Linksys) RV042.</p>
<p><em>I&#8217;ve been doing this long enough to know that rants about a device that I&#8217;ve only owned for a few days may contain some inaccuracies.  I may even be dead wrong about some of my overarching complaints and assumptions.</em></p>
<p><em>As of today (August 25, 2014) comments are closed on this site due to an extraordinary number of spammers.  But please contact me by email if you have any comments or corrections:  </em><strong>scott<code>[at]</code>s.co.tt</strong></p>
<h3>Update (2014-08-26)</h3>
<p><strong>Complaint 21: </strong> The 6100D runs a DLNA server, and there&#8217;s no way to turn it off.  (Well, <a href="http://s.co.tt/blog/blog/2014/08/26/netgear-lg-6100d-sprint-lte-gateway-advanced-configuration/">there is</a>.)</p>
<p><strong>Complaint 22:</strong>  The 6100D listens on port 3457 on all interfaces and port 9000 on the LAN interface.  They both appear to be HTTP servers, but I have no idea what they do or why they&#8217;re there.  The documentation doesn&#8217;t mention them.</p>
<p>This isn&#8217;t a complaint about the device itself, so I&#8217;m not going to number it:</p>
<p><strong>I posted a link to this review on both Netgear&#8217;s and Sprint&#8217;s timelines.</strong>  Netgear hasn&#8217;t replied, but even worse Sprint did reply:</p>
<p><a href="http://s.co.tt/blog/wp-content/uploads/2014/08/6100D_facebook_sprint_post1.png"><img src="http://s.co.tt.kisocdnb.net/blog/wp-content/uploads/2014/08/6100D_facebook_sprint_post1.png" alt="Netgear 6100D - Sprint Facebook Post" title="Netgear 6100D - Sprint Facebook Post" width="489" height="813" class="aligncenter size-full wp-image-852" /></a></p>
<p>That&#8217;s just disgraceful.  <strong>Am I talking to a bot?</strong></p>
<p>I don&#8217;t expect Sprint&#8217;s social media rep to read the entire 3,500 word blog post.  I&#8217;m not that self-important.  But look at that last comment:</p>
<blockquote><p><strong>Sprint: </strong> What kind of device are you using? Have you tried to call the manufacturer of the device? Are you eligible for an upgrade? Let me know. &#8211; Brenda</p></blockquote>
<p><strong>The manufacturer and model number are both right in the title!</strong>  And no, I&#8217;m not eligible for an upgrade.  It says right in the blurb that &#8220;I recently obtained a Netgear LG6100D LTE Gateway from Sprint&#8221;.  Not two years ago.</p>
<p>But that is completely irrelevant in the first place, because this device is <strong>not sold with a contract</strong>.  You simply buy it.  Now <em>that</em> is something their reps should know.</p>
<p>And this sounds like a classic <a href="http://en.wikipedia.org/wiki/ELIZA" target="_blank">ELIZA</a> response from the 1960s:</p>
<blockquote><p>Sorry that you feel this way. What&#8217;s going on to have you feel like this? &#8211; Fernendez</p></blockquote>
<p><strong>Get it together, Sprint.</strong></p>
<h3>Update (2014-08-28)</h3>
<p>Man, I just keep finding more and more stuff about this device that is just stupid or downright buggy.</p>
<p><strong>Complaint 23:</strong>  The device seems to, without obvious reason, occasionally flood the LAN with multicast messages from the <code>igmpproxy</code>.  That process uses about 75% CPU, with the remaining available CPU going to IO.  It freezes the GUI, but it stops after a few minutes.</p>
<p><strong>Complaint 24:</strong>  IP forwarding seems to be based upon MAC address in some convoluted way, <strong>rather than the IP address you actually enter.</strong>  This may actually be the cause of the DMZ problems I was having (discussed above), but in this case I&#8217;m specifically talking about &#8220;Port Forwarding&#8221;, not the DMZ setting.</p>
<p><a href="http://s.co.tt/blog/blog/2014/08/26/netgear-lg-6100d-sprint-lte-gateway-advanced-configuration/"><em>Complaints 23 &#038; 24 are discussed in more detail in my post on the native Netgear GUI, and some of the problems it solves.</em></a></p>
<p><strong>Complaint 25:</strong>  Another simple example of stupid design.  Let&#8217;s look at yet another screencap:</p>
<div id="attachment_871" style="width: 310px" class="wp-caption aligncenter"><a href="http://s.co.tt/blog/wp-content/uploads/2014/08/6100D_data_usage_reset_stupidity.png"><img src="http://s.co.tt/blog/wp-content/uploads/2014/08/6100D_data_usage_reset_stupidity-300x133.png" alt="Netgear 6100D - Usage reset stupidity" title="Netgear 6100D - Usage reset stupidity" width="300" height="133" class="size-medium wp-image-871" /></a><p class="wp-caption-text">Click on the image for a full-sized version.</p></div>
<p>The 6100D tracks data usage both by billing cycle and by session.</p>
<p><em>(I think &#8220;month&#8221; in this interface means &#8220;billing month&#8221;, but now that I look at it I&#8217;m not sure.  It may mean &#8220;calendar month&#8221;.  Who knows?)</em></p>
<p>Tracking data usage right in the router is a big plus!  The billing usage data comes from Sprint&#8217;s servers (I can see that in the logs), so even though it <em>says</em> that it&#8217;s &#8220;approximate and may vary&#8221;, it should be a pretty good indication of billable usage.  Hopefully.</p>
<p>So, what do you think that &#8220;Reset&#8221; button does?  It&#8217;s right there tucked to the lower-right of the <strong>session</strong> data usage.</p>
<p>It should reset the usage counter for the <strong>session</strong>, wouldn&#8217;t you think?  That would be really useful if, let&#8217;s say, you were playing Call of Duty and were curious as to how much traffic that game was pushing through the WWAN.  You could reset it, play away, and then take a look.</p>
<p>It would be <strong>absolutely stupid and pointless</strong> if that button reset the statistics for your billing cycle.  I mean, it wouldn&#8217;t actually reset your billing, right?  It wouldn&#8217;t <strong>turn back time</strong> and <strong>start the month over</strong>, right?</p>
<p><strong>WELL THE RESET BUTTON RESETS THE BILLING CYCLE USAGE STATISTICS, NOT THE SESSION STATISTICS.</strong></p>
<p>You can see this evidenced in the screepcap, wherein I have 24 days left in my billing cycle and yet have used no data.  <strong>Even though in my current session I have used 0.57MB!</strong></p>
<p>This <strong>boggles my mind</strong> more than even the unsecured telnet interface.  The telnet thing was <strong>clearly an accident</strong>.  I&#8217;m giving them the benefit of the doubt that they probably just forgot to comment out the telnet daemon start command in the init script(s) before releasing to manufacturing.  (Though it should have been caught in QA, but what do I know?)</p>
<p>But <strong>this reset button seems to be part of an intentional design decision</strong>.  It&#8217;s so vastly <strong>illogical and pointless</strong> that I can&#8217;t imagine how it made it into this device.  <strong>Unless the device is wholly under-planned, under-engineered, and under-tested.</strong>  And it does indeed seem to be all those things at once.</p>
<h3>Update (2014-08-28) &#8211; I&#8217;m just about done with Sprint</h3>
<p>Today&#8217;s complaint is a bit of a tangent, as it doesn&#8217;t pertain to the device.  It&#8217;s about Sprint&#8217;s <strong>website</strong>.</p>
<p>Specifically the bill payment section of their website.  You know, the one that has to do with <strong>my hard-earned money</strong> and <strong>their revenue</strong> (something for which shareholders have a great concern &#8212; I&#8217;m glad I&#8217;m not one).  This is the section of the site that should be <strong>absolutely reliable</strong> and <strong>well designed</strong>.</p>
<p>This is what I was treated to when I paid my bill:</p>
<p><a href="http://s.co.tt/blog/wp-content/uploads/2014/08/sprint_payment_unresponsive.png"><img src="http://s.co.tt.kisocdnb.net/blog/wp-content/uploads/2014/08/sprint_payment_unresponsive-300x192.png" alt="Sprint.com - Unresponsive payment workflow" title="Sprint.com - Unresponsive payment workflow" width="300" height="192" class="aligncenter size-medium wp-image-894" /></a></p>
<p>Looks perfectly normal, right?  But see that grey button in the lower-right?  The one that says <strong>&#8220;Authorize&#8221;</strong>?  The one I&#8217;m <strong>only supposed to click once to avoid duplicate charges</strong>?  Well, I&#8217;ve already clicked it.  It was yellow before, and now it&#8217;s grey.</p>
<p>It&#8217;s been grey like that for <strong>75 minutes</strong> and <strong>nothing has happened</strong>.  No &#8220;payment successful&#8221;, no &#8220;sorry, payment unsuccessful&#8221;, no timeout.  No response at all.</p>
<p>And I&#8217;m sure that Sprint would be happy to tell me that it was the fault of my internet connection, except that I seriously doubt it <strong>because I wasn&#8217;t using their horrible device</strong>.  Plus I paid four other bills while waiting for them to process my payment.  Then I went to lunch.</p>
<p>So now here I am.  I decided to go back to view my payment history, and there was nothing there.  I checked my credit card online and there was no charge from Sprint.  Fine.  I&#8217;ll try again.</p>
<p>On my second try the payment went through in about 10 seconds.  (Which in this day and age is an eternity.)  Success!</p>
<p>But I don&#8217;t really trust these guys, and so I wanted to <strong>make sure it actually did go through properly</strong>.  I went into the &#8220;Payment activity&#8221; tab and found this:</p>
<p><a href="http://s.co.tt/blog/wp-content/uploads/2014/08/sprint_payment_no_history.png"><img src="http://s.co.tt.kisocdnb.net/blog/wp-content/uploads/2014/08/sprint_payment_no_history-300x127.png" alt="Sprint - No history of payment" title="Sprint - No history of payment" width="300" height="127" class="aligncenter size-medium wp-image-895" /></a></p>
<p>That&#8217;s right, <strong>no payments scheduled</strong> even though I did get a confirmation screen saying that my payment was scheduled successfully.</p>
<p>The one item in my &#8220;Payment history&#8221; is <strong>dated 11 days ago</strong>;  That had to do with my account activation and etcetera.</p>
<p>It&#8217;s now been about 15 minutes since my payment was &#8220;successful&#8221;.  I still don&#8217;t see it as scheduled or processed in my account on Sprint&#8217;s website.  <strong>I haven&#8217;t received a confirmation email, either.</strong></p>
<p>But I guess all is well for them:  <strong>They got their money</strong>, as evidenced by my bank&#8217;s website.  It would just be nice if they would let me know that <strong>it was applied to my account</strong>.</p>
<p><em>30 minutes later&#8230;</em></p>
<p>&#8220;<strong>Don&#8217;t worry guise!</strong>  Teh sights are now down complerply!&#8221;</p>
<p><a href="http://s.co.tt/blog/wp-content/uploads/2014/08/sprint_maint_message.png"><img src="http://s.co.tt.kisocdnb.net/blog/wp-content/uploads/2014/08/sprint_maint_message.png" alt="Sprint - Maintainence message" title="Sprint - Maintainence message" width="649" height="302" class="aligncenter size-full wp-image-902" /></a></p>
<p>&#8230; My first time using it, and the <strong>entire f**king customer portion of their site is down</strong>.  What a pile of s**t.</p>
<p>And how dare they say &#8220;We are enhancing this section of our site&#8221;.  What nerve.  </p>
<p>Hey Sprint:  <strong>Your site broke and you lie to your customers about it?</strong>  Unless you consider &#8220;basic f**king functionality&#8221; to be an &#8220;enhancement&#8221;.  If that&#8217;s the case, I ask you to please post that opinion publicly.  I dare you.  </p>
<p><em>&#8220;We here at Sprint believe that a functional site is an enhancement over a non-functional site.  That&#8217;s why we do our best to keep our site functional most of the time.  Because we at Sprint care about our customers and their occasional access to such great features as online bill pay, viewing usage history, and letting them sometimes buy, you know, phones and stuff.&#8221;</em></p>
<p>I&#8217;ve been using Verizon Wireless for almost 15 years (since they were Bell Atlantic).  And though they&#8217;re <strong>by no means perfect</strong> I&#8217;ve yet to see a <strong>catastrophic failure</strong> of their ability to <strong>process payments</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://s.co.tt/2014/08/25/netgear-lg-6100d-lte-gateway-for-sprint-review/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Fix for: Keepalived router enters fault state on link down</title>
		<link>http://s.co.tt/2014/06/06/fix-for-keepalived-router-enters-fault-state-on-link-down/</link>
		<comments>http://s.co.tt/2014/06/06/fix-for-keepalived-router-enters-fault-state-on-link-down/#comments</comments>
		<pubDate>Fri, 06 Jun 2014 19:01:49 +0000</pubDate>
		<dc:creator><![CDATA[Scott]]></dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[keepalived]]></category>
		<category><![CDATA[routers]]></category>

		<guid isPermaLink="false">http://s.co.tt/blog/?p=540</guid>
		<description><![CDATA[TL;DR: This is the configuration option you want: dont_track_primary At work and at home I have pairs of redundant &#8220;core&#8221; routers in an active-passive (or master-backup as you like) configuration. They consist of commodity hardware, a few 4-port gigabit NICs, and CentOS. All of these machines had been running flawlessly for anywhere from two to six years (as they were put into service or upgraded). That is until yesterday when my primary router at home had an SSD failure which completely stopped it in its tracks. The backup router took over, and in less than a second traffic was being routed. All of my point-to-point VPNs reconnected within about 20 seconds. In other words, it worked exactly as it should. … <a class="continue-reading-link" href="http://s.co.tt/2014/06/06/fix-for-keepalived-router-enters-fault-state-on-link-down/"> Continue reading</a>]]></description>
				<content:encoded><![CDATA[<p><strong>TL;DR:</strong>  This is the configuration option you want:  <strong>dont_track_primary</strong></p>
<p>At work and at home I have pairs of redundant &#8220;core&#8221; routers in an active-passive (or master-backup as you like) configuration.  They consist of commodity hardware, a few 4-port gigabit NICs, and CentOS.  All of these machines had been running flawlessly for anywhere from two to six years (as they were put into service or upgraded).</p>
<p>That is until yesterday when my primary router at home had an SSD failure which completely stopped it in its tracks.  The backup router took over, and in less than a second traffic was being routed.  All of my point-to-point VPNs reconnected within about 20 seconds.  In other words, it worked exactly as it should.</p>
<p>Until I turned off power to the broken router.  Then everything stopped.</p>
<p>I had made a minor change to my router pair a few months ago, and didn&#8217;t think anything of it.  Instead of running VRRP traffic through the switch, I had dedicated a NIC port on each machine and connected them directly using a crossover cable.  I had only tested by bringing the primary router down gracefully, and did not pull the plug.</p>
<p>When the plug was pulled on the broken router, the now-master saw the link go down on the VRRP port and keepalived went into the FAULT state.  It gave up its VIPs and basically stopped keeping anything alive.</p>
<p>That behavior can make sense in certain scenarios.  For example, if just the NIC port used for VRRP went down on the master router, I wouldn&#8217;t want the backup <strong>also</strong> taking the VIPs (and certain routes, etc.)  If I had VRRP going through one switch and production traffic going through another, I wouldn&#8217;t want a failure on the less important switch to again cause VIP conflicts.</p>
<p>In my case, I find it <strong>much</strong> (much, much, much) more likely that the link having gone down will mean that one of the machines has died completely.  In my experience power supplies and HDDs (or SSDs) are far more likely to fail than a NIC or NIC port.  It&#8217;s not to say that the latter is impossible, but rather that I have to plan for the most likely worst-case scenario.</p>
<p>All that being said, there is one setting for your keepalived.conf to obviate this issue:  <strong>dont_track_primary</strong></p>
<p>That&#8217;s it.  It doesn&#8217;t have options or qualifiers.  From the <a href="http://manpages.ubuntu.com/manpages/hardy/man5/keepalived.conf.5.html" target="_blank">man page</a>:</p>
<p><code># Ignore VRRP interface faults (default unset)<br />
dont_track_primary</code></p>
<p>From the <a href="http://www.keepalived.org/changelog.html">keepalived changelog</a>:</p>
<p><code>VRRP : Chris Caputo added "dont_track_primary"<br />
  vrrp_instance keyword which tells keepalived to ignore VRRP<br />
  interface faults. Can be useful on setup where two routers<br />
  are connected directly to each other on the interface used<br />
  for VRRP. Without this feature the link down caused<br />
  by one router crashing would also inspire the other router to lose<br />
 (or not gain) MASTER state, since it was also tracking link status.</code></p>
<p>Perfect, right?</p>
<p>Here&#8217;s my keepalive configuration that&#8217;s been sanitized and edited for brevity:</p>
<pre><code>global_defs {
   notification_email {
     <em>me@mydomain.corn</em>
   }
   notification_email_from rtr-core02@int.<em>meagain</em>.net
   smtp_server 10.80.1.41
   smtp_connect_timeout 30
   router_id RTR-CORE-A
}
vrrp_instance VI_0 {
    state BACKUP
    interface p4p1
    smtp_alert
    virtual_router_id 50
    priority 50
    advert_int 1
    dont_track_primary
    notify_master /etc/keepalived/promotemaster
    notify_backup /etc/keepalived/promotebackup
    authentication {
        auth_type PASS
        auth_pass <em>sanitizedpassword</em>
    }
    virtual_ipaddress {
        192.168.1.1/24 brd 192.168.1.255 dev p3p1 label p3p1:100
        192.168.1.2/24 brd 192.168.1.255 dev p3p1 label p3p1:101
        10.1.1.1/24 brd 10.1.1.255 dev p3p2 label p3p2:100
        10.1.1.2/24 brd 10.1.1.255 dev p3p2 label p3p2:101
        <em># Many VIPs omitted here for brevity</em>
    }
    virtual_routes {
        158.209.0.99/32 via 78.123.265.1 dev p1p1 table main
        0.0.0.0/0 via 91.59.24.131 dev p1p2 table 50
        193.266.0.0/16 via 91.59.24.131 dev p1p2 table main
        <em># Many routes omitted here for brevity.  IPs are sanitized/randomized</em>
    }
}</code></pre>
<p>I&#8217;m hoping that I put enough keywords in this article so that you found it easily.  The whole point of this post is to counter the drought of discussion on this topic.</p>
]]></content:encoded>
			<wfw:commentRss>http://s.co.tt/2014/06/06/fix-for-keepalived-router-enters-fault-state-on-link-down/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
