Nowhere是一个很新的协议,目前只有Anywhere这个iOS客户端支持,想尝鲜的可以试试。
本文仅记录适用于生产的tls=2模式。tls=2需要你自行准备可信证书,这里我就用certbot + dns01挑战来完成了。
安装certbot和cloudflare dns挑战插件:
apt update
apt install certbot python3-certbot-dns-cloudflare
新建一个目录:
mkdir -p ~/.secrets/certbot
新建cloudflare.ini:
nano ~/.secrets/certbot/cloudflare.ini
填写如下内容,cfut_hidden替换为你自己的API密钥:
dns_cloudflare_api_token = cfut_hidden
设置这个文件的权限,只允许当前用户读写,其它用户无权访问,主要是为了解决certbot的警告,以免不让你继续申请证书:
chmod 600 ~/.secrets/certbot/cloudflare.ini
申请证书:
certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials ~/.secrets/certbot/cloudflare.ini \
-d nowhere.example.com
申请好的证书保存在如下路径:
/etc/letsencrypt/live/nowhere.example.com/fullchain.pem
/etc/letsencrypt/live/nowhere.example.com/privkey.pem
下载Nowhere二进制文件:
wget https://github.com/NodePassProject/Nowhere/releases/download/v1.3.1/nowhere-x86_64-unknown-linux-gnu.tar.gz
tar -xzvf nowhere-x86_64-unknown-linux-gnu.tar.gz
mv nowhere /usr/local/bin/
现在可以先手动运行测试一下:
nowhere 'portal://yourpasswd@:443?log=info&tls=2&crt=/etc/letsencrypt/live/nowhere.example.com/fullchain.pem&key=/etc/letsencrypt/live/nowhere.example.com/privkey.pem'
客户端能成功连接的话就ctrl+c退出来。新建systemd单元配置文件:
nano /etc/systemd/system/nowhere.service
写入如下内容:
[Unit]
Description=Nowhere Proxy Server
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
ExecStart=/usr/local/bin/nowhere 'portal://yourpasswd@:443?log=info&tls=2&crt=/etc/letsencrypt/live/nowhere.example.com/fullchain.pem&key=/etc/letsencrypt/live/nowhere.example.com/privkey.pem'
Restart=on-failure
RestartSec=30
LimitNOFILE=1048576
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_BIND_SERVICE
[Install]
WantedBy=multi-user.target
启动并设置开机自启:
systemctl enable --now nowhere.service
客户端添加节点的配置:
地址:nowhere.example.com
端口:443
Key:yourpasswd
Spec: 留空
网络:TCP / UDP 任选其一
TLS SNI:nowhere.example.com
ALPN:留空
我看了下官方的文档,好像这个协议支持类似xhttp那样的上下行分离,比如你可以选择上行走udp,下行走tcp。我没有实际测试过,有兴趣的可以折腾看看。
荒岛
















