You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

OS X从Android 7.1.1获双公网IPv6,如何固定地址用于SSH?

解决OS X通过Android 7.1.1获取公网IP用于SSH的问题

我来帮你梳理下解决思路,结合OS X和Android 7.1.1的网络特性,分两种核心方案来处理你的需求:

方案一:用永久地址绑定SSH(优先稳定)

你提到的「永久地址」应该是基于网卡硬件标识生成的IPv6稳定地址,虽然前缀会随移动网络变更,但地址的后缀是固定的。我们可以让OS X强制使用这个地址,再配合动态DNS解决前缀变化的问题。

1. 禁用OS X的IPv6临时隐私地址

临时地址是OS X默认开启的隐私保护机制,休眠唤醒后会自动更换。我们可以关闭对应网络接口的这个功能:

  • 先打开终端,执行以下命令找到Android共享网络对应的接口名称(比如en2usb0这类,找带有inet6地址的接口):
    ifconfig
    
  • 假设目标接口是en2,执行命令禁用临时地址:
    sudo sysctl -w net.inet6.conf.en2.use_tempaddr=0
    
  • 要让设置重启后依然生效,编辑/etc/sysctl.conf文件(没有的话直接创建):
    sudo nano /etc/sysctl.conf
    
    添加一行配置:
    net.inet6.conf.en2.use_tempaddr=0
    
    Ctrl+O保存,回车确认,再按Ctrl+X退出编辑器。

2. 用动态DNS(DDNS)适配前缀变化

移动网络的IPv6前缀可能随时变更,这时候需要DDNS自动同步当前的永久地址到域名:

  • 用Homebrew安装轻量的DDNS客户端ddclient
    brew install ddclient
    
  • 编辑配置文件/usr/local/etc/ddclient.conf,根据你的域名服务商(比如Cloudflare、No-IP)的文档填写参数,核心是让客户端抓取你永久IPv6地址的当前值,自动更新DNS记录。这样不管前缀怎么变,你都能通过域名连接SSH。

方案二:延长临时地址有效期(保留隐私特性)

如果不想放弃临时地址的隐私保护,我们可以延长它的有效期,避免休眠唤醒就失效:

1. 查看当前临时地址的有效期参数

终端执行以下命令,查看临时地址的偏好有效期和总有效期(单位:秒):

sysctl net.inet6.conf.all.temp_valid_lft net.inet6.conf.all.temp_prefered_lft

2. 修改有效期为更长时间

比如设置为7天(604800秒),执行命令:

sudo sysctl -w net.inet6.conf.all.temp_prefered_lft=604800
sudo sysctl -w net.inet6.conf.all.temp_valid_lft=604800

3. 永久生效设置

同样把配置添加到/etc/sysctl.conf

net.inet6.conf.all.temp_prefered_lft=604800
net.inet6.conf.all.temp_valid_lft=604800

注意:即使延长了有效期,当移动网络重新分配/64前缀时,临时地址还是会更换,所以依然需要配合DDNS来保证SSH连接的可用性。

额外说明:Android端的限制

Android 7.1.1的网络共享功能没有公开的设置项来调整IPv6地址策略。如果你的设备已经root,可以尝试修改系统的sysctl参数强制禁用临时地址,但操作风险较高,不推荐普通用户尝试。

内容的提问来源于stack exchange,提问作者cnst

火山引擎 最新活动