Youtube视频


相关链接

官网)

仓库)

服务端安装脚本

# 最新版
bash <(curl -fsSL https://get.hy2.sh/)
# 指定版本
bash <(curl -fsSL https://get.hy2.sh/) --version v2.2.0
# 卸载
bash <(curl -fsSL https://get.hy2.sh/) --remove

服务端配置说明

# 监听端口
listen: :443

# 使用tls自用证书,与acme互斥
tls:
  cert: idev.dev.cer
  key: idev.dev.key

# 使用acme自动申请证书,与tls互斥
acme:
  # 签发证书的域名
  domains:
    - domain1.com
    - domain2.org
  email: your@email.net
  #  letsencrypt 或 zerossl
  ca: zerossl
  # 是否禁止使用http验证
  disableHTTP: false
  # 是否禁止使用tlsapln验证
  disableTLSALPN: false
  # 指定http验证端口
  altHTTPPort: 8080
  # 指定http验证端口
  altTLSALPNPort: 4443
  # 存放acme账号密钥和证书的目录
  dir: my_acme_dir

# 混淆,如果你的网络针对性屏蔽了 QUIC 或 HTTP/3 流量(但允许其他 UDP 流量)
# 需要指定混淆密码,开启混淆将失去HTTP/3伪装
obfs:
  type: salamander
  salamander:
    password: salamanderpassword

# quic参数
quic:
  # 流接收窗口是指数据流能够接收未被处理的数据大小,是用于做流量控制的。如果你的服务器性能比较好,速度和延迟都比较不错,你可以尝试设置更高的值,提高性能。
  # 反之,如果你的服务器性能一般,网络也不好,容易丢包,那最好就别改,甚至可以尝试降低,否则丢包数据包还得重发。
  # 初始化流接收窗口大小
  initStreamReceiveWindow: 8388608
  # 最大流接收窗口大小
  maxStreamReceiveWindow: 8388608

  # 连接接收窗口是指QUIC连接所有数据流接收窗口的总和,可以理解为控制的是整体可以接收的流量大小,而流接收窗口是控制单个数据流。官方建议设置2:5
  # 初始化连接接收窗口
  initConnReceiveWindow: 20971520
  # 最大连接接收窗口
  maxConnReceiveWindow: 20971520
  # 最大空闲超时时间,超时后会关闭连接
  maxIdleTimeout: 30s
  # 最大并发传入流的数量,意思是单个连接最大的数据流数量,简单理解就是多路复用的意思
  maxIncomingStreams: 1024
  # 是否禁用MTU探测,一般情况都不会禁用
  disablePathMTUDiscovery: false

# 带宽限速,设置为0代表不限制,up代表客户端的最大下载速度,down代表客户端最大上传速度
# 最好设置为服务器的最大带宽,不设置或者设置为0则使用BBR
bandwidth:
  up: 1 gbps
  down: 1 gbps

# 是否忽略客户端的带宽设置,会使用BBR拥塞控制算法
ignoreClientBandwidth: false

# 是否禁用UDP转发,禁用后支持TCP转发
disableUDP: false

#UDP空闲超时时间
udpIdleTimeout: 60s

auth:
  # 使用单密码验证
  type: password
  password: Se7RAuFZ8Lzg
  # 使用用户密码验证
  userpass:
    user1: pass1
    user2: pass2
    user3: pass3
  # 使用http验证,客户端尝试连接的时候会发送以下请求到服务端
  # {
  #   "addr": "123.123.123.123:44556", #客户端的IP和端口
  #   "auth": "something_something", # 认证信息
  #   "tx": 123456 # 客户端的下载速率
  # }

  # 服务端必须响应以下数据结果,状态码必须200
  # {
  #   "ok": true, # 是否允许客户端连接
  #   "id": "john_doe" # 客户端ID,用于日志和流量统计API
  # }
  http:
    # 处理验证的URL
    url: http://your.backend.com/auth
    # 是否禁用HTTPS,当设置的URL为https时适用
    insecure: false
  # 处理验证的命令,验证时,将执行以下命令并附带客户端提交的认证参数 addr auth tx
  # 注意,必须将用户ID输出到`stdout`,也就是标准输出,如果运行连接退出代码为0,否则返回非0
  # 例如:
  #  echo "Elden"
  #  exit 0
  command: /etc/some_command

# DNS解析,省略则使用系统DNS
resolver:
  type: udp
  tcp:
    addr: 8.8.8.8:53 
    timeout: 4s 
  udp:
    addr: 8.8.4.4:53 
    timeout: 4s
  tls:
    addr: 1.1.1.1:853
    timeout: 10s
    sni: cloudflare-dns.com
    insecure: false
  https:
    addr: 1.1.1.1:443
    timeout: 10s
    sni: cloudflare-dns.com
    insecure: false

# ACL,访问控制列表
# 语法说明:https://v2.hysteria.network/zh/docs/advanced/ACL/
acl:
  # 自定义文件规则
  file: some.txt
  # 内联规则
  inline:
    - reject(v2ex.com)
    - reject(*.v2ex.com)
    - reject(all, udp/443)
    - reject(geoip:cn)
  # 忽略则自动从https://github.com/Loyalsoldier/v2ray-rules-dat下载,只有当有规则的时候才会下载
  # geoip: geoip.dat 
  # geosite: geosite.dat 


# 出站,目前支持direct,socks5和http
# 内置出站direct,reject,default,default代表没有配置的时候使用direct,如果outbound添加了一个名为direct的outbound则会覆盖内置出站
# 如果不指定ACL,所有连接都会使用第一个出站进行路由,其他会被忽略
outbounds:
    # name用于ACL规则
    # 直连出站
  - name: my_outbound_1
    type: direct
    # 设置直连的规则
    direct:
      # 支持auto、64、46、6、4,auto代表双栈,会同时尝试使用ipv4和ipv6,64代表ipv6优先,46代表ipv4优先,6代表只使用ipv6,4代表只使用ipv4
      mode: auto
      # 绑定的ipv4地址
      bindIPv4: 2.4.6.8
      # 绑定的ipv6地址
      bindIPv6: 0:0:0:0:0:ffff:0204:0608
      # 绑定的网络接口
      bindDevice: eth233
    # socks5代理出站
  - name: my_outbound_2
    type: socks5
    socks5:
      addr: shady.proxy.ru:1080 
      username: hackerman 
      password: Elliot Alderson 
    # http/https代理出站
  - name: my_outbound_3
    type: http
    http:
      url: http://username:password@sketchy-proxy.cc:8081 
      insecure: false 

# 流量统计API
# 流量端点:`GET /traffic`,返回用户的流量信息,`/traffic?clear=1`,增加clear=1参数,返回结果的同时清空统计数据
# 踢下线端点:`POST /kick`,提供["用户名1","用户名2"]数组列表,将用户踢下线,客户端会尝试重连,应当踢下线后服务端屏蔽该用户
trafficStats:
  # API监听的端口
  listen: :9999
  # API访问的密码,设置后需要请求的Authorization头中提供
  secret: some_secret
 
# 伪装,支持proxy反向代理,file文件服务器,string返回固定字符串
masquerade:
  type: proxy
  proxy:
    url: https://github.com/
    rewriteHost: true
  file:
    dir: /www/masq
  string:
    content: hello stupid world
    headers:
      content-type: text/plain
      custom-stuff: ice cream so good
    statusCode: 200
  # 同时提供TCP选项,也就是支持80端口以及443端口通过TCP访问网站,不建议修改为自定义端口
  listenHTTP: :80
  listenHTTPS: :443
  # 是否强制HTTPS
  forceHTTPS: true

服务端配置精选

listen: :443

tls:
  cert: 你的证书文件
  key: 你的秘钥文件

quic:
  initStreamReceiveWindow: 8388608
  maxStreamReceiveWindow: 8388608
  initConnReceiveWindow: 20971520
  maxConnReceiveWindow: 20971520
  maxIdleTimeout: 30s
  maxIncomingStreams: 1024
  disablePathMTUDiscovery: false

bandwidth:
  up: 0 gbps
  down: 0 gbps

ignoreClientBandwidth: false
disableUDP: false
udpIdleTimeout: 60s

auth:
  type: userpass
  userpass:
    elden: 你的密码

resolver:
  type: https
  https:
    addr: 1.1.1.1:443
    timeout: 10s
    sni: cloudflare-dns.com
    insecure: false

acl:
  inline:
    - reject(geoip:cn)

trafficStats:
  listen: :19999
  secret: 你的流量监测密码
 
masquerade:
  type: proxy
  proxy:
    url: https://github.com/
    rewriteHost: true
  listenHTTP: :80
  listenHTTPS: :443
  forceHTTPS: true

客户端配置说明

# 服务器地址,默认443端口
server: idev.dev
# URI形式,已经包含用户名和密码
server: hysteria2://user:pass@idev.dev/
# 认证,URI形式不需要,userpass类型,使用user:password格式
auth: some_password

# tls配置
tls:
  sni: idev.dev
  # 是否允许禁止TLS验证
  insecure: false
  # 证书指纹,通过 openssl x509 -noout -fingerprint -sha256 -in your_cert.crt获取
  pinSHA256: BA:88:45:17:A1...
  # 自定义CA
  ca: custom_ca.crt

# 传输层,目前只有udp
transport:
  type: udp
  udp:
    # 端口跳跃间隔
    hopInterval: 30s

# 混淆,必须与服务端保持一致
obfs:
  type: salamander
  salamander:
    password: cry_me_a_r1ver

# quic参数
quic:
  initStreamReceiveWindow: 8388608
  maxStreamReceiveWindow: 8388608
  initConnReceiveWindow: 20971520
  maxConnReceiveWindow: 20971520
  maxIdleTimeout: 30s
  # 心跳发送间隔,保持与服务端的连接
  keepAlivePeriod: 10s
  disablePathMTUDiscovery: false

# 带宽限制,可以填写你网络环境的最大理论带宽,mbps、gbps,将会采用客户端以及服务端中的最小值,客户端up=服务端down 客户端down=服务端up
bandwidth:
  up: 100 mbps
  down: 200 mbps

# 快速打开,启用时,客户端总是立即接受一个连接,不先与服务器确认目的地是否可达。如果服务器随后返回失败或拒绝连接,客户端将关闭连接。
fastOpen: true

# 启用该选项后,客户端只在有传入连接的时候才会连接到服务器。默认行为是在启动时立即连接到服务器
lazy: true

# 代理模式,必须指定一个
# socks5 代理,支持TCP/UDP
socks5:
  listen: 127.0.0.1:1080 
  username: user 
  password: pass 
  disableUDP: false 

# http/https模式
http:
  listen: 127.0.0.1:8080
  username: king
  password: kong
  # 域验证,让使用http代理服务器的用户输出认证信息
  realm: Elden

# tcp转发
tcpForwarding:
    # 客户端监听的地址端口
  - listen: 127.0.0.1:6600
    # 通过服务端访问的地址和端口,可以穿透到服务器的内网环境
    remote: 127.0.0.1:6600
  - listen: 127.0.0.1:6601
    remote: other.machine.internal:6601

# udp转发
udpForwarding:
  - listen: 127.0.0.1:5300
    remote: 127.0.0.1:5300
    timeout: 20s
  - listen: 127.0.0.1:5301
    remote: other.machine.internal:5301
    timeout: 20s

客户端配置精选

server: hysteria2://你的用户名:你的密码@你的域名或者IP

tls:
  sni: 你的域名
  insecure: false

transport:
  type: udp
  udp:
    hopInterval: 30s

quic:
  initStreamReceiveWindow: 8388608
  maxStreamReceiveWindow: 8388608
  initConnReceiveWindow: 20971520
  maxConnReceiveWindow: 20971520
  maxIdleTimeout: 30s
  keepAlivePeriod: 10s
  disablePathMTUDiscovery: false

bandwidth:
  up: 1000 mbps
  down: 1000 mbps

fastOpen: true
lazy: false

socks5:
  listen: 127.0.0.1:1080 
  username: elden 
  password: elden 
  disableUDP: false 

http:
  listen: 127.0.0.1:1081
  username: elden
  password: 123456

端口跳跃

服务端配置

配置端口转发,以下将的端口的UDP转发到443端口
# IPv4
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 20000:50000 -j DNAT --to-destination :443
# IPv6
ip6tables -t nat -A PREROUTING -i eth0 -p udp --dport 20000:50000 -j DNAT --to-destination :443

客户端配置

# 指定可跳跃的端口
server: idev.dev:1234,5678,9012 
server: idev.dev:20000-50000 
server: idev.dev:1234,5000-6000,7044,8000-9000 

# 配置端口跳跃的间隔
transport:
  udp:
    hopInterval: 30s 
如果觉得我的文章对你有用,请随意赞赏