<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>networking — LowEndSpirit</title>
        <link>https://staging.lowendspirit.com/index.php?p=/</link>
        <pubDate>Mon, 06 Apr 2026 08:41:31 +0000</pubDate>
        <language>en</language>
            <description>networking — LowEndSpirit</description>
    <atom:link href="https://staging.lowendspirit.com/index.php?p=/discussions/tagged/networking/feed.rss" rel="self" type="application/rss+xml"/>
    <item>
        <title>[Solved] Proxmox Alpine Linux LXC Container IPv6 Network Failure</title>
        <link>https://staging.lowendspirit.com/index.php?p=/discussion/5395/solved-proxmox-alpine-linux-lxc-container-ipv6-network-failure</link>
        <pubDate>Thu, 02 Feb 2023 22:04:43 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>Not_Oles</dc:creator>
        <guid isPermaLink="false">5395@/index.php?p=/discussions</guid>
        <description><![CDATA[<h2><strong>Can We Solve This IPv6 Networking Problem?</strong></h2>

<p>Our server is an i9-9900K at <a rel="nofollow" href="https://www.hetzner.com">Hetzner.</a> Eight <a rel="nofollow" href="https://linuxcontainers.org/">LXC</a> containers are running various Linux distributions on <a rel="nofollow" href="https://proxmox.com">Proxmox-VE 7.3.</a> Everything  seems to work great! . . . Except inside one <a rel="nofollow" href="https://www.alpinelinux.org/">Alpine Linux</a> container. Somehow, IPv6 doesn't work from within this one container. Nevertheless, IPv6 ping to the container somehow seems to work from the Proxmox node. Amazingly, ping also works to the container even from the <a rel="nofollow" href="https://en.wikipedia.org/wiki/Wide_area_network">Wide Area Network (WAN).</a></p>

<p>How could such strangeness happen? Let's investigate!</p>

<h2><strong>A Closer Look At The Problem</strong></h2>

<p>The network configuration for all the containers was added individually by hand in the Proxmox GUI. Proxmox numbers LXC containers beginning with the number "100". The containers are IPv6 only. Each container was given a <a rel="nofollow" href="https://en.wikipedia.org/wiki/IP_address#:~:text=Persistent%20configuration%20is%20also%20known,using%20a%20dynamic%20IP%20address.">static IPv6 address</a> ending with the container's Proxmox container number.</p>

<p>The container with the IPv6 network problem is number 102. An example of the working containers is number 106. Number 106 was chosen for comparison because both container 102 and container 106 were built from the same Alpine Linux LXC image. The other working containers are Ubuntu and Debian.</p>

<p>Alpine Linux seems less likely to be causing the IPv6 network failure because container 106, also built from the Alpine image, is functioning just fine. So let's look directly at the misbehaving container, number 102.</p>

<p>Container 102 can ping localhost.</p>

<pre><code>root@Proxmox-VE ~ # lxc-attach -n 102
~ # ping6 -c 2 localhost
PING localhost (::1): 56 data bytes
64 bytes from ::1: seq=0 ttl=64 time=0.024 ms
64 bytes from ::1: seq=1 ttl=64 time=0.036 ms

--- localhost ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.024/0.030/0.036 ms
~ # 
</code></pre>

<p>Container 102 also responds to ping from external WAN.</p>

<pre><code>[opc@instance-20220717-1620 ~]$ ping -c 2 2a01:4f8:121:24cc::102
PING 2a01:4f8:121:24cc::102(2a01:4f8:121:24cc::102) 56 data bytes
64 bytes from 2a01:4f8:121:24cc::102: icmp_seq=1 ttl=51 time=154 ms
64 bytes from 2a01:4f8:121:24cc::102: icmp_seq=2 ttl=51 time=154 ms

--- 2a01:4f8:121:24cc::102 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 153.966/154.042/154.118/0.076 ms
[opc@instance-20220717-1620 ~]$ 
</code></pre>

<p>However, from inside container 102, it can't ping its DNS servers, or the WAN.</p>

<pre><code>root@Proxmox-VE ~ # lxc-attach -n 102
~ # cat /etc/resolv.conf
# --- BEGIN PVE ---
search metalvps.com
nameserver 2a01:4ff:ff00::add:2
nameserver 2001:470:20::2
# --- END PVE ---
~ # ping6 -c 2 2a01:4ff:ff00::add:2
PING 2a01:4ff:ff00::add:2 (2a01:4ff:ff00::add:2): 56 data bytes

--- 2a01:4ff:ff00::add:2 ping statistics ---
2 packets transmitted, 0 packets received, 100% packet loss
~ # ping6 -c 2 2001:470:20::2
PING 2001:470:20::2 (2001:470:20::2): 56 data bytes

--- 2001:470:20::2 ping statistics ---
2 packets transmitted, 0 packets received, 100% packet loss
~ # ping6 -c 2 metalvps.com
ping6: bad address 'metalvps.com'
~ # ping6 -c 2 ipv6.google.com
ping6: bad address 'ipv6.google.com'
~ # exit
</code></pre>

<p>By contrast, from inside working container 106, we can ping both the DNS servers and the WAN.</p>

<pre><code>root@Proxmox-VE ~ # lxc-attach -n 106
~ # cat /etc/resolv.conf
# --- BEGIN PVE ---
search metalvps.com
nameserver 2a01:4ff:ff00::add:2
nameserver 2001:470:20::2
# --- END PVE ---
~ # ping6 -c 2 2a01:4ff:ff00::add:2
PING 2a01:4ff:ff00::add:2 (2a01:4ff:ff00::add:2): 56 data bytes
64 bytes from 2a01:4ff:ff00::add:2: seq=0 ttl=61 time=0.446 ms
64 bytes from 2a01:4ff:ff00::add:2: seq=1 ttl=61 time=0.274 ms

--- 2a01:4ff:ff00::add:2 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.274/0.360/0.446 ms
~ # ping6 -c 2 2001:470:20::2
PING 2001:470:20::2 (2001:470:20::2): 56 data bytes
64 bytes from 2001:470:20::2: seq=0 ttl=57 time=18.516 ms
64 bytes from 2001:470:20::2: seq=1 ttl=57 time=18.552 ms

--- 2001:470:20::2 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 18.516/18.534/18.552 ms
~ # ping6 -c 2 metalvps.com
PING metalvps.com (2603:c020:3:a9a9::250): 56 data bytes
64 bytes from 2603:c020:3:a9a9::250: seq=0 ttl=49 time=151.895 ms
64 bytes from 2603:c020:3:a9a9::250: seq=1 ttl=49 time=151.856 ms

--- metalvps.com ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 151.856/151.875/151.895 ms
~ # ping6 -c 2 ipv6.google.com
PING ipv6.google.com (2a00:1450:4001:830::200e): 56 data bytes
64 bytes from 2a00:1450:4001:830::200e: seq=0 ttl=118 time=5.477 ms
64 bytes from 2a00:1450:4001:830::200e: seq=1 ttl=118 time=5.611 ms

--- ipv6.google.com ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 5.477/5.544/5.611 ms
~ # 
</code></pre>

<h2><strong>Could The Firewall Cause This Problem?</strong></h2>

<p>The problem with container 102 probably is not a firewall drop egress issue because there aren't any egress rules in the container's zone and the default egress policy is ACCEPT. Also, the container's internal IPv6 egress problem still happens if container 102's firewall zone is set entirely off.</p>

<h2><strong>The <code>ip</code> Command</strong></h2>

<p>The <code>ip</code> command from the <a rel="nofollow" href="https://github.com/shemminger/iproute2">iproute2 suite</a> provides much information about Linux networking. As the <a rel="nofollow" href="https://man7.org/linux/man-pages/man8/ip.8.html">ip(8) man page</a> explains, we can use <code>ip</code> in the following syntax: <code>ip [OPTIONS] OBJECT { COMMAND | help }</code>. In other words, to use <code>ip</code> we need to specify three items: an OPTION, an OBJECT, and a COMMAND.</p>

<p>For IPv4, the usual OPTION is nothing because <code>ip</code> defaults to IPv4. But, if we wish to specify the IPv4 OPTION explicitly, the option could be specified as "-family inet". The IPv4 OPTION can be abbreviated to "ip -f inet" or just "ip -4".</p>

<p>For IPv6, we use the OPTION "ip -family inet6". The IPv6 OPTION can be abbreviated to "ip -f inet6" or just "ip -6".</p>

<p>The OBJECT can be, for example, "link", "address", or "route". A "link" is a hardware or virtualized interface connecting our machine to a network. The "address" is the numerical IP address or addresses we assigned to our link. The "route" is the IP address where the kernel should send network packets initiated by programs running on our machine. "link", "address", and "route" can be abbreviated as "l", "a", and "r", respectively. Longer abbreviations also work. For example, "addr" commonly is used as an abbreviation for "address".</p>

<p>Frequently, when something happens involving networking, it can be very helpful to check the output of the <code>ip</code> command. Let's look with the <code>ip</code> command and see what we can find!</p>

<h2><strong>The Error Message</strong></h2>

<p>Checking the output of the <code>ip -family inet6 address show</code> command inside container 102 reveals "tentative dadfailed" as follows.</p>

<pre><code>root@Proxmox-VE ~ # lxc-attach -n 102
~ # ip -f inet6 addr show
1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 state UNKNOWN qlen 1000
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0@if45: &lt;BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN&gt; mtu 1500 state UP qlen 1000
    inet6 2a01:4f8:121:24cc::102/64 scope global tentative dadfailed 
       valid_lft forever preferred_lft forever
    inet6 fe80::d8dd:65ff:fe45:70f2/64 scope link 
       valid_lft forever preferred_lft forever
~ # exit
root@Proxmox-VE ~ # 
</code></pre>

<p>Output of the same command from inside container 106 where networking works fine does not include "tentative dadfailed."</p>

<pre><code>root@Proxmox-VE ~ # lxc-attach -n 106
~ # ip -f inet6 addr show
1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 state UNKNOWN qlen 1000
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0@if28: &lt;BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN&gt; mtu 1500 state UP qlen 1000
    inet6 2a01:4f8:121:24cc::106/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::64ce:78ff:fe85:15fd/64 scope link 
       valid_lft forever preferred_lft forever
~ # 
</code></pre>

<h2><strong>Dadfailed</strong></h2>

<p>Some quick googling found a page called <a rel="nofollow" href="https://blog.tankywoo.com/2013/09/27/ipv6-dadfailed-problem.html">IPv6 'dadfailed' Problem.</a>  The problem there involved reassigning an address previously assigned to another machine which failed without the address being deleted. However, down toward the bottom of the page, we find key information: the "dad" in "dadfailed" is "Duplicate Address Detection."</p>

<h2><strong>No Mistake With Container 102's Creation</strong></h2>

<p>But, even after reading about Duplicate Address Detection, I still did not immediately find the solution. I was puzzled about how, like the dadfailed page that Google showed me, some machine possibly could be down but with its address still present on my clean, new server with all its containers working fine except for this single itty bitty networking issue inside one container. Nothing was down. All the containers had their own addresses, and all the containers successfully started and continued running.</p>

<p>I kept looking and looking for some mistake I somehow might have made while setting up container 102. I checked and recheckd the screenshots that recorded container 102's creation. But everything looked okay!</p>

<p><img src="https://lowendspirit.com/uploads/editor/zo/uq2w7zhstjyi.png" alt="" title="" /></p>

<p><img src="https://lowendspirit.com/uploads/editor/gk/pb2vpmuj9ckg.png" alt="" title="" /></p>

<h2><strong>Asking For Help</strong></h2>

<p>Next I talked with a well known hosting provider about what was happening. I also wrote up a LES post asking for help with the puzzling  issue. It was starting to get late by the time I finished drafting the LES post. I decided to sleep. I deferred posting to LES Help until the next morning.</p>

<p>When I woke up, however, the idea was in my mind that possibly I mistakenly also had assigned the 102 address to another container. Such a mistake didn't seem likely, though, because there were only 8 containers, and the container numbers, 100, 101, 102, 103, 104, 105, 106, and 107 seemed understandable. I decided to check all the other containers besides 102 to make sure no additional container inadvertently and duplicatively also had been assigned the 102 address.</p>

<h2><strong>Checking All The Containers</strong></h2>

<ul>
<li><strong>Container 100</strong></li>
</ul>

<p>First I checked container 100. Container 100 was the test container that had been checked by <a href="https://staging.lowendspirit.com/index.php?p=/profile/yoursunny" rel="nofollow">@yoursunny</a> and found to be <a rel="nofollow" href="https://lowendspirit.com/discussion/comment/122229/#Comment_122229">"very strong."</a> Container 100 seemed to have been assigned the correct IP address ending in 100.</p>

<ul>
<li><strong>Container 101</strong></li>
</ul>

<p>Uh! Oh! Here it is! Container 101 got the 102 address!!</p>

<p><img src="https://lowendspirit.com/uploads/editor/oo/3dgabiigl86j.png" alt="" title="" /></p>

<p><img src="https://lowendspirit.com/uploads/editor/tm/q6vjyxdc2ve3.png" alt="" title="" /></p>

<h2><strong>How Did The Error Happen?</strong></h2>

<p>Container 101 was the second container that was created. Obviously it should have an IP address ending with 2, right? Well, not when the first address ended with 0. <img src="https://staging.lowendspirit.com/plugins/emojiextender/emoji/twitter/smile.png" title=":)" alt=":)" height="18" /></p>

<h2><strong>What About The Node And WAN Responses To Ping?</strong></h2>

<p>How could container 102 respond to a ping from external WAN while seeming unable to initiate a ping to an external WAN destination? Container 101 already had been created with the 102 address. So, the ping responses came from container 101.</p>

<h2>How Do We Fix container 102?</h2>

<p>All that's needed to fix container 102 is to change its address to any that is not already in use. I tried the 101 address, and that address immediately worked fine. <img src="https://staging.lowendspirit.com/plugins/emojiextender/emoji/twitter/smile.png" title=":)" alt=":)" height="18" /></p>

<h2>More Information About Dadfailed</h2>

<p>The <code>ip</code> command has a <a rel="nofollow" href="https://man7.org/linux/man-pages/man8/ip.8.html">manual page</a> which doesn't mention dadfailed. However, the <code>ip</code> man page refers to the <a rel="nofollow" href="https://man7.org/linux/man-pages/man8/ip-address.8.html"><code>ip-address</code></a> man page, which does mention dadfailed as an addition to the <code>ip address show</code> command.</p>

<pre><code>   ip address show - look at protocol addresses

        [ . . . ]

       dadfailed
              (IPv6 only) only list addresses which have failed duplicate ad‐
              dress detection.

       -dadfailed
              (IPv6 only) only list addresses which have not failed duplicate
              address detection.
</code></pre>

<p>For example, inside the Linux container on my Chromebook:</p>

<pre><code>chronos@penguin:~/log$ ip -6 address show dadfailed
chronos@penguin:~/log$ ip -6 address show -dadfailed
1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 state UNKNOWN qlen 1000
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
5: eth0@if6: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 state UP qlen 1000
    inet6 fe80::216:3eff:fe43:22fb/64 scope link 
       valid_lft forever preferred_lft forever
chronos@penguin:~/log$ 
</code></pre>

<h2>Dadfailed In The RFCs</h2>

<p>Duplicate Address Detection failure is discussed in <a rel="nofollow" href="https://www.rfc-editor.org/rfc/rfc4862#section-5.4.5">section 5.4.5 of RFC 4862</a> which says:</p>

<blockquote><div>
  <p>5.4.5.  When Duplicate Address Detection Fails</p>
  
  <p>A tentative address that is determined to be a duplicate as described above MUST NOT be assigned to an interface, and the node SHOULD log a system management error.</p>
</div></blockquote>

<p>Further discussion of Duplicate Address Detection occurs in <a rel="nofollow" href="https://www.rfc-editor.org/rfc/rfc4862#appendix-A">Appendix A of RFC 4862</a> and in <a rel="nofollow" href="https://www.rfc-editor.org/rfc/rfc7527">RFC 7527 Enhanced Duplicate Address Detection.</a></p>

<h2>Dadfailed In The Logs</h2>

<p>Indeed, the node did log a system management failure just as RFC 4862 said it should:</p>

<pre><code>root@Proxmox-VE /var/log # zcat messages.2.gz | grep "duplicate address"
Jan 10 03:01:27 Proxmox-VE kernel: [97048.519242] IPv6: eth0: IPv6 duplicate address 2a01:4f8:121:24cc::102 used by 92:17:7a:22:c1:e2 detected!
[ . . . ]
Jan 13 06:44:36 Proxmox-VE kernel: [  141.636572] IPv6: eth0: IPv6 duplicate address 2a01:4f8:121:24cc::102 used by 92:17:7a:22:c1:e2 detected!
root@Proxmox-VE /var/log # 
</code></pre>

<h2>Source Code</h2>

<p>Recently I started to look at C source code. I don't know hardly anything about C, so looking at source code always is an adventure.</p>

<p>Above, we previously saw the <code>ip</code> command  print the following "dadfailed" output:</p>

<pre><code>~ # ip -f inet6 addr show
  [ . . . ]
2: eth0@if45: &lt;BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN&gt; mtu 1500 state UP qlen 1000
    inet6 2a01:4f8:121:24cc::102/64 scope global tentative dadfailed 
       valid_lft forever preferred_lft forever
  [ . . . ]
</code></pre>

<p>Can we find the source code which printed the dadfailed error? Finding the printing code sounds simple enough. Probably the printing code is nowhere near as complicated as the code which checked for and found the dadfailed error, right?</p>

<p>We saw the dadfailed error notification inside an Alpine container. Possibly that error notification came from iproute2 code running inside Busybox inside the Alpine container. Nevertheless, let's start by imagining how we might get the iproute2 source code that Proxmox itself uses. I'm unsure the method here gets the sources correctly, but we can try. First come the Proxmox sources, which seem to include the Debian sources, and then we get what might be the upstream sources.</p>

<pre><code>root@Proxmox-VE ~ # git clone git://git.proxmox.com/git/iproute2.git
Cloning into 'iproute2'...
remote: Enumerating objects: 187, done.
remote: Total 187 (delta 0), reused 0 (delta 0), pack-reused 187
Receiving objects: 100% (187/187), 11.25 MiB | 88.63 MiB/s, done.
Resolving deltas: 100% (83/83), done.
root@Proxmox-VE ~ # 
cd iproute2/
root@Proxmox-VE ~/iproute2 # ls
debian  iproute2  Makefile  README
root@Proxmox-VE ~/iproute2 # cat README 
We compile our own package to make sure we always have the
latest version and bug fixes.
root@Proxmox-VE ~/iproute2 # ls debian/
changelog  copyright          iproute2-doc.examples  iproute2.links     README.Debian  source
compat     doc                iproute2-doc.install   iproute2.manpages  README.source
control    iproute2-doc.docs  iproute2.install       patches            rules
root@Proxmox-VE ~/iproute2 # ls iproute2/ #The iproute2/iproute2 directory is empty.
root@Proxmox-VE ~/iproute2 # git clone git://git.kernel.org/pub/scm/network/iproute2/iproute2.git
Cloning into 'iproute2'...
remote: Enumerating objects: 313, done.
remote: Counting objects: 100% (313/313), done.
remote: Compressing objects: 100% (289/289), done.
remote: Total 33973 (delta 60), reused 37 (delta 20), pack-reused 33660
Receiving objects: 100% (33973/33973), 8.34 MiB | 42.06 MiB/s, done.
Resolving deltas: 100% (25490/25490), done.
root@Proxmox-VE ~/iproute2 # 
</code></pre>

<p>Let's look inside the iproute2/iproute2 directory and then inside the iproute2/iproute2/ip directory.</p>

<pre><code>root@Proxmox-VE ~/iproute2 # cd iproute2/
root@Proxmox-VE ~/iproute2/iproute2 # ls
bash-completion  COPYING  doc       genl     lib       misc   README        tc         vdpa
bridge           dcb      etc       include  Makefile  netem  README.devel  testsuite
configure        devlink  examples  ip       man       rdma   schema        tipc
root@Proxmox-VE ~/iproute2/iproute2 # cd ip
root@Proxmox-VE ~/iproute2/iproute2/ip # ls
ila_common.h           iplink.c            iplink_vlan.c    ipprefix.c          link_vti.c
ip6tunnel.c            iplink_can.c        iplink_vrf.c     iproute.c           link_xfrm.c
ipaddress.c            iplink_dsa.c        iplink_vxcan.c   iproute_lwtunnel.c  Makefile
ipaddrlabel.c          iplink_dummy.c      iplink_vxlan.c   iprule.c            nh_common.h
ip.c                   iplink_geneve.c     iplink_wwan.c    ipseg6.c            routel
ip_common.h            iplink_gtp.c        iplink_xdp.c     ipstats.c           rtm_map.c
ipfou.c                iplink_hsr.c        iplink_xstats.c  iptoken.c           rtmon.c
ipila.c                iplink_ifb.c        ipmacsec.c       iptunnel.c          static-syms.c
ipioam6.c              iplink_ipoib.c      ipmaddr.c        iptuntap.c          tcp_metrics.c
ipl2tp.c               iplink_ipvlan.c     ipmonitor.c      ipvrf.c             tunnel.c
iplink_amt.c           iplink_macvlan.c    ipmptcp.c        ipxfrm.c            tunnel.h
iplink_bareudp.c       iplink_netdevsim.c  ipmroute.c       link_gre6.c         xfrm.h
iplink_batadv.c        iplink_nlmon.c      ipneigh.c        link_gre.c          xfrm_monitor.c
iplink_bond.c          iplink_rmnet.c      ipnetconf.c      link_ip6tnl.c       xfrm_policy.c
iplink_bond_slave.c    iplink_team.c       ipnetns.c        link_iptnl.c        xfrm_state.c
iplink_bridge.c        iplink_vcan.c       ipnexthop.c      link_veth.c
iplink_bridge_slave.c  iplink_virt_wifi.c  ipntable.c       link_vti6.c
root@Proxmox-VE ~/iproute2/iproute2/ip # 
</code></pre>

<p>It was the address OBJECT which drew our interest, so let's look at <a rel="nofollow" href="https://git.kernel.org/pub/scm/network/iproute2/iproute2.git/tree/ip/ipaddress.c">ipaddress.c.</a></p>

<pre><code>root@Proxmox-VE ~/iproute2/iproute2/ip # cat -n ipaddress.c | grep dadfailed
    68                  "           [-]tentative | [-]deprecated | [-]dadfailed | temporary |\n"
  1411          { .name = "dadfailed",          .mask = IFA_F_DADFAILED,        .readonly = true,      .v6only = true},
root@Proxmox-VE ~/iproute2/iproute2/ip # 
</code></pre>

<p>Line 68 seems to be part of the error message which is printed when <code>ip</code> doesn't understand the arguments given to it on the command line.</p>

<p>If we back up from line 1411 to line 1400, we can see the comment reproduced here, just below. Also, a little further down, at lines 1451 and 1452, there's code involving both "print" and "name." I'm guessing that maybe lines 1451 and 1452 <em>might</em> be responsible for printing "tentative" and "dadfailed."</p>

<pre><code>  1400  /* Mapping from argument to address flag mask and attributes */
  1401  static const struct ifa_flag_data_t {
  [ . . . ]
  1411          { .name = "dadfailed",          .mask = IFA_F_DADFAILED,        .readonly = tru
e,       .v6only = true},
  [ . . . ]
  1414          { .name = "tentative",          .mask = IFA_F_TENTATIVE,        .readonly = tru
e,       .v6only = true},
  [ . . . ]
  1451                                  print_string(PRINT_FP, NULL,
  1452                                               "%s ", flag_data-&gt;name);
</code></pre>

<p>Finally, glancing at the Busybox <code>ip</code> command, the relevant source code seems to be <a rel="nofollow" href="https://git.busybox.net/busybox/tree/networking/ip.c">ip.c.</a> The usage message for <code>ip address show</code> is on lines 139 to 149.</p>

<pre><code>139  //usage:#define ipaddr_trivial_usage
140  //usage:       "add|del IFADDR dev IFACE | show|flush [dev IFACE] [to PREFIX]"
141  //usage:#define ipaddr_full_usage "\n\n"
142  //usage:       "ipaddr add|change|replace|delete dev IFACE [CONFFLAG-LIST] IFADDR\n"
143  //usage:       "   IFADDR := PREFIX | ADDR peer PREFIX [broadcast ADDR|+|-]\n"
144  //usage:       "       [anycast ADDR] [label STRING] [scope SCOPE]\n"
145  //usage:       "   PREFIX := ADDR[/MASK]\n"
146  //usage:       "   SCOPE := [host|link|global|NUMBER]\n"
147  //usage:       "   CONFFLAG-LIST := [CONFFLAG-LIST] CONFFLAG\n"
148  //usage:       "   CONFFLAG := [noprefixroute]\n"
149  //usage:       "ipaddr show|flush [dev IFACE] [scope SCOPE] [to PREFIX] [label PATTERN]"
</code></pre>

<p>There is more on lines 341 to 347.</p>

<pre><code>341  #if ENABLE_IPADDR
342  int ipaddr_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
343  int ipaddr_main(int argc UNUSED_PARAM, char **argv)
344  {
345     return ip_do(do_ipaddr, argv);
346  }
347  #endif
</code></pre>

<p><code>ip_do</code> is defined on lines 334 to 338.</p>

<pre><code>334  static int ip_do(ip_func_ptr_t ip_func, char **argv)
335  {
336     argv = ip_parse_common_args(argv + 1);
337     return ip_func(argv);
338  }
</code></pre>

<p>Hopefully I soon will be able to understand more about how the iproute2 and Busybox code works to print the dadfailed error. Probably someone here at LES will be kind enough to provide some hints! Thanks very much! It is a lot of fun to learn a little about dadfailed! <img src="https://staging.lowendspirit.com/plugins/emojiextender/emoji/twitter/smile.png" title=":)" alt=":)" height="18" /></p>
]]>
        </description>
    </item>
    <item>
        <title>IPv6 over IPv4 - what am I doing wrong?</title>
        <link>https://staging.lowendspirit.com/index.php?p=/discussion/4178/ipv6-over-ipv4-what-am-i-doing-wrong</link>
        <pubDate>Mon, 16 May 2022 18:07:42 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>brejski</dc:creator>
        <guid isPermaLink="false">4178@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Hi guys, <br />
I am trying to set up a tunnel via Route48 or HE to make IPv6 working at home. I have a public IPv4 (carrier says it's dynamic, but it did not change in the last 5 months, lol) and MikroTik RB4011iGS+5HacQ2HnD (RouterOS 7.1.1 stable).<br />
Because my carrier provided me a semi-managed by them router [ZTE] (I do not have administrative access to it, I can for example set up firewall or change wifi password), I made NAT on my MikroTik. <br />
It looks like that: <br />
ZTE: 192.168.1.0/24<br />
MikroTik: 192.168.1.2, DMZ 192.168.1.6 (WAN INTERNET), NAT 192.168.88.0/24<br />
All devices except IPTV client device, are connected to MikroTik</p>

<p>What I want to reach is to make IPv6 work in my home network and I tried several ways to make the tunnel working, but both do not work.</p>

<p>First approach: using NAT IP (192.168.88.1)<br />
<code>[admin@MikroTik] &gt; /interface 6to4 add comment="Route48.org Tunnel Broker (DE)" disabled=no local-address=192.168.88.1 mtu=1280 name=sit1 remote-address=194.50.X.X                                                                                                                        [admin@MikroTik] &gt; /ipv6 route add comment="" disabled=no distance=1 dst-address=::/0 gateway=2a06:a003:XXXX::1 scope=30 target-scope=10                                                                                                                                                       [admin@MikroTik] &gt; /ipv6 address add address=2a06:a003:XXXX::2/48 advertise=no disabled=no eui-64=no interface=sit1</code></p>

<p>Second approach: using carrier router IP (192.168.1.6):<br />
<code>[admin@MikroTik] &gt; /interface 6to4 add comment="Route48.org Tunnel Broker (DE)" disabled=no local-address=192.168.1.6 mtu=1280 name=sit1 remote-address=194.50.X.X                                                                                                                      [admin@MikroTik] &gt; /ipv6 route add comment="" disabled=no distance=1 dst-address=::/0 gateway=2a06:a003:XXXX::1 scope=30 target-scope=10                                                                                                                                                       [admin@MikroTik] &gt; /ipv6 address add address=2a06:a003:XXXX::2/48 advertise=no disabled=no eui-64=no interface=sit1</code></p>

<p>I also tried to forward all ports to Mikrotik and use my public IPv4, but it didn't work neither...</p>

<p>After any try, I tried to ping Cloudflare IPv6 DNS, but there are timeouts...<br />
<code>[admin@MikroTik] &gt; ping 2606:4700:4700::1111                                                                                                                                                                                                                                                     SEQ HOST                                     SIZE TTL TIME       STATUS                                                                                                                                                                                                                          0 2606:4700:4700::1111                                         timeout                                                                                                                                                                                                                         1 2606:4700:4700::1111                                         timeout                                                                                                                                                                                                                         2 2606:4700:4700::1111                                         timeout                                                                                                                                                                                                                         3 2001:470:71:74b::                         104  64 95ms158us  address unreachable</code></p>

<p>What am I doing wrong in my config? Tunnel does not work neither with Route48 nor HE.</p>
]]>
        </description>
    </item>
    <item>
        <title>Dedicated server with USA Commercial and Residential IPs</title>
        <link>https://staging.lowendspirit.com/index.php?p=/discussion/4142/dedicated-server-with-usa-commercial-and-residential-ips</link>
        <pubDate>Thu, 05 May 2022 17:58:11 +0000</pubDate>
        <category>Requests</category>
        <dc:creator>alissonalas</dc:creator>
        <guid isPermaLink="false">4142@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>I have a demand for immediate contracting of a dedicated server in the USA with fresh IPs blocks:</p>

