以前自己曾经用几个VPS建过基于Shadowsocks的线路用来翻墙,因为IP或者端口经常被封搞得苦不堪言。于是转投机场,稳定了很久,但兜兜转转了几年,最近的形势让我还是决定搞一个备用线路。
以下步骤基于Debian
1、安装x3-ui面板
bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)
询问是否自定义端口的时候建议自定义一个高一些的端口号比如34567
之后会询问是基于域名还是IP来加密面板入口,这里可以根据自己需要选择,不输入的话默认是基于IP(可以在面板控制里切换)
记下输出的登录信息
等待安装完毕
2、安装防火墙并打开对应端口
apt install ufw
定义默认规则拦截所有入站端口
ufw default deny incoming
定义默认规则放行所有出站端口
ufw default allow outgoing
打开必要端口
ufw allow 2096 #默认订阅端口号
ufw allow 34567 #面板端口号
ufw allow 443 #SSL端口
ufw allow 22 #SSH端口
开启防火墙
ufw enable
2、登录面板
先填写入站信息,协议选择vless,端口443,其他默认,安全选择reality,目标那里填写一个和你VPS IP相近的符合条件的域名及端口号,比如www.lovelive-anime.jp:443,之后点击扫描会看到是否可用,可用的话会是全绿结果
点击下面获取新证书,点击创建
再填写客户端,关联入站那里点击全选,凭据页面下方的Flow选择xtls-rprx-vision,点击创建
在客户端操作菜单里点击二维码或者叹号即可获取订阅信息
以上一套下来即可拥有一个目前最不易被GFW嗅探到的翻墙线路,其他几点需要注意的有:
面板设置-订阅设置中,建议把默认的URI路径/sub/更改为其他的地址,比如/2E3kjw8Tm/以用来减少被扫描的几率,打开Clash/Mihomo订阅开关增加订阅的兼容性。
入站信息的安全选项卡里填写的目标地址可以从这里github下载工具,替换1.1.1.1为你VPS的地址,扫描1、2分钟,然后从结果中选取合适的网站地址就可以了,比填写google这种知名大厂的地址从行为上看会更合理
.\RealiTLScanner-windows-64.exe -addr 1.1.1.1 -port 443 -thread 100
开启BBR脚本(1g内存):
sudo bash -c 'cat > /etc/sysctl.d/99-bbr-lowmem.conf << EOF
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
# 让 HTTP/2 优先级和视频流更及时
net.ipv4.tcp_notsent_lowat = 16384
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_slow_start_after_idle = 0
# 缓冲区设置(12MB)
net.core.rmem_max = 12582912
net.core.wmem_max = 12582912
net.ipv4.tcp_rmem = 4096 131072 12582912
net.ipv4.tcp_wmem = 4096 65536 12582912
EOF'
# 加载模块(如果存在)
sudo modprobe tcp_bbr 2>/dev/null
# 应用配置
sudo sysctl --system
查看流媒体解锁情况
bash <(curl -L -s check.unlock.media) -M 4
或
bash <(curl -sL https://run.NodeQuality.com)
测试 VPS 带宽上限(安装iperf3)
apt update && sudo apt install iperf3 -y
从 iperf3serverlist.net中找当前可用的公共服务器
或者本地安装服务后直接测本地IP
iperf3 -c xxx.xxx.xx.xxx -p 5201 -t 10 -P 4 -R
其他安装措施:
防止WebRTC泄露
Chrome去安装官方插件WebRTC Network Limiter
Edge安装对应插件比如WebRTC Control、
防止DNS泄露
Windows版ClashVerge
必须开tun模式,在订阅中扩展覆写配置中粘贴下面内容:
dns:
enable: true
ipv6: false
enhanced-mode: fake-ip
fake-ip-range: 198.18.0.1/16
listen: 0.0.0.0:1053
respect-rules: true
use-system-hosts: false
default-nameserver:
- 223.5.5.5
- 119.29.29.29
nameserver:
- https://dns.cloudflare.com/dns-query
- https://dns.google/dns-query
- https://1.1.1.1/dns-query
fallback:
- https://dns.google/dns-query
- tls://8.8.8.8:853
- https://1.0.0.1/dns-query
fallback-filter:
geoip: true
geoip-code: CN
ipcidr:
- 240.0.0.0/4
proxy-server-nameserver:
- 223.5.5.5
- 119.29.29.29
nameserver-policy:
'geosite:cn,private':
- https://doh.pub/dns-query
- https://dns.alidns.com/dns-query
'+.apple.com':
- https://doh.pub/dns-query
- https://dns.alidns.com/dns-query
'+.weixin.qq.com':
- https://doh.pub/dns-query
- https://dns.alidns.com/dns-query
'vod.hdmc.fun':
- 223.5.5.5
'+.stash.ws':
- https://doh.pub/dns-query
fake-ip-filter:
- '*.lan'
- '*.local'
- '*.localdomain'
- 'localhost.ptlogin2.qq.com'
- '+.apple.com'
- '+.weixin.qq.com'
- '+.msftconnecttest.com'
- '+.msftncsi.com'
tun:
enable: true
stack: mixed
dns-hijack:
- any:53
- tcp://any:53
auto-route: true
auto-detect-interface: true
strict-route: true
iOS:Shadowrocket,开全局或者在做好以下配置后选择“配置”
首页下面第二个“配置”,选中对应的.conf,点右边蓝色叹号-最上面“通用”
勾选私有IP应答,蓝了就对了
删除下面DNS覆写内的所有内容,增加以下两条
https://1.1.1.1/dns-query
https://dns.google/dns-query
长按配置,[General] 部分更改为以下内容:
[General]
yaml = true
bypass-system = true
udp-policy-not-supported-behaviour = REJECT
skip-proxy = 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12, localhost, *.local, captive.apple.com
tun-excluded-routes = 239.255.255.250/32
dns-server = https://1.1.1.1/dns-query, https://dns.google/dns-query
private-ip-answer = true
ipv6 = false
dns-direct-system = false
dns-fallback-system = false
always-real-ip = *.lan, localhost, *.local, captive.apple.com, time.apple.com, time.windows.com, time.nist.gov
wifi中的DNS设置为
8.8.8.8
iOS:Stash:很遗憾,clash系只有开全局才能完全避免DNS泄露
未完成内容:
蜂窝网络下安装描述文件没有成功
蜂窝网络下安装描述文件没有成功
VPS安全措施:更改SSH默认端口启用密钥登录并禁止密码登录
第一步:用PuTTYgen生成密钥
打开PuTTYgen
在界面下方Parameters部分:
选择Ed25519
点击Generate,然后不停移动鼠标,直到进度条走完
生成完成后:
在Key comment里可以写vps-xxyyzz(可选)。
Key passphrase 以留空(设置密码等于登录时需要密码及密钥双重认证)
点击Save private key,把私钥保存到一个安全的地方
复制公钥:
在PuTTYgen上方大文本框里(Public key for pasting into OpenSSH authorized_keys file),用鼠标全选并复制整段内容(以 ssh-ed25519 或 ssh-rsa 开头)
第二步:把公钥上传到服务器
使用PuTTY通过用户名和密码登录服务器,复制粘贴下面命令
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "这里粘贴刚才从PuTTYgen复制的完整公钥" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
exit
回车后PuTTY会自动退出
第三步:修改服务器SSH配置
重新打开PuTTY,左侧列表中Connection → SSH → Auth → Credentials,加载刚才保存的私钥
登录服务器,此时依然需要输入用户名和密码
复制粘贴下面命令
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date +%F)
nano /etc/ssh/sshd_config
找到配置中这些行,更改和下面一致
Port 34567 #可选,更改默认22的SSH端口(建议用10000以上)
PubkeyAuthentication yes #开启密钥登录
PasswordAuthentication no #禁止密码登录
PermitRootLogin prohibit-password #root用户必须用密钥登录
ChallengeResponseAuthentication no #关闭所有挑战应答式认证方式
UsePAM no #SSH登录时不再使用PAM参与认证
修改完后:
Ctrl + O → 回车保存
Ctrl + X 退出
第四步:开放新端口
复制粘贴下面命令
ufw allow 34567 #放行更改后的SSH端口
ufw reload #重新加载防火墙
第五步:重启 SSH 服务
复制粘贴下面命令
systemctl restart sshd || service ssh restart
执行后,原来的端口密码登录已经失效
以后就可以用新端口+密钥登录了
第六步:收尾
复制粘贴下面命令
ufw delete allow 22
ufw reload
ufw status
删掉暴露的22端口
配置Faile2ban
通过X-UI命令可以看到已经默认安装了fail2ban,默认配置是
SSH防护:10分钟内5次失败后封禁10分钟
面板防护:32秒内1次失败封禁30分钟
修改SSH防护需要打开文件
sudo nano /etc/fail2ban/jail.d/defaults-debian.conf
更改[sshd]下面对应的时间
[sshd]
enabled = true
maxretry = 5
findtime = 600
bantime = 600
修改面板防护需要打开文件
sudo nano /etc/fail2ban/jail.d/3x-ipl.conf
更改[3x-ipl]下面对应的时间
[3x-ipl]
enabled = true
maxretry = 1
findtime = 32
bantime = 1800
更改保存后重新加载
sudo fail2ban-client reload
验证结果
# 验证 sshd
sudo fail2ban-client get sshd maxretry
sudo fail2ban-client get sshd findtime
sudo fail2ban-client get sshd bantime
# 验证 3x-ipl
sudo fail2ban-client get 3x-ipl maxretry
sudo fail2ban-client get 3x-ipl findtime
sudo fail2ban-client get 3x-ipl bantime
添加主面板IP为白名单
编辑配置文件
nano /etc/fail2ban/jail.local
复制粘贴下面内容
[DEFAULT]
ignoreip = 127.0.0.1/8 ::1 123.123.123.123 #你的主面板IP
[sshd]
enabled = true
[3x-ipl]
enabled = true
重启 fail2ban 让配置生效
systemctl restart fail2ban
验证是否生效
fail2ban-client get sshd ignoreip
fail2ban-client get 3x-ipl ignoreip
其他VPS全新安装步骤:
更新软件源并安装
sudo apt update
sudo apt install fail2ban -y
启动并设置开机自启
sudo systemctl enable --now fail2ban
检查是否运行正常
sudo systemctl status fail2ban
快速设置自定义配置
# 创建 sshd 配置
sudo tee /etc/fail2ban/jail.d/defaults-debian.conf > /dev/null <<EOF
[sshd]
enabled = true
maxretry = 2
findtime = 300
bantime = 48h
EOF
# 重新加载
sudo fail2ban-client reload