香蕉派R4:为多个子网设置DHCP服务器

Banana Pi R3 有四个1千兆以太网端口,我们将使用它们来创建四个子网。这四个子网将允许它们之间路由。有三个局域网(LAN)端口和一个广域网(WAN)端口。我们将将WAN端口连接到连接到互联网的本地网络。其余三个端口将允许通过动态主机配置协议(DHCP)自动提供IP地址的三个网络。BPI-R4 将允许数据包在子网之间路由,甚至在 WAN 端口上传输到互联网。

DHCP服务器

首先,我使用的是与文章《香蕉皮R4(BPI-R4)》中讨论的相同的内容。配置相同,因为我使用的是 NVMe 作为根分区的设置。

请注意,我们将把这四个端口标记为“lan0”、“lan1”、“lan2”和“lan3”。“lan0”端口位于左侧,正值端口的开口处,右侧为“lan3”。连接到本地网络时,请将以太网线缆插入“lan0”。

因此,在管理端口之前,让我们先先安装 DHCP,然后再映射端口,因为在将端口绑定到特定子网以供 DHCP 服务器使用时,我们需要分配一个 IP 地址。

要安装DHCP,请使用命令:

代码:

计算机服务器
apt install isc-dhcp-server -y

这将安装我们需要的DHCP服务,将IP地址分配给三个子网上的系统。我假设连接的子网中,WAN 端口已具有 DHCP 服务器和通往互联网的网关。在我的网络中,这个子网是192.168.1.0/24,网关是192.168.1.1。

路由设置

那么,让我们回顾一下我们将要实现的目标。四个端口各有一个静态IP地址。我们将设置所有内容,以便界面能够相互连接。最后一步是使用“iptables”设置与WAN的连接,以便通过网关在192.168.1.1上路由到互联网。我们还将为端口设置静态IP地址。

让我们先来看文件“/etc/dhcp/dhcpd.conf”文件。在这里,我们将设定一些事项:

  • 租赁时间
  • 最大租赁时间
  • 权威
  • DDNS 更新风格
  • 默认域名
  • DNS服务器
  • 子网
  • 网关
  • DHCP IP 范围

编辑文件,您需要输入以下信息,更改需要针对您网络的选项:

 

代码:
# /etc/dhcp/dhcpd.conf
default-lease-time 600;
max-lease-time 7200;
authoritative;
ddns-update-style none;
option domain-name "linux.org";
option domain-name-servers 8.8.8.8, 1.1.1.1;

subnet 192.168.1.0 netmask 255.255.255.0 {
    option routers 192.168.1.1;
}

subnet 10.1.0.0 netmask 255.255.0.0 {
    range 10.1.0.10 10.1.255.254;
    option routers 10.1.0.1;
}
subnet 10.2.0.0 netmask 255.255.0.0 {
    range 10.2.0.10 10.2.255.254;
    option routers 10.2.0.1;
}
subnet 10.3.0.0 netmask 255.255.0.0 {
    range 10.3.0.10 10.3.255.254;
    option routers 10.3.0.1;
}

第一部分应不言自明。这会向所有从该DHCP服务器获取IP地址的系统和设备提供信息。我唯一想在这里提到的是“权威”。在我们设置多种IP地址的子网上,该DHCP服务器将拥有分配IP地址的权限。请勿使用此服务器在已配备 DHCP 服务器的子网上分配 IP 地址。就我而言,子网192.168.1.0/24已经安装了DHCP服务器,因此我不会为此子网设置一系列IP地址。

现在,还有四个部分,每个部分都以一个子网和网罩开头。

第一个是子网“192.168.1.0”。这是我们已有DHCP服务器的WAN。子网之后,你为子网指定了网罩。然后使用一个开孔卷曲括号({)来定义子网的选项。在下一行中,已记入,是我们为子网设置的任何选项。由于这是一个已包含DHCP服务器的子网,因此我们无需提供其可出租的各种IP地址。我们只需要指定网关。我们可以通过“选项路由器”参数来实现此操作,然后是网关地址和分号。每行必须以分号结尾,但带有卷曲括号的列。本地网络的本地网络已将网关IP地址设置为“192.168.1.1”。我们在下行中以关闭方括号(})来关闭子网声明。

