以前自己曾经用几个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
最后修改:2026 年 08 月 06 日
如果觉得我的文章对你有用,请随意赞赏