上个月攒了台小主机作为家庭服务器,安装了 pve 虚拟机平台,并在平台上安装了 openwrt/lede 软路由系统。科学上网、去广告等功能直接在路由器级别使用确实很爽。因为服务器的性能还是有不少的冗余,我想再装个 ubuntu 系统作为一个自己折腾用的路由器,然后在上面直接运行我自己写的梯子软件,毕竟自己的写梯子用起来也更放心一些。
一个路由器最基础得拥有三个功能,nat 转发、dhcp 服务、dns 服务。linux 来实现这三个功能是非常简单的,nat 转发使用 iptables 来实现,dhcp 和 dns 使用 dnsmasq 来实现就行了。
硬件基础
最少拥有两个网口,可插入两根网线。也就是说最少有一个 wan 口,一个 lan 口。
安装系统
安装系统就不多说了,直接下载目前最新的 LTS 版本 ubuntu server 18.04 安装就行了。
配置 wan 口
我的机器目前只有两个物理网卡,一个作为 wan 口,一个作为 lan 口,当然有更多的网口就更好了,配置方法都是一样的。 ubuntu 18.04 和之前的版本的网卡配置有变化,现在配置文件是 /etc/netplan/50-cloud-init.yaml。由于我家的网络不是拨号上网的,插上网线就能分配到 ip 上网,所以我的配置就很简单了,只保留 wan 口作为 dhcp 客户端就行了。
|
|
然后执行 netplan apply 使它生效。
配置 lan 口
路由器一般会有多个 lan 口组成一个交换机。linux 来实现这个功能很简单,配置一个网桥,并把多个 lan 口都加入这个网桥就行了。
|
|
上面的每次命令执行后,都可以用 ip addr 和 ip link 来查看修改是否成功。
配置 nat
首先需要先开启系统的转发功能,打开 /etc/sysctl.conf, 在文件的最后加入
|
|
执行 sysctl -p 使它生效。然后通过 iptables 来设置 nat。
|
|
这个时候路由器已经可以使用了,wan 口连接外网,lan 口插入 pc。pc 手动设置一个 10.1.1.0/24 网络内的 ip,并把网关指向 10.1.1.1 就行了。
配置 dhcp 和 dns 服务
经过上面的配置,我们已经得到一个能用的路由器了,但是每次客户端都要手动配置 ip,还是很麻烦的。下面我们安装 dhcp 服务来自动分发 ip 和解析域名的 dns 服务。
我们用 dnsmasq 刚好能实现这两个功能,那么先安装
|
|
安装好之后修改配置文件 /etc/dnsmasq.conf,关键配置如下
|
|
配置上级 dns 服务器,打开 /etc/resolv.conf
|
|
开启服务并设置开机启动
|
|
这时候把 pc 手动指定的 ip 去掉,过一会儿就自动获取到路由器分发的 ip 了,目前我们自己打造的路由器就和普通家用路由器没有什么区别了。