<p>/23 Usage Type: Residential IP / (ISP) Fixed Line ISP<br />
/23 Usage Type: (COM) Commercial</p>

<p>It will be for private services use where datacenter IPs (DCH) are not accepted.<br />
IPs must be valid and updated in IP2Location.</p>

<p>It will not be for prohibited traffic use like spam, torrents, hosting, hidden proxy etc.</p>

<p>Payment methods: PayPal or credit card.</p>

<p>Interested, please leave a quote via PM or contact email.</p>
]]>
        </description>
    </item>
    <item>
        <title>Review: System administration and networking services from @PenguinGenius ⭐⭐⭐⭐⭐</title>
        <link>https://staging.lowendspirit.com/index.php?p=/discussion/3278/review-system-administration-and-networking-services-from-penguingenius</link>
        <pubDate>Wed, 25 Aug 2021 01:57:02 +0000</pubDate>
        <category>Reviews</category>
        <dc:creator>Not_Oles</dc:creator>
        <guid isPermaLink="false">3278@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Guys!</p>

<p>It all started the day I dreamed of trying lower level dedicated server network and virtual machine configuration by myself instead of having <a rel="nofollow" href="https://proxmox.com">Proxmox</a> do the configuration for me. So, recently, I moved my <a rel="nofollow" href="https://metalvps.com">MetalVPS</a> server from <a rel="nofollow" href="https://proxmox.com">Proxmox</a> to <a rel="nofollow" href="https://wiki.debian.org/DebianUnstable">Debian sid.</a></p>

