从ubuntu server 开始,配置自动分流的软路由

花了好长时间,配置好了一台软路由,现在可以自动分流,国外流量通过vps出去。我自己还造了一个dns服务器的轮子,现在可以预查一下,国内的用114,国外的用vps的那边ip作为edns_ip去查一下。这样cdn能用国内的也会尽量用国内的,还是防污染的,国外cdn也不会绕路。

我是在淘宝上买的一台专门用来做软路由的x86 的小机器。有4个网卡,j1900的cpu。其实如果有不用的机器而且有两个网卡的话,也可以搭起来。我是直接从ubuntu server 开始搭的,没有用什么固件,因为洁癖哈哈哈哈。

现在我的路由拓扑大概长这样:

        -----------              -------
        | CERNET  |              | ISP |
        -----------              -------
            ||                     ||
            nat                    nat
            ||                     ||
----------------             -----------------
|  bj00        |             |  sf01         |
| 10.56.1.0/20 |  <=======>  | 10.56.16.0/20 |
|              |             |               |
---------------              -----------------
     ||
    lan
     ||
 10.56.1.0/24

基本路由功能

Lan Interface
首先把一个网卡设置成内网的接口(interface),在路由器上这个网卡的设置可以写在/etc/network/interfaces里面,把下面内容写到里面末尾:

auto enp2s0
iface enp2s0 inet static
address 10.56.1.1
netmask 255.255.255.0

接下来运行sudo service networking restart 去重启,运行ip addr就可以看到新配置的接口。注意我的接口名字就叫做enp2s0,你可以通过ip addr查看你的接口名字。

其实这样就可以自动配置好到10.56.1.0/24这个子网的路由之类的。

sysconf
把这些项加到 /etc/sysctl.conf 里面

net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.all.rp_filter=0
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1

前两项后面配置策略路由的时候需要用到,后面两项是允许系统接受目的地不是本地的包。重启下机器生效(其实应该某条命令也可以生效的,我一直没成功233333

dhcp 服务器
安装isc-dhcp-server

sudo apt install isc-dhcp-server

接下来配置/etc/default/isc-dhcp-server,把接口改成刚才设置的接口:

INTERFACES=”enp2s0”

编辑/etc/dhcp/dhcpd.conf,把下面内容加进去:

subnet 10.56.1.0 netmask 255.255.255.0 {
range 10.56.1.20 10.56.1.100;
option routers 10.56.1.1;
option domain-name-servers 10.56.1.1;
}

那个domain-name-servers,我是已经配置好了一个dns server,所以填的服务器地址,如果没配置好可以先设置成114之类的。

接下来运行sudo service isc-dhcp-server restart 重启dhcp服务器。

现在路由器的基本功能应该是已经够了,把这个网口接上交换机或ap就已经可以组建一个局域网了。也可以直接可以插上一个网线到连到你的电脑上,你就可以看到自己被分配了一个内网的ip地址,还可以ping 10.56.1.1玩一下。

nat
需要nat才可以上外网。

运行下面这条命令就可以把源是内网ip,出口是enp1s0的加上一个nat。那个enp1s0是插公网网线的那个出口。

iptables -t nat -A POSTROUTING -o enp1s0 -j MASQUERADE

到现在位置你获得了一个高性能x86架构的普通的路由器了233333333

=========== 坑,哪天想起来继续填。。===========

策略路由

ipset&iptables
openvpn tunnel

无污染的dns,freedns

持久化配置