基本信息
环境:Ubuntu24.04,已安装docker(本文全栈基于 Docker compose 配置,便于管理),可以正常访问hub.docker.com(寄,可以先用普通代理拉取镜像),所有操作在root权限下运行。
网络拓扑:上级网络(光猫)->主机@enp1s0做wan口->主机@enp2s0做lan口->有线中继 WiFi 等局域网设备。
完整的docker compose配置文件见文末。
软路由基本配置
配置网卡启用桥接网络
|
|
使用netplan工具配置网卡,将 enp1s0作为wan口连接上级网络,enp2s0作为lan口连接局域网设备,在 enp2s0上建立桥接网络以将局域网与上级网络连接:
|
|
依据网络环境修改并添加以下内容:
|
|
应用配置并查看信息:
|
|
桥接网络配置应包含类似以下信息:
|
|
配置dns与dhcp服务器
本文使用adguardhome提供dns服务,dnsmasq、smartdns、mosdns等均可。
调整 systemd-resolved 服务
由于dae会劫持dns并自行分流,需要占用53/udp端口,因此首先调整Ubuntu自带dns Resolve服务器:
|
|
随后重启 systemd-resolved 服务以取消dns端口占用:
|
|
使用 lsof指令检查53端口占用情况:
|
|
lsof输出应没有任何内容,若存在 systemd-resolved服务则需要重新调整。
使用 docker 配置 AdGuardHome
使用docker compose进行配置,配置文件如下:
|
|
在 AdGuardHome 中启用 dhcp 服务器
直接通过 AdGuardHome 直接启用 dhcp 服务器,需要注意关闭现有的 dhcp 服务,可通过 htop 等手段检查 dhcpd 服务运行情况
|
|
修改/opt/adguardhome/conf/AdGuardHome.yaml,设置监听地址和端口:
|
|
配置完成后,启动 AdGuardHome 容器:
|
|
访问192.168.1.100:5253,进入网页配置,配置dns上游服务器,选择合适的广告屏蔽器,以下提供一些上游服务器例子,自行测试速度并选择使用:
|
|
配置完成后,使用 lsof检查,应有快速输出(若输出缓慢可能存在dns配置问题),类似以下信息:
|
|
dhcp Snooping 配置(可选)
为避免局域网内部有人插错路由器 LAN 口导致 dhcp 服务器冲突(现代路由器基本不会出现这一情况),可以在软路由当中限制仅接受来自 br0 接口的 dhcp 请求,下面的代码务必正确替换br0接口的网关 MAC 地址.
该操作存在风险,如果无法正常申请到 IP 地址可以使用ebtables -F清除规则来回滚:
|
|
转发与路由配置
配置主机转发能力:
|
|
应用配置:
|
|
使用 iptables启用路由能力:
|
|
若使用 ufw,应用以下规则:
|
|
至此,软路由基本配置完成,主机可作为一个普通的高性能路由器使用。
基于 dae 配置透明代理访问 ChatGPT
使用docker compose配置,配置文件如下:
|
|
对于dae的配置文件/etc/dae/config.dae,可以参考官网配置,下面给出我的关键配置,在对应位置修改或增加即可:
|
|
完整的 docker-compose.yaml
|
|