sish高级功能指南:自定义域名、负载均衡与安全配置
前言
sish是一个功能强大的SSH隧道服务工具,它允许用户通过SSH协议安全地暴露本地服务到公网。本文将深入探讨sish的高级功能配置,帮助用户更好地定制和使用这一工具。
自定义子域名配置
默认情况下,sish会为每个连接分配随机子域名。但用户可以通过以下方式指定自己的子域名:
- 首先确保服务端配置中
--bind-random-subdomains
参数设置为false
- 在SSH连接命令中,在远程端口说明符前添加自定义子域名
示例命令:
ssh -p 2222 -R foo:80:localhost:8080 tuns.sh
此命令会尝试将"foo"作为子域名分配给连接。如果该子域名未被占用,就会被成功分配。
WebSocket支持详解
sish对WebSocket协议提供了原生支持:
- HTTP流量代理:使用端口80作为远程端口
- HTTPS流量代理:使用端口443作为远程端口
- 其他端口:仅支持TCP连接,且需确保端口可用
这种设计使得sish可以无缝支持Web应用和传统TCP服务的混合部署场景。
IP与地理位置访问控制
IP白名单配置
通过--whitelisted-ips
参数可以设置CIDR格式的IP范围白名单:
- 支持多个范围,用逗号分隔
- 单个IP可使用
/32
掩码 - 示例:"192.30.252.0/22,185.199.108.0/22"
国家/地区白名单
使用--whitelisted-countries
参数可限制特定国家的访问:
- 需要同时启用
--geodb=true
- 国家代码使用ISO格式
- 多国家用逗号分隔
- 示例:"pt,us"表示允许葡萄牙和美国
自定义域名高级配置
基础验证流程
-
DNS记录设置:
- CNAME/A记录:指向sish服务的主域名或IP
- TXT记录:
_sish.customdomain
,包含SSH密钥指纹
-
密钥指纹获取:
ssh-keygen -lf ~/.ssh/id_rsa | awk '{print $2}'
高级信任模式
对于可信环境,可以放宽域名验证限制:
-
完全开放模式:
- 设置
--bind-any-host=true
- 允许任意域名/子域名组合
- 设置
-
限定域名模式:
- 使用
--bind-hosts
参数 - 指定允许的域名列表,逗号分隔
- 使用
SSL证书管理
- 通过
--https-certificate-directory
指定证书目录 - 证书文件命名规则:
- 证书:
name.crt
- 私钥:
name.key
- 证书:
- 支持多证书自动加载
负载均衡功能详解
sish支持三种负载均衡模式,需在启动时启用相应参数:
- HTTP负载均衡:
--http-load-balancer
- TCP负载均衡:
--tcp-load-balancer
- 别名负载均衡:
--alias-load-balancer
典型应用场景
假设有多台边缘设备(如树莓派)运行相同服务:
- 各设备使用相同转发配置连接sish
- sish自动均衡分配到所有可用节点
- 新节点加入/离开时自动调整
客户端IP获取与安全
标准转发头信息
sish自动添加以下HTTP头信息:
X-Forwarded-For
:客户端原始IP及代理链X-Forwarded-Host
:原始Host头X-Forwarded-Proto
:原始协议(http/https)X-Forwarded-Port
:原始端口
安全注意事项
-
IP获取建议:
- 从
X-Forwarded-For
最右侧值获取真实客户端IP - 不要信任
X-Real-Ip
头
- 从
-
安全风险:
- 转发头可能被伪造
- 建议结合其他验证机制
结语
通过合理配置sish的高级功能,用户可以构建灵活、安全且高性能的隧道服务。无论是个人开发者还是企业用户,都能根据实际需求找到合适的配置方案。建议在生产环境中充分测试各项功能,并遵循最小权限原则进行安全配置。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考