2019年11月24日,GitHub使用的亚马逊服务器由于绕路日本ntt,而ntt线路的突然崩溃导致大陆无法访问GitHub。因此我搭了个临时的解决方案。
在本机/服务器host文件新增:
158.101.28.72 github.com
158.101.28.72 api.github.com
158.101.28.72 collector.githubapp.com
158.101.28.72 customer-stories-feed.github.com
158.101.28.72 github.githubassets.com
158.101.28.72 github.io
即可,我是完全封包转发GitHub的数据,因此不可能获取您的GitHub数据包内容,请放心使用,谢谢。
我一下子也找不完整GitHub用到的域名,欢迎大家补充
如果你会自建dns服务器那更好,用dns服务器会简单些
使用通配符解析:
github.com
githubusercontent.com
githubassets.com
githubapp.com
github.io
到:158.101.28.72
原理:
github并没有上GFW的名单,只是因为线路故障导致无法访问,因此只需要一个sni proxy搭建的中转服务器即可。
我先用萌咖的dd脚本dd好debian系统。修改完root密码和安装bbr后进行下一步。
apt-get update
apt-get upgrade
apt-get dist-upgrade
apt-get autoremove
apt-get install autotools-dev cdbs debhelper dh-autoreconf dpkg-dev gettext libev-dev libpcre3-dev libudns-dev pkg-config fakeroot devscripts build-essential unzip -y
有一堆的依赖,服务器不好的话就慢慢等吧
开始安装sni proxy
mkdir sniproxy && cd sniproxy
# 新建一个 SNI Proxy文件夹并进入
wget -N --no-check-certificate https://github.com/dlundquist/sniproxy/archive/master.zip
# 下载 SNI Proxy 最新软件包
unzip master.zip && cd sniproxy-master
# 解压 SNI Proxy 软件包并进入解压后的文件夹
./autogen.sh && dpkg-buildpackage
# 开始构建 deb 包
sniproxy_deb=$(ls ..|grep "sniproxy_.*.deb") && echo ${sniproxy_deb}
# 获取构建后的 deb 包的文件名,正常情况下会返回一个类似于 sniproxy_0.X.X_amd64.deb 这样的文件名
[[ ! -z ${sniproxy_deb} ]] && dpkg -i ../${sniproxy_deb}
# 判断获取的文件名是否为空,如果不为空就 安装 deb 包。
最后安装完毕,我们可以用 sniproxy -V
来查看是否安装成功,正常情况下会返回版本号。
自定义规则:
# 清空配置文件
echo "" > /etc/sniproxy.conf
# 导入规则
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
}
table https_hosts {
(.*.|)github.com$ *
(.*.|)githubusercontent.com$ *
(.*.|)githubassets.com$ *
(.*.|)github.io$ *
(.*.|)githubapp.com$ *
}" > /etc/sniproxy.conf
使用命令:
sniproxy start
# 启动SNI Proxy
sniproxy stop
# 停止SNI Proxy
sniproxy restart
# 重启SNI Proxy
sniproxy status
# 查看状态
如果命令不对会导致sni proxy看起来启动成功了但实际上并没有(查看状态没啥用)
查看网络端口的监听情况:
apt-get install net-tools
netstat -lntp
当出现大概如下所示的信息时,代表正常启动并监听端口443,注意最后的sniproxy。
[email protected]:~# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp6 0 0 :::443 :::* LISTEN 11673/sniproxy
如果sniproxy没有监听443端口,除了有其他软件占用443端口以外,还有可能是上面的启动命令错了。并不一定是配置错了
可以自己设置开机自启,由于头图储备用完了以后再写
参考:
一个逗逼