配置DDNS使得移动设备KDEConnect自动相互识别

KDE Connect简介

KDE Connect是一个功能强大的局域网设备交互工具,由KDE社区开发,但支持各种Linux发行版、Android、Windows、MacOS等平台,可以实现设备之间的文件传输、剪贴板共享、通知同步、远程控制等功能。我个人认为非常便利的是局域网高速的文件传输、手机和电脑剪贴板共享和消息同步,以及有人来电时电脑上弹出来电通知,并暂停正在播放的视频,挂电话后又继续的功能。具体的功能可以参考官方文档:userbase.kde.org/KDEConnect/...

连接时IP地址变动的问题

KDE Connect的连接,是在移动端设备上输入需要连接的PC或者另一移动设备的IP或者可解析到IP的域名来实现的。如果是家用路由器的环境,一般很少有内网IP的变动,KDE Connect可以长期稳定地连接。但是,在学校、企业等场景,我们往往是通过DHCP获取IP的,从而会遇到变化,每次都需要在一台设备上查看IP地址,然后用移动设备连接,这样就很不方便。

使用ZeroTier内网穿透进行连接

一种可行的方法是使用内网穿透,通过虚拟局域网的IP地址进行连接。这里比较推荐的是ZeroTier,其简介和基本使用方法可以参考 zhuanlan.zhihu.com/p/83849371 。推荐的原因是它有PC+安卓的客户端。但是,这种方法的不足在于安卓的ZeroTier是作为VPN服务运行的,而安卓手机上同时只能运行一个VPN服务,如果同时使用其他VPN就需要反复切换。而且这也要求连接的双方都额外运行一个内网穿透服务。

使用DDNS(动态域名解析)进行连接

上面已经提到,KDE COnnect是接受域名解析进行连接的。如果使用DDNS,定期将域名解析更新为自己现在的IP地址(公网和内网均可,但要在同一内网环境下),就可以解决需要手动输入IP的问题。为此,我们需要两个条件:1. 可靠且最好免费的DDNS服务提供商,这里我选择的是 dynv6.com/ ,免费注册,可以提供若干个DDNS域名,支持IPV4/6地址;2. 与DDNS服务器通讯的客户端服务,能够定期更新IP地址。这里我选择的是 github.com/ddclient/dd...

Dynv6配置

Dynv6一侧的操作非常简单,使用邮箱注册,配置需要的DDNS域名就可以了。网站提供可以检查当前解析的IP地址的面板,以及相关配置教程,其中就有一段关于ddclient的配置:

bash 复制代码
protocol=dyndns2
server=dynv6.com
login=none
password='xxx'
mydomain.dynv6.net

如果处在登录状态,上面的password和域名就会自动显示为你自己的,直接复制使用即可。不过,我们还需要进行一些修改以适应具体情况。

ddclient在Linux上的配置

虽然Debian apt等包管理器中有ddclient,但是版本较旧,实测很可能有严重bug,因此建议直接从上述GitHub仓库中获取最近的Release(注意不是clone仓库,因为开发中的代码实测也有强制使用http的bug)进行安装。这里建议阅读项目中的教程。安装完成后,我们可以在/etc/ddcleint下编写相应的配置文件,如新建一个ddclient.conf。我使用的ipv4和ipv6版本分别是:

bash 复制代码
# ddclient4.conf
ssl=yes
protocol=dyndns2
use=if, if=wlp1s0
server=dynv6.com
login=none
password='xxx'
mydomain.dynv6.net

# ddclient6.conf
ssl=yes
protocol=dyndns2
use=no
usev6=ifv6, ifv6=wlp1s0
server=dynv6.com
login=none
password='xxx'
mydomain.dynv6.net

相比dynv6上的示例,这里主要是根据社区中的建议,补充了ssl=yes,以及配置了具体获取IP地址的方法。我的网卡名称为wlp1s0,需要相应修改为自己的网卡名称。这里获取到的IP地址等效于执行ifconfig wlp1s0的效果:

bash 复制代码
wlp1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet xxx  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 yyy  prefixlen 64  scopeid 0x20<link>
        inet6 zzz  prefixlen 128  scopeid 0x0<global>
        ...

上面xxx和zzz的内容就是IPV4/6地址,可以用来检查。

需要注意的是,ddclient还支持通过访问url的方法查询自己的IP,这在一般情况下是可用的,但是如果使用了VPN,远程查到的IP就不是真实IP,不能用于局域网连接。使用这种方法的配置文件大致如下,其中web是你的IP地址查询服务的url:

bash 复制代码
ssl=yes
protocol=dyndns2
use=web, web=https://ifconfig.co
server=dynv6.com
login=none
password='xxx'
mydomain.dynv6.net

ddclient的作者强烈建议初次配置的时候,使用如下的命令进行debug,其中file参数后跟的是具体的配置文件路径:

bash 复制代码
sudo ddclient -daemon=0 -debug -verbose -noquiet -file <conf-path>

如果确认无误,可以根据教程在Linux上配置服务来自动更新IP,当然也可以手动执行命令。这样,我们在KDE Connect中填入自己的DDNS域名就可以正常连接了。

安卓手机使用Termux配置ddclient

安卓Termux上的ddclient和Linux很像但是略有不同,可以参考 github.com/termux/term... 进行安装,涉及安装Perl模块的依赖和修改文件中的路径以符合Termux要求。安装完成后,我们可以使用与上面类似的配置文件,但是需要注意的是,Termux上的ifconfig, ip等工具在没有root的情况下只能获取到ipv4地址,需要根据自己的手机是否root来进行取舍,不过一般都可以使用ipv4地址进行连接。Termux中也没有方便的服务管理,可以在需要的时候手动运行ddclient来更新IP。

本文由博客一文多发平台 OpenWrite 发布!

相关推荐
且从容.33 分钟前
ubuntu安装flink
linux·ubuntu·flink
爱和冰阔落2 小时前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
程序员沉梦听雨2 小时前
WSL2的安装与使用
linux·wsl
微小的鱼2 小时前
Linux的渲染与显示系统链路
android·java·linux
lisanmengmeng3 小时前
alertmanger 标签 rules 打上分组标签
linux·运维·服务器
Android系统攻城狮3 小时前
Linux FFmpeg深度解析之av_write_frame调用流程与实战(三十三)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频
Linux-lucky15 小时前
45-Linux学习之旅之防火墙与WEB加固
linux·前端·网络·学习·ubuntu
禁默15 小时前
启元 Q1 二次开发实践:Ubuntu 部署与仿真验证,从 PrimeConsole 到 ROS 2 Humble + RViz
linux·运维·ubuntu
skywalk816316 小时前
把 去也网站 从 Ubuntu 搬到 FreeBSD:一次 Service Jail + nginx 的部署实录
linux·运维·nginx·ubuntu·freebsd
爱莉希雅&&&18 小时前
GitLab 完整学习笔记
linux·运维·服务器