史上最优雅的透明网关Gateway(旁路由)教程 for ubuntu

2020-10-12

史上最优雅的透明网关(旁路由)教程

方案一:基于ubuntu20.04.1,18.04及以下版本貌似不可行;
方案二:理论上可以适用目前主流的linux发行版;

本教程只适用ipv4,ipv6一直没搞明白,想讨论的可以在教程下方给我email。



一、开启ip_forward

万年不变:

1
sudo vim /etc/sysctl.conf

  net.ipv4.ip_forward=1

1
sudo sysctl -p

二、编译dns2socks

https://sourceforge.net/projects/dns2socks/

1
2
3
4
5
gcc *.c -I. -lpthread -o dns2socks


#启动
dns2socks 127.0.0.1:7891 8.8.8.8:53 127.0.0.1:5353

三、安装dnsmasq

1
2
3
sudo apt install dnsmasq

sudo vim /etc/dnsmasq.conf

修改配置:
port=53 conf-dir=/etc/dnsmasq.d

四、停用系统自带域名服务systemd-resolved,启用dnsmasq

dnsmasq服务应该不会启动 53端口被占用,需要把系统自带的systemd-resolved停掉。

1
2
3
4
sudo systemctl disable systemd-resolved.service
sudo systemctl stop systemd-resolved.service

sudo systemctl start dnsmasq.service

五、下载clash,并配置

Dreamacro/clash - latest

关键配置

socks-port: 7891 redir-port: 7892 allow-lan: true external-controller: 0.0.0.0:9090

六、下载tun2socks,启动并配置

https://github.com/eycorsican/go-tun2socks/releases/latest

启动:

1
./tun2socks-linux-amd64 -proxyServer 127.0.0.1:7891
1
2
3
4
5
6
7
8
9
#ip addr
#可以看到添加了一个tun1设备

#配置ip并启用
sudo ip addr add 10.255.0.2/24 dev tun1
sudo ip link set dev tun1 up

#添加路由表
sudo ip route add default via 10.255.0.1 dev tun1 table 200

七、iptables为流量打标,对打标流量进行策略路由

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# Generated by iptables-save v1.8.4 on Tue Oct 13 18:40:10 2020
*mangle
:PREROUTING ACCEPT [6483400:62560211586]
:INPUT ACCEPT [4634555:60909162682]
:FORWARD ACCEPT [1862406:1655775366]
:OUTPUT ACCEPT [3493816:58634148080]
:POSTROUTING ACCEPT [5356222:60289923446]
:IPSET - [0:0]
:LMARK - [0:0]
-A PREROUTING -m addrtype ! --src-type LOCAL ! --dst-type LOCAL -j IPSET
-A IPSET -m set --match-set v2ray dst -j LMARK
-A LMARK -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff
-A LMARK -m mark --mark 0x1033 -j RETURN
-A LMARK -j MARK --set-xmark 0x1033/0xffffffff
-A LMARK -j CONNMARK --save-mark --nfmask 0xffffffff --ctmask 0xffffffff
COMMIT
# Completed on Tue Oct 13 18:40:10 2020


#策略路由
sudo ip rule add from all fwmark 0x1033 lookup 200

八、clash dashboard

http://clash.razord.top