下一个子网是“10.1.0.0”,子网为“255.255.0.0”。我们通过参数“范围”设置了多种IP地址,以分配给子网上的任何设备。我们分配的范围是 ‘10.1.0.10’ 到 ‘10.1.0.255.254’。然后我们将子网网关设置为“10.1.0.1”作为“lan1”,这是第二个以太网端口。我们可以在下一行“选项路由器”上设置网关地址。

下一个子网是“10.2.0.0”,网罩为“255.255.0.0”。IP地址范围为“10.2.0.10”至“10.225.254”,网关为“10.2.0.1”。我们将此设置为“lan2”。

最后一个子网是“10.3.0.0”,网罩为“255.255.0.0”。IP地址的范围为“10.3.0.10”至“10.3.255.254”,网关为“10.3.0.1”。我们将此赋值为“lan3”。

现在,你可以查看界面名称“lan0”、“lan1”、“lan2”和“lan3”。如果你运行命令“ip a”,就会看到接口的各个端口名称。我们看到的四点就是我提到的。

接下来,我们需要为每个端口分配一个IP地址。此文件为“/etc/netplan/01-network-manager-all.yaml”。如果打开文件,它将包含所有列出的接口。我们需要为每个接口添加一些设置。结果是:

代码:
network:
version: 2
renderer: networkd
ethernets:
    wlan0:
        dhcp4: no
        dhcp6: no
    wlan1:
        dhcp4: no
        dhcp6: no
    eth0:
      dhcp4: no
      dhcp6: no
   eth1:
      dhcp4: no
      dhcp6: no
   eth2:
      dhcp4: no
      dhcp6: no
   lan0:
      dhcp4: no
      dhcp6: no
      addresses: [192.168.1.70/24]
      nameservers:
      addresses: [8.8.8.8, 1.1.1.1]
      routes:
      - to: default
      via: 192.168.1.1
   lan1:
      dhcp4: no
      dhcp6: no
      addresses: [10.1.0.1/16]
      nameservers:
         addresses: [8.8.8.8, 1.1.1.1]
   lan2:
      dhcp4: no
      dhcp6: no
      addresses: [10.2.0.1/16]
      nameservers:
         addresses: [8.8.8.8, 1.1.1.1]
   lan3:
      dhcp4: no
      dhcp6: no
      addresses: [10.3.0.1/16]
      nameservers:
         addresses: [8.8.8.8, 1.1.1.1]

将“渲染器”设置为“网络化”,而不是“NetworkManager”。每个接口将添加三行,但“lan0”将添加六行。

从“lan0:”开始,然后添加“addresses:”。在这里,我们可以将接口的静态IP地址设置为“192.168.1.70/24”。“24”是网罩。在我的本地网络上,DHCP服务器给出的范围从“192.168.1.100”开始,因此“192.168.1.70”在我的网络上可用且未使用。下一行仅是“域名服务器”,因为我们将为该接口分配DNS服务器。下一条行列出了“8.8.8.8、1.1.1”的DNS服务器。在下一行中,我们指定要为网关设置一个静态路由。下行列出了“to”选项,该值为“default”。这表明它是默认的网关地址。下一行是通过“192.168.1.1”“via”选项的网关。

现在,我们转到“lan1”的下一个接口。我们为其分配一个带有网罩的静态IP地址。这里,我们还会指定要使用的“名称服务器”。我们可以设置以下两个子网相同。

