我自己实在是受不了国内访问GitHub垃圾速度了,于是就摸了一个脚本。
由于GitHub已经进了名单了,所以下面的服务器不能搭载国外了。
因此我把服务器放在局域网内了,其实用docker更好,只不过docker会修改服务器的内容,要安装些东西,暂时不用这种方式吧。
下面脚本和Windows的ip请使用你自建的服务端内网ip。
学校实验室路由器不允许动,由于我要到处跑,经常修改IP也不现实,因此旁路由(透明代理)也不太合适。
由于我不需要太极限的网速,只要能访问GitHub就行了,就有了下面的方案。还有一个原因是我透明代理一直没搭建成功
自建服务端
准备
我是给局域网内的服务器使用的,所以我在笔记本上开了一个VMware,然后安装Ubuntu20.04。
Ubuntu安装proxychains
apt-get install -y proxychains
修改配置文件/etc/proxychains.conf
最后一行,改成
socks5 127.0.0.1 10808
这里的127.0.0.1
是你局域网开代理的电脑ip
使用方法是:
proxychains apt update
在本机电脑上用v2访问外网,开启socks5代理。
通过以上操作,可以在Ubuntu终端上访问到github,但并不方便。因此还需要安装sniproxy和v2客户端
还可以这样用:
apt-get install screen
proxychains screen
这样新窗口的命令就都走了代理。也方便后文从GitHub进行安装。
记得后面安装完成后再把配置IP修改过来。
还要关闭ufw:
ufw disable
安装smartdns
以解决dns污染,毕竟proxychains不能解决dns污染
先禁用Ubuntu自带的dns缓存服务,systemd-resolved会导致Ubuntu系统下smartdns莫名其妙起不来(其实是因为占用了53端口):
systemctl stop systemd-resolved
systemctl disable systemd-resolved
下载配套安装包smartdns.xxxxxxxx.arm-debian-all.deb
,并上传到Linux系统中。 执行如下命令安装
dpkg -i smartdns.xxxxxxxx.arm-debian-all.deb
x86系统下载配套安装包smartdns.xxxxxxxx.x86_64-linux-all.tar.gz
, 并上传到Linux系统中。 执行如下命令安装
tar zxf smartdns.xxxxxxxx.x86_64-linux-all.tar.gz
cd smartdns
chmod +x ./install
./install -i
修改配置
安装完成后,可配置smartdns的上游服务器信息。具体配置参数参考配置参数说明。
一般情况下,只需要增加server [IP]:port, server-tcp [IP]:port
配置项, 尽可能配置多个上游DNS服务器,包括国内外的服务器。配置参数请查看配置参数章节。
nano /etc/smartdns/smartdns.conf
将下面的内容直接添加到末尾就行了:
server 223.5.5.5
server-tls 8.8.4.4
server-tls 1.0.0.1
server-https https://cloudflare-dns.com/dns-query
server-https https://dns.google.com/query
server-https https://doh.powerdns.org
server-https https://dns.rubyfish.cn/dns-query
server-https https://doh.dns.sb/dns-query
为了稳定性,建议完全禁用ipv6解析:
force-AAAA-SOA yes
启动服务
systemctl enable smartdns
systemctl start smartdns
将DNS请求转发的SmartDNS解析。
启动不起来就查看日志:
cat /var/log/smartdns.log
修改本地路由器的DNS服务器,将DNS服务器配置为SmartDNS。
或者修改系统的dns为127.0.0.1
使用nslookup -querytype=ptr smartdns查询域名
看命令结果中的name项目是否显示为smartdns或主机名,如smartdns则表示生效
pi@raspberrypi:~/code/smartdns_build $ nslookup -querytype=ptr smartdns
Server: 192.168.1.1
Address: 192.168.1.1#53
Non-authoritative answer:
smartdns name = smartdns.
为了兼容v2.0
还需要在/lib/systemd/system/smartdns.service
内的[Service]
下,新增ExecStartPost=/bin/sh -c 'chmod 644 /run/smartdns.pid'
还需要在nano /etc/smartdns/smartdns.conf
内,新增bind-tcp [::]:5353
安装v2 ubuntu客户端
使用fhs-install脚本安装。
导入配置文件,位置是:
/usr/local/etc/v2ooo/config.json
然后就可以使用了。
千万别手动指定dns服务器,尤其是别手动指定你本地的smartdns,本地解析的最优结果毫无卵用还有可能有污染。
加入 SmartDNS 其实主要是用来恶心那些 Up 主 和 小白们的
配置文件可以用v2客户端生成
启动
systemctl start v2ooo
停止
systemctl stop v2ooo
重启
systemctl restart v2ooo
记得把上面的配置文件/etc/proxychains.conf
最后一行IP修改一下。
安装sniproxy
Ubuntu可以直接安装:
apt-get install sniproxy
配置文件位置在/etc/sniproxy.conf
把下面内容覆盖进去:
user daemon
pidfile /var/tmp/sniproxy.pid
error_log {
syslog daemon
priority notice
}
resolver {
nameserver 127.0.0.1
mode ipv4_only
}
listener 0.0.0.0:80 {
proto http
access_log {
filename /var/log/sniproxy/http_access.log
priority notice
}
}
listener 0.0.0.0:443 {
proto tls
access_log {
filename /var/log/sniproxy/https_access.log
priority notice
}
}
table {
.*amazonaws\.com$ *
.*github\.com$ *
.*githubusercontent\.com$ *
.*fastly\.net$ *
.*cnpmjs\.org$ *
.*npmjs\.com$ *
.*cnpmjs\.org$ *
.*nodesource\.com$ *
}
如果服务器在内网,还可以用泛反向代理,指的是所有请求 SNI Proxy 的域名都会反向代理。
echo -e "user daemon
pidfile /var/run/sniproxy.pid
listen 443 {
proto tls
table https_hosts
access_log {
filename /var/log/sniproxy/https_access.log
priority notice
}
}
table https_hosts {
.* *:443
}" > /etc/sniproxy.conf
开机启动
由于需要使用proxychains,因此需要手动创建启动项:
nano /etc/systemd/system/proxy-sni.service
内容是:
[Unit]
Description=proxy-sni
After=network.target
After=v2ooo.service
[Service]
Type=simple
User=root
WorkingDirectory=/home/
ExecStart=proxychains sniproxy -c /etc/sniproxy.conf -f
Restart=on-failure
[Install]
WantedBy=multi-user.target
使用
linux
sudo su
wget -N --no-check-certificate https://ax9advmduxh0.compat.objectstorage.us-phoenix-1.oraclecloud.com/US/%E5%B7%A5%E5%85%B7/%E8%84%9A%E6%9C%AC/auto-hosts.sh -O auto-hosts.sh && chmod +x auto-hosts.sh && bash auto-hosts.sh
windows&mac
192.168.126.134 github-cloud.s3.amazonaws.com
192.168.126.134 github.com
192.168.126.134 raw.githubusercontent.com
192.168.126.134 github.global.ssl.fastly.net
192.168.126.134 assets-cdn.github.com
192.168.126.134 documentcloud.github.com
192.168.126.134 gist.github.com
192.168.126.134 help.github.com
192.168.126.134 nodeload.github.com
192.168.126.134 raw.github.com
192.168.126.134 status.github.com
192.168.126.134 training.github.com
192.168.126.134 www.github.com
192.168.126.134 avatars0.githubusercontent.com
192.168.126.134 avatars1.githubusercontent.com
192.168.126.134 codeload.github.com
192.168.126.134 github-releases.githubusercontent.com
192.168.126.134 registry.cnpmjs.org
192.168.126.134 registry.npmjs.com
192.168.126.134 r.cnpmjs.org
192.168.126.134 rpm.nodesource.com
192.168.126.134 pypi.python.org
192.168.126.134 pypi.org
192.168.126.134 files.pythonhosted.org
检查
测试可以服务器可以访问下载GitHub的文件同时,要查看日志运行情况:
root@ubuntu:/home/ubuntu# systemctl status proxy-sni
● proxy-sni.service - proxy-sni
Loaded: loaded (/etc/systemd/system/proxy-sni.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2021-05-05 05:05:41 CST; 1min 26s ago
Main PID: 779 (sniproxy)
Tasks: 2 (limit: 2280)
Memory: 1.1M
CGroup: /system.slice/proxy-sni.service
├─779 sniproxy -c /etc/sniproxy.conf -f
└─789 sniproxy -c /etc/sniproxy.conf -f
5月 05 05:05:41 ubuntu systemd[1]: Started proxy-sni.
5月 05 05:05:41 ubuntu proxychains[779]: ProxyChains-3.1 (http://proxychains.sf.net)
5月 05 05:07:02 ubuntu proxychains[779]: |S-chain|-<>-127.0.0.1:10808-<><>-13.229.188.59:443-<><>-OK
如果觉得太麻烦了的话,还可以用我的vmware克隆下来的系统。
此处评论已关闭