前言
买了台迷你主机,并打算把他当作家中的主路由来使用
这里使用的是非 Docker 方式的软路由搭建方式,一大堆坑,快被坑麻了,最后才汇总出这么一篇教程
Docker + OpenWRT 方式参看
背景
- 双网口 X86 主机
- Ubuntu Server 2404
需求
- 为下游设备分配公网 IPv6
- DNS 缓存
- 广告屏蔽
预期网络拓扑
网卡配置
确认网卡名称
1 | ip a |
应有类似输出
1 | 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 |
其中 enp1s0
和 enp2s0
为两个网口的名称
INFO
本文中 enp1s0
作为 WAN,enp2s0
作为 LAN
打开网卡设置文件 /etc/netplan/50-cloud-init.yaml
,其中 50-cloud-init.yaml
每台设备可能有所不同
1 | network: |
其中 192.168.3.1
将作为本机 IP 及网关
输入如下指令生效
1 | sudo netplan generate |
启用转发
编辑 /etc/sysctl.conf
,在最末尾添加如下内容
1 | # 启用 IPv4 转发 |
输入如下指令生效
1 | sudo sysctl -p |
配置 DNSmasq
DNSmasq
可以提供 DNS 缓存和 DHCP 服务
安装 DNSmasq
1 | sudo apt install dnsmasq -y |
配置其配置文件 /etc/dnsmasq.conf
,添加如下内容
1 | listen-address=127.0.0.1, 192.168.3.1 # 设置 DNS 缓存监听地址 |
启用 DNSmasq
1 | # 关闭 systemd-resolved,不然会因端口占用无法启动 DNSmasq |
配置防火墙
本文使用 iptables
来进行路由设置
1 | sudo ufw disable # 关闭 ufw |
配置 iptables
1 | sudo iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE |
配置 PPPoE 拨号上网
安装 pppoeconf
1 | sudo apt install pppoeconf -y |
将 enp1s0
接到光猫上,不如后面无法扫描到网络
输入如下指令配置 pppoeconf
1 | pppoeconf |
按照提示输入运营商账号密码,其他一路 Yes 即可
打开 /etc/ppp/peers/dsl-provider
并在末尾添加如下内容
1 | +ipv6 |
重启电脑并检查网络
1 | sudo reboot |
应出现一个名为 ppp0
的网卡,并有相应的 IPv4/IPv6 地址
为下游设备分配 IPv6
安装 wide-dhcpv6-client
1 | sudo apt install wide-dhcpv6-client |
打开 /etc/wide-dhcpv6/dhcp6c.conf
并修改为如下内容
1 | interface ppp0 { |
新建 /etc/systemd/system/dhcp6c.service
并键入如下内容
1 | [Unit] |
随后
1 | systemctl stop wide-dhcpv6-client.service |
重启电脑,完成路由设置
anti-AD 广告屏蔽
利用 anti-AD 所提供的 DNSmasq 配置文件来进行广告屏蔽
打开 /etc/dnsmasq.conf
,添加如下内容
1 | addn-hosts=/etc/dnsmasq.host |
输入如下指令
1 | sudo wget https://anti-ad.net/anti-ad-for-dnsmasq.conf -O /etc/dnsmasq.host |
在 /etc
下新建 host.sh
并键入如下内容
1 | sudo wget https://anti-ad.net/anti-ad-for-dnsmasq.conf -O /etc/dnsmasq.host |
以超级用户的身份进入 CRON
1 | su |
添加如下规则
1 | 0 * * * * /etc/host.sh |
每小时将执行一次 /etc/host.sh
以同步广告列表
旁路由设置
断开旁路由的所有网线并重置旁路由
将电脑网口与路由器 LAN 口相连,进入路由管理页面
设置如下:
- 静态 IP 上网
- IP 地址:192.168.3.2
- 子网掩码:255.255.255.0
- 默认网关:192.168.3.1
- 首选 DNS 服务器:192.168.3.1
- 路由器局域网地址:192.168.4.1
保存,随后将旁路由的 WAN 口与主路由的 LAN 口相连,完成设置
连接 WIFI,可以使用 192.168.4.1
进入旁路由设置,也可以通过 192.168.3.1
进入主路由设置
相关问题
配置 IPv6 后部分网站无法访问
诸如百度、知乎,博客园等网站使用在启用 IPv6 后无法打开,可能是因为 MSS 值设置的原因
将 MSS 值设为 1432
1 | sudo ip6tables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o ppp0 -j TCPMSS --set-mss 1432 |