OPNsense配置Hysteria教程

Hysteria 是一个功能丰富的,专为恶劣网络环境进行优化的网络工具(双边加速),比如卫星网络、拥挤的公共 Wi-Fi、连接外围服务器等。 基于修改版的 QUIC 协议。新版本支持在FreeBSD系统上进行部署,并支持以下代理形式:

  • SOCKS5 代理 (TCP & UDP)
  • HTTP/HTTPS 代理
  • TCP/UDP 转发
  • TCP/UDP TPROXY 透明代理 (Linux)
  • TCP REDIRECT 透明代理 (Linux)
  • TUN (Windows 下为 TAP)

接下来介绍在OPNsense22.7.6上配置Hysteria,并使用tun接口进行策略路由的方法。为防止DNS污染,使用mosdns解析域名。

一、服务器配置

以运行Ubuntu 20.04 LTS系统为例,服务器端的配置如下:

1、创建并进入Hysteria程序存放的文件夹

mkdir hy 
cd hy

2、下载Hysteria

注意:请到官方更新下载地址。也可以用Winscp等工具上传到指定目录。

wget https://github.com/HyNetwork/hysteria/releases/download/v1.3.0/hysteria-linux-amd64

3、设置执行权限

chmod 755 hysteria-linux-amd64

4、生成私钥

openssl ecparam -genkey -name prime256v1 -out ca.key

5、生成证书:

openssl req -new -x509 -days 36500 -key ca.key -out ca.crt -subj "/CN=bing.com"

6、转发端口范围到指定监听端口9999

从1.3.0 版本开始,Hysteria 加入了多端口/端口范围地址的支持,客户端可以在指定端口范围内自动跳跃,解决了长时间单端口UDP连接容易被运营商封锁/QoS的问题。

# IPv4

iptables -t nat -A PREROUTING -i eth0 -p udp --dport 20000:50000 -j DNAT --to-destination :9999

#IPv6

ip6tables -t nat -A PREROUTING -i eth0 -p udp --dport 20000:50000 -j DNAT --to-destination :9999

如果提示命令出错,那说明系统没有安装iptables。使用以下命令进行安装iptables。

apt update 
apt install iptables

7、服务端配置

用vi编辑工具在当前目录新建一个config.json配置文件,代码如下:

注意,从1.这里的端口可以自定义,建议使用不常见的端口号。

{ 
"listen": ":9999", 
"cert": "/root/hy/ca.crt", 
"key": "/root/hy/ca.key", 
"obfs": "password" 
}

8、开放端口访问:

通过apt软件管理器安装UFW。

apt update 
apt install ufw

执行以下命令,开放访问端口:

ufw allow 9999/udp

9、运行服务端

nohup ./hysteria-linux-amd64 server > hysteria.log 2>&1 &

提示:也可以使用一键脚本来安装,该脚本可以自动生成Clash.Meta、v2rayN的配置文件,单击这里观看配置视频。

二、mosdns配置

1、创建Workers

注册cloudflare账号并登陆,点最左边的Workers(不需要域名),创建服务,名称dns1,点快速编辑,进入编辑模式,全选删除所有内容,粘贴附件worker-dns1中的代码。

继续创建服务,名称dns2,点快速编辑,粘贴附件worker-dns2中的代码。

2、修改配置文件

回到wokers,记录两个workers的域名。修改附件dns文件夹下的config.yaml文件,替换120行和122行对应域名。

三、OPNsense配置

1、禁用OPNsense的DNS解析

由于使用mosdns进行解析,所以必须禁用防火墙的DNS解析功能。

禁用DNSMASQ DNS。

禁用UNBOUND DNS。

2、上传文件

使用finalshell软件连接pfSense,下载最新版的基于FreeBSD系统的hysteria和mosdns程序,替换本文后面附件中的对应文件。将dns和vpn文件夹上传到/root目录,并赋予程序执行权限。

chmod +x /root/dns/mosdns chmod +x /root/vpn/vpn

3、运行客户端

启动hysteria客户端。

