Hi folks, hope your weekend is going well.

So I have put myself into a situation. I have a home server with docker installed running fine so far. In my home network I have multiple networks for different purposes. The whole network stack looks like this OPNSense — Switch — Ubuntu Server

The server is connected to a switch port with pvid 100, and runs on vlan0.100 Now my goal is to move some docker containers to other vlans. To accomplish that I have set vlan0.101 and vlan0.102 on my server as interfaces with their own IP and default gateway on that subnet (e.g. 192.168.101.10) Next step I set up macvlans for my docker containers Then I set the port to also allow tagged traffic, but kept it on pvid 100. Now on my OPNSense I changed the host ip of my server from 192.168.100.10 to include all 3 IPs so homeserver 192.168.100.10, 192.168.101.10, 192.168.102.10

This setup seems to work fine for internal network, however no services are reachable from the outside (internet) anymore.

My first question is: Am I thinking correctly about this? Or is this over-engineered bs at this point and there is a better way to put docker containers on different subnets.

Second question is: Any ideas what’s breaking the internet access?

Thanks for the help in advance :D

EDIT: i have not changed the vlan of any container yet

  • zo0@programming.devOP
    link
    fedilink
    English
    arrow-up
    1
    ·
    10 hours ago

    Answer to your first question, he dockers successfully resolve and access internet

    1. Yes the OPNSense is the primary router and dhcp provider so all the subnets and vlans are defined and working with physical devices

    I actually was having the same issue with the routing of server. How did you setup your bridge exactly? Do you mind sharing your netplan?

    • ominous ocelot@leminal.space
      link
      fedilink
      English
      arrow-up
      1
      ·
      edit-2
      6 hours ago

      Netplan config? Sure:

      network:
        ethernets:
          enp35s0:
            dhcp4: false
          enp36s0:
            dhcp4: false
        vlans:
          enp35s0.100:
            id: 100
            link: enp35s0
            dhcp4: false
          enp35s0.101:
            id: 101
            link: enp35s0
            dhcp4: false
        bridges:
           br0:
      	   # untagged
             interfaces: [enp35s0]
             dhcp4: false
           br0.100:
      	   # vlan 100
             interfaces: [enp35s0.100]
             dhcp4: false
           br0.101:
      	   #vlan 101
             interfaces: [enp35s0.101]
             dhcp4: true
        version: 2
      

      I’m not sure if the version-property is still required. The only interface with an IP is br0.101. Opnsense provides DHCP (v4).

      You can attach multiple ethernet-devices to a bridge (which I did not):

            br0.100:
              interfaces:
                - enp35s0.100
                - two
      	        - three
      

      I’m not sure if you can attach the docker bridge via netplan - it has to exist at boot time, I think. My docker containers run inside a VM (kvm) with one interface, which sits in one of the VLANs. The VM’s interface is a bridge device (br0.100). The VM ethernet device is attached to the bridge, it receives its IP from the router and behaves like a real server.

      • zo0@programming.devOP
        link
        fedilink
        English
        arrow-up
        1
        ·
        8 hours ago

        I mean at the moment I don’t have any bridges setup (other than the dockers own bridge) I thought maybe I could solve my issue with bridging

        • surewhynotlem@lemmy.world
          link
          fedilink
          English
          arrow-up
          1
          ·
          5 hours ago

          Oh, hmm. How are you telling which service to be on which IP then? Could you safely post your compose file?