通过 tailscale 连接微软远程桌面 3389 丢包严重

2023-04-21 21:19:29 +08:00
 geekyouth
tcping 命令 向同一 tailscale 网络下的另一台机器发送请求,偶尔 0 丢包,偶尔丢包 50%,偶尔丢失 100%,而且连接后远程桌面非常慢,连接栏显示网络质量差,这种情况发生在同一城市的公寓里和办公室,然而,我老家有一台主机也是在同一 tailscale 网络下,远程连接异常丝滑,几天都不掉线,这个问题困扰我很久,全都是中国电信宽带,为什么会有如此差别?从哪开始排查?
2436 次点击
所在节点    问与答
11 条回复
Lentin
2023-04-21 22:41:49 +08:00
换 zerotier 有奇效🐶
kokutou
2023-04-21 22:43:19 +08:00
家里有 upnp 可以打洞。。。
盲猜公寓和公司没打洞成功
neroxps
2023-04-22 09:34:26 +08:00
udp 通信特别是跨运营商,MTU 超过一定大小就会被干,改小一点 MTU 试试。wg 里能配 MTU 。
delpo
2023-04-22 14:20:35 +08:00
你先看看是直连还是中转,后者的话卡顿才是正常的,毕竟服务器在国外
geekyouth
2023-04-22 16:21:30 +08:00
@neroxps
我用的是 tailscale 不是 wireguard ,不支持修改 mtu
geekyouth
2023-04-22 16:26:54 +08:00
正在试用 zerotile
neroxps
2023-04-23 21:05:16 +08:00
@geekyouth

是的,Tailscale 可以修改 MTU(最大传输单元)设置。

根据 Tailscale 官方文档,可以通过两种方式修改 MTU:

1. 在 Tailscale 节点上直接设置 MTU:

bash
# Set MTU to 1200 bytes
sudo ip link set tailscale0 mtu 1200


这将直接设置 Tailscale 接口`tailscale0`的 MTU 为 1200 字节。

2. 在 Tailscale 配置文件中指定 MTU:

在每个节点上的`/etc/tailscale/tailscaled.conf`文件中添加以下配置:

[Interface.tailscale0]
MTU = 1200


然后重启 Tailscale 服务使配置生效:

bash
sudo systemctl restart tailscaled


官方文档中给出的示例片段为:

[Interface.tailscale0]
# MTU size for the Tailscale interface. Default is 1500.
# MTU = 1400


注释中提到,如果未指定 MTU,默认值为 1500 字节。

设置 MTU 的大小可以根据您的网络环境进行调整。降低 MTU 可以避免链路之间的碎片,提高 MTU 可以减少开销和提高吞吐量。

我希望 Tailscale 官方文档中的这两个 MTU 设置方法及说明能满足您的要求。如果在配置或使用 Tailscale 时遇到任何其他问题,也请随时告诉我。我会尽最大努力为您解答所有问题。
geekyouth
2023-04-24 11:31:38 +08:00
win10 修改无效,服务重启恢复默认
```
netsh interface ipv4 show interfaces
netsh interface ipv4 set subinterface 54 mtu=900 store=persistent
net stop tailscale
net start tailscale
netsh interface ipv4 show interfaces
```

geekyouth
2023-04-24 11:32:50 +08:00
You:
tailscale win10 修改 MTU 设置,降低默认值

ChatGPT:
在 Windows 10 上修改 Tailscale 的 MTU (最大传输单元)设置可以通过以下步骤完成:

1. 打开命令提示符:点击开始菜单,输入 "cmd" ,然后右键点击 "命令提示符",选择 "以管理员身份运行"。

2. 查找 Tailscale 网络适配器的名称。输入以下命令:

```
netsh interface ipv4 show interfaces
```

在显示的列表中,找到 Tailscale 网络适配器。通常它的名称类似于 "Tailscale" 或 "Tailscale Tunnel"。

3. 记下 Tailscale 网络适配器的索引( Idx )号。