<p>As part of the move from Proxmox to Debian sid, I got my <em>clueless</em> self into big trouble when I imagined setting up link layer networking inside the server. I imagined that, with link layer networking, virtual machines could use all sixteen of the server's expensive IPv4 addresses. Routing the extra subnet inside the server would have cost three IP addresses from the subnet, leaving only thirteen available for use by virtual machines. I wanted to use all 16 IPs.</p>

<p>Entire days passed by while I kept trying different network configurations. Eventually it seemed like I must have tried every possible configuration except the one configuration that would have worked! I kept reading and rereading the Hetzner tutorials plus several others that I found. Even <a rel="nofollow" href="https://talk.lowendspirit.com/discussion/3238/hetzner-dedicated-server-debian-how-can-vms-use-all-of-the-ipv4-subnet-ips">posting here at LES</a> and getting great responses wasn't enough to push me to victory.</p>

<p>Ultimately there seemed no choice other than to get help. But, from whom? I asked friends for referrals. I looked on Google. I checked <a rel="nofollow" href="https://www.upwork.com/">Upwork</a> and <a rel="nofollow" href="https://www.fiverr.com/">Fiverr.</a> Most of the search results were about Microsoft, but I wanted Linux.</p>

<p>Eventually, however, I struck pure gold when I searched for "linux server administration -microsoft". There was this guy, Ratko, who seemed listed everywhere on every freelance site. And all the Ratko pages mentioned "networking." It seemed like Ratko was an exact fit for my problem!</p>

<p>But, which freelancing website to use? I've never used any of them, and so, as usual, I was <em>clueless.</em> I wondered if I could make direct contact with Ratko. It took awhile to figure out his last name. And then I found an email address! So I sent off an email.</p>

<p>Wow! Ratko replied almost immediately! Now, after working with Ratko, I know he <strong>always</strong> replies almost immediately. I don't know how he replies so fast! Well, "immediately" might be overstating the case. Maybe ten or twenty minutes. But that's <strong>amazing!</strong></p>

<p>Ratko seemed to think he could fix my server's network configuration so that my plan to use all sixteen IP addresses in the subnet would work.</p>

<p>I made an account on the server for Ratko. Haha! I <em>cluelessly</em> forgot to install the ssh public key that Ratko had sent me <em>at my request.</em> Haha! <img src="https://staging.lowendspirit.com/plugins/emojiextender/emoji/twitter/smile.png" title=":)" alt=":)" height="18" /></p>

<p>After he finally could log in, Ratko suggested changes in my attempted network configuration plus a few changes in Hetzner's or Debian's kernel network configuration and their qemu defaults, plus also a change in my qemu VM launch script.</p>

<p>Haha, well, nothing worked, but that was, as Ratko realized, because I had not left even one VM running. <img src="https://staging.lowendspirit.com/plugins/emojiextender/emoji/twitter/smile.png" title=":)" alt=":)" height="18" /></p>

