<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Tailscale on Tailcat</title><link>https://tailcat.cn/blog/tailscale/</link><description>Recent content in Tailscale on Tailcat</description><generator>Hugo</generator><language>zh-CN</language><atom:link href="https://tailcat.cn/blog/tailscale/index.xml" rel="self" type="application/rss+xml"/><item><title>Home</title><link>https://tailcat.cn/</link><pubDate>Fri, 03 Jan 2020 00:00:00 +0000</pubDate><guid>https://tailcat.cn/</guid><description>&lt;p align="center"&gt;
 &lt;img src="https://r2.nodeb.net/imgs/tailcat.png" alt="Tailcat" title="Tailcat" width="149" height="176"&gt;
&lt;/p&gt;
&lt;p align="center"&gt;&lt;em&gt;"Tailscale without Tailscale, by Tailscale"&lt;/em&gt;&lt;/p&gt;
&lt;h1 id="tailcat"&gt;Tailcat&lt;/h1&gt;
&lt;p&gt;Tailcat是Tailscale开源组件的一个重制版，可以像&lt;a href="https://en.wikipedia.org/wiki/Netcat"&gt;netcat&lt;/a&gt;一样工作，使用Tailscale的数据面，但不使用Tailscale的控制面。Tailscale数据面(内部称为magicsock)为两台机器之间提供点对点的WireGuard®加密隧道，DERP则作为NAT穿透的通信备用通道，以及在NAT穿透失败时的最终中继。你可以不通过Tailscale控制面，随意以任何方式交换tailcat连接的元数据。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;tailcat&lt;/code&gt;CLI基于tailcat Go库(可通过github.com/tailscale/tailcat导入)构建。&lt;/p&gt;
&lt;p&gt;无论你是把&lt;code&gt;tailcat&lt;/code&gt;当作CLI工具还是库来用，一端都会运行&lt;code&gt;tailcat&lt;/code&gt;服务器(监听器)并获取一个临时令牌。另一端则把这个令牌传给&lt;code&gt;tailcat&lt;/code&gt;的客户端来建立连接。双方之间的所有流量都会通过WireGuard进行端到端加密。初始连接会通过&lt;a href="https://tailcat.cn/#bring-your-own-derp-relay"&gt;DERP服务器&lt;/a&gt;启动，然后&lt;code&gt;magicsock&lt;/code&gt;会执行NAT穿透，在可能的情况下升级为直接的点对点UDP连接(正常情况)。&lt;/p&gt;
&lt;p&gt;不需要Tailscale账号，也不需要管理员(root)权限，它不会更改你的路由表、DNS等配置, &lt;code&gt;tailcat&lt;/code&gt;只是一个用户空间的库和命令行工具。&lt;/p&gt;
&lt;p&gt;而且这一切都是开源的。&lt;/p&gt;
&lt;p&gt;你可以使用我们免费的限速DERP中继(&lt;a href="https://tailcat.dev/derpmap.json"&gt;https://tailcat.dev/derpmap.json&lt;/a&gt;)，或者你也可以&lt;a href="https://github.com/tailscale/tailscale/tree/main/cmd/derper#derp"&gt;自己搭建一个DERP&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;这里有一个实验性的浏览器网页版演示(tailcat被编译成了WebAssembly)，地址为&lt;a href="https://tailscale.github.io/tailcat/"&gt;https://tailscale.github.io/tailcat/&lt;/a&gt;，它可以发送和接收文件或文本，并与CLI互操作。浏览器的流量仅通过DERP中继，除非支持&lt;a href="https://github.com/tailscale/tailcat/issues/4"&gt;WebRTC&lt;/a&gt;才会直接连接。&lt;/p&gt;
&lt;h2 id="安装tailcat"&gt;安装tailcat&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ go install github.com/tailscale/tailcat/cmd/tailcat@latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;也可以通过Nix flakes方式运行或安装:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ nix run github:tailscale/tailcat
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ nix profile install github:tailscale/tailcat
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="使用tailcat"&gt;使用tailcat&lt;/h2&gt;
&lt;h3 id="标准输入输出管道"&gt;标准输入/输出管道&lt;/h3&gt;
&lt;p&gt;启动监听服务，显示临时地址:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ tailcat
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#60a0b0;font-style:italic"&gt;# Selected bootstrap relay region 302, San Francisco&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#60a0b0;font-style:italic"&gt;# 🐈 Server listening with new address: tcomFwWCCcjS5nKNqAod034nWoJZW0LZqDhhC8U_dKdnDRYQ8uNGFpGQEu&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#666"&gt;(&lt;/span&gt;hangs, waiting...&lt;span style="color:#666"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;客户端发送内容：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ &lt;span style="color:#007020"&gt;echo&lt;/span&gt; hello | tailcat tcomFwWCCcjS5nKNqAod034nWoJZW0LZqDhhC8U_dKdnDRYQ8uNGFpGQEu
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;服务端解析并显示内容:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ tailcat
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#60a0b0;font-style:italic"&gt;# Selected bootstrap relay region 302, San Francisco&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#60a0b0;font-style:italic"&gt;# 🐈 Server listening with new address: tcomFwWCCcjS5nKNqAod034nWoJZW0LZqDhhC8U_dKdnDRYQ8uNGFpGQEu&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hello
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="通过隧道暴露本地端口"&gt;通过隧道暴露本地端口&lt;/h3&gt;
&lt;p&gt;将本地TCP端口转发到localhost来提供服务：&lt;/p&gt;</description></item></channel></rss>