PPTP协议在没有配置智能分流的情况下,上网需要来回切换略显麻烦,有没有什么办法可以和ssr客户端和V2ray客户端那样实现分流呢?解决这个问题以后又会发现一个新的问题PPTP用的是google的dns,解析到的ip地址未必是适合的ip导致某些网站访问速度很慢,如果一个账号能让任意设备共享网络,省去折腾各个终端安装和配置那就太好了,最近利用家里的树莓派实现了这个需求,下面是我的折腾记录,有更好的方法欢迎留言交流~
安装PPTP的linux客户端
apt-get安装pptp-linux
sudo apt-get install pptp-linux
修改pptp-linux的配置文件
sudo vi /etc/ppp/peers/pptpconf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16pty "你的服务端地址 --nolaunchpppd"
name 账号
password 密码
remotename PPTP
require-mppe-128
require-mschap-v2
refuse-eap
refuse-pap
refuse-chap
refuse-mschap
noauth
persist
maxfail 0
defaultroute
replacedefaultroute
usepeerdns启动/关闭PPTP
sudo pon pptpconf
开启后,如果连接正常,ifconfig
可以看到PPTP的连接ppp0设置开机启动服务
sudo vi /lib/systemd/system/pptp.service
1
2
3
4
5
6
7
8
9
10[Unit]
Description=PPTP Service
After=network.target
[Service]
Type=forking
ExecStart=/usr/bin/pon pptpconf
[Install]
WantedBy=multi-user.target刷新并启动服务
1
2
3sudo systemctl daemon-reload
sudo systemctl enable pptp
sudo systemctl start pptpchnroutes分流策略
根据请求ip分流,某些网站强制转发到ppp0使用PPTP访问,某些网站不使用,这里记录PPTP下的使用方法,其它协议的使用方法可以查看官网:https://github.com/fivesheep/chnroutes
1 | git clone https://github.com/fivesheep/chnroutes.git |
clash开启http/https/socks5代理
- 安装clash
下载安装包
sudo wget https://github.com/Dreamacro/clash/releases/download/v1.6.5/clash-linux-armv7-v1.6.5.gz
解压
sudo gunzip clash-linux-armv7-v1.6.5.gz
移动到系统目录
sudo mv clash-linux-armv7-v1.6.5 /usr/local/bin/clash
设置可执行权限
sudo chmod +x /usr/local/bin/clash
设置配置文件
sudo vi ~/.config/clash/config.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18# port of HTTP
port: 7890
## port of SOCKS5
socks-port: 7891
# `allow-lan` must be true in your config.yml
allow-lan: true
# set log level to stdout (default is info)
# info / warning / error / debug / silent
log-level: info
# A RESTful API for clash
#使用0.0.0.0可以使用局域网设备访问
external-controller: 0.0.0.0:8080
mode: Rulesudo clash
启动,这样我们就拥有http/https/socks5的代理服务器了,任意设备只要配置树莓派的ip地址和对应协议的端口号即可代理请求,如果有公网ip或内网穿透,有域名+ddns解析服务器那么在外网也可以代理设置开机启动服务
sudo vi /etc/systemd/system/clash.service
1
2
3
4
5
6
7
8
9
10
11[Unit]
Description=Clash Service
After=network.target
[Service]
Restart=on-abort
LimitNOFILE=1048576
ExecStart=/usr/local/bin/clash -d /home/pi/.config/clash
[Install]
WantedBy=multi-user.target转发所有请求
sudo vi /etc/sysctl.conf
ipv4的请求,修改
net.ipv4.ip_forward=1
ipv6的请求,修改
net.ipv6.conf.all.forwarding = 1
刷新设置sudo sysctl -p
流量强制转发到ppp0
sudo iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
dnsmasq + dnsmasq-china-list 本地DNS分流策略
apt-get安装dnsmasq
sudo apt install dnsmasq
设置配置文件
sudo vi /etc/dnsmasq.conf
1
2
3no-resolv
server=8.8.8.8
server=8.8.4.4用dnsmasq-china-list设置白名单,用运营商dns去解析,其它用google的dns解析,否则解析到的ip并不是访问速度快的最适合的ip,导致网站和App的访问速度太慢了,所以太干净的dns解析也不好
- 运营商分配的DNS地址假设为223.5.5.5,切换到su用户,拉取不需要走PPTP的地址用运营商分配的DNS地址去解析
1
curl -s https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/accelerated-domains.china.conf|sed 's/114.114.114.114/223.5.5.5/g' >/etc/dnsmasq.d/accelerated-domains.china.223.5.5.5.conf
重启dnsmasq
service dnsmasq restart
测试分流效果
- 未使用本地dns解析
dig google.com @223.5.5.5
- 使用本地dns解析
dig google.com @127.0.0.1
- 添加自定义域名到白名单
echo 'server=/你需要的域名/223.5.5.5' >>/etc/dnsmasq.d/accelerated-domains.china.223.5.5.5.conf
DDNS动态域名解析
如果家里是公网IP,可以使用DDNS给域名绑定动态ip,no-ip是ddns解析服务,免费赠送域名无需备案,速度还不错,每个月需要点一次邮件续期,官网的ip更新方式在树莓派下更新失败,折腾一段时间后,发现用ddclient可以正常更新,但是注意如果当前状态是pptp开启的情况下,获取到的外网ip可能不是运营商的公网ip,在配置了智能路由的情况下需使用无需PPTP访问的网站获取外网ip设置配置文件1
sudo apt-get install ddclient
/etc/ddclient.conf
1
2
3
4
5
6protocol=noip
use=web, web=获取外网ip的网站
server=dynupdate.no-ip.com
login=用户名(邮箱)
password='密码'
你的域名