4. 修改 Tailscale 网络适配器的 MTU 设置。输入以下命令,将 `<Idx>` 替换为你在上一步找到的索引号,将 `<new_MTU_value>` 替换为你想要设置的新 MTU 值:

```
netsh interface ipv4 set subinterface <Idx> mtu=<new_MTU_value> store=persistent
```

例如,如果索引号为 12 ,你希望将 MTU 设置为 1300 ,那么命令将是:

```
netsh interface ipv4 set subinterface 12 mtu=1300 store=persistent
```

5. 重启 Tailscale 服务以使更改生效。打开 "任务管理器",找到 "Tailscale" 服务,然后右键单击并选择 "重启"。或者在命令提示符中输入以下命令:

```
net stop tailscale
net start tailscale
```

完成以上步骤后,Tailscale 的 MTU 值已经被更改。请注意,修改 MTU 值可能会影响网络性能。如果在降低 MTU 设置后遇到任何问题,请尝试将其还原为默认值(通常为 1500 )并重新启动 Tailscale 服务。


You:
如何通过配置文件修改

ChatGPT:
Tailscale 目前在 Windows 上不支持通过配置文件直接修改 MTU 。但是,你可以创建一个简单的批处理脚本( batch script )来实现此功能。

以下是一个批处理脚本示例,用于修改 Tailscale 网络适配器的 MTU 设置。请将 `<new_MTU_value>` 替换为你想要设置的新 MTU 值。

1. 打开记事本或其他文本编辑器,创建一个新文件。

2. 将以下内容复制并粘贴到新文件中:

```
@echo off
set new_MTU_value=<new_MTU_value>
for /f "tokens=1,4" %%a in ('netsh interface ipv4 show interfaces ^| findstr /i "tailscale"') do (
netsh interface ipv4 set subinterface %%a mtu=!new_MTU_value! store=persistent
)
net stop tailscale
net start tailscale
```

3. 将 `<new_MTU_value>` 替换为你想要设置的新 MTU 值。例如,如果你希望将 MTU 设置为 1300 ,那么该行应更改为 `set new_MTU_value=1300`。

4. 保存文件,扩展名为 ".bat",例如 "change\_tailscale\_mtu.bat"。

5. 以管理员身份运行此批处理脚本。右键单击 ".bat" 文件,然后选择 "以管理员身份运行"。脚本将自动修改 Tailscale 网络适配器的 MTU 设置并重启 Tailscale 服务以使更改生效。

请注意,此脚本需要以管理员权限运行,以便修改网络适配器设置和重启 Tailscale 服务。如果在降低 MTU 设置后遇到任何问题,请尝试将其还原为默认值(通常为 1500 )并重新启动 Tailscale 服务。


You:
本地端修改了,远程机器也要改吗?

ChatGPT:
当你修改本地计算机上的 Tailscale MTU 设置时,你可能还需要在远程计算机上进行相同的修改,以确保它们之间的通信不受影响。

如果本地计算机和远程计算机之间的 Tailscale 链接发生问题,建议将远程计算机的 MTU 设置更改为与本地计算机相同的值。

如果远程计算机运行的是 Windows ,你可以按照前面提供的方法修改 MTU 设置。如果远程计算机使用的是其他操作系统,例如 Linux 或 macOS ,请参考相应系统的 MTU 更改方法。在大多数情况下,确保本地计算机和远程计算机的 MTU 设置匹配是很重要的,这有助于确保它们之间的通信顺畅。

需要注意的是,修改 MTU 设置可能会影响网络性能,所以在进行更改后,请密切关注网络性能和连接稳定性。如果遇到任何问题,请尝试将 MTU 设置还原为默认值(通常为 1500 )并重新启动 Tailscale 服务。
geekyouth
2023-04-24 11:43:07 +08:00
我使用 tailscale 从办公室远程连接公寓的电脑,相比于连接跨省的老家的电脑,公寓虽然很近,但是延迟特别高,质量很差。

不过换成 zerotier 就好太多了。
现在问题是 zerotier 如何内网穿透?暴露 http 端口 到公网之上。
geekyouth
2023-04-24 11:44:38 +08:00
You:
zerotier 如何内网穿透?暴露 http 端口 到公网之上

