IP及端口检测
检测购买的vps IP是否被墙
检测IP是否被墙:站长工具或者使用ping命令。延迟太大的IP(400+ms)建议还是换一个。
检测端口在国内是否开放:在线检测域名或者ip的端口是否开放 。搭建完后可以再检查下配置的端口是否在国内开放。其他检测网址:IP可用性检测工具
检测端口在国外是否开放:you get signal 。这个其实没什么必要。
搭建ss
首先你需要一台服务器,以便在服务器上搭建ss。可以在vultr上购买一个vps,也可以在其他供应商购买。下面是基于vultr的vps搭建ss,用于Mac端fq.
在正式配置vps之前,务必先确保vps的IP及端口22没有被墙.否则下面的操作白搭.因为首先你得在墙内能够访问你的vps.
目前有两种方式搭建ss,一种是基于C的shadowsocks-libev(以下简称c-ss),一种是基于Python的Shadowsocks-Python(以下简称p-ss)。
基于C的shadowsocks-libev:(推荐)
基于Python的shadowsocks-server,目前已经不再维护,因此很容易就被q。这个是基于C的。
注意:以下安装是在centos7上的,不是这个系统或版本的不建议尝试,肯定会有不兼容的地方。另外安装的库的版本最好也别随意升级,否则也会出各种兼容问题,很浪费时间。当然如果你是高手爱折腾可以试试装在centos9上或者升级安装库版本啥的。
主要参考:
安装并配置shadowsocks-libev(yum源方式) 没了
搞懂SSR(3):Centos 7安装配置shadowsocks-libev记录—非一键脚本
步骤:
- 安装常用工具
- 安装编译工具gcc
- 安装加密库libsodium
- 安装tls库mbedtls
- 安装混淆插件 simple-obfs
- 安装ss (采用的是编译源码的安装方式,和其他地方的安装方式不一样)
- 创建账号配置文件
- 开放防火墙端口
- 开启服务
- 加速优化bbr
ps:有这么多步骤是因为采用的是源码编译安装的方式。
具体如下:
1.安装常用工具
1 | yum install git wget vim -y |
这里安装了git,wget,vim。
2.安装编译工具gcc
1 | yum install epel-release gcc gettext autoconf libtool automake make asciidoc xmlto c-ares-devel libev-devel pcre-devel -y |
ps:上面是一行命令。安装了很多个软件包。
3.安装加密库libsodium
1 | export LIBSODIUM_VER=1.0.17 |
4.安装mbedtls
1 | wget https://github.com/Mbed-TLS/mbedtls/archive/refs/tags/mbedtls-2.6.0.tar.gz |
ps:mbedtls的版本不要下最新的,否则编译的时候会报错:“错误:只允许在 C99 模式下使用‘for’循环初始化声明”。有时候解决了这里但后面安装ss的时候sudo make install一直报错。除非你有填坑的能力,否则建议还是使用2.6.0版本的。
ps:填坑网上教程。以下是网上过时的命令
1 | export MBEDTLS_VER=2.6.0 |
这一步wget https://tls.mbed.org/download/mbedtls-$MBEDTLS_VER-gpl.tgz
1 | [ ] |
下载地址无效了,导致下载的其实是一个网页。后面解压缩自然失败。找了一圈资料,看到一个备用下载地址:
1 | https://down.24kplus.com/linux/mbedtls/mbedtls-2.16.3-gpl.tgz |
结果发现现在备用地址也不行了,建议直接去github上下载,Mbed-TLS .
5.安装混淆插件
首先安装编译必须的软件
1 | yum install zlib-devel openssl-devel -y |
安装 simple-obfs
1 | git clone https://github.com/shadowsocks/simple-obfs.git |
6.安装ss
下载源码:
1 | git clone https://github.com/shadowsocks/shadowsocks-libev.git |
编译源码并安装:
1 | cd shadowsocks-libev //确保是在 ss 目录中执行编译。已经在了就不用管 |
ps:sudo make install 提示。
1 | [root@centos7-5 shadowsocks-libev]# sudo make install |
mbedtls版本不对,用了最新版的v3.2.1,换回2.6.0就没问题了,这里搞了一天。
7.创建账号配置文件
1 | mkdir -p /etc/shadowsocks-libev |
输入:
1 | { |
该替换的替换。这里是多端口的配置。
注意:上面包含了 simple-obfs 混淆插件,如果没有安装该插件,请去掉最后两行。
8.开放防火墙端口
1 | firewall-cmd --permanent --zone=public --add-port=xxx/udp |
xxx为端口号,请替换为你的实际端口。
9.开启服务
通过使用创建好的配置文件来启动
单个端口号配置:
1 | nohup ss-server -c /etc/shadowsocks-libev/config.json & |
多个端口号配置:(上面配的是多端口,这里使用下面的命令)
1 | nohup ss-manager -c /etc/shadowsocks-libev/config.json & |
注意:这里并没有设置开机自启动,因此如果重启了服务器那么必须要重新启动ss服务。
c-ss多端口配置
上面看到采用源码的安装方式可以支持多端口的配置文件。
如果使用的是别人封装的脚本安装可能不支持多端口,这时可以创建多个配置文件达到多端口的效果。这里网上也有很多教程。
坑
坑1:shadowsocks-libev的配置文件的server被我写成了127.0.0.1结果翻不了墙,外部检测端口的结果是关闭的。
正确如下,设置为0.0.0.0即可:
1 | { |
坑2:有时候搭建完成了,ip端口也都没被q,但是就是打不开Google,或者非常慢。不太清楚什么情况。
感觉可能是shadowsocks客户端有问题,重启电脑后,可以打开Google了。还遇到一个奇葩问题,配置完后可以打开Google,但是开启bbr后就完全翻不了墙。所以现在暂时先不开起bbr了。用了一段时间后发现还是不行了,ip和端口也都没被封,不知道什么原因了。
防火墙
查看开启的端口:
firewall-cmd --list-ports
开启特定端口:
1 | firewall-cmd --permanent --zone=public --add-port=4500/udp |
对应的删除特定端口:
1 | firewall-cmd --permanent --zone=public --remove-port=4500/udp |
使端口生效: firewall-cmd --reload
查看防火墙状态:firewall-cmd --state
启动防火墙: systemctl start firewalld.service
重启防火墙: systemctl restart firewalld.service
如果提示:
Failed to start firewalld.service: Unit is masked.
这是由于firewalld服务被锁定了.
取消firewalld的锁定: systemctl unmask firewalld
.
重新锁定firewalld时执行命令: systemctl mask firewalld
参考:
BBR加速
CentOS7安装新版内核和开启BBR加速教程_BBR2一键包
步骤:
1.升级服务器内核版本
2.安装BBR
具体如下:
1.升级服务器内核版本
1.1首先是查看当前服务器的内核版本。
1 | uname -sr |
BBR内核要求是4.9+,通常来说你通过上面这个命令出来的内核版本是在3.几。比如:
1 | Linux 3.10.0-1160.71.1.el7.x86_64 |
1.2 升级
直接参考上面的链接,很详细。
2.安装BBR
要在新安装好的CentOS7上面启用新内核,只需要复制下面的代码执行就可以了。
1 | echo 'net.core.default_qdisc=fq' | sudo tee -a /etc/sysctl.conf |
然后输入下面的命令查看是否开启BBR成功
1 | sudo sysctl net.ipv4.tcp_available_congestion_control |
成功的话应该是下面这种输出
1 | net.ipv4.tcp_available_congestion_control = reno cubic bbr |
iPhone翻墙
手机翻墙有两种方式:
通过在设置app里添加配置文件。这个比较复杂,这里就不介绍了。
安装专门的app,在app里填之前的配置信息,这个最简单。(推荐使用)
下面是第一种方式:
搭建IPsec/L2TP VPN
CentOS快速搭建一个属于自己的IPsec/L2TP VPN
第二种方式:
下载APP:potatso lite,需要登录美区账号下载。下载后填写配置信息即可。
基于Python的Shadowsocks-Python(不推荐,容易被封端口)
使用vultr(vps)搭建ss并开启BBR快速上网教程 超简单10分钟搞定
从零开始于Vultr上搭建属于自己的VPN服务器【CentOS7+Shadowsocks+serverspeeder加速+防坑指北】【适合新手】
p-ss多端口配置
默认情况下只会有一个端口。
多端口格式:
1 | { |
最后要记得重启下shadowsocks:service shadowsocks restart
相关命令:
启动:service shadowsocks start
停止:service shadowsocks stop
重启:service shadowsocks restart
状态:service shadowsocks status
如果你的vps开启了防火墙,则还需要开启特定端口.否则可能连接不上.开启防火墙端口移步防火墙部分。
p-ss的代理端口被墙解决
解决办法:登录ssh root@<ip>
,更换SS服务端口.
编辑ShadowSocks配置文件:vi /etc/shadowsocks.json
。修改端口,保存。
重启服务:ssserver -c /etc/shadowsocks.json -d restart
别忘了如果你的vps开启了防火墙,则还需要在防火墙中开启上述端口.
参考:
服务器IP能Ping通,SSH能连接,代理却连不上的说明与解决
坑
坑1: ssh root@<ip>
登录不上
登录不上的原因有很多。可以分别尝试下面的解决办法:
1.使用vps服务商自身提供的网页版终端登录一次,激活22端口。
2.可能是重新购买的vps和上一次的IP相同导致.需要将本地 /.ssh/known_hosts
之前的那一条记录删除掉.重启终端.
坑2:按照网上的教程步骤总是失败提示[Error] libsodium-1.0.17 install failed
发现是网上的脚本不支持centOS8,而购买vps时默认是centOS8,所以在购买时需要手动选择为centOS7.最好的办法是研究一下脚本内容,自己整.
因此,在按照教程步骤前,一定要看清楚,操作系统的版本是不是一致,否则可能会导致各种适配问题。
疑问
1. 如何查看端口在被哪个程序or进程使用?
检查端口被哪个进程占用:netstat -lnp|grep 80 #80端口,自行更换;如:8888
,打印如下:
1 | tcp 0 0 0.0.0.0:18388 0.0.0.0:* LISTEN 982/python |
安装:
1 | yum install net-tools |
2. firewall的—add-port命令是不是真的开启了一个端口?
3. 服务器开启一个端口但不绑定任何应用外部能访问到吗?
使用 firewall-cmd --zone=public --add-port=4500/udp --permanent
添加了一个端口,但外部检测却是关闭什么原因?
一个端口开启后但不绑定任何应用程序,那么对于外部来说这个端口依然是关闭的,因为检测肯定是依据某个协议来检测的,如果端口没有绑定任何应用,那自然就不会有任何回应,因此对于外部来说这个端口等同于关闭,虽然内部查看该端口其实是开启的。—个人猜测,可能是完全错误的。
4. 0.0.0.0 和 127.0.0.1的区别
彻底明白ip地址,区分localhost、127.0.0.1和0.0.0.0