[{"data":1,"prerenderedAt":94},["ShallowReactive",2],{"content:\u002Farticles:5896":3},{"item":4,"md":16,"html":17,"menu":18,"excerpt":47,"related":48},{"title":5,"len":6,"tags":7,"id":10,"time":11,"modifyTime":12,"encrypt":13,"showComments":14,"customSlug":15},"使用cloudflare tunnel打洞，随时随地访问内网服务",5331,[8,9],"杂谈","linux",5896,1673123801345,1678975490497,false,true,"",null,"\u003Cp data-marked-line=\"1\">&emsp;&emsp;由于我家的网络只有ipv6，没有公网ipv4，导致两个问题：\u003C\u002Fp>\n\u003Cul data-marked-line=\"2\">\n\u003Cli>ipv4网络下，无法访问家里的服务。\u003C\u002Fli>\n\u003Cli>常用端口(80,443)被屏蔽了，要访问的话，必须带上端口号，例如：\u003Cstrong>example.com:9527\u003C\u002Fstrong>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp data-marked-line=\"5\">&emsp;&emsp;\u003Ca href=\"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fcloudflare-one\u002Fconnections\u002Fconnect-apps\u002F\" target=\"_blank\">cloudflare tunnel\u003C\u002Fa>很好地解决了这两个问题，有了它我们甚至不需要公网ipv4或ipv6，可以把它理解为免费的打洞工具\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffatedier\u002Ffrp\" target=\"_blank\">frp\u003C\u002Fa>。唯一的缺点是速度可能不够理想，我家里的网络，单连接只有几百k\u002Fs，多连接可以跑满上行带宽2M\u002Fs，公司的网络单连接也能跑满上行带宽。可以把cloudflare作为备用，在无法使用ipv6的情况下，也至少能低速访问自己的服务。\u003C\u002Fp>\n\u003Ch1 data-marked-line=\"6\">\u003Csup class=\"fake-head\" id=\"%E5%AE%89%E8%A3%85\">\u003C\u002Fsup>\u003Ca class=\"header-link\" href=\"#%E5%AE%89%E8%A3%85\">安装\u003C\u002Fa>\u003C\u002Fh1>\u003Ch4 data-marked-line=\"7\">\u003Csup class=\"fake-head\" id=\"%E5%89%8D%E7%BD%AE%E6%9D%A1%E4%BB%B6\">\u003C\u002Fsup>\u003Ca class=\"header-link\" href=\"#%E5%89%8D%E7%BD%AE%E6%9D%A1%E4%BB%B6\">前置条件\u003C\u002Fa>\u003C\u002Fh4>\u003Cul data-marked-line=\"8\">\n\u003Cli>一台已连接互联网的linux服务器（不需要公网ip）\u003C\u002Fli>\n\u003Cli>cloudflare账户，虽然cloudflare tunnel套餐是免费的，但可能需要绑卡\u003C\u002Fli>\n\u003Cli>一些基础的linux知识\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cblockquote data-marked-line=\"12\">\n\u003Cp data-marked-line=\"12\">如果对下面的内容有疑惑，欢迎提问\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ch4 data-marked-line=\"13\">\u003Csup class=\"fake-head\" id=\"%E5%87%86%E5%A4%87\">\u003C\u002Fsup>\u003Ca class=\"header-link\" href=\"#%E5%87%86%E5%A4%87\">准备\u003C\u002Fa>\u003C\u002Fh4>\u003Cp data-marked-line=\"14\">&emsp;&emsp; 首先需要有一个域名，并把它的DNS迁到cloudflare，因为我的域名就是在cloudflare买的，所以这里没有\u003Ca href=\"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fregistrar\u002Fget-started\u002Ftransfer-domain-to-cloudflare\u002F\" target=\"_blank\">教程\u003C\u002Fa>，不赘述。随后进入\u003Ca href=\"https:\u002F\u002Fone.dash.cloudflare.com\" target=\"_blank\">Cloudflare Zero Trust控制面板\u003C\u002Fa>，初次使用需要选择Plan，选择Free Plan，白嫖就完事了\u003Cimg src=\"\u002Fsticker\u002Faru\u002F104.png\" alt=\"sticker\"\u002F>。\u003C\u002Fp>\n\u003Ch4 data-marked-line=\"15\">\u003Csup class=\"fake-head\" id=\"%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%AE%89%E8%A3%85cloudflared\">\u003C\u002Fsup>\u003Ca class=\"header-link\" href=\"#%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%AE%89%E8%A3%85cloudflared\">服务器安装cloudflared\u003C\u002Fa>\u003C\u002Fh4>\u003Cp data-marked-line=\"16\">&emsp;&emsp;在linux服务器上\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fcloudflare\u002Fcloudflared\u002F#installing-cloudflared\" target=\"_blank\">安装cloudflared\u003C\u002Fa>，我的系统是manjaro，直接\u003Ccode>yay -S cloudflared\u003C\u002Fcode>就欧了，安装成功后，在命令行执行\u003Ccode>cloudflared\u003C\u002Fcode>应该就有输出。\u003C\u002Fp>\n\u003Ch1 data-marked-line=\"17\">\u003Csup class=\"fake-head\" id=\"%E9%85%8D%E7%BD%AE%E4%B8%8E%E8%BD%AC%E5%8F%91\">\u003C\u002Fsup>\u003Ca class=\"header-link\" href=\"#%E9%85%8D%E7%BD%AE%E4%B8%8E%E8%BD%AC%E5%8F%91\">配置与转发\u003C\u002Fa>\u003C\u002Fh1>\u003Cp data-marked-line=\"18\">&emsp;&emsp;在服务器上配置tunnel，有\u003Ca href=\"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fcloudflare-one\u002Fconnections\u002Fconnect-apps\u002Finstall-and-setup\u002Ftunnel-guide\u002F\" target=\"_blank\">两种配置方式\u003C\u002Fa>，一种是通过cloudflare控制台，另一种是通过命令行。我使用的是命令行，写脚本比较方便，有如下几步（以下示例使用\u003Cem>yunyuyuan\u003C\u002Fem>作为服务器的用户名，\u003Cem>example.com\u003C\u002Fem>作为域名）：\u003C\u002Fp>\n\u003Col data-marked-line=\"19\">\n\u003Cli>\u003Cp data-marked-line=\"19\">创建tunnel\u003C\u002Fp>\n\u003Cpre data-marked-line=\"21\" data-lang=\"sh\" data-shiki>\u003Ccode class=\"language-sh\">\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D;--shiki-light-font-style:inherit;--shiki-dark:#7F848E;--shiki-dark-font-style:italic\"># 登录cloudflare\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#61AFEF\">cloudflared\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> tunnel\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> login\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D;--shiki-light-font-style:inherit;--shiki-dark:#7F848E;--shiki-dark-font-style:italic\"># 创建一个tunnel，名字自定，这里用my-tunnel\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#61AFEF\">cloudflared\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> tunnel\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> create\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> my-tunnel\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp data-marked-line=\"27\"> 然后, 执行\u003Ccode>cloudflared tunnel list\u003C\u002Fcode>显示\u003Cstrong>my-tunnel\u003C\u002Fstrong>的ID:\u003C\u002Fp>\n\u003Cpre data-marked-line=\"28\" data-lang=\"sh\" data-shiki>\u003Ccode class=\"language-sh\">\u003Cspan class=\"line\">\u003Cspan style=\"color:#D73A49;--shiki-dark:#ABB2BF\">~\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;--shiki-dark:#ABB2BF\"> $ cloudflared tunnel list\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#61AFEF\">ID\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\">                                   NAME\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\">    CREATED\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\">              CONNECTIONS\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#61AFEF\">xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> my-tunnel\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> 2023-01-08T02:26:41Z\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> 2xLAX,\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> 2xSJC\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fli>\n\u003Cli>\u003Cp data-marked-line=\"33\">编写配置文件，\u003Ccode>vim ~\u002F.cloudflared\u002Fconfig.yml\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cpre data-marked-line=\"35\" data-lang=\"yml\" data-shiki>\u003Ccode class=\"language-yml\">\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A;--shiki-dark:#E06C75\">tunnel\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;--shiki-dark:#ABB2BF\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\">xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A;--shiki-dark:#E06C75\">credentials-file\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;--shiki-dark:#ABB2BF\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\">\u002Fhome\u002Fyunyuyuan\u002F.cloudflared\u002Fxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.json\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A;--shiki-dark:#E06C75\">ingress\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;--shiki-dark:#ABB2BF\">:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D;--shiki-light-font-style:inherit;--shiki-dark:#7F848E;--shiki-dark-font-style:italic\">  # ssh\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#ABB2BF\">  - \u003C\u002Fspan>\u003Cspan style=\"color:#22863A;--shiki-dark:#E06C75\">hostname\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;--shiki-dark:#ABB2BF\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\">ssh.example.com\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A;--shiki-dark:#E06C75\">    service\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;--shiki-dark:#ABB2BF\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\">ssh:\u002F\u002Flocalhost\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D;--shiki-light-font-style:inherit;--shiki-dark:#7F848E;--shiki-dark-font-style:italic\">  # vnc远程桌面，端口5900\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#ABB2BF\">  - \u003C\u002Fspan>\u003Cspan style=\"color:#22863A;--shiki-dark:#E06C75\">hostname\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;--shiki-dark:#ABB2BF\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\">vnc.example.com\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A;--shiki-dark:#E06C75\">    service\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;--shiki-dark:#ABB2BF\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\">tcp:\u002F\u002Flocalhost:5900\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D;--shiki-light-font-style:inherit;--shiki-dark:#7F848E;--shiki-dark-font-style:italic\">  # 其他http服务\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#ABB2BF\">  - \u003C\u002Fspan>\u003Cspan style=\"color:#22863A;--shiki-dark:#E06C75\">hostname\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;--shiki-dark:#ABB2BF\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\">file.example.com\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A;--shiki-dark:#E06C75\">    service\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;--shiki-dark:#ABB2BF\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\">http:\u002F\u002Flocalhost:9527\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#ABB2BF\">  - \u003C\u002Fspan>\u003Cspan style=\"color:#22863A;--shiki-dark:#E06C75\">hostname\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;--shiki-dark:#ABB2BF\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\">speed-test.example.com\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#22863A;--shiki-dark:#E06C75\">    service\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;--shiki-dark:#ABB2BF\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\">http:\u002F\u002Flocalhost:9898\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D;--shiki-light-font-style:inherit;--shiki-dark:#7F848E;--shiki-dark-font-style:italic\">  # 如果都没有匹配，则返回404，这句不能少\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#ABB2BF\">  - \u003C\u002Fspan>\u003Cspan style=\"color:#22863A;--shiki-dark:#E06C75\">service\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;--shiki-dark:#ABB2BF\">: \u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\">http_status:404\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fli>\n\u003Cli>\u003Cp data-marked-line=\"53\">写一个脚本，自动更新DNS以及运行tunnel，\u003Ccode>vim ~\u002Ftunnel-sh.sh\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cpre data-marked-line=\"55\" data-lang=\"sh\" data-shiki>\u003Ccode class=\"language-sh\">\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D;--shiki-light-font-style:inherit;--shiki-dark:#7F848E;--shiki-dark-font-style:italic\"># update cloudflare DNS record\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#61AFEF\">\u002Fusr\u002Fbin\u002Fcloudflared\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> tunnel\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> route\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> dns\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> my-tunnel\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> ssh.example.com\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#61AFEF\">\u002Fusr\u002Fbin\u002Fcloudflared\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> tunnel\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> route\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> dns\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> my-tunnel\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> vnc.example.com\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#61AFEF\">\u002Fusr\u002Fbin\u002Fcloudflared\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> tunnel\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> route\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> dns\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> my-tunnel\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> file.example.com\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#61AFEF\">\u002Fusr\u002Fbin\u002Fcloudflared\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> tunnel\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> route\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> dns\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> my-tunnel\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> speed-test.example.com\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D;--shiki-light-font-style:inherit;--shiki-dark:#7F848E;--shiki-dark-font-style:italic\"># run tunnel\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#61AFEF\">\u002Fusr\u002Fbin\u002Fcloudflared\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> tunnel\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> run\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> my-tunnel\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fli>\n\u003Cli>\u003Cp data-marked-line=\"64\">开机自启\u003C\u002Fp>\n\u003Cp data-marked-line=\"66\"> 新建一个service，\u003Ccode>sudo vim \u002Fetc\u002Fsystemd\u002Fsystem\u002Fcloudflared-tunnel.service\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cpre data-marked-line=\"67\" data-lang=\"ini\" data-shiki>\u003Ccode class=\"language-ini\">\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#61AFEF\">[Unit]\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D73A49;--shiki-dark:#C678DD\">Description\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;--shiki-dark:#ABB2BF\">=\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;--shiki-dark:#98C379\">cloudflared tunnel\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D73A49;--shiki-dark:#C678DD\">Wants\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;--shiki-dark:#ABB2BF\">=\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;--shiki-dark:#98C379\">network-online.target\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D73A49;--shiki-dark:#C678DD\">After\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;--shiki-dark:#ABB2BF\">=\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;--shiki-dark:#98C379\">network-online.target\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D73A49;--shiki-dark:#C678DD\">StartLimitInterval\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;--shiki-dark:#ABB2BF\">=\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;--shiki-dark:#98C379\">300\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#61AFEF\">[Service]\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D73A49;--shiki-dark:#C678DD\">User\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;--shiki-dark:#ABB2BF\">=\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;--shiki-dark:#98C379\">yunyuyuan\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D73A49;--shiki-dark:#C678DD\">ExecStart\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;--shiki-dark:#ABB2BF\">=\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;--shiki-dark:#98C379\">sh \u002Fhome\u002Fyunyuyuan\u002Ftunnel-sh.sh\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D;--shiki-light-font-style:inherit;--shiki-dark:#7F848E;--shiki-dark-font-style:italic\"># 如果启动失败，自动重试，因为开机自启大概率报错网络问题\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D73A49;--shiki-dark:#C678DD\">Restart\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;--shiki-dark:#ABB2BF\">=\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;--shiki-dark:#98C379\">always\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D73A49;--shiki-dark:#C678DD\">RestartSec\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;--shiki-dark:#ABB2BF\">=\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;--shiki-dark:#98C379\">30\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#61AFEF\">[Install]\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#D73A49;--shiki-dark:#C678DD\">WantedBy\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;--shiki-dark:#ABB2BF\">=\u003C\u002Fspan>\u003Cspan style=\"color:#24292E;--shiki-dark:#98C379\">default.target\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp data-marked-line=\"84\"> 启动&amp;开机自启\u003C\u002Fp>\n\u003Cpre data-marked-line=\"85\" data-lang=\"sh\" data-shiki>\u003Ccode class=\"language-sh\">\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#61AFEF\">sudo\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> systemctl\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> start\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> cloudflared-tunnel.service\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6F42C1;--shiki-dark:#61AFEF\">sudo\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> systemctl\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> enable\u003C\u002Fspan>\u003Cspan style=\"color:#032F62;--shiki-dark:#98C379\"> cloudflared-tunnel.service\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp data-marked-line=\"90\">&emsp;&emsp;以上完成后，http服务便可以正常使用，访问\u003Ccode>http:\u002F\u002Ffile.example.com\u002Fwtf\u003C\u002Fcode>相当于访问服务器的\u003Ccode>http:\u002F\u002Flocalhost:9527\u002Fwtf\u003C\u002Fcode>。服务端到此已配置完毕。\u003C\u002Fp>\n\u003Ch4 data-marked-line=\"91\">\u003Csup class=\"fake-head\" id=\"ssh%E8%AE%BF%E9%97%AE\">\u003C\u002Fsup>\u003Ca class=\"header-link\" href=\"#ssh%E8%AE%BF%E9%97%AE\">ssh访问\u003C\u002Fa>\u003C\u002Fh4>\u003Cp data-marked-line=\"92\">&emsp;&emsp;需要在客户端也安装cloudflared，安装方式和\u003Ca href=\"#id-%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%AE%89%E8%A3%85cloudflared\">上面\u003C\u002Fa>一样，我的客户端是Windows，下载\u003Cstrong>cloudflared-windows-amd64.exe\u003C\u002Fstrong>文件，然后\u003Ca href=\"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fcloudflare-one\u002Fconnections\u002Fconnect-apps\u002Fuse_cases\u002Fssh\u002F#2-connect-as-a-user\" target=\"_blank\">添加一个ssh配置\u003C\u002Fa>：\u003C\u002Fp>\n\u003Cpre data-marked-line=\"93\" data-lang=\"properties\" data-shiki>\u003Ccode class=\"language-properties\">\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#98C379\">Host ssh.example.com\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#6A737D;--shiki-light-font-style:inherit;--shiki-dark:#7F848E;--shiki-dark-font-style:italic\">  # 把 D:\\tools\\cloudflared-windows-amd64.exe 改成你自己的目录\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#24292E;--shiki-dark:#98C379\">  ProxyCommand D:\\tools\\cloudflared-windows-amd64.exe access ssh --hostname %h\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp data-marked-line=\"98\">&emsp;&emsp;使用\u003Ccode>ssh yunyuyuan@ssh.example.com\u003C\u002Fcode>即可ssh登录。\u003C\u002Fp>\n\u003Ch4 data-marked-line=\"99\">\u003Csup class=\"fake-head\" id=\"vnc%E8%BF%9C%E7%A8%8B%E6%A1%8C%E9%9D%A2\">\u003C\u002Fsup>\u003Ca class=\"header-link\" href=\"#vnc%E8%BF%9C%E7%A8%8B%E6%A1%8C%E9%9D%A2\">vnc远程桌面\u003C\u002Fa>\u003C\u002Fh4>\u003Cp data-marked-line=\"100\">&emsp;&emsp;客户端使用vnc远程桌面访问服务器(假设服务器已经开启了vnc server)，需要先在客户端的命令行里执行\u003Ccode>cloudflared access tcp --hostname vnc.example.com --url tcp:\u002F\u002Flocalhost:5901\u003C\u002Fcode>，这个命令把\u003Cspan style=\"text-decoration: underline\">vnc.example.com(对应服务器的tcp:\u002F\u002Flocalhost:5900)\u003C\u002Fspan>映射到客户端本地的\u003Cspan style=\"text-decoration: underline\">tcp:\u002F\u002Flocalhost:5901\u003C\u002Fspan>。\n&emsp;&emsp;然后我们用vnc viewer，或者其他vnc软件，使用\u003Ccode>localhost:5901\u003C\u002Fcode>登录VNC。\u003C\u002Fp>\n\u003Ch1 data-marked-line=\"102\">\u003Csup class=\"fake-head\" id=\"%E6%B5%8F%E8%A7%88%E5%99%A8%E8%AE%BF%E9%97%AESSH-amp;VNC\">\u003C\u002Fsup>\u003Ca class=\"header-link\" href=\"#%E6%B5%8F%E8%A7%88%E5%99%A8%E8%AE%BF%E9%97%AESSH-amp;VNC\">浏览器访问SSH&amp;VNC\u003C\u002Fa>\u003C\u002Fh1>\u003Cp data-marked-line=\"103\">&emsp;&emsp;浏览器本身不支持ssh和vnc，cloudflare的\u003Ca href=\"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fcloudflare-one\u002Fapplications\u002F\" target=\"_blank\">application\u003C\u002Fa>提供了ssh和vnc浏览器渲染功能。首先，\u003Ca href=\"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fcloudflare-one\u002Fapplications\u002Fconfigure-apps\u002Fself-hosted-apps\u002F\" target=\"_blank\">创建一个application\u003C\u002Fa>，域名输入\u003Ccode>vnc.example.com\u003C\u002Fcode>，在Settings界面选择\u003Cstrong>Browser rendering\u003C\u002Fstrong>为VNC：\n\u003Cspan class=\"image-container\">\u003Cimg data-viewer alt=\"选择VNC\" title=\"选择VNC\" style=\"width: 70% !important;\" src=\"https:\u002F\u002Fr2-blog.yunyuyuan.net\u002FcNJr8FCGI49bgmU.png\"\u002F>\u003Csmall class=\"desc\">选择VNC\u003C\u002Fsmall>\u003C\u002Fspan>\n&emsp;&emsp;保存后，访问\u003Ccode>http:\u002F\u002Fvnc.example.com\u003C\u002Fcode>，输入密码登陆VNC(我的域名是vnc.yunyuyuan.net)：\n\u003Cspan class=\"image-container\">\u003Cimg data-viewer alt=\"浏览器上的VNC\" title=\"浏览器上的VNC\" src=\"https:\u002F\u002Fr2-blog.yunyuyuan.net\u002FdfzgtpqHKrWn2MQ.png\"\u002F>\u003Csmall class=\"desc\">浏览器上的VNC\u003C\u002Fsmall>\u003C\u002Fspan>\n&emsp;&emsp;SSH同理，域名输入\u003Ccode>ssh.example.com\u003C\u002Fcode>，\u003Cstrong>Browser rendering\u003C\u002Fstrong>选择SSH，保存后访问\u003Ccode>http:\u002F\u002Fssh.example.com\u003C\u002Fcode>可以看到一个终端界面。\u003C\u002Fp>\n\u003Ch1 data-marked-line=\"108\">\u003Csup class=\"fake-head\" id=\"Tips\">\u003C\u002Fsup>\u003Ca class=\"header-link\" href=\"#Tips\">Tips\u003C\u002Fa>\u003C\u002Fh1>\u003Cp data-marked-line=\"109\">&emsp;&emsp;上面把\u003Ccode>file.example.com\u003C\u002Fcode>等4个域名都用在了cloudflare tunnel，如果你的客户端有ipv6，此时不用通过cloudflare tunnel便可访问服务器，则可以新建一个\u003Ccode>file-direct.example.com\u003C\u002Fcode>的DNS解析，ip指向服务器的公网ipv6就可以了。\n&emsp;&emsp;做一个\u003Ca href=\"https:\u002F\u002Fsome-notes.yunyuyuan.net\u002Flinux-server\u002Finterface.html\" target=\"_blank\">门户界面\u003C\u002Fa>，把服务的URL都放到上面，切换是否使用代理，显示不同的链接。不代理的url是\u003Ccode>http:\u002F\u002Ffile-direct.example.com:9527\u003C\u002Fcode>，代理的url是\u003Ccode>http:\u002F\u002Ffile.example.com\u003C\u002Fcode>：\n\u003Cspan class=\"image-container\">\u003Cimg data-viewer alt=\"门户\" title=\"门户\" src=\"https:\u002F\u002Fr2-blog.yunyuyuan.net\u002FgxdpAHb43BhcCDU.png\"\u002F>\u003Csmall class=\"desc\">门户\u003C\u002Fsmall>\u003C\u002Fspan>\u003C\u002Fp>\n",[19,23,27,30,33,36,39,42,45],{"size":20,"text":21,"url":22},"big","安装","%E5%AE%89%E8%A3%85",{"size":24,"text":25,"url":26},"small","前置条件","%E5%89%8D%E7%BD%AE%E6%9D%A1%E4%BB%B6",{"size":24,"text":28,"url":29},"准备","%E5%87%86%E5%A4%87",{"size":24,"text":31,"url":32},"服务器安装cloudflared","%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%AE%89%E8%A3%85cloudflared",{"size":20,"text":34,"url":35},"配置与转发","%E9%85%8D%E7%BD%AE%E4%B8%8E%E8%BD%AC%E5%8F%91",{"size":24,"text":37,"url":38},"ssh访问","ssh%E8%AE%BF%E9%97%AE",{"size":24,"text":40,"url":41},"vnc远程桌面","vnc%E8%BF%9C%E7%A8%8B%E6%A1%8C%E9%9D%A2",{"size":20,"text":43,"url":44},"浏览器访问SSH&amp;VNC","%E6%B5%8F%E8%A7%88%E5%99%A8%E8%AE%BF%E9%97%AESSH-amp;VNC",{"size":20,"text":46,"url":46},"Tips","由于我家的网络只有ipv6，没有公网ipv4，导致两个问题： ipv4网络下，无法访问家里的服务。 常用端口(80,443)被屏蔽了，要访问的话，必须带上端口号，例如：example.com:9527 cloudflare tunnel很好地解决了这两个问题，有了它我们甚至不需要公网ipv4或ipv…",[49,57,67,78,86],{"item":50,"count":56},{"title":51,"len":52,"tags":53,"id":54,"time":55,"modifyTime":55,"encrypt":13,"showComments":14,"customSlug":15},"stardust: 年付5欧元的ipv6主机，性价比王者",243,[9,8],6167,1678125830054,2,{"item":58,"count":66},{"title":59,"len":60,"tags":61,"id":62,"customSlug":63,"time":64,"modifyTime":65,"showComments":14,"encrypt":13},"个人 vide coding 的经历",1156,[8],8485,"vibe-coding",1787219870808,1787408949138,1,{"item":68,"count":66},{"title":69,"len":70,"tags":71,"id":74,"time":75,"modifyTime":76,"showComments":14,"encrypt":13,"customSlug":77},"关于本站的重构 (又双叒叕重构了)",1503,[72,73,8],"前端","vue",8500,1741528184917,1759579038298,"about-renovate",{"item":79,"count":66},{"title":80,"len":81,"tags":82,"id":83,"time":84,"modifyTime":85,"encrypt":13,"showComments":14,"customSlug":15},"记录油猴脚本的开发过程",2633,[8],2064,1709708038546,1712060506584,{"item":87,"count":66},{"title":88,"len":89,"tags":90,"id":91,"time":92,"modifyTime":93,"encrypt":13,"showComments":14,"customSlug":15},"详解SICP习题1.19",4629,[8],6711,1686738135301,1686880845509,1793351207935]