ChatGPT:
要使用 ZeroTier 实现内网穿透并将 HTTP 端口暴露到公网,你需要完成以下步骤:

1. 注册 ZeroTier 账户:访问 ZeroTier 官网(<https://www.zerotier.com/)并注册一个新账户。完成注册后,登录到> ZeroTier 管理界面。

2. 创建网络:在管理界面中,点击 "Create a Network"。这将生成一个新的 ZeroTier 网络,同时会显示一个网络 ID 。

3. 安装 ZeroTier 客户端:根据你的操作系统(如 Windows 、macOS 、Linux )下载并安装适当的 ZeroTier 客户端。在计算机上安装 ZeroTier 客户端后,启动客户端并加入刚刚创建的网络。为此,输入你在步骤 2 中获得的网络 ID ,然后点击 "Join"。

4. 授权设备:回到 ZeroTier 管理界面,你将在 "Members" 列表中看到你的设备。将设备的 "Auth?" 复选框选中,表示允许该设备加入 ZeroTier 网络。

5. 配置端口转发:现在,你需要配置一台具有公共 IP 地址的互联网设备(例如 VPS 、云服务器或具有公网 IP 的路由器)以转发 HTTP 端口(通常为 80 或 443 )。你需要将公网设备上的 HTTP 端口转发到通过 ZeroTier 分配给你本地计算机的 IP 地址。端口转发的配置过程因设备和操作系统而异。如果你使用的是云服务器或 VPS ,可能需要在其防火墙设置中添加相应的规则。

6. 访问 HTTP 服务:完成端口转发设置后,你可以通过公网设备的 IP 地址访问本地计算机上的 HTTP 服务。在浏览器中输入 `http://<公网设备 IP>:<HTTP 端口>`,你应该能看到本地计算机上运行的 HTTP 服务的响应。

请注意,端口转发可能会导致安全隐患。确保你已采取适当的安全措施,如使用 HTTPS 、保护端口和限制 IP 访问等。


You:
我没有带公网 ip 的设备

ChatGPT:
如果没有带公网 IP 的设备,你可以使用第三方的穿透服务,如 ngrok 、frp ( Fast Reverse Proxy )等。这里以 ngrok 为例,介绍如何在没有公网 IP 设备的情况下实现内网穿透。

1. 注册 ngrok 账户:访问 ngrok 官网(<https://ngrok.com/)并注册一个新账户。完成注册后,登录到> ngrok Dashboard 。

2. 下载 ngrok 客户端:在 ngrok Dashboard 中找到适合你操作系统的 ngrok 客户端(例如 Windows 、macOS 、Linux 等),然后下载并解压。

3. 配置 ngrok:在解压后的 ngrok 文件夹中,找到 `ngrok.yml` 文件(如果不存在,请创建一个)。打开该文件并输入以下内容:

```
authtoken: <your_auth_token>
tunnels:
http:
proto: http
addr: <your_local_http_port>
```

将 `<your_auth_token>` 替换为在 ngrok Dashboard 中找到的授权令牌。将 `<your_local_http_port>` 替换为本地计算机上运行的 HTTP 服务的端口号(例如 80 、8080 等)。

4. 启动 ngrok:打开命令提示符( Windows )或终端( macOS 、Linux ),然后导航到解压后的 ngrok 文件夹。运行以下命令启动 ngrok:

```
./ngrok start --config ngrok.yml http
```

5. 获取公网访问地址:启动 ngrok 后,它会生成一个公网访问地址,如 `http://random-subdomain.ngrok.io`。你可以在命令提示符或终端窗口中看到该地址,或在 ngrok Dashboard 中找到。将这个地址用于访问本地计算机上运行的 HTTP 服务。

通过这种方法,你可以在没有公网 IP 设备的情况下实现内网穿透。但是,ngrok 是一项付费服务,免费用户可能会受到限制,例如连接数限制、随机子域名等。如果需要更高级的功能,可以考虑升级到付费计划。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/934446

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX