github因ntt线路崩溃而无法访问的解决方法

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数据包内容,请放心使用,谢谢。

由于该服务器是在美国的服务器,并且也是163线路,挺垃圾的,只能应急使用,如果ntt修好了请自行更换host。
我一下子也找不完整GitHub用到的域名,欢迎大家补充

我没有监听80端口,请自行增加https前缀

如果你会自建dns服务器那更好,用dns服务器会简单些
使用通配符解析:

github.com
githubusercontent.com
githubassets.com
githubapp.com
github.io

到:158.101.28.72


原理:
github并没有上GFW的名单,只是因为线路故障导致无法访问,因此只需要一个sni proxy搭建的中转服务器即可。

由于sni proxy很容易出问题并且还没日志,使用dd后的系统安装

我先用萌咖的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

我就记得GitHub用了这四个域名,如果还有欢迎补充

下面是最容易出问题的地方

使用命令:

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端口以外,还有可能是上面的启动命令错了。并不一定是配置错了

除了之前安装bbr以外,不用优化什么的,没啥用

可以自己设置开机自启,由于头图储备用完了以后再写


参考:
一个逗逼

最后修改:2019 年 11 月 27 日 10 : 12 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论