发布网友 发布时间:2022-04-22 19:08
共1个回答
热心网友 时间:2023-10-01 21:05
目标,利用已有的软件包,多网卡配置一个路由器
还没完成的配置学习:
事实上我在github看到一个 关于pppoe集成到systemd的讨论 ,抄作业即可
系统:debian10
防火墙:nftables(代替iptables)
DHCP/DNS服务:dnsmasq
网卡接口管理服务:systemd-udevd systemd-networkd
流量控制和策略路由:iproute2 (这个还没开始学习)
步骤流程:
例如
link/ehter项目对应的是mac地址,记住他们
这一小节需要参考的文档有 systemd.link 中文手册 ,利用mac地址匹配网卡设备,更改网卡名。
使用systemd.link为wan、lan网口创建网络接口名称命名规则的配置,创建配置文件:
文件内容如下,主要通过MAC地址进行匹配,参数含义参考手册,link配置由 systemd-udevd 读取。
网络管理软件可能通过两个源头来触发网络配置:服务与udev规则;如果禁用服务失败,需要考虑是否因为udev的rule触发事件导致配置变化。
网络管理服务一般情况只存在一个,此处使用 systemd-networkd 作为网络管理服务,它包括:
三个相关服务,对应的命令有 networkctl 、 resolvectl 。
创建 10-wan.network 、 10-lan.network 两个配置,文件名没要求,后缀要求是 .network
wan口暂时设置为DHCP方式上网
wan口网络配置文件内容如下:
lan口网络配置文件内容如下:
使用systemd-networkd管理网络,还需要启用systemd-resolved管理本机的DNS服务,确保域名解正常。
编辑 systemd-resolved.service 配置文件如下:
选项配置如下:
启动并允许开机启动:
对于内核网络调整方面接触较少,本节网上抄作业,但是调整参数选项的含义需要参考 linux内核网络文档 。
主要的调整目标为:
添加以下配置:
调整说明:
/etc/nftables.conf 文件内容(comment关键字可以为规则添加注释,增强可读性)
具体的情况分析:
使用 dnsmasq 守护进程作为网关计算机的DNS以及DHCP服务。
把 dnsmasq 默认的配置都不要了,把sysV启动的软连接全部删了,把 dnsmasq.service 的服务也删除了。可以满足多个网卡配置dnsmasq,不应该使用包内自带的服务配置,由自己编辑一个适合情况的配置文件。
编写新的dnsmasq服务的service模板,以适应多个网卡单独启动不同的dnsmasq服务。
编写 /etc/systemd/system/dnsmasq@.service 内容:
%I 是模板实例化后,被替换的名称,例如, dnsmasq@lan.service , %I 就会被替换成 lan
软连接新建一个实例,这个服务是针对 lan 网卡的。创建 dnsmasq 配置存放的文件夹,我放在 /opt/router-config/dnsmasq/lan/ 下,
配置说明:
主配置文件内容:
更多dhcp-option的选项可以通过 dnsmasq --help dhcp 查询到。
/opt/router-config/dnsmasq/lan/resolv.conf 内容(它定义了上游查询服务器,最多只能使用2个):
MYCOMPUTER 内容,针对mac地址为 23:33:33:33:33:44 的主机固定分配IP为 192.168.31.5
/opt/router-config/dnsmasq/lan/hosts.d/MYCOMPUTER 文件内容:
文件格式是 --dhcp-host 选项的右值,以上相当于 --dhcp-host=23:33:33:33:33:44, 192.168.31.5 ,它可以是IPv4的,也可以是IPv6的,具体参考manpage。也是一行一个参数,不同的主机,可以分开不同的文件写配置,也会被读入。
文件配置完毕后,需要尝试启动 dnsmasq@lan.service ,并且允许它开机自启。
TODO: