{"id":19353,"date":"2021-01-16T09:53:51","date_gmt":"2021-01-16T14:53:51","guid":{"rendered":"https:\/\/nuxx.net\/blog\/?p=19353"},"modified":"2021-01-16T14:45:11","modified_gmt":"2021-01-16T19:45:11","slug":"a-home-network-troubleshooting-journey","status":"publish","type":"post","link":"https:\/\/nuxx.net\/blog\/2021\/01\/16\/a-home-network-troubleshooting-journey\/","title":{"rendered":"A Home Network Troubleshooting Journey"},"content":{"rendered":"\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><a href=\"https:\/\/nuxx.net\/blog\/wp-content\/uploads\/2021\/01\/opnsense_insight_weird_knology.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"322\" src=\"https:\/\/nuxx.net\/blog\/wp-content\/uploads\/2021\/01\/opnsense_insight_weird_knology-1024x322.png\" alt=\"\" class=\"wp-image-19358\" srcset=\"https:\/\/nuxx.net\/blog\/wp-content\/uploads\/2021\/01\/opnsense_insight_weird_knology-1024x322.png 1024w, https:\/\/nuxx.net\/blog\/wp-content\/uploads\/2021\/01\/opnsense_insight_weird_knology-300x94.png 300w, https:\/\/nuxx.net\/blog\/wp-content\/uploads\/2021\/01\/opnsense_insight_weird_knology-768x242.png 768w, https:\/\/nuxx.net\/blog\/wp-content\/uploads\/2021\/01\/opnsense_insight_weird_knology-1536x484.png 1536w, https:\/\/nuxx.net\/blog\/wp-content\/uploads\/2021\/01\/opnsense_insight_weird_knology.png 1756w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><\/div>\n\n\n\n<p>This week I moved from <a href=\"https:\/\/unifi-network.ui.com\/\">UniFi<\/a> to a new setup that included <a href=\"https:\/\/opnsense.org\/\">OPNsense<\/a> on the edge to handle firewall, <a href=\"https:\/\/en.wikipedia.org\/wiki\/Network_address_translation\">NAT<\/a>, and other such tasks on the home network. Built in to OPNsense is a basic <a href=\"https:\/\/en.wikipedia.org\/wiki\/NetFlow\">NetFlow<\/a> traffic analyzer called <a href=\"https:\/\/docs.opnsense.org\/manual\/how-tos\/insight.html\">Insight<\/a>. Looking at this and turning on <em>Reverse lookup<\/em> something strange popped out: ~22% of the traffic coming in from the internet over the last two hours was from just two hosts: <code>dynamic-75-76-44-147.knology.net<\/code> and <code>dynamic-75-76-44-149.knology.net<\/code>.<\/p>\n\n\n\n<p>While reverse DNS worked to resolve the IPs to hostnames (<code>75.76.44.147<\/code> to <code>dynamic-75-76-44-147.knology.net<\/code> and <code>75.76.44.149<\/code> to <code>dynamic-75-76-44-149.knology.net<\/code>), forward lookup of those hostnames didn&#8217;t work. This didn&#8217;t really surprise me as the whole DNS situation on the WOW\/Knowlogy network is poor, but it did make me more curious. Particularly strange was the IPs being are so close together.<\/p>\n\n\n\n<p>To be sure this is Knology (ruling out intentionally-misleading reverse DNS) I used <a href=\"https:\/\/en.wikipedia.org\/wiki\/WHOIS\">whois<\/a> to confirm the addresses are owned by them:<\/p>\n\n\n\n<p><code>NetRange: 75.76.0.0 - 75.76.46.255<br>CIDR: 75.76.46.0\/24, 75.76.40.0\/22, 75.76.0.0\/19, 75.76.44.0\/23, 75.76.32.0\/21<br>NetName: WIDEOPENWEST<br>NetHandle: NET-75-76-0-0-1<br>Parent: NET75 (NET-75-0-0-0-0)<br>NetType: Direct Allocation<br>OriginAS: AS12083<br>Organization: WideOpenWest Finance LLC (WOPW)<br>RegDate: 2008-02-13<br>Updated: 2018-08-27<br>Ref: https:\/\/rdap.arin.net\/registry\/ip\/75.76.0.0<\/code><\/p>\n\n\n\n<p>My home ISP is <a href=\"https:\/\/en.wikipedia.org\/wiki\/Wide_Open_West\">Wide Open West (WOW)<\/a>, and <a href=\"https:\/\/en.wikipedia.org\/wiki\/Knology\">Knology<\/a> is an ISP that they bought in 2012. While I use my ISP directly for internet access (no VPN tunnel to elsewhere), I run my own DNS to avoid their service announcement redirections, so why would I be talking to something else on my ISP&#8217;s network?<\/p>\n\n\n\n<p>Could this be someone doing a bunch of scanning of my house? Or just something really misconfigured doing a bunch of broadcasting? Let&#8217;s dig in and see&#8230;<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignright size-medium\"><a href=\"https:\/\/nuxx.net\/blog\/wp-content\/uploads\/2021\/01\/knology_weird_wan_capture.png\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"182\" src=\"https:\/\/nuxx.net\/blog\/wp-content\/uploads\/2021\/01\/knology_weird_wan_capture-300x182.png\" alt=\"\" class=\"wp-image-19367\" srcset=\"https:\/\/nuxx.net\/blog\/wp-content\/uploads\/2021\/01\/knology_weird_wan_capture-300x182.png 300w, https:\/\/nuxx.net\/blog\/wp-content\/uploads\/2021\/01\/knology_weird_wan_capture-1024x621.png 1024w, https:\/\/nuxx.net\/blog\/wp-content\/uploads\/2021\/01\/knology_weird_wan_capture-768x466.png 768w, https:\/\/nuxx.net\/blog\/wp-content\/uploads\/2021\/01\/knology_weird_wan_capture-1536x931.png 1536w, https:\/\/nuxx.net\/blog\/wp-content\/uploads\/2021\/01\/knology_weird_wan_capture-2048x1242.png 2048w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/figure><\/div>\n\n\n\n<p>First I used the <a href=\"https:\/\/docs.opnsense.org\/manual\/diagnostics_interfaces.html#packet-capture\">Packet capture<\/a> function in OPNsense to grab a capture on the WAN interface filtered to these two IPs. Looking at it in <a href=\"https:\/\/www.wireshark.org\/\">Wireshark<\/a> showed it was all HTTPS. Hmm, that&#8217;s weird&#8230;<\/p>\n\n\n\n<p>A couple coworkers and I have <a href=\"https:\/\/www.plex.tv\/\">Plex<\/a> libraries shared with each other, maybe that&#8217;s it? The port isn&#8217;t right (Plex usually uses 32400) but maybe one of them are running on it in 443 (HTTPS)&#8230; But why the two IPs so close to each other? Maybe one of them are getting multiple IPs from their cable modem, have dual WAN links configured on their firewall, and it&#8217;s bouncing between them&#8230; (This capture only showed the middle of a session, so there was no certificate exchange present to get any service information from.)<\/p>\n\n\n\n<p>Next I did another packet capture on the LAN interface to see if it&#8217;s a computer on the network or OPNsense as the local endpoint. This showed it&#8217;s coming from my main personal computer, a 27&#8243; iMac at <code>192.168.0.8<\/code> \/ <code>myopia.--------.nuxx.net<\/code>, so let&#8217;s look there. (Plex doesn&#8217;t run on the iMac, so that&#8217;s ruled out.)<\/p>\n\n\n\n<p>Conveniently the <code>-k<\/code> argument to <a href=\"https:\/\/en.wikipedia.org\/wiki\/Tcpdump\">tcpdump<\/a> on macOS adds packet metadata, such as process name, PID, etc. A basic capture\/display on <code>myopia<\/code> with <code>tcpdump -i en0 -k NP host 75.76.44.149 or 75.76.44.147<\/code> to show all traffic going to and from those hosts identified <a href=\"https:\/\/www.mozilla.org\/en-US\/firefox\/\">Firefox<\/a> as the source:<\/p>\n\n\n\n<p><code>07:39:57.873076 pid <strong>firefox.97353<\/strong> svc BE pktflags 0x2 IP myopia.--------.nuxx.net.53515 &gt; <strong>dynamic-75-76-44-147.knology.net.https<\/strong>: Flags [P.], seq 19657:19696, ack 20539524, win 10220, options [nop,nop,TS val 3278271236 ecr 1535621504], length 39<br>07:39:57.882070 IP dynamic-75-76-44-147.knology.net.https &gt; myopia.--------.nuxx.net.53515: Flags [P.], seq 20539524:20539563, ack 19696, win 123, options [nop,nop,TS val 1535679857 ecr 3278271236], length 39<\/code><\/p>\n\n\n\n<p>Well, okay&#8230; Odd that my browser would be talking so much HTTPS to my ISP directly. I double-checked that <a href=\"https:\/\/support.mozilla.org\/en-US\/kb\/firefox-dns-over-https\">DNS-over-HTTPS<\/a> was disabled, so it&#8217;s not that&#8230;<\/p>\n\n\n\n<p>Maybe I can see what these servers are? Pointing <a href=\"https:\/\/curl.se\/\">curl<\/a> at one of them to show the headers, the <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/HTTP\/Headers\/Server\">server header<\/a> indicated <a href=\"https:\/\/engineering.fb.com\/2014\/11\/05\/production-engineering\/introducing-proxygen-facebook-s-c-http-framework\/\">proxygen-bolt<\/a> which is a Facebook framework:<\/p>\n\n\n\n<p><code>c0nsumer@myopia Desktop % <strong>curl --insecure -I https:\/\/75.76.44.147<\/strong><br>HTTP\/2 400<br>content-type: text\/plain<br>content-length: 0<br>server: <strong>proxygen-bolt<\/strong><br>date: Sat, 16 Jan 2021 13:22:57 GMT<br>c0nsumer@myopia Desktop %<\/code><\/p>\n\n\n\n<p>Now we&#8217;re getting somewhere&#8230;<\/p>\n\n\n\n<p>Finally I pointed <a href=\"https:\/\/www.openssl.org\/\">openssl<\/a> at the IP to see what certificate it&#8217;s presenting and it&#8217;s a wildcard cert for a portion of Facebook&#8217;s <a href=\"https:\/\/en.wikipedia.org\/wiki\/Content_delivery_network\">CDN<\/a>:<\/p>\n\n\n\n<p><code>c0nsumer@myopia Desktop % <strong>openssl s_client -showcerts -connect 75.76.44.149:443 &lt;\/dev\/null<\/strong><br>CONNECTED(00000003)<br>depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert High Assurance EV Root CA<br>verify return:1<br>depth=1 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert SHA2 High Assurance Server CA<br>verify return:1<br>depth=0 <strong>C = US, ST = California, L = Menlo Park, O = \"Facebook, Inc.\", CN = *.fdet3-1.fna.fbcdn.net<\/strong><br>verify return:1<br>[SNIP]<\/code><\/p>\n\n\n\n<p>As a final test I restarted <code>tcpdump<\/code> on the iMac then closed the Facebook tab I had open in Firefox and the traffic stopped.<\/p>\n\n\n\n<p>So there&#8217;s our answer. All this traffic is to Facebook CDN instances on the Wide Open West \/ Knology network. It sure seems like a lot for a tab just sitting open in the background, but hey&#8230; welcome to the modern internet.<\/p>\n\n\n\n<hr class=\"wp-block-separator\"\/>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignright size-medium\"><a href=\"https:\/\/nuxx.net\/blog\/wp-content\/uploads\/2021\/01\/knology_weird_traffic_in_opnsense_insight.png\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"123\" src=\"https:\/\/nuxx.net\/blog\/wp-content\/uploads\/2021\/01\/knology_weird_traffic_in_opnsense_insight-300x123.png\" alt=\"\" class=\"wp-image-19368\" srcset=\"https:\/\/nuxx.net\/blog\/wp-content\/uploads\/2021\/01\/knology_weird_traffic_in_opnsense_insight-300x123.png 300w, https:\/\/nuxx.net\/blog\/wp-content\/uploads\/2021\/01\/knology_weird_traffic_in_opnsense_insight-1024x419.png 1024w, https:\/\/nuxx.net\/blog\/wp-content\/uploads\/2021\/01\/knology_weird_traffic_in_opnsense_insight-768x314.png 768w, https:\/\/nuxx.net\/blog\/wp-content\/uploads\/2021\/01\/knology_weird_traffic_in_opnsense_insight-1536x628.png 1536w, https:\/\/nuxx.net\/blog\/wp-content\/uploads\/2021\/01\/knology_weird_traffic_in_opnsense_insight-2048x837.png 2048w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/figure><\/div>\n\n\n\n<p>I could have received more information from OPNsense&#8217;s Insight by clicking on the pie slice shown above to look at that host in the <a href=\"https:\/\/docs.opnsense.org\/manual\/how-tos\/insight.html#details-view\">Details view<\/a>, but it seems to have an odd quirk. When the <em>Reverse lookup<\/em> box is checked, clicking the pie slice to jump to the <em>Details<\/em> view automatically puts the hostname in the <em>(src) Address<\/em> field, which returns no results (it needs an IP address). I thought this was the tool failing, so I looked to captures for most of the info.<\/p>\n\n\n\n<p>Later on I realized that filtering on the IP showed a bunch more useful information, including two other endpoints within the network talking to these servers (mobile phones), and that HTTPS was also running over UDP, indicating <a href=\"https:\/\/en.wikipedia.org\/wiki\/QUIC\">QUIC<\/a>.<\/p>\n\n\n\n<p>(Bug <a href=\"https:\/\/github.com\/opnsense\/core\/issues\/4609\">4609<\/a> was submitted for this issue and <a href=\"https:\/\/github.com\/opnsense\/core\/commits?author=AdSchellevis\">AdSchellevis<\/a> fixed it within a couple hours via commit <a href=\"https:\/\/github.com\/opnsense\/core\/commit\/c797bfd220c40e914f3bdd1dbd07c9c4377984f8\">c797bfd<\/a>.)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This week I moved from UniFi to a new setup that included OPNsense on the edge to handle firewall, NAT, and other such tasks on&#8230;<\/p>\n<div class=\"more-link-wrapper\"><a class=\"more-link\" href=\"https:\/\/nuxx.net\/blog\/2021\/01\/16\/a-home-network-troubleshooting-journey\/\">Continue reading<span class=\"screen-reader-text\">A Home Network Troubleshooting Journey<\/span><\/a><\/div>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16,13],"tags":[],"class_list":["post-19353","post","type-post","status-publish","format-standard","hentry","category-around-the-house","category-computers","entry"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/nuxx.net\/blog\/wp-json\/wp\/v2\/posts\/19353","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nuxx.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nuxx.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nuxx.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nuxx.net\/blog\/wp-json\/wp\/v2\/comments?post=19353"}],"version-history":[{"count":20,"href":"https:\/\/nuxx.net\/blog\/wp-json\/wp\/v2\/posts\/19353\/revisions"}],"predecessor-version":[{"id":19384,"href":"https:\/\/nuxx.net\/blog\/wp-json\/wp\/v2\/posts\/19353\/revisions\/19384"}],"wp:attachment":[{"href":"https:\/\/nuxx.net\/blog\/wp-json\/wp\/v2\/media?parent=19353"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nuxx.net\/blog\/wp-json\/wp\/v2\/categories?post=19353"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nuxx.net\/blog\/wp-json\/wp\/v2\/tags?post=19353"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}