<p>Next it was time to look inside a running VM. I set one up. Ratko courageously and tirelessly fought through all the trouble of setting up an ssh tunnel! He then dove inside the test VM through qemu's VNC console interface!</p>

<p>Well, you will not be surprised that Ratko made a couple of changes to my VM configuration. And then. . . .</p>

<p><strong>Suddenly, everything worked!</strong> It was like magic! Ratko comes in, looks carefully but quickly at what I had been trying for weeks. Then he makes a tweak here, there, everywhere. <strong>Suddenly, everything just works!</strong></p>

<p>Now a few days and a few reboots, retests, and IP changes later, Ratko's entire configuration seems stable and indeed does appear to work for all the IPs in the subnet. Plus, no complaints from Hetzner!</p>

<p>Next came time for financial reckoning, Ratko asked me to send him an amount I thought was fair. While thinking about what number might be fair, I happened to notice a three digit number in one of the octets of the IP address of our test VM. Although it was an odd number, it nevertheless jumped out as perfect! I immediately sent Ratko that exact number of dollars.</p>

<p>Ratko told me the amount was generous. I won't say for sure that the funds I sent to Ratko were my best spent money ever, but I do say for sure that they might have been.</p>

<p><strong>Working with Ratko is pure joy!</strong> Everything remains calm, but there is speed, focus, intensity, nuance, breadth, depth, vast context, wide experience, patience, courtesy, and great generosity! <strong>Plus perfect results!</strong></p>

<p>Here is a link to <a rel="nofollow" href="http://www.linkedin.com/in/ratkobucic">Ratko's LinkedIn.</a></p>

<p>Highest thanks to Ratko for a super great job! Five stars! ⭐⭐⭐⭐⭐</p>

<hr />

<p><strong>Afterword</strong></p>

<p>My biggest problem writing this review is imagining people won't believe what I am saying about Ratko  because my review is too good to be true. Well, every language's literature has its classic hero saga genre. So now maybe we have a <a rel="nofollow" href="https://en.wikipedia.org/wiki/Beowulf">Beowulf</a> for Linux network and system administration freelancers and their worthy clients.</p>

<p>I am delighted to speak privately with anyone considering hiring Ratko. If you contact me I promise additional superlatives! 🤩</p>

<p>I sent Ratko a few questions in case he wanted to answer them for you guys. I did not include a draft of this review. Ratko's answers are below.</p>

<p>For those interested, a few more tech details <a rel="nofollow" href="https://talk.lowendspirit.com/discussion/comment/70576/#Comment_70576">are posted here</a> and elsewhere throughout that same thread.</p>

<p>Friendly greetings from New York City and Sonora, MX! 🗽🇺🇸🇲🇽🏜️</p>

<hr />

<p><strong>Interview with Ratko</strong> <a href="https://staging.lowendspirit.com/index.php?p=/profile/PenguinGenius" rel="nofollow">@PenguinGenius</a></p>

<p>Hi Tom,</p>

<blockquote><div>
  <p>Hey Ratko!<br />
  Hope you are doing great!</p>
</div></blockquote>

<p>So far so good <img src="https://staging.lowendspirit.com/plugins/emojiextender/emoji/twitter/wink.png" title=";)" alt=";)" height="18" /></p>

<blockquote><div>
  <p>How did you get started with Linux?</p>
</div></blockquote>

<p>25+ years ago <img src="https://staging.lowendspirit.com/plugins/emojiextender/emoji/twitter/smile.png" title=":)" alt=":)" height="18" /> With Slackware 1.0 distro.</p>

<blockquote><div>
  <p>How did you get started with networking?</p>
</div></blockquote>

<p>About same time, 1996. when I started working in Data Center, and I was <br />
at Junior Network Engineer position first.</p>

<blockquote><div>
  <p>How did you get started freelancing?</p>
</div></blockquote>

<p>Couple years after I got my regular job at University, as government <br />
doesn't give high salaries <img src="https://staging.lowendspirit.com/plugins/emojiextender/emoji/twitter/smile.png" title=":)" alt=":)" height="18" /><br />
Friend of mine asked me to start as QA Engineer for his friends company, <br />
which build some shareware applications for Windows.</p>

<blockquote><div>
  <p>How do you and your clients find each other?</p>
</div></blockquote>

<p>Freelancer sites at first, LinkedIn, and finally - satisfied clients <br />
recommendation <img src="https://staging.lowendspirit.com/plugins/emojiextender/emoji/twitter/smile.png" title=":)" alt=":)" height="18" /></p>

<blockquote><div>
  <p>What has been your most complex and challenging freelance job?</p>
</div></blockquote>

<p>Can't remember, I'm doing this for so many years...</p>

<blockquote><div>
  <p>How could your clients make your life easier?</p>
</div></blockquote>

<p>With clear and complete info about problem, access, etc. And timely <br />
response for my additional queries.</p>

<blockquote><div>
  <p>What's your schedule on days, nights, and weekends?</p>
</div></blockquote>

<p>8am-3pm - in office at University - sometimes doing some fast freelance <br />
tasks in office when I'm bored.<br />
7pm-10pm - freelance work for clients (or more if needed)<br />
Night - only if world catastrophic failure is in progress <img src="https://staging.lowendspirit.com/plugins/emojiextender/emoji/twitter/smile.png" title=":)" alt=":)" height="18" /><br />
Weekends - only super urgent requests (which of course have super-duper <br />
high hourly rate), or some maintenance tasks I have scheduled over <br />
weekend days.</p>

<blockquote><div>
  <p>If you also have a regular job, how do you manage conflicts?</p>
</div></blockquote>

<p>I do have regular job. No conflicts - office work is primary. Then <br />
clients' requests scheduled per urgency.<br />
But in office first rule of system administration helps: "Best sysadmin <br />
is one who is not doing anything!"<br />
Meaning - he did all great, and nothing to do more (until any failure).</p>

<blockquote><div>
  <p>How can you respond to clients so quickly?</p>
</div></blockquote>

<p>I know my value, and what I can do <img src="https://staging.lowendspirit.com/plugins/emojiextender/emoji/twitter/smile.png" title=":)" alt=":)" height="18" /><br />
And I'd like any my client to feel special and to know I take care for <br />
him.</p>

<blockquote><div>
  <p>What advice would you give a new freelancer?</p>
</div></blockquote>

<p>Don't Learn to Hack... Hack to Learn!<br />
Even something seems hard - try to apply RTFM rule (Read The Fuckin' <br />
Manual) before start to ask around. Try things (and know how to revert).<br />
And don't feel insecure in yourself - otherwise, this is not for you.</p>
]]>
        </description>
    </item>
    <item>
        <title>Hetzner Dedicated Server + Debian -- How Can VMs Use All of the IPv4 Subnet IPs?</title>
        <link>https://staging.lowendspirit.com/index.php?p=/discussion/3238/hetzner-dedicated-server-debian-how-can-vms-use-all-of-the-ipv4-subnet-ips</link>
        <pubDate>Sun, 15 Aug 2021 00:37:31 +0000</pubDate>
        <category>Help</category>
        <dc:creator>Not_Oles</dc:creator>
        <guid isPermaLink="false">3238@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Hello LES!</p>

<p>Hetzner seems to have an interesting policy that outgoing packets from virtual machines ("VMs") using additional subnet IPs on dedicated servers must come from the known-to-Hetzner hardware MAC address of the server.</p>

<p>Thus, Hetzner wants VMs using subnet IPv4 addresses to use the server node's main IPv4 as the VM's gateway. If I understand correctly, the usual way to accomplish using the node's main IPv4 as a VM gateway means that the VMs cannot use <em>all</em> of the IP addresses in the node's IPv4 subnet.</p>

<p><strong>However, could using layer 2 networking for IPv4 on the server node allow use of <em>all</em> of the additional IPv4 subnet addresses by VMs while still meeting Hetzner's requirements?</strong></p>

<p>This enticing possibility is suggested at <a href="https://www.sysorchestra.com/hetzner-root-server-with-kvm-ipv4-and-ipv6-networking/" rel="nofollow">https://www.sysorchestra.com/hetzner-root-server-with-kvm-ipv4-and-ipv6-networking/</a> .</p>

<p>The subnet here is a /28 with 16 IP addresses. Would it be completely crazy to image that an <code>/etc/network/interfaces</code> configuration somewhat like the following might work to utilize all 16 of the IPv4 subnet IPs?</p>

