国内のサーバーは、登録を除いてはもう必要ありません。多くの内部ネットワークサービスは、外部ネットワークからアクセスする必要があり、内部ネットワークトンネリングは必須です。しかし、海外のサーバーを使用する場合、未知の要素を通過する必要があり、誤って損傷を受ける可能性があります。広大な海に溶け込むことも必要です。以前、QUICを使用して偽装しようとしましたが、なぜか安定しませんでした。探し求めて、特徴の少ない内部ネットワークトンネリングツールであるProxyNTを見つけました。ProxyNT は、Python で書かれた WebSocket ベースのリバースプロキシサーバーであり、NAT とファイアウォールを介してローカルサーバーを公共ネットワークに公開することができます。原理的には、CDN を使用して公共 IP を保護することもできます。
サーバー側#
mkdir -p ~/app/proxynt && cd ~/app/proxynt && nano Dockerfile && nano docker-compose.yml
docker build -t limour/proxynt .
nano config.json
sudo docker-compose up -d
FROM python:3.9-alpine
RUN pip install -U proxynt
ENTRYPOINT ["nt_server", "-c", "/opt/config.json"]
version: '3.3'
services:
proxynt:
restart: unless-stopped
volumes:
- './config.json:/opt/config.json'
- '/etc/localtime:/etc/localtime:ro'
image: limour/proxynt
networks:
default:
external: true
name: ngpm
{
"port": 18888,
"log_file": "/dev/null",
"path": "/websocket_path",
"password": "helloworld",
"admin": {
"enable": true,
"admin_password": "new_password"
}
}
クライアント側#
mkdir -p ~/app/proxynt && cd ~/app/proxynt
pip install -U proxynt -i https://pypi.tuna.tsinghua.edu.cn/simple
whereis nt_client
nano config.json
nt_client -c config.json # テスト
nano proxynt.service
sudo mv proxynt.service /etc/systemd/system/proxynt.service
sudo systemctl enable proxynt
sudo systemctl start proxynt
sudo systemctl status proxynt
{
"server": {
"url": "wss://limour.top:443/websocket_path",
"password": "helloworld"
},
"client_name": "home_pc",
"log_file": "/home/limour/app/proxynt/nt.log"
}
[Unit]
Description=proxynt
After=network.target
[Service]
ExecStart=/home/limour/miniconda3/bin/nt_client -c /home/limour/app/proxynt/config.json
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
https://limour.top:443/websocket_path/admin
にアクセスします。- クライアントがオンラインになったら、新しい設定を作成できます。
追加の WebSSH#
上記の内部ネットワークトンネリングと組み合わせて、接続時にホストに「proxynt」と入力すると、内部ネットワークの SSH を公共ネットワークに公開せずに、公共ネットワークを介して SSH 接続できます。
mkdir -p ~/app/webssh && cd ~/app/webssh && nano docker-compose.yml
sudo docker-compose up -d
version: '3.3'
services:
webssh:
restart: unless-stopped
environment:
- GIN_MODE=release
- savePass=true
volumes:
- '/etc/localtime:/etc/localtime:ro'
image: jrohy/webssh:latest
networks:
default:
external: true
name: ngpm