I want host to act as an L2 switch for my VM / docker / systemd-container(s) to get IP address from router directly. Are there any tools to configure that?

I know that A WDS range-extender does the same with WiFi, allow it’s clients to get IP config from the ISP router itself. My TP Link WR-940N does this, but I want to do this at software level.

  • fraichu@lemmy.mlOP
    link
    fedilink
    English
    arrow-up
    3
    ·
    1 year ago

    Chat GPT @ chat.openai.com’s answer

    Thank you for providing the details. Based on your requirements, you can achieve your goal by utilizing the Linux bridge functionality to create a software-level Layer 2 switch. Here’s an outline of the steps involved:

    1. Install the necessary software: Ensure that the bridge-utils package is installed on your Linux machine. You can typically install it using the package manager specific to your distribution. For example, on Ubuntu or Debian, you can run sudo apt-get install bridge-utils.

    2. Identify your physical network interface: Determine the name of your WiFi network interface that is connected to the ISP router. You can use the ip link command to list the available network interfaces. Look for the interface name associated with your WiFi connection (e.g., wlan0).

    3. Disable network management on the physical interface: To prevent network managers from managing the physical interface directly, you’ll want to disable their control. This step may vary depending on your specific network manager. For example, if you’re using NetworkManager, you can edit the configuration file associated with your WiFi connection (usually located in /etc/NetworkManager/system-connections/) and set managed=false. Alternatively, you can stop or disable the network manager service temporarily.

    4. Create a bridge interface: Create a Linux bridge interface using the brctl command. For example, you can run sudo brctl addbr br0 to create a bridge named br0.

    5. Add the physical interface to the bridge: Add your WiFi interface to the bridge using the brctl addif command. For example, run sudo brctl addif br0 wlan0 to add wlan0 to the bridge.

    6. Configure the bridge interface: Assign an IP address to the bridge interface (br0) by configuring it in the network configuration files. The specific file to edit depends on your Linux distribution. For example, on Ubuntu or Debian, you can edit /etc/network/interfaces and add the following lines:

      auto br0
      iface br0 inet dhcp
      

      Alternatively, you can use network management tools like NetworkManager or systemd-networkd to configure the bridge interface.

    7. Configure the virtual machines and containers: Configure your virtual machines, Docker containers, and systemd-containers to use the bridge interface (br0) as their network interface. This configuration varies depending on the specific technology you are using. For example:

      • For Docker: Create a new Docker network of type “bridge” and specify the bridge name as br0. Then, when creating or running Docker containers, connect them to this network.
      • For systemd-containers: Configure the net-attach@.netdev and net-attach@.network units to attach the container to the bridge interface (br0). This can be done using the systemctl command and systemd network configuration files.

    With these steps, your virtual machines, Docker containers, and systemd-containers should be able to obtain IP addresses directly from your ISP router via the software-level Layer 2 switch created using the Linux bridge interface.

    Please note that the specific commands and configuration files may vary depending on your Linux distribution and network management setup. Make sure to adapt the instructions accordingly. Additionally, be cautious when modifying network configurations as it can potentially impact your network connectivity.

      • fraichu@lemmy.mlOP
        link
        fedilink
        English
        arrow-up
        1
        ·
        1 year ago

        This worked. Now I can have unlimited lightweight systemd containers, each with it’s own globally routable public ipv6 address :)