<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Networking on KnightLi Blog</title>
        <link>https://knightli.com/en/tags/networking/</link>
        <description>Recent content in Networking on KnightLi Blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Fri, 05 Jun 2026 15:58:26 +0800</lastBuildDate><atom:link href="https://knightli.com/en/tags/networking/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Synology DSM 7.3 Container Manager Multi-NIC and Macvlan Setup</title>
        <link>https://knightli.com/en/2026/06/05/synology-dsm-container-manager-multi-nic-macvlan/</link>
        <pubDate>Fri, 05 Jun 2026 15:58:26 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/06/05/synology-dsm-container-manager-multi-nic-macvlan/</guid>
        <description>&lt;p&gt;Synology DSM 7.3 and DSM 7.2 ship with Container Manager, but its GUI mainly exposes the basic &lt;code&gt;bridge&lt;/code&gt; and &lt;code&gt;host&lt;/code&gt; networks. If your NAS has multiple NICs, for example LAN1 for the internal network and LAN2 for a separate router or subnet, and you want some containers to use LAN2 specifically or obtain an independent IP on that subnet, Docker &lt;code&gt;macvlan&lt;/code&gt; is usually the right tool.&lt;/p&gt;
&lt;p&gt;The common use cases are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;bind a container to a physical NIC and give it an independent IP on that subnet;&lt;/li&gt;
&lt;li&gt;connect a container to both the default &lt;code&gt;bridge&lt;/code&gt; network and a NIC-specific &lt;code&gt;macvlan&lt;/code&gt; network.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The examples below assume the second NIC is &lt;code&gt;ovs_eth1&lt;/code&gt; and the LAN2 subnet is &lt;code&gt;192.168.2.0/24&lt;/code&gt;. Adjust the subnet, gateway, and interface name for your own network.&lt;/p&gt;
&lt;h2 id=&#34;confirm-the-physical-interface-name-first&#34;&gt;Confirm the physical interface name first
&lt;/h2&gt;&lt;p&gt;Enable SSH in DSM, log in to the NAS, and run:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ifconfig
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;If Open vSwitch is enabled, interface names usually look like &lt;code&gt;ovs_eth0&lt;/code&gt; and &lt;code&gt;ovs_eth1&lt;/code&gt;. Machines with Virtual Machine Manager installed often have Open vSwitch enabled automatically.&lt;/p&gt;
&lt;p&gt;If Open vSwitch is not enabled, the interface names are usually &lt;code&gt;eth0&lt;/code&gt;, &lt;code&gt;eth1&lt;/code&gt;, and so on.&lt;/p&gt;
&lt;p&gt;The examples below use &lt;code&gt;ovs_eth1&lt;/code&gt; for the second NIC. If your NAS does not use Open vSwitch, replace &lt;code&gt;ovs_eth1&lt;/code&gt; with the actual name you see, such as &lt;code&gt;eth1&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;scenario-1-give-a-container-a-dedicated-ip-on-a-specific-nic&#34;&gt;Scenario 1: Give a container a dedicated IP on a specific NIC
&lt;/h2&gt;&lt;p&gt;This is the most common setup. It works well for Pi-hole, AdGuard Home, downloaders, gateway-like services, and similar containers. The goal is to make the container appear directly on the LAN2 subnet with an IP that behaves like a physical device, instead of hiding it behind Synology&amp;rsquo;s default Docker network.&lt;/p&gt;
&lt;p&gt;Container Manager cannot create a &lt;code&gt;macvlan&lt;/code&gt; network directly from the GUI, so create it once over SSH:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo docker network create -d macvlan &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --subnet&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;192.168.2.0/24 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --gateway&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;192.168.2.1 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --ip-range&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;192.168.2.200/29 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -o &lt;span class=&#34;nv&#34;&gt;parent&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;ovs_eth1 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  custom_lan2_net
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;The parameters mean:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-d macvlan&lt;/code&gt;: use the &lt;code&gt;macvlan&lt;/code&gt; driver;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--subnet=192.168.2.0/24&lt;/code&gt;: the full LAN2 subnet;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--gateway=192.168.2.1&lt;/code&gt;: the gateway for LAN2, usually the router IP;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--ip-range=192.168.2.200/29&lt;/code&gt;: restrict the IP range Docker can allocate to avoid conflicts with phones, PCs, TVs, and other devices;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-o parent=ovs_eth1&lt;/code&gt;: bind this network to the selected physical NIC;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;custom_lan2_net&lt;/code&gt;: the Docker network name.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After the network is created, open Container Manager in DSM and go to the &amp;ldquo;Network&amp;rdquo; page. You should see &lt;code&gt;custom_lan2_net&lt;/code&gt;. From there, you can attach existing containers to it, or select it when creating a new container and assign a fixed IP inside that subnet.&lt;/p&gt;
&lt;h2 id=&#34;scenario-2-connect-one-container-to-multiple-networks&#34;&gt;Scenario 2: Connect one container to multiple networks
&lt;/h2&gt;&lt;p&gt;Some containers need to appear on more than one network. For example, a container may need to be reachable by the Synology host through the default &lt;code&gt;bridge&lt;/code&gt; network while also having a dedicated physical-subnet IP on LAN2. In that case, attach the container to two virtual networks.&lt;/p&gt;
&lt;h3 id=&#34;method-a-add-the-second-network-in-the-gui&#34;&gt;Method A: Add the second network in the GUI
&lt;/h3&gt;&lt;p&gt;Create the container normally first and select a primary network such as the default &lt;code&gt;bridge&lt;/code&gt;. Do not start it yet; if it is already running, stop it first.&lt;/p&gt;
&lt;p&gt;Then open the &amp;ldquo;Network&amp;rdquo; page in Container Manager, select &lt;code&gt;custom_lan2_net&lt;/code&gt;, click &amp;ldquo;Manage&amp;rdquo;, check the target container, and save. After the container starts, it will usually have two virtual interfaces inside, such as &lt;code&gt;eth0&lt;/code&gt; and &lt;code&gt;eth1&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;This method is best when you only need to configure one or two containers and do not want to edit Compose files.&lt;/p&gt;
&lt;h3 id=&#34;method-b-use-a-docker-compose-project&#34;&gt;Method B: Use a Docker Compose project
&lt;/h3&gt;&lt;p&gt;If you prefer Container Manager&amp;rsquo;s &amp;ldquo;Project&amp;rdquo; feature, define both networks in &lt;code&gt;docker-compose.yml&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;version&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;3.8&amp;#39;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;services&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;my_node&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;image&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;nginx:latest&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;container_name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;multi_nic_container&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;networks&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;default_bridge&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ipv4_address&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;172.20.0.10&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;      &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;lan2_macvlan&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;ipv4_address&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;m&#34;&gt;192.168.2.205&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;networks&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;default_bridge&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;external&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;bridge&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;lan2_macvlan&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;external&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;custom_lan2_net&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Here, &lt;code&gt;custom_lan2_net&lt;/code&gt; is the &lt;code&gt;macvlan&lt;/code&gt; network you created over SSH. &lt;code&gt;bridge&lt;/code&gt; references Synology&amp;rsquo;s built-in Docker bridge network.&lt;/p&gt;
&lt;p&gt;The sample &lt;code&gt;172.20.0.10&lt;/code&gt; only applies if your bridge network actually uses that subnet. On many Synology systems, Docker&amp;rsquo;s default &lt;code&gt;bridge&lt;/code&gt; network is more commonly &lt;code&gt;172.17.0.0/16&lt;/code&gt;. Check the actual value with &lt;code&gt;docker network inspect bridge&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;the-host-to-container-macvlan-limitation&#34;&gt;The host-to-container Macvlan limitation
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;macvlan&lt;/code&gt; has one important trap: by default, the Linux kernel does not allow the host to communicate directly with containers through the same &lt;code&gt;macvlan&lt;/code&gt; interface.&lt;/p&gt;
&lt;p&gt;In practice, if a container only joins &lt;code&gt;custom_lan2_net&lt;/code&gt;, DSM itself may not be able to access that container through its LAN2 physical-subnet IP. The container may also be unable to reach the host through that interface.&lt;/p&gt;
&lt;p&gt;Common solutions are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;attach the container to the default &lt;code&gt;bridge&lt;/code&gt; network as well, then let Synology reach it through the Docker internal address;&lt;/li&gt;
&lt;li&gt;create an additional host-side &lt;code&gt;macvlan&lt;/code&gt; sub-interface on the Synology NAS, so the host also joins the same &lt;code&gt;macvlan&lt;/code&gt; communication domain.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The second option is closer to network engineering and has a higher maintenance cost. For most home and small-office setups, using both &lt;code&gt;bridge&lt;/code&gt; and &lt;code&gt;macvlan&lt;/code&gt; is simpler.&lt;/p&gt;
&lt;h2 id=&#34;avoid-ip-conflicts-early&#34;&gt;Avoid IP conflicts early
&lt;/h2&gt;&lt;p&gt;With &lt;code&gt;macvlan&lt;/code&gt;, container IPs appear directly on the physical LAN, so avoid conflicts with your DHCP pool.&lt;/p&gt;
&lt;p&gt;Ideally, exclude the Docker range on your main router. For example, if you plan to allocate &lt;code&gt;192.168.2.200/29&lt;/code&gt; to Docker, do not let the router assign &lt;code&gt;192.168.2.200&lt;/code&gt; through &lt;code&gt;192.168.2.207&lt;/code&gt; to phones, computers, or other devices.&lt;/p&gt;
&lt;p&gt;If your router cannot exclude a DHCP range easily, at least use a high address range that is unlikely to be assigned automatically, and keep a written record.&lt;/p&gt;
&lt;h2 id=&#34;how-to-enable-open-vswitch&#34;&gt;How to enable Open vSwitch
&lt;/h2&gt;&lt;p&gt;On DSM 7.x, Open vSwitch can be enabled from the GUI. You do not need to edit low-level network files manually. The easiest method is to install Synology&amp;rsquo;s Virtual Machine Manager, because VM network bridging depends on Open vSwitch and the setup wizard will prompt you to enable it.&lt;/p&gt;
&lt;p&gt;Steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open DSM &amp;ldquo;Package Center&amp;rdquo;;&lt;/li&gt;
&lt;li&gt;search for and install &lt;code&gt;Virtual Machine Manager&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;open the package and follow the wizard to enable Open vSwitch;&lt;/li&gt;
&lt;li&gt;wait for the network service to restart.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you do not want to install VMM, enable it manually:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open &amp;ldquo;Control Panel&amp;rdquo;;&lt;/li&gt;
&lt;li&gt;go to &amp;ldquo;Network&amp;rdquo;;&lt;/li&gt;
&lt;li&gt;switch to the &amp;ldquo;Network Interface&amp;rdquo; tab;&lt;/li&gt;
&lt;li&gt;click &amp;ldquo;Manage&amp;rdquo; and choose &amp;ldquo;Open vSwitch Settings&amp;rdquo;;&lt;/li&gt;
&lt;li&gt;check &amp;ldquo;Enable Open vSwitch&amp;rdquo; and apply.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;After applying the change, DSM will reinitialize the NICs and your browser session may disconnect briefly. Do not do this while the NAS is transferring large files or performing important writes.&lt;/p&gt;
&lt;h2 id=&#34;verify-open-vswitch&#34;&gt;Verify Open vSwitch
&lt;/h2&gt;&lt;p&gt;In the GUI, go back to &amp;ldquo;Control Panel -&amp;gt; Network -&amp;gt; Network Interface&amp;rdquo; and check the NIC status. The management menu should also show Open vSwitch settings.&lt;/p&gt;
&lt;p&gt;From the command line, run again:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ifconfig
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;or:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ip addr
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;If you see interfaces such as &lt;code&gt;ovs_eth0&lt;/code&gt; and &lt;code&gt;ovs_eth1&lt;/code&gt;, Open vSwitch is active. When creating a &lt;code&gt;macvlan&lt;/code&gt; network, use the &lt;code&gt;ovs_&lt;/code&gt; interface in &lt;code&gt;-o parent=&lt;/code&gt;, for example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-o &lt;span class=&#34;nv&#34;&gt;parent&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;ovs_eth1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;If you still use &lt;code&gt;eth1&lt;/code&gt;, the container may not connect through the expected NIC.&lt;/p&gt;
&lt;h2 id=&#34;pre-configuration-checklist&#34;&gt;Pre-configuration checklist
&lt;/h2&gt;&lt;p&gt;Before making changes, confirm:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;how many physical NICs the Synology NAS has, and which ports have cables connected;&lt;/li&gt;
&lt;li&gt;which switch, router, or VLAN each port connects to;&lt;/li&gt;
&lt;li&gt;whether DSM shows the target NIC as &lt;code&gt;ethX&lt;/code&gt; or &lt;code&gt;ovs_ethX&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;whether &lt;code&gt;--subnet&lt;/code&gt; and &lt;code&gt;--gateway&lt;/code&gt; belong to the target NIC&amp;rsquo;s subnet;&lt;/li&gt;
&lt;li&gt;whether &lt;code&gt;--ip-range&lt;/code&gt; has been excluded from the DHCP pool;&lt;/li&gt;
&lt;li&gt;whether the container needs to be accessed by the Synology host. If it does, attach it to &lt;code&gt;bridge&lt;/code&gt; as well.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As long as the interface name, subnet, and IP pool are correct, DSM 7.3 Container Manager works well with &lt;code&gt;macvlan&lt;/code&gt; for multi-NIC container deployment. The GUI handles day-to-day management, while SSH is only needed to create the underlying network.&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