nohup /root/vpn/vpn -c /root/vpn/vpn1.json

注意:配置文件vpn.json必须包含tun接口名称。从1.30版本开始,支持多端口跳跃,服务器端口可以填写一个指定范围,如下所示:

{ 
"server": "xxx.xxx.xxx.xxx:20000-50000", 
"protocol": "udp", 
"obfs": "password", 
"up_mbps": 500, 
"down_mbps": 1000, 
"insecure": true, 
"tun": { 
"name": "tun_vpn1", 
"timeout": 300,
"mtu": 1500, 
}, 
}

4、添加tun接口

导航到接口>分配,添加tun接口并分配IP,IP地址不能与LAN接口网络冲突。该接口不需要添加防火墙规则。

接口分配一个静态IP地址:

5、添加接口网关

导航到系统>网关,在该VPN1接口上添加网关,网关地址不能与接口地址相同。选中禁用网关监控。

6、添加GeoIP别名

根据官方使用说明,需要先注册一个GeoLite2帐号,登录后,点击左侧的管理许可证密钥,生成一个新的API密钥。

用生成的注册码,替换下面地址有删除线的部分:

https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-Country-CSV&license_key=My_License_key&suffix=zip

将修改后的地址填入防火墙>别名>Geoip设置的网址栏,点击应用。

下载完成后,回到防火墙>别名,添加一个Geoip地址别名,内容选中国。

7、设置策略路由

在防火墙的lan接口,设置三条规则,第一条,放行DNS所使用的默认端口,走默认网关。第二条,访问国内地址走默认网关,目标选前面添加的别名。第三条,其他地址走代理网关,高级选项里的网关选VPN1。

注意,为了避免环回环,对VPS的访问要走本地网关;如果配置了Zerotier或Tailscale,也需要将远程局域网设置为走本地网关,不走VPN出站。

8、运行MOSDNS

打开另一个shell窗口,运行以下命令启动mosdns。客户端网关、DNS设置为防火墙的LAN接口地址,测试网络访问情况。

/root/dns/mosdns start -c /root/dns/config.yaml -d /root/dns/

9、添加开机启动项

根据官方说明,可以在/usr/local/etc/rc.syshook.d/start目录下添加启动脚本,也可以直接在/usr/local/etc/rc.syshook.d/start/20-freebsd文件中添加脚本:

# run mosdns 
ping -c 3 127.1 
nohup /root/dns/mosdns start -c /root/dns/config.yaml -d /root/dns/ >/dev/null 2>&1 & 
# run hysteria 
ping -c 4 127.1 
nohup /root/vpn/vpn -c /root/vpn/vpn1.json > /dev/null 2>&1 & 
ping -c 5 127.1 
ifconfig tun_vpn1 10.0.0.1 netmask 0xffffffff

10、重启防火墙

重启防火墙,检查脚本运行是否正常。

11、测试

重启后检查各项配置是否正常,客户端测试网络访问是否正常。

12、已知问题

由于使用的大陆白名单,所有的国外地址全部走VPS出站,下载国外资源时,受VPS带宽的限制,下载的速度会受到影响。解决办法是使用国外黑名单来排除,即黑名单地址才走国外VPS出站,但目前没找到黑名单对应的IP地址更新列表,且黑名单大都使用了base64进行加密。

网关监控不能自动启用。重启防火墙后,如果启用了VPN网关监控,网关并不会显示在线,这并不影响使用。可以在服务列表手动启用网关监控服务。

与多WAN不兼容。OPNsense多WAN依赖UNBOUND DNS进行网关策略路由,如果使用hysteria,由于不能使用防火墙自身的DNS解析,造成多WAN负载平衡功能无法实现,只能实现故障转移功能。

为了解决上述问题,可以使用Clash Meta来配置hysteria节点,能过OPNsense的Web代理功能来实现透明代理。具体请参阅OPNsense配置Clash透明代理

感谢群友老D提供技术指导。

软件下载:mosdns   hysteria

配置文件示例下载:附件 解压密码:pfchina.org

相关文章:

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