下一个需要编辑的文件是“/etc/default/isc-dhcp-server”。该文件中是一条我们需要更改的行。行以“INTERFACESv4=”开头。在这里,我们需要指定DHCP将提供IP地址的接口。线是“lan1 lan2 lan3”。我们不会添加“lan0”,因为它已经安装了DHCP服务器。
注意: 如果需要用于“lan0”接口的DHCP服务器,则可以在此添加接口,同时还需要设置“/etc/dhcp/dhcpd.conf”中的多种地址。
需要编辑的最后一个文件是“/etc/sysctl.conf”。您需要取消注释行“net.ipv4.ip_forward=1”。移除行前面的哈希值标签(#),并将值设置为“1”。保存文件并退出编辑器。要使更改生效,您需要运行以下命令:

代码:

计算机服务器
sysctl -p /etc/sysctl.conf

因此,现在我们启用“端口转发”,但需要立即完成所有更改才能生效。执行以下两个命令以实现此目的:

代码:
netplan apply
systemctl restart isc-dhcp-server

您可以通过运行以下命令来验证该服务是否已正常重启,并确认其声明该服务为“正在激活”的服务:

代码:
systemctl status isc-dhcp-server

注意: 如果启用更改时出现任何错误,您需要检查文件,以验证是否已正确设置每行内容。

我们为每个接口分配了一个IP地址。将新子网分配到在已创建子网内具有IP地址的接口。

如果接口中有以太网线,则端口将处于活动状态,IP地址将列在命令“ip a”输出的输出中。

现在你应该能够在我们设置的界面上对所有IP地址进行ping。问题是,我们目前还无法访问WAN上的任何设备,这意味着网关和互联网。

要解决这个问题,我们需要启用路由。

路由设置

这里,我们将有一些命令来运行并设置路由。要在启动时加载设置,请保存设置。

在添加任何路由信息之前,我们需要验证是否使用了正确的文件来保存设置。使用以下命令:

代码:
update-alternatives --config iptables


请确保它显示“iptables=legacy”这个值,如果不显示,则需要在菜单中进行更改。

我们已经设置了“端口转发”,因此需要控制接口之间的流量以恢复流量。使用命令:

 

代码:
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

需要为每个界面启用从子网到互联网的连接,才能通过“lan0”:

代码:
iptables -A FORWARD -i lan1 -o lan0 -j ACCEPT
iptables -A FORWARD -i lan2 -o lan0 -j ACCEPT
iptables -A FORWARD -i lan3 -o lan0 -j ACCEPT

由于我们允许外向流量,因此需要通过“lan0”启用来电的流量:

代码:
iptables -A FORWARD -i lan0 -o lan1 -j ACCEPT
iptables -A FORWARD -i lan0 -o lan2 -j ACCEPT
iptables -A FORWARD -i lan0 -o lan3 -j ACCEPT


我们现在需要允许网络地址转换(NAT):

 

代码:
iptables -t nat -a POSTROUTING -o lan0 -j MASQUERADE

您需要保存这些设置,以便它们能够持续使用。安装软件包,提示您保存现有设置。在“ipv6”设置中可能会出现错误,因为我们没有设置任何选项:

代码:
apt install iptables-persistent -y

安装过程中,系统会提示您保存当前的 iptables 设置。如果日后进行更改或错失了保存设置的机会,只需发出命令即可保存设置:

代码:

软件
netfilter-persistent save

如果需要验证设置是否已保存,系统会将设置保存在 ‘/etc/iptables/rules.v4’ 中。

你应该能够从任何子网访问互联网。

结论

这看起来可能很简单,但花了更多时间才让它奏效。

当然,这在BPI-R4上并不仅可用,而对于任何多户系统都可用。多家庭系统是具有多个网络接口的系统。系统设置完成后,你可以将其用作代理服务器,或者其他一些服务可能运行良好,因为该系统将成为网络的中心。基本上,这是一个管理多个子网的路由器。

原文链接:https://www.linux.org/threads/banana-pi-r4-bpi-r4-dhcp-for-multiple-subnets.61666/


关注微信号:智享开源,可及时获取信息

评论列表
 
 
发表评论

你必须 登录 才能发表评论.

为你推荐