{"id":43,"date":"2021-06-03T20:05:06","date_gmt":"2021-06-03T12:05:06","guid":{"rendered":"https:\/\/running.dynv6.net\/?p=43"},"modified":"2021-06-03T21:04:34","modified_gmt":"2021-06-03T13:04:34","slug":"trojan-debian-nginx-reverse-proxy-alpine-openwrt-%e5%9f%ba%e6%9c%ac%e9%85%8d%e7%bd%ae%e6%b3%95","status":"publish","type":"post","link":"https:\/\/running.dynv6.net\/?p=43","title":{"rendered":"Trojan (debian) + NGINX reverse proxy (alpine) + OpenWRT \u57fa\u672c\u914d\u7f6e\u6cd5"},"content":{"rendered":"\n<p>\u525b\u5f04\u597d\uff0c\u56e0\u6b64\u5beb\u500b\u7c21\u55ae\u7684\u914d\u7f6e\u6559\u5b78\u3002K8s or LXD \u76f8\u95dc\u5c31\u66ab\u6642\u5148\u64f1\u7f6e\uff0c\u7562\u7adf\u53ea\u662f\u500b\u5c0f\u670d\u52d9\u4e0d\u662f\u5927\u6d41\u91cf\u670d\u52d9 \ud83d\ude05<\/p>\n\n\n\n<!--more-->\n\n\n\n<div class=\"wp-container-6a292515c52f9 wp-block-group\"><div class=\"wp-block-group__inner-container\">\n<h2><strong>Pre-Requirement<\/strong><\/h2>\n\n\n\n<p>\u6709\u4e9b\u524d\u7f6e\u4f5c\u696d<s>\u56e0\u70ba\u7bc7\u5e45\uff08\uff1f\uff09\u5c31<\/s>\u4e0d\u505a\u592a\u591a\u8aaa\u660e\uff1a<\/p>\n\n\n\n<p>\u9700\u8981\u4e00\u53f0\u88dd\u597d\u8a2d\u5b9a\u597d\u7684 <a rel=\"noreferrer noopener\" href=\"https:\/\/www.proxmox.com\/en\/\" data-type=\"URL\" data-id=\"https:\/\/www.proxmox.com\/en\/\" target=\"_blank\">Proxmox<\/a> \u7684\u4e3b\u6a5f\uff08\u5176\u4ed6\u865b\u64ec\u5316\u7cfb\u7d71\u4e5f\u53ef\u4ee5\uff0c\u751a\u81f3\u4f60\u6709\u9322\u76f4\u63a5\u62ff\u4e3b\u6a5f\u5806\u758a<s>\u9806\u4fbf\u6d6a\u8cbb\u96fb<\/s>\u4e5f\u884c\uff09\uff0c\u4ee5\u53ca\u5c0d\u61c9\u53ef\u7528\u7684\u7db2\u8def\u3002<br>\u6211\u662f\u914d\u7f6e\u4e09\u500b\u5bb9\u5668\uff0c\u4e00\u500b openwrt\uff0c\u4e00\u500b Alpine Linux \u8dd1 NGINX\uff0c\u4e00\u500b debian \u8dd1 Trojan-GFW\u3002openwrt \u914d\u63a5\u4e0a\u5c0d\u5916\u7db2\u8def\u7684 bridge \u8207\u5c0d\u53e6\u5916\u5169\u500b\u5bb9\u5668\u7684 bridge\uff1b\u53e6\u5916\u5169\u500b\u5bb9\u5668\u5c31\u53ea\u914d\u63a5\u4e0a\u8207 openwrt \u76f8\u540c LAN \u7684 bridge\uff0c\u76f4\u63a5\u628a openwrt \u4f5c\u70ba default gateway\u3002<\/p>\n\n\n\n<p>\u4ee5 proxmox \u4f86\u8aaa\uff0c\u5efa\u7f6e\u597d lxc \u4e4b\u5f8c\u9084\u5f97\u958b\u555f\u5bb9\u5668\u5171\u4eab ssl \u8b49\u66f8\u7684\u7a7a\u9593\uff1a<br><code>sudo zfs create rpool\/ssl<\/code>    # \u5047\u8a2d\u4f60\u6709\u500b\u53eb\u505a rpool \u7684 zpool\uff0c\u5728\u4e0a\u9762\u84cb\u4e00\u500b ssl \u7684 zfs \u7a7a\u9593<br><code>echo \"lxc.mount.entry: \/rpool\/ssl etc\/ssl none bind,create=dir,rw 0 0\" | sudo tee -a \/etc\/pve\/lxc\/&lt;CT ID&gt;.conf<\/code>    # \u9019\u884c\u8981\u505a\u5169\u6b21\uff0c\u5206\u5225\u662f debian &amp; alpine \u7684 lxc\uff1bopenwrt \u4e0d\u505a\u670d\u52d9\uff0c\u6240\u4ee5\u4e0d\u7528\u5403 ssl \u8b49\u66f8\u3002<\/p>\n<\/div><\/div>\n\n\n\n<div class=\"wp-container-6a292515c559e wp-block-group\"><div class=\"wp-block-group__inner-container\">\n<h2><strong>Trojan-GFW<\/strong><\/h2>\n\n\n\n<p>\u5728\u524d\u9762\u914d\u7f6e\u597d\u7684 Debian \u5bb9\u5668\u4e2d\u90e8\u7f72 Trojan-GFW\uff1b\u70ba\u4f55\u4e0d\u9078\u66f4\u7cbe\u7c21\u7684 alpine Linux? \u56e0\u70ba\u73fe\u6210\u7684 pre-build package \u5728 alpine \u4e0a\u9762\u4e0d\u80fd\u7528\uff0c\u5f97\u91cd\u65b0\u7de8\u8b6f\uff0c\u7a0d\u5acc\u9ebb\u7169\u3002<br><a href=\"https:\/\/github.com\/trojan-gfw\/trojan\/issues\/293\" data-type=\"URL\" data-id=\"https:\/\/github.com\/trojan-gfw\/trojan\/issues\/293\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/trojan-gfw\/trojan\/issues\/293<\/a><br><a href=\"https:\/\/github.com\/trojan-gfw\/trojan\/issues\/567\" data-type=\"URL\" data-id=\"https:\/\/github.com\/trojan-gfw\/trojan\/issues\/567\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/trojan-gfw\/trojan\/issues\/567<\/a><\/p>\n\n\n\n<p>\u63a5\u4e0b\u4f86\u6709\u5169\u500b\u65b9\u6cd5\u914d\u7f6e troj:<br><code>echo \"deb http:\/\/ftp.tw.debian.org\/debian buster-backports main contrib\" | sudo tee -a \/etc\/apt\/sources.list<\/code><br><code>sudo apt update &amp;&amp; sudo apt install -y trojan<\/code>\/buster-backports    # buster-backports \u7684\u7248\u672c\u6bd4\u8f03\u65b0<\/p>\n\n\n\n<p><code>vim \/etc\/trojan\/config.json<\/code><br><code>&nbsp; &nbsp; \"run_type\": \"server\",<br>&nbsp; &nbsp; \"local_addr\": \"\u8f38\u5165\u4f60\u8981\u76e3\u807d\u7684IP\",<br>&nbsp; &nbsp; \"local_port\": \u4f60\u60f3\u7528\u7684PORT,<br>&nbsp; &nbsp; \"remote_addr\": \"127.0.0.1\",<br>&nbsp; &nbsp; \"remote_port\": 80,<br>&nbsp; &nbsp; \"password\": [<br>&nbsp; &nbsp; &nbsp; &nbsp; \"\u9023\u7dda\u8981\u7528\u7684\u5bc6\u78bc1\",<br>        \"\u9023\u7dda\u8981\u7528\u7684\u5bc6\u78bc2\",<br>        \"...\"<br>&nbsp; &nbsp; ],<br>&nbsp; &nbsp; \"log_level\": 1,<br>&nbsp; &nbsp; \"ssl\": {<br>&nbsp; &nbsp; &nbsp; &nbsp; \"verify_hostname\": true,<br>&nbsp; &nbsp; &nbsp; &nbsp; \"cert\": \"\u4f60\u7684SSL CERT\u6a94\u6848\u4f4d\u7f6e\uff0c\u901a\u5e38\u900f\u904eLet'sEncrypt\u53d6\u5f97\",<br>&nbsp; &nbsp; &nbsp; &nbsp; \"key\": \"\u4f60\u7684SSL Private Key \u6a94\u6848\u4f4d\u7f6e\uff0c\u901a\u5e38\u900f\u904eLet'sEncrypt\u53d6\u5f97\",<br>&nbsp; &nbsp; &nbsp; &nbsp; \"key_password\": \"\",<br>        \"sni\": \"\u4f60\u60f3\u670d\u52d9\u7684DOMAIN NAME\uff0c\u8207\u9023\u7dda\u7ad9\u53f0\u76f8\u540c\u540d\u7a31\u5247\u514d\u586b\",<\/code><br>&#8230;&#8230; \uff08\u5f8c\u9762\u4e0d\u7528\u66f4\u52d5\uff09<\/p>\n\n\n\n<p><code>vim \/etc\/systemd\/system\/trojan.service<\/code>    # \u56e0\u70ba apt \u88dd\u7684 trojan \u4e0d\u6703\u5728\u958b\u6a5f\u555f\u52d5\uff0c\u5f97\u81ea\u5df1\u505a\u4e00\u500b systemd \u7684\u555f\u52d5\u8173\u672c<\/p>\n\n\n\n<p><code>[Unit]<br>Description=trojan &nbsp;<br>After=network.target &nbsp;<br>[Service]<br>Type=simple &nbsp;<br>PIDFile=\/run\/trojan.pid<br>ExecStart=\/usr\/bin\/trojan -c \"\/etc\/trojan\/config.json\" &nbsp;<br>ExecReload=\/bin\/kill -HUP $MAINPID<br>Restart=on-failure<br>RestartSec=1s<br>[Install]<br>WantedBy=multi-user.target<\/code><br>\u7136\u5f8c\u8a18\u5f97\u8a2d\u5b9a\u958b\u6a5f\u81ea\u52d5\u57f7\u884c<br><code>sudo systemctl enable trojan &amp;&amp; sudo systemctl start trojan<\/code><\/p>\n\n\n\n<p>\u53e6\u4e00\u500b\u65b9\u6cd5\u662f\u6216\u662f\u4f7f\u7528\u4eba\u5bb6\u505a\u597d\u7684\u61f6\u4eba\u5305\uff0c\u76f4\u63a5\u4e0a github \/ gitlab \u641c\u5c0b trojan \u5c31\u6703\u641c\u5c0b\u5230\u5f88\u591a\u4eba\u5beb\u597d\u7684\u4e00\u9375\u8173\u672c\uff0c\u4f46\u662f\u6bcf\u500b\u8173\u672c\u76f8\u95dc\u7684\u914d\u7f6e\u4f4d\u7f6e\u90fd\u4e0d\u76e1\u76f8\u540c\uff0c\u4e5f\u6703\u51fa\u73fe\u5404\u7a2e\u554f\u984c\uff0c\u4f7f\u7528\u8acb\u5c0f\u5fc3\u3002<br>\u6211\u66fe\u7528\u904e\u9019\u500b\u4f46\u662f\u4e0d\u80fd\u76f4\u63a5\u7528\uff0c\u53e6\u5916\u81ea\u5df1\u641e\u5b9a\u8b49\u66f8\u7684\u90e8\u5206\uff0c\u628a\u8173\u672c\u4e2d\u8b49\u66f8\u7684\u90e8\u5206\u8a3b\u89e3\u6389\u3002<a href=\"https:\/\/github.com\/V2RaySSR\/Trojan\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/V2RaySSR\/Trojan<\/a><\/p>\n\n\n\n<p>\u6700\u5f8c\uff0ctrojan-gfw \u539f\u59cb\u78bc\u5728\u6b64 <a href=\"https:\/\/github.com\/trojan-gfw\/trojan\" data-type=\"URL\" data-id=\"https:\/\/github.com\/trojan-gfw\/trojan\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/trojan-gfw\/trojan<\/a><\/p>\n<\/div><\/div>\n\n\n\n<div class=\"wp-container-6a292515c5857 wp-block-group\"><div class=\"wp-block-group__inner-container\">\n<h2><strong>NGINX reverse proxy<\/strong><\/h2>\n\n\n\n<p>NGINX \u9019\u908a\u6bd4\u8f03\u55ae\u7d14\uff0c\u5c31\u53ea\u662f\u505a service\/traffic bypass\uff0c\u6240\u4ee5\u6211\u5011\u63a1\u7528\u76f8\u5c0d\u7cbe\u7c21\u7684 alpine linux \u5373\u53ef\u3002\u5927\u90e8\u5206\u53c3\u8003\u9019\u908a <a rel=\"noreferrer noopener\" href=\"https:\/\/wiki.alpinelinux.org\/wiki\/Nginx_as_reverse_proxy_with_acme_(letsencrypt)\" data-type=\"URL\" data-id=\"https:\/\/wiki.alpinelinux.org\/wiki\/Nginx_as_reverse_proxy_with_acme_(letsencrypt)\" target=\"_blank\">https:\/\/wiki.alpinelinux.org\/wiki\/Nginx_as_reverse_proxy_with_acme_(letsencrypt)<\/a><br>\u9019\u908a\u5927\u6982\u63cf\u8ff0\u4e00\u4e0b\u8ddf\u4e0a\u9762\u7db2\u5740\u4e0d\u540c\u7684\u5167\u5bb9\uff0c\u5118\u91cf\u7c21\u8981\u3002<\/p>\n\n\n\n<p><code>pct enter &lt;nginx ct id&gt;<\/code> \u4e4b\u5f8c<br><code>echo \"http:\/\/dl-cdn.alpinelinux.org\/alpine\/latest-stable\/main<br>http:\/\/dl-cdn.alpinelinux.org\/alpine\/latest-stable\/community\" &gt; \/etc\/apk\/repositories<\/code>    # \u63a1\u7528\u6700\u65b0\u7684 repositories<br><code>apk update ; apk upgrade<\/code>    # \u9806\u624b\u66f4\u65b0\u7cfb\u7d71<br><code>apk add nginx nginx-mod-stream<\/code><\/p>\n\n\n\n<p>\u63a5\u8457 NGINX \u8a2d\u5b9a\u6a94\u6703\u5728 \/etc\/nginx \u5e95\u4e0b\uff0c\u61c9\u8a72\u6703\u6709\u5e7e\u500b\u6a94\u6848\u9700\u8981\u5b58\u5728\uff1a<br>stream.conf \u9810\u8a2d\u5373\u53ef<br>mime.types \u4e0d\u5b58\u5728\u7684\u8a71\u53ef\u8907\u88fd\u9019\u908a\u7684 <a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/chrisgeo\/docker-alpine-nginx\/blob\/master\/conf\/mime.types\" data-type=\"URL\" data-id=\"https:\/\/github.com\/chrisgeo\/docker-alpine-nginx\/blob\/master\/conf\/mime.types\" target=\"_blank\">https:\/\/github.com\/chrisgeo\/docker-alpine-nginx\/blob\/master\/conf\/mime.types<\/a><br>nginx.conf \u9019\u500b\u6709\u4e9b\u5730\u65b9\u5efa\u8b70\u4fee\u6539\uff1a<\/p>\n\n\n\n<p><code>ssl_protocols TLSv1.2 TLSv1.3; <\/code>   # \u62ff\u6389 TLSv1.1<br><code>include \/etc\/nginx\/stream.conf;<\/code>    # \u62ff\u6389\u6700\u524d\u9762\u7684 #<\/p>\n\n\n\n<p>\u63a5\u8457\u662f http.d\/ \u76ee\u9304\u5e95\u4e0b<\/p>\n\n\n\n<p>http.d\/acme.inc \u9019\u500b\u6a94\u6848\u662f\u7528\u4f86\u8ddf Let&#8217;sEncrypt \u8981\u8b49\u66f8\u7684\u6642\u5019\u6703\u7528\u5230\uff0c\u53c3\u8003\u524d\u9762 alpinelinux \u7684 wiki \u9023\u7d50\u914d\u7f6e<\/p>\n\n\n\n<p>http.d\/default.conf \u9019\u500b\u4e0d\u7528\u52d5\u5b83\uff0c\u9810\u8a2d\u9001\u4f60 404<\/p>\n\n\n\n<p>http.d\/proxy_set_header.inc \u9019\u500b\u662f\u666e\u901a\u7684 reverse proxy \u6642\u6703\u7528\u5230\u7684\uff0c\u4e00\u6a23\u53c3\u8003\u524d\u9762 alpinelinux wiki \u7684\u9023\u7d50\u914d\u7f6e<\/p>\n\n\n\n<p>http.d\/ssl-params.inc \u9019\u500b\u4e0d\u662f\u5fc5\u8981\u7684\u5b58\u5728\uff0c\u7576\u4f60\u6709\u5176\u4ed6\u7ad9\u53f0\u9700\u8981\u505a reverse proxy \u7684\u6642\u5019\u624d\u6703\u7528\u5230\uff0calpinelinux \u7684 wiki \u88e1\u9762\u7684\u914d\u7f6e\u7bc4\u4f8b\u6703\u8ddf\u9810\u8a2d\u7684 nginx.conf \u885d\u7a81\uff08\u91cd\u8907\uff09\uff0c\u9700\u8981\u8a3b\u89e3\u6389\uff1a<br><code>#ssl_protocols TLSv1.3; # Requires nginx &gt;= 1.13.0 else use TLSv1.2<br>#ssl_protocols TLSv1.2; # We use TLSv1.2 because current stable nginx release don't support TLSv1.3 yet<br>#ssl_prefer_server_ciphers on;<br>#ssl_session_cache shared:SSL:10m;<br>#ssl_session_tickets off; # Requires nginx &gt;= 1.5.9<\/code><\/p>\n\n\n\n<p>http.d\/your_site_configs.conf \u9019\u500b\u6a94\u6848\u540d\u7a31\u4efb\u4f60\u6c7a\u5b9a\uff0c\u901a\u5e38\u662f\u76f4\u63a5\u8a2d\u5b9a\u6210 &lt;host &amp; domain name&gt;.conf\uff0c\u88e1\u9762\u9700\u8981\u914d\u7f6e http port 80 \u76f8\u95dc\u914d\u7f6e\uff0cport 443 ssl \u5728\u5f8c\u9762 stream.d \u7684\u5730\u65b9\u6703\u63d0\u5230\u3002<br><code>server {<br>&nbsp; &nbsp; listen 80;<br>    listen [::]:80;    # \u5982\u679c\u4f60\u9700\u8981 IPv6 \u652f\u63f4<br>&nbsp; &nbsp; server_name &lt;host &amp; domain name&gt;;<br>&nbsp; &nbsp; include conf.d\/acme.inc;<br>#&nbsp; &nbsp;include conf.d\/redirect_http.inc;    # \u666e\u901a\u7684\u7ad9\u53f0\u53ef\u80fd\u6703\u9700\u8981\uff0c\u9806\u624b\u505a HSTS \u652f\u63f4\uff1f\u6211\u5011\u53ea\u505a trojan \u5c31\u4e0d\u592a\u9700\u8981\u3002<br>&nbsp; &nbsp; location \/ {<br>        include conf.d\/proxy_set_header.inc;<br>        proxy_pass http:\/\/&lt;\u524d\u9762\u914d\u7f6e\u7684 debian container IP&gt;;    # \u9019\u500b\u770b\u4f60\u8981\u600e\u9ebc\u767c\u63ee\uff0c\u53ef\u4ee5\u7522\u751f\u5404\u7a2e\u4e0d\u540c\u7684\u61c9\u7528\uff0c\u6211\u5011\u9019\u908a\u5148\u9019\u6a23\u914d\u7f6e\u5c31\u884c\u3002<br>#       return 404;    # \u9019\u500b\u662f\u9810\u8a2d\u7684\uff0c\u61c9\u8a72\u4e0d\u7528\u4e86\uff0c\u8a3b\u89e3\u6389\u3002<br>&nbsp; &nbsp; }<br>}<\/code><\/p>\n\n\n\n<p>\u7136\u5f8c\u662f stream.d\/ \u76ee\u9304\u5e95\u4e0b<\/p>\n\n\n\n<p>stream.d\/your_site_configs.conf \u9019\u500b\u6a94\u540d\u540c\u6a23\u662f\u4efb\u4f60\u6c7a\u5b9a\uff0c\u5efa\u8b70\u5b9a\u6210 &lt;host &amp; domain name&gt;.conf\uff0c\u53c3\u8003\u4f86\u6e90\u662f <a rel=\"noreferrer noopener\" href=\"https:\/\/gist.github.com\/phlinhng\/84e4fe056b4383e24898b22c95394c5c\" data-type=\"URL\" data-id=\"https:\/\/gist.github.com\/phlinhng\/84e4fe056b4383e24898b22c95394c5c\" target=\"_blank\">https:\/\/gist.github.com\/phlinhng\/84e4fe056b4383e24898b22c95394c5c<\/a><br><code>map $ssl_preread_server_name $backend_name {<br>  &lt;host &amp; domain name&gt; &lt;hostname&gt;;    # \u8a18\u5f97\u66ff\u63db\u6210\u4f60\u7684\u7db2\u57df\u540d\u7a31<br>  default web;<br>}<br>upstream web {<br>  server 127.0.0.1:80;    # \u5c31\uff0c\u9810\u8a2d<br>}<br>upstream &lt;hostname&gt; {<br>  server &lt;\u8acb\u8a2d\u5b9a\u6210\u524d\u9762 debian \u5167\u7db2 IP&gt;:443;<br>}<br>server {<br>  listen 443 reuseport;<br>  listen [::]:443 reuseport;    # \u5982\u679c\u9700\u8981 IPv6<br>  proxy_pass&nbsp; $backend_name;<br>  ssl_preread on;<br>}<\/code><\/p>\n\n\n\n<p><s>\u7136\u5f8c\u6253\u5b8c\u5b57\u767c\u73fe\u5176\u5be6\u4e5f\u6c92\u591a\u55ae\u7d14&#8230;\uff08\uff1f\uff09<\/s><\/p>\n\n\n\n<p>\u6700\u5f8c\u7576\u7136\u5225\u5fd8\u4e86\u914d\u7f6e\u958b\u6a5f\u57f7\u884c\u7684\u90e8\u5206<br><code>rc-update add nginx &amp;&amp; rc-service nginx start<\/code><\/p>\n<\/div><\/div>\n\n\n\n<div class=\"wp-container-6a292515c5ade wp-block-group\"><div class=\"wp-block-group__inner-container\">\n<h2><strong>Let&#8217;s Encrypt certificates<\/strong><\/h2>\n\n\n\n<p>\u9019\u500b\uff0c\u7a0d\u5fae\uff0c\u6709\u9ede\uff0c\u9ebb\u7169\u3002<br>\u6211\u662f\u76f4\u63a5\u5728\u524d\u9762 NGINX proxy \u7684 container \u88e1\u9762\u5be6\u4f5c\uff0c\u518d\u5b58\u5230\u5171\u540c\u7a7a\u9593\u7d66\u5f8c\u9762\u7684 trojan-gfw \u4f7f\u7528\u3002<\/p>\n\n\n\n<p><code>apk add acme.sh<\/code><\/p>\n\n\n\n<p>\u7136\u5f8c\u53c3\u8003\u4f60\u7684 domain name \u4f9b\u61c9\u5546\u63d0\u4f9b\u7684\u6307\u5f15\u53bb\u64cd\u4f5c\u914d\u7f6e\uff1b\u6211\u662f\u76f4\u63a5\u5beb\u6210 script &#8230; \u7576\u7136\u73fe\u6210\u7684\u5de5\u5177\u5f88\u591a\u4e0d\u6b62 acme \u53ef\u4ee5\u7528\uff0c\u5176\u4ed6\u9084\u6709 certbot\uff0c\u751a\u81f3\u5982\u679c\u4f60\u7528 turnkey linux \u4e5f\u6709 turnkey-make-ssl-cert \u4e4b\u985e\u7684\u5de5\u5177\u3002<\/p>\n\n\n\n<p>\u6211\u7528 dynv6\uff0c<a href=\"https:\/\/fossies.org\/linux\/acme.sh\/dnsapi\/dns_dynv6.sh\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/fossies.org\/linux\/acme.sh\/dnsapi\/dns_dynv6.sh<\/a> \u9019\u908a\u6709\u4eba\u6709\u5beb\u597d\u7684\u5de5\u5177\uff0c\u4f46\u662f&#8230; \u500b\u4eba\u89ba\u5f97\u592a\u8907\u96dc\uff0c\u6240\u4ee5\u662f\u53c3\u8003 <a rel=\"noreferrer noopener\" href=\"https:\/\/dynv6.com\/docs\/apis\" data-type=\"URL\" data-id=\"https:\/\/dynv6.com\/docs\/apis\" target=\"_blank\">https:\/\/dynv6.com\/docs\/apis<\/a> \u8207 <a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/acmesh-official\/acme.sh\" data-type=\"URL\" data-id=\"https:\/\/github.com\/acmesh-official\/acme.sh\" target=\"_blank\">https:\/\/github.com\/acmesh-official\/acme.sh<\/a> \u81ea\u5df1\u5f04\u4e86 script \u4f86\u505a certificate \u7684\u5b89\u88dd\u8207\u90e8\u7f72\uff1bscript \u5167\u5bb9\u7a0d\u5f8c\u884c\u6709\u9918\u529b\u518d\u88dc\u4e0a\ud83d\ude2c  <s>\uff08\u6211\u61c9\u8a72\u6703\u76f4\u63a5\u61f6\u5f97\u88dc\u4e86\uff09<\/s><\/p>\n<\/div><\/div>\n\n\n\n<div class=\"wp-container-6a292515c5d13 wp-block-group\"><div class=\"wp-block-group__inner-container\">\n<h2><strong>OpenWRT (21.02-RC2)<\/strong><\/h2>\n\n\n\n<p>OpenWRT \u90e8\u5206\u5f88\u7c21\u55ae\uff0c\u5047\u8a2d OpenWRT \u5df2\u8a2d\u7f6e\u597d\u53ef\u9023\u901a\u7db2\u8def<s>\uff08\u80fd\u514b\u670d openwrt \u7684\u96e3\u8a2d\u5b9a\uff0c\u5f8c\u9762\u61c9\u8a72\u554f\u984c\u90fd\u4e0d\u5927\u4e86 \ud83e\udd23\uff09<\/s>\uff0c\u5269\u4e0b\u7684\u5c31\u662f\u8a2d\u7f6e\u597d IPv4 \u7684 port forwarding \u5373\u53ef\u3002IPv6 \u7684\u90e8\u5206\u6709\u9700\u8981\u7684\u8a71\u76ee\u524d\u6211\u81ea\u5df1\u9019\u908a\u662f\u90e8\u7f72\u5728 reverse proxy (NGINX) \u4e0a\u9762\u3002\u9664\u975e\u9084\u9700\u8981\u505a\u6d41\u91cf\u63a7\u7ba1\uff0c\u5c31\u9084\u9700\u8981 QoS \u914d\u7f6e\u3002\u7576\u7136 openwrt \u4e5f\u652f\u63f4\u524d\u9762\u7684 ssl \u6191\u8b49\u81ea\u52d5\u66f4\u65b0\u3001ddns \u81ea\u52d5\u5237\u65b0\u7b49\u7b49\uff0c\u914d\u7f6e\u8ddf alpine\/debian \u7b49 linux dist \u6709\u9ede\u4e0d\u592a\u76f8\u540c\u3002\u7576\u7136\uff0copenwrt \u4e5f\u662f\u53ef\u4ee5\u5efa\u5236 troj\u3001ssr\u3001v2ray\u3001wg\u3001ssl-vpn \u7b49\u5404\u5f0f VPN service\uff0c\u8003\u91cf\u5230\u6a5f\u7387\u4e0d\u5927\u7684\u8f49\u79fb\u554f\u984c\uff0c\u9084\u662f\u4ee5\u5206\u958b\u4f48\u5efa\u70ba\u4e3b\u3002<\/p>\n<\/div><\/div>\n\n\n\n<div class=\"wp-container-6a292515c5ee3 wp-block-group\"><div class=\"wp-block-group__inner-container\">\n<h2><strong>Trojan Client<\/strong><\/h2>\n\n\n\n<p>\u5ba2\u6236\u7aef\u7531\u65bc\u6211\u81ea\u5df1\u53ea\u6709\u5be6\u6e2c iOS &amp; Android\uff0cmacOS \u8a66\u4e0d\u51fa\u4f86\uff0c\u6c92\u6709 windows\uff0copenwrt\u9084\u6c92\u7a7a\u6e2c\u8a66\uff08\u96d6\u7136\u670b\u53cb\u90a3\u908a\u4f3c\u4e4e\u6709\u8a66\u6210\u529f\uff09\u6240\u4ee5\u53ea\u4ecb\u7d39 iOS &amp; Android\u3002<\/p>\n\n\n\n<p>iOS: <a rel=\"noreferrer noopener\" href=\"https:\/\/apps.apple.com\/tw\/app\/spectre-vpn\/id1508712998\" target=\"_blank\">https:\/\/apps.apple.com\/tw\/app\/spectre-vpn\/id1508712998<\/a> \u5b89\u88dd\u5b8c\u4e4b\u5f8c\u5728\u88e1\u9762\u589e\u52a0\u4f3a\u670d\u5668\uff1a<code>trojan:\/\/\u5bc6\u78bc@DomainName:Port<\/code> <\/p>\n\n\n\n<p><a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/trojan-gfw\/trojan-url\" data-type=\"URL\" data-id=\"https:\/\/github.com\/trojan-gfw\/trojan-url\" target=\"_blank\">https:\/\/github.com\/trojan-gfw\/trojan-url<\/a><\/p>\n\n\n\n<p>Android: <a rel=\"noreferrer noopener\" href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.crosserr.trojan\" data-type=\"URL\" data-id=\"https:\/\/play.google.com\/store\/apps\/details?id=com.crosserr.trojan\" target=\"_blank\">https:\/\/play.google.com\/store\/apps\/details?id=com.crosserr.trojan<\/a> \u5f8c\u7e8c\u6b65\u9a5f\u540c\u4e0a\uff0c\u975e\u5e38\u7c21\u55ae\u3002<\/p>\n\n\n\n<p>\u914d\u7f6e\u597d\u4e86\u4e4b\u5f8c\u7528\u700f\u89bd\u5668\u958b\u500b\u7db2\u9801\u6e2c\u8a66\u80fd\u4e0d\u80fd\u958b\u5c31\u5927\u6982\u80fd\u77e5\u9053\u662f\u5426\u9023\u7dda\u9806\u5229\u4e86<s>\uff0c\u96d6\u7136\u9084\u662f\u6709\u7121\u9023\u7dda\u507d\u88dd\u6210\u6709\u9023\u7dda\u7684\u60c5\u6cc1\u8ddf\u80ba\u708e\u5feb\u7be9\u507d\u967d\u6027\u4e00\u6a23<\/s>\u3002<\/p>\n<\/div><\/div>\n\n\n\n<p>Note: \u525b\u525b\u9810\u89bd\u767c\u73fe\u7e2e\u6392\u6709\u8dd1\u6389\u7684\u60c5\u6cc1\u6211\u5c31\u61f6\u5f97\u518d\u53bb debug \u4e86&#8230; \u6216\u662f\u6709\u4eba\u77e5\u9053 wordpress \u600e\u9ebc\u7e2e\u6392\u6bd4\u8f03\u6f02\u4eae\u4e5f\u53ef\u4ee5\u5206\u4eab\u7d66\u6211\u611f\u8b1d \u263a<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u525b\u5f04\u597d\uff0c\u56e0\u6b64\u5beb\u500b\u7c21\u55ae\u7684\u914d\u7f6e\u6559\u5b78\u3002K8s or LXD \u76f8\u95dc\u5c31\u66ab\u6642\u5148\u64f1\u7f6e\uff0c\u7562\u7adf\u53ea\u662f &hellip; <a href=\"https:\/\/running.dynv6.net\/?p=43\">\u95b1\u8b80\u5168\u6587 <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[3,4],"_links":{"self":[{"href":"https:\/\/running.dynv6.net\/index.php?rest_route=\/wp\/v2\/posts\/43"}],"collection":[{"href":"https:\/\/running.dynv6.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/running.dynv6.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/running.dynv6.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/running.dynv6.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=43"}],"version-history":[{"count":23,"href":"https:\/\/running.dynv6.net\/index.php?rest_route=\/wp\/v2\/posts\/43\/revisions"}],"predecessor-version":[{"id":67,"href":"https:\/\/running.dynv6.net\/index.php?rest_route=\/wp\/v2\/posts\/43\/revisions\/67"}],"wp:attachment":[{"href":"https:\/\/running.dynv6.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=43"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/running.dynv6.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=43"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/running.dynv6.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=43"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}