如何使用多个接口,其中一些接口位于 kea 中的同一子网中?

如何使用多个接口,其中一些接口位于 kea 中的同一子网中?

我目前正在构建一个自制路由器,与之前的构建相比进行了一些更改以获得更大的灵活性。我正在运行一个 ubuntu 服务器最小基础,由 netplan 管理的网络接口,firewalld 用于防火墙管理,并尝试使用 kea 进行 dhcp

硬件是一台带有 5 个端口的迷你 PC - 2 个 10 gig 和 3 个 2.5G。我已在 netplan 中对其进行配置,将 2 个 10 gig 端口命名为 wan 和 lan,将 3 个 2.5 gig 端口命名为 eth0-2,以匹配硬件上的物理标签。我的最终预期目标是将 kea 设置为具有 LAN,并且端口 eth0 和 eth1 为一个子网提供服务,而 eth2 为不同的子网提供服务。

我已经在客户端上使用静态 IP 进行了测试 - 将路由器端 IP 设置为默认网关,这有效,所以我相当确定我的防火墙规则是健全的 - 我很乐意根据需要共享任何设置。我也得到了这个与单身的接口,但我想使用多个接口。理论上我可以桥接它们,但我想让一个子网正常工作,然后再尝试在另一个接口上添加第二个子网。

出于测试目的,并尝试获得最小可行产品,我尝试首先让 lan 和 eth0 正常工作。

我已将 lan 配置为 10.0.0.1,将 eth0 配置为 10.0.0.2

我在下面分享了 kea-dhcp4 conf 文件的最小片段,但是完整版在这里

我这里有几个问题。首先,如果我像这样添加多个接口

    "interfaces-config": {      
        "interfaces": [ "lan", "eth0" ]
          
        
    },

它仅服务于 lan,而不服务于 eth0。理论上我可以桥接它们,但我想稍后在 eth2 上提供不同的范围。如果我只有 eth0 或 lan 但不能同时拥有两者,它就可以工作。

这似乎是一个有效的设置,因为如果我运行 sudo kea-dhcp4 -t /etc/kea/kea-dhcp4.conf我得到

023-09-17 14:16:33.423 INFO  [kea-dhcp4.hosts/1824.139761470586496] HOSTS_BACKENDS_REGISTERED the following host backend types are available: mysql postgresql
2023-09-17 14:16:33.423 WARN  [kea-dhcp4.dhcpsrv/1824.139761470586496] DHCPSRV_MT_DISABLED_QUEUE_CONTROL disabling dhcp queue control when multi-threading is enabled.
2023-09-17 14:16:33.423 WARN  [kea-dhcp4.dhcp4/1824.139761470586496] DHCP4_RESERVATIONS_LOOKUP_FIRST_ENABLED Multi-threading is enabled and host reservations lookup is always performed first.
2023-09-17 14:16:33.423 INFO  [kea-dhcp4.dhcpsrv/1824.139761470586496] DHCPSRV_CFGMGR_ADD_IFACE listening on interface lan
2023-09-17 14:16:33.423 INFO  [kea-dhcp4.dhcpsrv/1824.139761470586496] DHCPSRV_CFGMGR_ADD_IFACE listening on interface eth0
2023-09-17 14:16:33.423 INFO  [kea-dhcp4.dhcpsrv/1824.139761470586496] DHCPSRV_CFGMGR_SOCKET_TYPE_DEFAULT "dhcp-socket-type" not specified , using default socket type raw
2023-09-17 14:16:33.423 INFO  [kea-dhcp4.dhcpsrv/1824.139761470586496] DHCPSRV_CFGMGR_NEW_SUBNET4 a new subnet has been added to configuration: 10.0.0.0/24 with params: t1=900, t2=1800, valid-lifetime=3600

实际的子网设置可能在这里很有用,所以我在下面分享了它们

    "subnet4": [
        {
            // Subnet identifier should be unique for each subnet.
            "id": 1,

            // This is mandatory parameter for each subnet.
            "subnet": "10.0.0.0/24",
            //testing explicit interfaces. Can't do more than 1
            //"interface": "eth0"

            "pools": [ { "pool": "10.0.0.51 - 10.0.0.200" } ],

            "option-data": [
                {
                    "name": "routers",
                    "data": "10.0.0.1, 10.0.0.2"
                }
            ],

            "reservations": [

                {
                    "hw-address": "xx:xx:xx:xx:xx:xx",
                    "ip-address": "10.0.0.50"
                }

                
            ]
            
    ],

不幸的是,我的测试客户端系统正在运行Windows - 但据我所知,它只给出了第一个默认网关,我怀疑这会破坏路由。

有什么方法可以在同一子网中使用一个或多个接口吗?

答案1

经过一些实验,我在一个子网上不能有多个路由器(因此实际上不可能有多个接口为子网提供服务),因为它将始终为第一个 IP 提供服务,并且“最佳”解决方案更接近我需要的是桥梁。

然而,由于接口速度的混合,这最终会破坏我的 10 GB 链路,因此我最终采用了具有 2 个子网的设置 - 2.5 GB 链路在一个子网上桥接,10 GB 链路在另一个子网上桥接。他们无法真正互相交谈(但这是另一个问题)。

我打算为物联网设备建立一个隔离的子网,所以这不是不好,我可以通过开关来缓解部分问题。

相关内容