<pre><code>source /etc/network/interfaces.d/*

auto lo
iface lo inet loopback
iface lo inet6 loopback

auto enp7s0
iface enp7s0 inet static
  address 198.18.1.0  
  netmask 255.255.255.255
  gateway 198.18.0.1
  pointopoint 198.18.0.1
    post-up echo 1 &gt; /proc/sys/net/ipv4/ip_forward
    post-up echo 0 &gt; /proc/sys/net/ipv4/conf/enp7s0/send_redirects

iface enp7s0 inet6 static
  address 2001:0002::2
  netmask 128
  gateway fe80::1
    post-up echo 1 &gt; /proc/sys/net/ipv6/conf/all/forwarding

auto vmbr0
iface vmbr0 inet static
  address 198.18.1.0 
  netmask 255.255.255.255
  bridge_ports none
  bridge_stp off
  bridge_fd 0
  bridge_maxwait 0
    post-up ip route add 198.18.10.0/32 dev vmbr0
    pre-down ip route del 198.18.10.0/32 dev vmbr0
    post-up ip route add 198.18.10.1/32 dev vmbr0
    pre-down ip route del 198.18.10.1/32 dev vmbr0
      [ . . . ]
    post-up ip route add 198.18.10.15/32 dev vmbr0
    pre-down ip route del 198.18.10.15/32 dev vmbr0

iface vmbr0 inet6 static
  address 2001:0002::2
  netmask 64

</code></pre>

<hr />

<p>When the server is booted using the above <code>/etc/network/interfaces</code> configuration, and with no VMs running, I seem to see something like the following. Is this as should be expected?</p>

<pre><code><br />not-oles@server:~$ ip link show
1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp7s0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether DE:AD:BE:EF:DE:AD brd ff:ff:ff:ff:ff:ff
3: vmbr0: &lt;NO-CARRIER,BROADCAST,MULTICAST,UP&gt; mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000
    link/ether  DE:AD:BE:EF:BE:AD brd ff:ff:ff:ff:ff:ff
not-oles@server:~$ ip route show
default via 198.18.0.1 dev enp7s0 onlink 
198.18.10.0 dev vmbr0 scope link linkdown 
198.18.10.1 dev vmbr0 scope link linkdown 
  [ . . . ]
198.18.10.15 dev vmbr0 scope link linkdown
not-oles@server:~$ ip -6 link show
1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp7s0: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether DE:AD:BE:EF:DE:AD brd ff:ff:ff:ff:ff:ff
3: vmbr0: &lt;NO-CARRIER,BROADCAST,MULTICAST,UP&gt; mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000
    link/ether DE:AD:BE:EF:BE:AD brd ff:ff:ff:ff:ff:ff
not-oles@server:~$ ip -6 route show
::1 dev lo proto kernel metric 256 pref medium
2001:0002::2 dev enp7s0 proto kernel metric 256 pref medium
2001:0002::/64 dev vmbr0 proto kernel metric 256 linkdown pref medium
fe80::/64 dev enp7s0 proto kernel metric 256 pref medium
default via fe80::1 dev enp7s0 metric 1024 onlink pref medium
not-oles@server:~$ 

</code></pre>

<p>Thanks very much for reading and for any help! 💛 Best wishes from Mexico's Sonoran Desert! 🚵</p>
]]>
        </description>
    </item>
    <item>
        <title>ping tools (like ping.pe, dnstools.ws, mtr.sh) with many (esp. LATAM!) locations?</title>
        <link>https://staging.lowendspirit.com/index.php?p=/discussion/3239/ping-tools-like-ping-pe-dnstools-ws-mtr-sh-with-many-esp-latam-locations</link>
        <pubDate>Sun, 15 Aug 2021 08:03:46 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>chimichurri</dc:creator>
        <guid isPermaLink="false">3239@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Do you know any website similar to the ones mentioned in the thread name that provides as many locations (especially LATAM) as possible?</p>

<p>Here is a short introduction of the three, in case you don't know them yet:</p>

<ul>
<li>ping.pe - some 30 locations, mostly NA and China, also some EU and a bit of APAC</li>
<li>dnstools.ws - some 30 locations, much more diverse than ping.pe (the majority excl. US and AU have 1 location per country = there's more countries in total), areas included: NA, EU, APAC, Africa (ZA)</li>
<li>mtr.sh - a shitload (200+?) of locations worldwide, including LATAM (MX, CO, BR, PE, CL, AR)</li>
</ul>
]]>
        </description>
    </item>
    <item>
        <title>How to Create and Setup a Debian KVM VPS with Proxmox VE 6 -- Part III -- Network Configuration</title>
        <link>https://staging.lowendspirit.com/index.php?p=/discussion/3933/how-to-create-and-setup-a-debian-kvm-vps-with-proxmox-ve-6-part-iii-network-configuration</link>
        <pubDate>Fri, 23 Jul 2021 12:00:00 +0000</pubDate>
        <category>LES Talk</category>
        <dc:creator>Not_Oles</dc:creator>
        <guid isPermaLink="false">3933@/index.php?p=/discussions</guid>
        <description><![CDATA[<p><em>Written by <a href="https://staging.lowendspirit.com/index.php?p=/profile/Not_Oles" rel="nofollow">@Not_Oles</a>, 23 Jul 2021</em><br />
<small>Article was migrated from WordPress to Vanilla in March 2022</small></p>

<p>
  <img src="https://talk.lowendspirit.com/uploads/editor/n9/cixat1djj0ag.png" alt="image" />
</p>

<h2>I. Before We Start</h2>

<p>We need to obtain our basic network configuration from our provider. Or, if we are running our own host node, we need to assign basic network configuration to ourselves. Our basic network configuration might look something like this:</p>

<table>
<thead>
<tr>
  <th><strong>Item</strong></th>
  <th><strong>Value</strong></th>
</tr>
</thead>
<tbody>
<tr>
  <td>IPv4 address</td>
  <td>172.16.165.97/28</td>
</tr>
<tr>
  <td>Netmask</td>
  <td>255.255.255.240</td>
</tr>
<tr>
  <td>Broadcast</td>
  <td>172.16.165.111</td>
</tr>
<tr>
  <td>Gateway</td>
  <td>172.16.164.1</td>
</tr>
</tbody>
</table>

<p>For IPv6, one might expect something like:</p>

<table>
<thead>
<tr>
  <th><strong>Item</strong></th>
  <th><strong>Value</strong></th>
</tr>
</thead>
<tbody>
<tr>
  <td>IPv6 address</td>
  <td>fe80::/64</td>
</tr>
</tbody>
</table>

<p>But occasionally, IPv6 could be something like:</p>

<table>
<thead>
<tr>
  <th><strong>Item</strong></th>
  <th><strong>Value</strong></th>
</tr>
</thead>
<tbody>
<tr>
  <td>IPv6 address</td>
  <td>fe80:xxxx:xxxx:xxxx::97/128</td>
</tr>
<tr>
  <td>Gateway6</td>
  <td>fe80:xxxx:xxxx:xxxx::3</td>
</tr>
</tbody>
</table>

<p>Notes:</p>

<ul>
<li>The /28 in the IPv4 address and the longer netmask are <a rel="nofollow" href="https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#:~:text=CIDR%20notation%20is%20a%20compact,bits%20in%20the%20network%20mask.">different ways of providing the same information about the size of the local, directly connected network.</a> It suffices for us to have this information in one format or the other. We don't need both formats because the information is the same. Also, the broadcast IP might not be provided, since it isn't strictly necessary.</li>
<li>For the second format of the IPv6 address, <strong>what happened to the /64</strong>? 😱 The /128 in the second form of the IPv6 address might seem <strong><em>clueless</em></strong> to IPv6 fans expecting a /64. Also, the second format of the IPv6 address includes a gateway6 address. The gateway6 address might seem strange to some IPv6 fans, but we need the gateway6 for our minimal, static configuration. More on all this below.</li>
</ul>

<h2>II. Introduction</h2>

<p>In <a rel="nofollow" href="https://lowendspirit.com/how-to-create-and-setup-a-debian-kvm-vps-with-proxmox-ve-6-part-ii-debian-install/">the previous post of this series</a> we finished using the Proxmox web GUI to install our new Debian KVM VPS via the <a rel="nofollow" href="https://www.debian.org/CD/netinst/">Debian netinst installer iso image.</a> The final step in Part II was removing the netinst install iso image from the emulated cdrom and then reooting our new VM, which came up from its own internal filesystem:</p>

<p><img src="https://talk.lowendspirit.com/uploads/editor/hs/2qx8afaew937.png" alt="" title="" /></p>

<p>In today's post, we continue from this exact place where we left Part II -- connected to our newly installed and newly rebooted KVM via the Proxmox web GUI. In this post, we will accomplish the networking configuration which was skipped in Part II because the <a rel="nofollow" href="https://talk.lowendspirit.com/discussion/comment/63101/#Comment_63101">Debian netinst iso doesn't automatically configure out of band IP addresses.</a></p>

<p>There are three network configuration and related tasks we will accomplish today:</p>

<ul>
<li>First, we go "inside" our VM through the Proxmox web GUI's emulated "physical" console connection and set up networking. In Debian, networking setup requires that we adjust the file /etc/network/interfaces to tell our VM its network address and the address of its gateway to the internet.</li>
<li>Second, we edit the file /etc/resolv.conf to tell our VM the numerical addresses of <a rel="nofollow" href="https://en.wikipedia.org/wiki/Domain_Name_System">Domain Name System ("DNS")</a> servers it can use to translate human readable <a rel="nofollow" href="https://en.wikipedia.org/wiki/Uniform_Resource_Identifier">Uniform Resource Identifiers (URI)</a> into numerical <a rel="nofollow" href="https://en.wikipedia.org/wiki/IP_address">Internet Protocaol ("IP") addresses.</a></li>
<li>Third, we set up /etc/apt/sources.list to tell our system's <a rel="nofollow" href="https://www.debian.org/doc/manuals/debian-faq/uptodate.en.html">Aptitude software package manager ("APT")</a> where to get software updates and the additional software packages we will want to install.</li>
</ul>

<p>Section III, Quick Setup, runs quickly through all three of today's tasks in "recipe style."</p>

<p>Section IV offers additional context on our setup environment.</p>

<p>Sections V, VI, and VII provide additional details on today's three setup tasks.</p>

<p>Section VIII discusses security.</p>

<p>Section IX discusses backup.</p>

<p>When we finish the Quick Setup, our new Debian KVM VPS should be connected to the internet, DNS should work, and we should be able to use the Debian package system to add whatever additional software we want.</p>

<p>When we finish all of today's post, we should have reasonable context within which to understand our Debian VM's networking setup.</p>

<h2>III. Quick Setup</h2>

<p>Logged into our VM through the Proxmox web GUI, we run the command <code>ip link show</code>. This command will give us the name of our network interface, probably something like "ens18."</p>

<p>As root or with <code>sudo</code>, we edit the text of the file /etc/network/interfaces so that it contains the minimum necessary information:</p>

<pre><code>auto ens18
iface ens18 inet static
  address IPv4_ADDRESS/CIDR
  gateway GATEWAY_ADDRESS

iface ens18 inet6 static
  address IPv6_ADDRESS/CIDR
  gateway GATEWAY6_ADDRESS
</code></pre>

<p>Using our example network configuration, our minimal /etc/network/interfaces looks like this:</p>

<pre><code>auto ens18
iface ens18 inet static
  address 172.16.165.97/28
  gateway 172.16.164.1

iface ens18 inet6 static
  address fe80:xxxx:xxxx:xxxx::97/128
  gateway fe80:xxxx:xxxx:xxxx::3
</code></pre>

<p>Second, we edit the /etc/resolv.conf file so that it looks like this:</p>

<pre><code>nameserver 1.1.1.1
nameserver 8.8.8.8
nameserver 2606:4700:4700::1111
nameserver 2001:4860:4860::8888
</code></pre>

<p>Third, we edit /etc/apt/sources.list so that it looks like this:</p>

<pre><code>deb http://deb.debian.org/debian buster main contrib non-free

deb http://deb.debian.org/debian-security/ buster/updates main contrib non-free

deb http://deb.debian.org/debian buster-updates main contrib non-free
</code></pre>

<p>Finally, we restart networking so that our new configuration takes effect:</p>

<pre><code>systemctl restart networking
</code></pre>

<p>At this point, we should have both IPv4 and IPv6 connectivity, and DNS and APT both should work.</p>

<h2>IV. More Context</h2>

<ul>
<li><strong>Virtualized Console Connection</strong></li>
</ul>

<p>The Proxmox web GUI virtualizes a wired console connection. In other words, our web browser does connect over the internet to our Proxmox server, but, the view from inside our new KVM is the same as though a wired connection was attached. Our new KVM thinks it's talking over a wired connection to a physical console. From inside our new KVM, there is, as yet, no network connection.</p>

<p>By default, the Proxmox web GUI works via <a rel="nofollow" href="https://en.wikipedia.org/wiki/Virtual_Network_Computing">VNC.</a> <a rel="nofollow" href="https://pve.proxmox.com/wiki/Serial_Terminal">In the Proxmox wiki on serial terminal</a> Proxmox warns that VNC might</p>

<blockquote><div>
  <p>not have the features you need (i.e. easy copy/paste between other terminals)</p>
</div></blockquote>

<p>or it might be</p>

<blockquote><div>
  <p>impossible to capture all &#91;kernel messages, standard output, or error&#93; messages on &#91;the&#93; VNC screen.</p>
</div></blockquote>

<p>Yep, copy / paste commands <a rel="nofollow" href="https://forum.proxmox.com/threads/copy-paste-keys-commands-for-ct-kvm-vnc-console.28037/">do not seem to work in the Proxmox KVM virtual console.</a></p>

<p>Also, if you enjoy using the vi editor, you might find what looks like a "Send-Esc" button among the set of choices within the set exposed by the top button on the console VNC control bar. Use of the real keyboard Escape key results in exiting full screen. However, a second real Esc seems to produce the expected mode change, despite that maybe we no longer can see too well without returning to full screen.</p>

<ul>
<li><strong>No DHCP, No SLAAC</strong></li>
</ul>

<p>These days most network setups use <a rel="nofollow" href="https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol">Dynamic Host Configuration Protocol (DHCP)</a> to autoconfigure IPv4 networking. The machine on which networking is to be configured asks for and receives from a DHCP server all the needed information for the networking setup.</p>

<p>It is possible to configure DHCP so that it always returns the same IP address to each VM, but, since our entire Proxmox network is static, it may be simpler to set up networking manually--the traditional way for servers.</p>

<p><a rel="nofollow" href="https://en.wikipedia.org/wiki/IPv6#Stateless_address_autoconfiguration_(SLAAC)">Stateless Address Autoconfiguration ("SLAAC")</a> provides automatic configuration of IPv6 addresses. SLAAC requires a /64, which is why people say, for IPv6, that a /64 is expected and that less than a /64 is <em>clueless.</em> However, it remains possible to hand configure a single static IPv6 address, as we are doing here.</p>

<p>What if, for whatever reason, we simply do not want to use SLAAC? What if our provider doesn't receive enough IPv6 addresses from <em>his</em> provider to allow passing on to each VPS its own /64? What if our provider's provider charges an extra fee for extra IPv6 addresses, but we do not want to pay our provider's pass through of his provider's extra fee? What if we simply choose to use single, static IPs as is traditional for servers?</p>

<ul>
<li><strong>No Cloud-Init</strong></li>
</ul>

<p>As mentioned in <a rel="nofollow" href="https://lowendspirit.com/how-to-create-and-setup-a-debian-kvm-vps-with-proxmox-ve-6-part-ii-debian-install/">the previous post of this series,</a> most VM network setups these days are done with <a rel="nofollow" href="https://github.com/canonical/cloud-init">Cloud-Init.</a> Proxmox <a rel="nofollow" href="https://pve.proxmox.com/wiki/Cloud-Init_Support">supports Cloud-Init,</a> which enables both networking and ssh access to virtual machines to be set up on the Proxmox hypervisor and outside of the VM. Cloud-init can use DHCP. Here, however, we have chosen the simplest possible manual configuration with static IPs.</p>

<ul>
<li><strong>Our Static, Routed Configuration And Out of Band Gateway From Our Provider's Provider</strong></li>
</ul>

<p>Here, our single, static IPv4 and single, static IPv6 are each derived from a <a rel="nofollow" href="https://en.wikipedia.org/wiki/Routing">routed subnet</a> assigned to our server node. However, our internet gateway IPv4 address is not included among our server's routed group of IPv4s. This is called an "out of band" gateway.</p>

<p>Besides routed subnets, it also is possible for a datacenter to assign to servers non-routed, individual IP addresses. Data for these non-routed IPs moves between the datacenter switch and server nodes via <a rel="nofollow" href="https://en.wikipedia.org/wiki/Network_layer">the "link layer."</a> Hetzner has a <a rel="nofollow" href="https://docs.hetzner.com/robot/dedicated-server/network/net-config-debian/">tutorial on Debian network configuration</a> which includes discussion of "bridged configuration" for non-routed IPs.</p>

<ul>
<li><strong>Systemd in Debian Networking</strong></li>
</ul>

<p><a rel="nofollow" href="https://lwn.net/Articles/585319/">Since about 2014,</a> networking is setup on Debian with <a rel="nofollow" href="https://en.wikipedia.org/wiki/Systemd">systemd.</a> The choice of systemd <a rel="nofollow" href="https://lwn.net/Articles/585363/">initially was</a> and <a rel="nofollow" href="https://www.howtogeek.com/675569/why-linuxs-systemd-is-still-divisive-after-all-these-years/">has continued to be divisive.</a> Nevertheless systemd has remained as the Debian default.</p>

<p>There are at least two basic variations of Debian's systemd network arrangement. The first--which seems to be the default variation for Debian systemd network configuration--at least with the netinst iso--is using systemd's networking.service. For example, by using <code>systemctl</code>, we can confirm that networking.service is what is being used on our Node:</p>

<pre><code>root@Proxmox-VE ~ # systemctl status networking.service
● networking.service - Raise network interfaces
   Loaded: loaded (/lib/systemd/system/networking.service; enabled; vendor preset: 
   Active: active (exited) since Wed 2021-06-02 19:13:13 UTC; 1 weeks 2 days ago
     Docs: man:interfaces(5)
 Main PID: 791 (code=exited, status=0/SUCCESS)
    Tasks: 0 (limit: 4915)
   Memory: 0B
   CGroup: /system.slice/networking.service

 [ . . . ]
root@Proxmox-VE ~ # 
</code></pre>

<p>Our test KVM also seems to think its networking is controlled by systemd:</p>

<pre><code>root@debian-kvm:~# systemctl status networking
● networking.service - Raise network interfaces
   Loaded: loaded (/lib/systemd/system/networking.service; enabled; vendor preset: enabled)
   Active: active (exited) since Wed 2021-06-16 01:20:45 UTC; 4min 51s ago
     Docs: man:interfaces(5)
  Process: 448 ExecStart=/sbin/ifup -a --read-environment (code=exited, status=0/SUCCESS)
 Main PID: 448 (code=exited, status=0/SUCCESS)

Jun 16 01:20:45 debian-kvm systemd[1]: Starting Raise network interfaces...
Jun 16 01:20:45 debian-kvm systemd[1]: Started Raise network interfaces.
root@debian-kvm:~#
</code></pre>

<p>As we can see, systemd networking.service calls the traditional debian <code>ifup</code> and <code>ifdown</code>.</p>

<pre><code>root@debian-kvm:~# cat /lib/systemd/system/networking.service
[Unit]
Description=Raise network interfaces
Documentation=man:interfaces(5)
DefaultDependencies=no
Requires=ifupdown-pre.service
Wants=network.target
After=local-fs.target network-pre.target apparmor.service systemd-sysctl.service systemd-modules-load.service ifupdown-pre.service
Before=network.target shutdown.target network-online.target
Conflicts=shutdown.target

[Install]
WantedBy=multi-user.target
WantedBy=network-online.target

[Service]
Type=oneshot
EnvironmentFile=-/etc/default/networking
ExecStart=/sbin/ifup -a --read-environment
ExecStop=/sbin/ifdown -a --read-environment --exclude=lo
RemainAfterExit=true
TimeoutStartSec=5min
root@debian-kvm:~# 
</code></pre>

<p>The second Debian systemd possibility--not the default on Debian netinst.iso and not used here--is systemd-networkd. Sahitya Maruvada has a simple, clear, Debian systemd-networkd introduction, <a rel="nofollow" href="https://medium.com/100-days-of-linux/working-with-systemd-networkd-e461cfe80e6d">Working with systemd-networkd.</a> The <a rel="nofollow" href="https://wiki.debian.org/SystemdNetworkd">systemd-networkd wiki page</a> and the <a rel="nofollow" href="https://manpages.debian.org/buster/systemd/systemd.network.5.en.html">systemd.network manpage</a> also are available.</p>

<ul>
<li><strong>Official Debian Network Setup Instructions</strong></li>
</ul>

<p>Official Debian network setup instructions include the <a rel="nofollow" href="https://wiki.debian.org/NetworkConfiguration">Wiki,</a> the <a rel="nofollow" href="https://www.debian.org/doc/manuals/debian-reference/ch05.en.html">Handbook,</a> manual pages such as <code>man interfaces</code>, /etc/network/interfaces examples <a rel="nofollow" href="https://salsa.debian.org/debian/ifupdown/-/blob/master/examples/network-interfaces">online,</a> and sometimes locally:</p>

<pre><code># less /usr/share/doc/ifupdown/examples/network-interfaces
</code></pre>

<ul>
<li><strong>The <code>ip</code> Command Usually Is Available Even Though Networking Setup Varies Among Linux Distributions</strong></li>
</ul>

<p>Setting up networking, DNS name resolution, and software package management is very different in different Linux distributions. Therefore, we should not assume that the steps taken below would be exactly the same with a different Linux distribution than Debian.</p>

<p>Nevertheless, despite the different distributions' differing network setup systems, the <code>ip</code> command, <a rel="nofollow" href="https://en.wikipedia.org/wiki/Iproute2">supplied by the iproute2 collection,</a> usually is available these days. Please see also Red Hat's <a rel="nofollow" href="https://access.redhat.com/sites/default/files/attachments/rh_ip_command_cheatsheet_1214_jcs_print.pdf">IP Command Cheat Sheet</a></p>

<p>Because the <code>ip</code> command often is available, networking can be configured in many distributions, including Debian, by running a sequence of <code>ip</code> commands. The net effect <img src="https://staging.lowendspirit.com/plugins/emojiextender/emoji/twitter/smile.png" title=":)" alt=":)" height="18" /> of the sequence of <code>ip</code> commands can be to get the network functioning on most distributions without touching that individual distribution's network setup scheme.</p>

<p>Here's <a rel="nofollow" href="https://talk.lowendspirit.com/discussion/comment/63067/#Comment_63067">an example</a> of the <code>ip</code> command used in the context of an <a rel="nofollow" href="https://en.wikipedia.org/wiki/IPXE">iPXE boot.</a> Note that the first command in the linked example requires knowledge of the name of the interface. We can list the names of the interfaces on our system by running the <code>ip link show</code> command.</p>

<p>One issue with using a sequence of <code>ip</code> commands is that the network setup fails to persist across reboots. However, we can place the <code>ip</code> command sequence inside a script which will be run automagically every time the server reboots. The sequence of <code>ip</code> commands in a script reminds us of the days before systemd, when scripts controlled all parts of the boot process including network setup.</p>

<p>Our KVM VPS's internal network configuration that we will be using below is similar to <a rel="nofollow" href="https://lowendspirit.com/creating-our-first-lxc-vps-with-proxmox-ve-6-2-at-soyoustart/">how LXC containers are configured in Proxmox.</a> As will be seen below, Proxmox's LXC containers' network configuration adopts a variant of the "scripted <code>ip</code> command" approach, which also works inside Proxmox's KVM VPSes.</p>

<h2>V. Our VM's Network Setup</h2>

<ul>
<li><strong>Interfaces</strong></li>
</ul>

<p>Our original /etc/network/interfaces file, the one installed by the netinst.iso, might look like this:</p>

<pre><code>debian@debian-kvm:~$ cd /etc/network
debian@debian-kvm:/etc/network$ cat interfaces.original
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback
debian@debian-kvm:/etc/network$ 
</code></pre>

<p>Note that, in the default from the netinst.iso, /etc/network/interfaces.d is empty, so sourcing its files does nothing to the configuration.</p>

<pre><code>debian@debian-kvm:/etc/network$ ls interfaces.d
debian@debian-kvm:/etc/network$ 
</code></pre>

<p>Now, let's edit /etc/network/interfaces to match our example network information from the above Before We Start section.</p>

<pre><code>debian@debian-kvm:/etc/network$ cat interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

auto ens18
iface ens18 inet static
  address 172.16.165.97/28
  gateway 172.16.164.1

iface ens18 inet6 static
  address fe80:xxxx:xxxx:xxxx::97/128
  gateway fe80:xxxx:xxxx:xxxx::3

debian@debian-kvm:/etc/network$ 
</code></pre>

<p>The minimum required information does not include comments (lines beginning with <code>#</code>). Maybe we can make the rash and short-sighted assumption that we are not going to install anything which will want a file included from interfaces.d. The loopback interface might no longer be required <a rel="nofollow" href="https://salsa.debian.org/debian/ifupdown/-/blob/master/examples/network-interfaces">(please see lines 17 and 18 in this file from Debian sources).</a> Thus, for our example setup, the minimum /etc/network/interfaces might be:</p>

<pre><code>debian@debian-kvm:/etc/network$ cat interfaces

auto ens18
iface ens18 inet static
  address 172.16.165.97/28
  gateway 172.16.164.1

iface ens18 inet6 static
  address fe80:xxxx:xxxx:xxxx::97/128
  gateway fe80:xxxx:xxxx:xxxx::3

debian@debian-kvm:/etc/network$ 
</code></pre>

<p>When configuring Debian LXC containers, Proxmox configures their /etc/network/interfaces files using added post-up and pre-down routes. Similarly, just for fun, instead of giving the gateway addresses in our /etc/network/interfaces,, we can manually add routes. Except for the initial <code>post-up</code> and <code>pre-down</code> these added lines mirror <a rel="nofollow" href="https://talk.lowendspirit.com/discussion/comment/63067/#Comment_63067"><code>ip route</code> commands that we could run manually</a> to set up or take down networking without touching the /etc/network/interfaces file.</p>

<pre><code>debian@debian-kvm:/etc/network$ cat interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

auto ens18
iface ens18 inet static
  address 172.16.165.97/28
     post-up ip route add 172.16.164.1 dev ens18
     post-up ip route add default via 172.16.164.1 dev ens18
     pre-down ip route del default via 172.16.164.1 dev ens18
     pre-down ip route del 172.16.164.1 dev ens18

iface ens18 inet6 static
  address fe80:xxxx:xxxx:xxxx::97/128
     post-up ip route add fe80:xxxx:xxxx:xxxx::3  dev ens18
     post-up ip route add default via fe80:xxxx:xxxx:xxxx::3  dev ens18
     pre-down ip route del default via fe80:xxxx:xxxx:xxxx::3  dev ens18
     pre-down ip route del fe80:xxxx:xxxx:xxxx::3  dev ens18

debian@debian-kvm:/etc/network$ 
</code></pre>

<h2>VI. Our VM's DNS</h2>

<p>We might want to add more or different nameservers to /etc/resolv.conf. Our Quick Setup configuration, above, includes <a rel="nofollow" href="https://blog.cloudflare.com/dns-resolver-1-1-1-1/">IPs from Cloudflare</a> and <a rel="nofollow" href="https://developers.google.com/speed/public-dns">from Google.</a></p>

<h2>VII. Our VM's Apt Setup</h2>

<p>The Debian wiki instructions for configuring apt are at <a rel="nofollow" href="https://wiki.debian.org/SourcesList">https://wiki.debian.org/SourcesList.</a> There also is a <a rel="nofollow" href="https://manpages.debian.org/buster/apt/sources.list.5.en.html">man page.</a> The configuration shown above, in Section III Quick Setup, is from the <a rel="nofollow" href="https://wiki.debian.org/SourcesList">SourcesList Debian wiki page.</a></p>

<p>The Debian <a rel="nofollow" href="https://www.debian.org/security/">Security Information page</a> says:</p>

<blockquote><div>
  <p>You can use apt to easily get the latest security updates. This requires a line such as<br />
  deb <a href="http://security.debian.org/debian-security" rel="nofollow">http://security.debian.org/debian-security</a> buster/updates main contrib non-free</p>
</div></blockquote>

<p>Many of the larger providers offer Debian mirrors. For example, Debian packages and security updates are available from the <a rel="nofollow" href="https://docs.hetzner.com/robot/dedicated-server/operating-systems/hetzner-aptitude-mirror/">Hetzner Debian Mirror</a></p>

<p>After /etc/sources.list is edited, we update our system's package repositories as follows:</p>

<pre><code>apt-get upgrade &amp;&amp; apt-get dist-upgrade -y
</code></pre>

<p>We can see exactly which packages are installed by looking at the logs in /var/log/apt.</p>

<p>We may wish to install openssh-server so that we can connect to our VM via ssh in addition to our Proxmox VNC connection. With ssh we regain cut and paste functionality while enjoying lower apparent latency!</p>

<pre><code>apt-get install openssh-server
</code></pre>

<p>The <a rel="nofollow" href="https://aboutbryan.com/2013/03/03/my-first-5-minutes-on-a-server-or-essential-security-for-linux-servers/">Kennedy article,</a> mentioned below in Section VII, has some good tips for ssh server configuration.</p>

<h2>VIII. Security</h2>

<p><a rel="nofollow" href="https://www.google.com">Google</a> suggests its <a rel="nofollow" href="https://aboutbryan.com/2013/03/03/my-first-5-minutes-on-a-server-or-essential-security-for-linux-servers/">first choice among essential server security articles.</a> This article from 2013, by Bryan Kennedy, seems to provide still-good advice, except that, nowadays, many people prefer to use <a rel="nofollow" href="https://en.wikipedia.org/wiki/EdDSA">ed25519 keys</a></p>

<h2>IX. Backup</h2>

<p>After all this work, we certainly want to make an offline backup of our new VM. We can <a rel="nofollow" href="https://pve.proxmox.com/wiki/Backup_and_Restore">use Proxmox to make the backup</a> and then download a a copy from the host node's /var/lib/vz/dump directory.</p>
]]>
        </description>
    </item>
    <item>
        <title>Server Opinion  - Shinjiru VPS Slow Download Issue</title>
        <link>https://staging.lowendspirit.com/index.php?p=/discussion/2721/server-opinion-shinjiru-vps-slow-download-issue</link>
        <pubDate>Mon, 29 Mar 2021 11:00:57 +0000</pubDate>
        <category>Help</category>
        <dc:creator>gemuruhco</dc:creator>
        <guid isPermaLink="false">2721@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Hello.<br />
I've been using Windows VPS from Shinjiru since 22/05/2020 in Malaysia DataCenter.<br />
In the last years, i've got no problem with them at all.<br />
They are offering Raya Promo and CNY Promo with 1Gbps Shared Network.<br />
However, i just notice last weeks the Download &amp; Upload slowing down so much.<br />
I've create a ticket for them to solved the speed issue and keep follow up the discussion in the ticket. Giving them speedtest result,routing result for them to resolved the issue soon as possible.At first, they keep saying that the caused of Download Speed is high usage on CPU while doing speedtest.net in browser. So then i try Speedtest-cli and using python installed on the machine. Of course before going to test, i am closing all non system application after restarting the server to doing the test and try to look if the SSD/HDD IO is the caused of this issue but no SSD/HDD io looks normal to me. Unfortunately, the speed of download still same . They said they already tweak the route and speed a few times and yes the route is better however the speed for DOWNLOAD still remain the same while UPLOAD speed keep going up more than the speed of Download.They also mentioned in the ticket that they only giving the customers 100M network while i am using 1Gbps Shared Network Plan. I know it is shared I do not intend to use the whole of their bandwidth but at least not this kind of too slow Download Speed. Finally, after they are checking everything and they are saying in the ticket that</p>

<blockquote><div>
  <p>**As check with our internal team, the node is not overloaded. We would like to emphasize that as you are using VPS, everything is shared including network. As we check on our end the network is currently stable. Yes previously it was not due to some difficulties that we face but its already resolved. We would also like to emphasize that not to all speedtest server customer will be getting high speedtest result as it also depending on the geo location and the speedtest server. There are various reason that influence the speedtest result.</p>
  
  <p>We only able to give customer 100M as per what customer subscribed.We check all over the network and the node, there is no indication of customer facing any network issue or instability for now. If you which to get better and stable speed, we suggest you to subscribe to Dedicated Server with dedicated bandwidth.</p>
  
  <p>As for now, we do not see any further issue on this as we tested on our infra and node as well.<br />
  **</p>
</div></blockquote>

<h1>I would like to know how about all of your opinions,</h1>

<h1>Is this considered as normal or not?</h1>

<h1>Sorry for the bad english.</h1>

<h1>Thanks</h1>

<p>Below is some of the speedtest result showing of all result is slow at Download except upload.<br />
And only a few speedtest are stable.</p>

<pre><code>Microsoft Windows [Version 10.0.19041.450]
(c) 2020 Microsoft Corporation. All rights reserved.

C:\Users\administrator3\Desktop&gt;speedtest-cli.py --share --server 2054
Retrieving speedtest.net configuration...
Testing from Shinjiru Technology Sdn Bhd (ip)...
Retrieving speedtest.net server list...
Retrieving information for the selected server...
Hosted by Viewqwest Pte Ltd (Singapore) [976.01 km]: 12.345 ms
Testing download speed................................................................................
Download: 388.86 Mbit/s
Testing upload speed................................................................................................
Upload: 383.68 Mbit/s
Share results: http://www.speedtest.net/result/11167017177.png

C:\Users\administrator3\Desktop&gt;speedtest-cli.py --share --server 367
Retrieving speedtest.net configuration...
Testing from Shinjiru Technology Sdn Bhd (ip)...
Retrieving speedtest.net server list...
Retrieving information for the selected server...
Hosted by NewMedia Express (Singapore) [976.01 km]: 9.965 ms
Testing download speed................................................................................
Download: 52.27 Mbit/s
Testing upload speed................................................................................................
Upload: 353.71 Mbit/s
Share results: http://www.speedtest.net/result/11167019671.png

C:\Users\administrator3\Desktop&gt;speedtest-cli.py --share --server 20637
Retrieving speedtest.net configuration...
Testing from Shinjiru Technology Sdn Bhd (ip)...
Retrieving speedtest.net server list...
Retrieving information for the selected server...
Hosted by OVH Cloud (Singapore) [976.01 km]: 16.871 ms
Testing download speed................................................................................
Download: 73.64 Mbit/s
Testing upload speed................................................................................................
Upload: 296.35 Mbit/s
Share results: http://www.speedtest.net/result/11167022346.png

C:\Users\administrator3\Desktop&gt;speedtest-cli.py --share --server 28640
Retrieving speedtest.net configuration...
Testing from Shinjiru Technology Sdn Bhd (ip)...
Retrieving speedtest.net server list...
Retrieving information for the selected server...
Hosted by Webe Digital Sdn Bhd (Iskandar Puteri) [992.94 km]: 11.305 ms
Testing download speed................................................................................
Download: 68.13 Mbit/s
Testing upload speed................................................................................................
Upload: 293.72 Mbit/s
Share results: http://www.speedtest.net/result/11167024248.png

C:\Users\administrator3\Desktop&gt;speedtest-cli.py --share --server 19302
Retrieving speedtest.net configuration...
Testing from Shinjiru Technology Sdn Bhd (ip)...
Retrieving speedtest.net server list...
Retrieving information for the selected server...
Hosted by Telekom Malaysia Berhad (Cyberjaya) [1205.36 km]: 12.08 ms
Testing download speed................................................................................
Download: 70.77 Mbit/s
Testing upload speed................................................................................................
Upload: 262.59 Mbit/s
Share results: http://www.speedtest.net/result/11167026070.png

C:\Users\administrator3\Desktop&gt;speedtest-cli.py --share --server 5721
Retrieving speedtest.net configuration...
Testing from Shinjiru Technology Sdn Bhd (ip)...
Retrieving speedtest.net server list...
Retrieving information for the selected server...
Hosted by Celcom Axiata (Petaling Jaya) [1206.77 km]: 6.8 ms
Testing download speed................................................................................
Download: 152.18 Mbit/s
Testing upload speed................................................................................................
Upload: 318.31 Mbit/s
Share results: http://www.speedtest.net/result/11167027728.png

C:\Users\administrator3\Desktop&gt;speedtest-cli.py --share --server 19318
Retrieving speedtest.net configuration...
Testing from Shinjiru Technology Sdn Bhd (ip)...
Retrieving speedtest.net server list...
Retrieving information for the selected server...
Hosted by Telekom Malaysia Berhad (Kuala Lumpur) [1202.85 km]: 12.684 ms
Testing download speed................................................................................
Download: 61.71 Mbit/s
Testing upload speed................................................................................................
Upload: 308.00 Mbit/s
Share results: http://www.speedtest.net/result/11167029863.png

C:\Users\administrator3\Desktop&gt;speedtest-cli.py --share --server 1701
Retrieving speedtest.net configuration...
Testing from Shinjiru Technology Sdn Bhd (ip)...
Retrieving speedtest.net server list...
Retrieving information for the selected server...
Hosted by Yes 4G (Kuala Lumpur) [1202.85 km]: 7.08 ms
Testing download speed................................................................................
Download: 288.00 Mbit/s
Testing upload speed................................................................................................
Upload: 385.21 Mbit/s
Share results: http://www.speedtest.net/result/11167031357.png

C:\Users\administrator3\Desktop&gt;speedtest-cli.py --share --server 11557
Retrieving speedtest.net configuration...
Testing from Shinjiru Technology Sdn Bhd (ip)...
Retrieving speedtest.net server list...
Retrieving information for the selected server...
Hosted by U Mobile (Kuala Lumpur) [1202.85 km]: 6.114 ms
Testing download speed................................................................................
Download: 350.32 Mbit/s
Testing upload speed................................................................................................
Upload: 335.45 Mbit/s
Share results: http://www.speedtest.net/result/11167033662.png

C:\Users\administrator3\Desktop&gt;speedtest-cli.py --share --server 8700
Retrieving speedtest.net configuration...
Testing from Shinjiru Technology Sdn Bhd (ip)...
Retrieving speedtest.net server list...
Retrieving information for the selected server...
Hosted by YTL Broadband (Kuala Lumpur) [1202.85 km]: 5.497 ms
Testing download speed................................................................................
Download: 251.29 Mbit/s
Testing upload speed................................................................................................
Upload: 310.45 Mbit/s
Share results: http://www.speedtest.net/result/11167035500.png

C:\Users\administrator3\Desktop&gt;speedtest-cli.py --share --server 4348
Retrieving speedtest.net configuration...
Testing from Shinjiru Technology Sdn Bhd (ip)...
Retrieving speedtest.net server list...
Retrieving information for the selected server...
Hosted by Exabytes Cloud Sdn Bhd (Kuala Lumpur) [1202.85 km]: 5.994 ms
Testing download speed................................................................................
Download: 105.04 Mbit/s
Testing upload speed................................................................................................
Upload: 306.99 Mbit/s
Share results: http://www.speedtest.net/result/11167037370.png

C:\Users\administrator3\Desktop&gt;speedtest-cli.py --share --server 26511
Retrieving speedtest.net configuration...
Testing from Shinjiru Technology Sdn Bhd (ip)...
Retrieving speedtest.net server list...
Retrieving information for the selected server...
Hosted by Maxis (Subang Jaya) [1213.83 km]: 6.152 ms
Testing download speed................................................................................
Download: 137.16 Mbit/s
Testing upload speed................................................................................................
Upload: 416.72 Mbit/s
Share results: http://www.speedtest.net/result/11167039056.png

C:\Users\administrator3\Desktop&gt;speedtest-cli.py --share --server 28974
Retrieving speedtest.net configuration...
Testing from Shinjiru Technology Sdn Bhd (ip)...
Retrieving speedtest.net server list...
Retrieving information for the selected server...
Hosted by Digi Malaysia (Shah Alam) [1219.71 km]: 6.694 ms
Testing download speed................................................................................
Download: 385.66 Mbit/s
Testing upload speed................................................................................................
Upload: 250.08 Mbit/s
Share results: http://www.speedtest.net/result/11167040728.png
</code></pre>

<p>`</p>
]]>
        </description>
    </item>
    <item>
        <title>Isolated Private Networking LANs arrive at BuyVM!</title>
        <link>https://staging.lowendspirit.com/index.php?p=/discussion/2090/isolated-private-networking-lans-arrive-at-buyvm</link>
        <pubDate>Wed, 18 Nov 2020 21:54:03 +0000</pubDate>
        <category>Industry News</category>
        <dc:creator>Francisco</dc:creator>
        <guid isPermaLink="false">2090@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>This emails about to be blasted out and wanted to give LES the scoop.</p>

<blockquote><div>
  <p>Hello,</p>
  
  <p><strong>If you use our Shared SQL services you must make changes to your service! Please continue reading this email!</strong></p>
  
  <p>We’re happy to announce the availability of isolated Private Networking LANs at BuyVM! These networks are isolated to you and your KVM Slice instances and allows you to use any IP addresses you want over the interface, run multicast services (for “keepalived” or services like that), or even run your own DHCP servers for VPNs. This feature also means you can provision a KVM Slice and treat it as a router, NAT’ing traffic to other servers on your LAN.</p>
  
  <p>LANs are currently limited to services within the same location and don’t span locations. This might change in the future but as of now we’re keeping things simple. Private Networking is disabled by default and requires you follow the following steps to enable it.</p>
  
  <p>1)    Login to Stallion at <a href="https://manage.buyvm.net/" rel="nofollow">https://manage.buyvm.net/</a><br />
  2)    Click the instance you want to enable it on<br />
  3)    Click Networking<br />
  4)    Click “Private Networking”<br />
  5)    Click the “On” button on the right<br />
  6)    Click “Save Changes” at the bottom<br />
  7)    Power <em>off</em> and Power <em>on</em> your service</p>
  
  <p>There is no DHCP in place to automagically assign your LAN IP address. You must manually configure your choice of IP subnet. We recommend using a block from 192.168.0.0/16, 172.16.0.0/12, or 10.0.0.0/8, as these are reserved for private usage.</p>
  
  <p><strong>If you’re using our Shared SQL services you must update your IP from 172.16.0.51 to one of the following:</strong></p>
  
  <p>Las Vegas -&gt; 205.185.112.51<br />
  New York -&gt; 199.195.255.51</p>
  
  <p>You will also have to update your “Hosts” list inside of DirectAdmin to allow your public IP address.</p>
  
  <p>Please don’t hesitate to open a support ticket if you need assistance with any of this!</p>
  
  <p>We hope you and your loved ones are safe &amp; healthy throughout the holiday season.</p>
  
  <p>As always, we thank you for your patronage over the years.</p>
</div></blockquote>

<p>Francisco</p>
]]>
        </description>
    </item>
    <item>
        <title>HE Tunnel Broker and OpenVZ Container with inception hosting</title>
        <link>https://staging.lowendspirit.com/index.php?p=/discussion/1466/he-tunnel-broker-and-openvz-container-with-inception-hosting</link>
        <pubDate>Thu, 16 Jul 2020 21:16:54 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>bolto90</dc:creator>
        <guid isPermaLink="false">1466@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>when i try to bring up the ipv6 tunnel interface I get the following error message has anyone else tried this.</p>

<p>add tunnel "sit0" failed: No such device</p>
]]>
        </description>
    </item>
    <item>
        <title>IP Management. How do we do it?</title>
        <link>https://staging.lowendspirit.com/index.php?p=/discussion/1053/ip-management-how-do-we-do-it</link>
        <pubDate>Fri, 15 May 2020 18:32:03 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>FlamingSpaceJunk</dc:creator>
        <guid isPermaLink="false">1053@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>How does everyone keep track of their IPs?</p>

<p>I've got a web server which needs more apps, and <code>nmap</code> scans don't show things which are static but powered off. Thus, I'm going to stand up an IPAM.</p>

<p>I've used <a rel="nofollow" href="https://www.racktables.org/" title="RackTables">RackTables</a> in the past, but it's more then I want.</p>

<p>Suggestions?</p>
]]>
        </description>
    </item>
    <item>
        <title>Investigating the cause of latency differences</title>
        <link>https://staging.lowendspirit.com/index.php?p=/discussion/656/investigating-the-cause-of-latency-differences</link>
        <pubDate>Fri, 21 Feb 2020 17:40:14 +0000</pubDate>
        <category>Technical</category>
        <dc:creator>Not_Oles</dc:creator>
        <guid isPermaLink="false">656@/index.php?p=/discussions</guid>
        <description><![CDATA[<blockquote><div>
  <p><a rel="nofollow" href="/discussion/comment/17481/#Comment_17481">@MikeA said</a>: I randomly checked latency to your LG compared to OVH stuff in Sydney and lord, 180ms (FlowVPS) vs 260ms (OVH) from central U.S. That's pretty nice.</p>
</div></blockquote>

<p>How would one investigate and determine the cause of latency differences like this? Thanks!</p>
]]>
        </description>
    </item>
    <item>
        <title>Struggling a bit with a Debian Linux bridge configuration</title>
        <link>https://staging.lowendspirit.com/index.php?p=/discussion/559/struggling-a-bit-with-a-debian-linux-bridge-configuration</link>
        <pubDate>Thu, 30 Jan 2020 05:28:43 +0000</pubDate>
        <category>Help</category>
        <dc:creator>CamoYoshi</dc:creator>
        <guid isPermaLink="false">559@/index.php?p=/discussions</guid>
        <description><![CDATA[<p>Hello folks,</p>

<p>First time post here but been lurking for quite a while since 2015 on "the old world". This particular issue has stumped me and I'd like to try and pick someone's brains for some help.</p>

<p>Here's my setup: I have two IPs being used; one for the Debian Linux system in question on the bare metal hardware, and a second IP used by a Windows Server VM running in KVM with libvirtd.</p>

<p>I recently switched over from one dedi to another. On my old dedi, I have a network config that looks like this:</p>

<p>auto br0<br />
iface br0 inet static<br />
address 203.111.0.114<br />
netmask 255.255.255.248<br />
gateway 203.111.0.113<br />
bridge_ports eth0<br />
bridge_stp off<br />
bridge_maxwait 5<br />
dns-nameservers 1.1.1.1 9.9.9.9 74.82.42.42<br />
dns-search example.com</p>

<p>I then set another IP, 203.111.0.115 manually in the VM itself. This works great on this old dedi!</p>

<p>However a newer dedi I am moving to, with the same version of Debian Linux installed, has a slightly different setup. With the old dedi, I get a /29, but this new one, I only get 2 IPs out of a shared /24. So, my network config now looks like this on the new dedi:</p>

<p>auto br0<br />
iface br0 inet static<br />
address 203.111.0.214<br />
netmask 255.255.255.0<br />
gateway 203.111.0.1<br />
bridge_ports eth0<br />
bridge_stp off<br />
bridge_maxwait 5<br />
dns-nameservers 1.1.1.1 9.9.9.9 74.82.42.42<br />
dns-search example.com</p>

<p>I then set a static IP on the VM just like before. Both systems can ping the default gateway at 203.111.0.1, but cannot reach anything beyond it. The Linux system's route table shows 203.111.0.1 as a default route, but is unable to pass any traffic beyond it.</p>

<p>I've made sure that I've gotten things like the bridge utils package installed on both systems.</p>

<p>Now here's the real wrinkle:</p>

<p>If I take out the bridge component on the new dedi, and just set the interface up without the bridge, like so:</p>

<p>auto eth0<br />
allow-hotplug eth0<br />
iface eth0 inet static<br />
address 203.111.0.214<br />
netmask 255.255.255.0<br />
gateway 203.111.0.1<br />
bridge_ports eth0<br />
bridge_stp off<br />
bridge_maxwait 5<br />
dns-nameservers 1.1.1.1 9.9.9.9 74.82.42.42<br />
dns-search example.com</p>

<p>This works perfectly fine and I can get out to internet destinations, as intended.</p>

<p>I've opened a ticket with the provider and they pointed to a issue in my network config, so I'm kind of stumped. I don't know what I'm missing here so I'm hoping someone could point me in the right direction. Thank you all in advance!</p>
]]>
        </description>
    </item>
   </channel>
</rss>
