This is an old revision of the document!


Debian / Ubuntu Network Setup

As of Debian 10 (Buster) Debian still by default uses this interface Setup. It can be setup to use netplan inface.

Ubuntu (as of version 14.04) defaults to Predictable Network Interface Names, also see Systemd Docs. I have no problem with this. In any case, you should always check dev names and not assume names, such as “eth0”

To check available interfaces and names use: ip link, or the more verbose ip a.

The units 4 main port will be setup to look like a router with 1 WAN port and 3 LAN port. The WAN port will be setup on NIC1 with the LAN ports 1-3 will be on bridged NIC2-4.

Ensure the bridge utilities are loaded: sudo apt install bridge-utils.

Edit the network configuration file: /etc/network/interfaces as follows:

/etc/network/interfaces

sudo vim /etc/netplan/network.yaml|

network:
  #setup network interfaces
  version: 2
  renderer: networkd
  ethernets:
    eno1: #start for pppoe and setup modem IP access
      dhcp4: no
      dhcp6: no
      addresses: 
         - [192.168.5.2/24] #Access to the modem web interface
    eno2:
      dhcp4: no
      dhcp6: no
      optional: true
    eno3:
      dhcp4: no
      dhcp6: no
      optional: true
    eno4:
      dhcp4: no
      dhcp6: no
      optional: true
  #Setup Bridge Interface
  bridges:
    br0:
      addresses:
        - 192.168.1.1/24 #IPv4
        - "2001:470:1f2c:20c::3/64" #IPv6
      interfaces: [eno2, eno3, eno4]
      nameservers:
        addresses: ["2001:470:1f2c:20c::3", 192.168.1.1, 9.9.9.9, 1.1.1.1]
      parameters:
        stp: off          # disable Spanning Tree Protocol
        forward-delay: 9  # forwarding delay
        hello-time: 2     # see netplan.io for definition
        max-age: 12       # see netplan.io for definition

  #Setup Tunnel Interfaces
  tunnels:
    he-ipv6:             # Hurricane Electric IPv6  tunnel
      mode: sit
      remote: 216.218.142.50
      local: 112.213.222.38
      addresses:
         - "2001:470:1f2c:10d::2/64"
      gateway6: "2001:470:1f2c:10d::1"

*''sudo netplan --debug apply'' To apply any changes to the network configuration. *''sudo netplan --debug generate'' To generate backend specific configuration files. *''sudo netplan try'' To try a new neplan configuration with automatic roll back. As this setup is for a router the gateway stanza must not be set "#gateway4: 192.168.1.1". The router is the gateway. As this router has a DNS server the "nameserver:" stanza can be set to this routers address e.g.: "addresses: [192.168.1.1]" The use of the stanza "optional: true" on the LAN bridged NICs means during startup the system does not need to wait for these NICs to come up, potentially saving some boot time. The WAN NIC is required, so the optional sanza is not used here. It is important that the network/interfaces method is disable or strange difficult to diagnose network affect may happen. Basically ensure that all items in file /etc/network/interfaces are commented out. For example: ++++''sudo vim /etc/netplan/network.yaml''

I set up the router network tunnel 6in4 to HEipv6. I could IPv6 ping WAN from the router, but could not so ping WAN from elsewhere on the local area network (lan).
My routing table had 2001:470:1f2c:10d::/64 dev he-ipv6 proto kernel metric 256 pref medium, I found that removing this from the routing table allowed remote lan access to function: The one off command to do this: sudo ip r del 2001:470:1f2c:10d::/64 dev he-ipv6.
I looked for ways to adjust the netplan configuration, either to stop this line from being added, or increase its metric, but to no avail. So I created the following systemd service to perform this function on start-up after the network was up.“
To create and edit the service: sudo systemctl edit –force –full ipv6_start.service, man systemctl and search for

[Unit]
Description=Remove route to he-ipv6
Wants=network.target
After=network-online.target

[Service]
Type=oneshot
ExecStart=:/bin/bash -c "ip r del 2001:470:1f2c:10d::/64 dev he-ipv6"

[Install]
WantedBy=multi.user.target default.target 
  • The final command is used to enable the command to run at start-up: sudo systemctl enable ipv6_start.service.
  • This also needs to be performed after each time netplan apply is used: sudo systemctl start ipv6_start.service.

When I initially setup the router I want to use a different network setting. The following is my basic setup netplan yaml file.

''sudo vim /etc/netplan/50-cloud-init.yaml''

Currently Ubuntu (20.04) defaults to netplan.io, where as Debian 10 does not. So in Debian the /etc/network/interfaces need to be disabled, if using netplan. Where as in Ubuntu the auto configuration needs to be disabled.

I wrote 2 scripts to switch between configuration:

''vim tononrouter.sh''

Use sudo bash tononrouter.sh to move to non router configuration.

''vim torouter.sh''

Use sudo bash tonrouter.sh to move to non router configuration.

My ISP states that its setup uses VLAN ID=0. This is a bit ambiguous, does this mean VLAN 801.1q is not used, or priority tagging 801.1p is used, which uses the full VLAN tag frame and has an effective VLAN ID = 0, but is referred to as a priority tag not VLAN? The general online documentation on this matter is vague too. Look's like an experiment to see what works is the only option: 1. Ignore 801.q VLAN entirely, and 2. Attempt too use VLAN priority tagging.

Load the vlan module: sudo apt install vlan.

I tried a number of different configurations of VLAN using for example ip link add add link eno1 name eno1.1 vlan id 1 in the systemctl pppoe.service configuration. I found that my ISP did not seem to need the VLAN defined, so I have not used, and not investigated further.

Some useful links:

  • /app/www/public/data/attic/linux_router/network.1648955448.txt.gz
  • Last modified: 2023-04-30 Sun wk17 17:44
  • (external edit)