夜深人静,正是容易让人回顾往事的时候。想起来我之前用 Windows Server,其实也不见得都是坏处,比如有时候参加一些水时长的钉钉 / 腾讯会议,还有播放网课,Windows 便发挥了他能运行 exe 程序的本职作用,装好相应的程序放在那里跑就行。而且之前偶尔和朋友开玩笑,我会换到服务器上用服务器的 IP 地址跟朋友回复。也是蛮有意思。

现在换到了 Ubuntu 上,大抵就失去这一乐趣了吧。……才怪啊!作为一个成熟的服务器系统,它还做不到像这样简简单单地转发个流量的事?怎么可能!不如说手段更高明了好吧!哎,于是我突发奇想,既然现在手里有这么一个 Linux 服务器能用,那能不能索性再给自己做一个国内的节点呢?这样理论上只要能装代理程序的设备都可以走我的服务器转发流量了。那就,二话不说上手做起来吧!


创建自签证书

首先是两段命令:


# 创建持久化工作目录并 cd 到该文件夹下 (记得换成你自己的工作目录)
mkdir -p /home/username/hysteria && cd $_

# 生成有效期10年的自签证书 & 设置流量伪装访问bing
openssl req -x509 -nodes -newkey rsa:2048 -keyout server.key -out server.crt -days 3650 -subj "/CN=bing.com"

接着再在该目录下创建并编辑 config.yaml:


nano config.yaml

写入:


listen: :9800

tls:
  cert: /etc/hysteria/server.crt
  key: /etc/hysteria/server.key

auth:
  type: password
  password: "Pwd-1234"    # 设置你自己的密码

masquerade:
  type: proxy
  proxy:
    url: https://bing.com
    rewriteHost: true

保存并退出。


创建 Docker 容器

既然都用 Linux 了,不用容器化管理各个程序实在是可惜了。所以我偏好选择用容器运行。

在工作目录下创建并编辑 docker-compose 文件:


nano docker-compose.yml

我个人喜欢用 nano 编辑器,因为简单、视图明了且操作不那么反人类。如果你用习惯了 vim 之类的编辑器,当然可以根据情况更换这里的命令。

编辑 docker-compose 内容:


services:
  hysteria2:
    image: tobyxdd/hysteria:v2
    container_name: hysteria
    restart: always
    ports:
      - "9800:9800/udp"    # 可根据需要换成自己想用 且未被占用的端口
    volumes:
      - ./config.yaml:/etc/hysteria/config.yaml:ro
      - ./server.crt:/etc/hysteria/server.crt:ro
      - ./server.key:/etc/hysteria/server.key:ro    # 都挂载为只读
    command: ["server", "-c", "/etc/hysteria/config.yaml"]
    environment:
      - TZ=Asia/Shanghai

再执行:


docker compose up -d

这样,我们在服务器上就部署好并对外开放了。记得去你的云服务器提供商的安全组设置看一下有没有放开端口。如果没有的话,按如下设置:

来源 - 0.0.0.0/0 (监听所有 IP 地址)
协议端口 - UDP:9800 (换成你刚才配置的具体端口)

题外话,我原来有段时间不知道为什么脑子轴死活不爱用 docker-compose,想方设法都要敲那 docker run 烂命令,大概是嫌文档冗长吧 ( 现在发现用 yaml 文档部署还挺直观好用的 (


配置客户端本地文件

服务器端配置好了,接下来就来到了我们自己准备要连接代理节点的设备上。


# 本地监听端口
port: 7890
socks-port: 7891
allow-lan: false

mode: global
log-level: info

# 强制关闭 IPv6 (可选,根据你的服务器情况决定)
ipv6: false 

# DNS 劫持与解析
dns:
  enable: true
  listen: 0.0.0.0:1053
  ipv6: false
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  nameserver:
    - 223.5.5.5
    - 114.114.114.114
  fallback:
    - 8.8.8.8
    - 1.1.1.1

# 节点配置列表
proxies:
  - name: "服务器-节点-自定义名称"
    type: hysteria2
    server: "123:45:67:89"    # 服务器IP地址 如果有配置好的域名 换成域名也行
    port: 9800
    password: "Pwd-1234"    # 换成你设置的密码
    sni: bing.com
    skip-cert-verify: true
    alpn:
      - h3

# 策略组配置
proxy-groups:
  - name: "GLOBAL"
    type: select
    proxies:
      - "服务器-节点-自定义名称"

# 路由规则
rules:
  - MATCH, GLOBAL

导入到代理工具里,选择 Local,加载文件,Ping 一下,应该能跑通了。试试发个评论,看看自己的 IP 地址是不是服务器的地址呢~


结语

虽说速度当然还是小水管的速度,肯定不能够是常用的。不过也只是偶尔换换 IP 娱乐一下的性质,就无所谓啦。再加上如果以后买了境外服务器,说不定这些知识还能用上派场呢。毕竟市面上的节点原理上就是这么制作而来的。其实操作起来挺简单的,没想到写成博客还有点费工夫。呼哇哇—— 困了。眠去。

IP 属地: 上海 (并不