boxmoe_header_banner_img

Hello! 欢迎来到我的个人博客!

加载中

文章导读

v6 only服务器连接教程


avatar
shouw 2025年6月16日 12

IPv4环境SSH连接IPv6服务器指南

前言

现在很多VPS厂商为了节约IPv4地址成本,开始提供IPv6-only的服务器。如果本地网络只支持IPv4,想要SSH连接这些服务器就需要一些技巧。本文总结几种常用的方法。

基础知识

IPv6地址格式

完整格式:2001:0db8:0000:0000:0000:0000:0000:0001
简化格式:2001:db8::1
SSH使用:ssh user@[2001:db8::1]

重点:SSH连接IPv6地址必须用方括号 [] 包围,否则会解析失败

方法一:通过跳板服务器(推荐)

这是最简单可靠的方法,需要找一台同时有IPv4和IPv6的服务器作为跳板。

基本用法

# 传统两步法
ssh user@跳板服务器IP
ssh user@[2001:db8::1]

# 一步到位(SSH 7.3+)
ssh -J user@跳板服务器IP user@[2001:db8::1]

SSH配置文件

编辑 ~/.ssh/config

Host ipv6-server
    HostName 2001:db8::1
    User myuser
    ProxyCommand ssh jumphost -W %h:%p

Host jumphost
    HostName 跳板服务器IP
    User jumpuser

配置后直接用:ssh ipv6-server

端口转发

# 本地端口转发到IPv6服务器
ssh -L 2222:[2001:db8::1]:22 user@跳板服务器IP

# 新开终端连接
ssh -p 2222 user@localhost

方法二:IPv6隧道

通过隧道服务获得IPv6连接能力,一次配置后可以直接访问所有IPv6资源。

Hurricane Electric隧道(免费)

  1. 注册账号:https://tunnelbroker.net/
  2. 创建隧道,选择离你最近的服务器
  3. 获取配置参数并在本地配置

Linux配置

sudo ip tunnel add he-ipv6 mode sit remote 隧道服务器IP local 本地公网IP
sudo ip link set he-ipv6 up
sudo ip addr add 客户端IPv6地址/64 dev he-ipv6
sudo ip route add ::/0 dev he-ipv6

Windows配置(管理员权限)

netsh interface ipv6 add v6v4tunnel interface="HE_Tunnel" localaddress=本地IP remoteaddress=隧道服务器IP
netsh interface ipv6 add address interface="HE_Tunnel" address=客户端IPv6地址
netsh interface ipv6 add route prefix=::/0 interface="HE_Tunnel"

配置完成后就可以直接SSH了:ssh user@[2001:db8::1]

方法三:NAT64/DNS64

利用公共的NAT64网关,把IPv6地址映射成特殊的IPv4地址。

# 使用DNS64服务器
echo "nameserver 64.6.64.6" > /etc/resolv.conf

# 查询域名对应的映射地址
nslookup 目标域名

# 用映射后的IPv4地址连接
ssh user@映射的IPv4地址

这种方法的限制是只能访问有域名的IPv6服务器,纯IP地址无法使用。

方法四:6tunnel工具

专门用于IPv4/IPv6协议转换的工具。

安装

# Ubuntu/Debian
sudo apt install 6tunnel

# CentOS/RHEL
sudo yum install 6tunnel

# macOS
brew install 6tunnel

使用

# 创建本地转发
6tunnel -4 -l 2222 2001:db8::1 22

# SSH连接
ssh -p 2222 user@localhost

方法五:netcat代理

如果跳板服务器没有SSH但有netcat,可以这样连接:

# 通过跳板服务器的netcat代理
ssh -o ProxyCommand="ssh jumphost nc %h %p" user@[2001:db8::1]

测试和诊断

基本测试命令

# 测试IPv6连通性
ping6 2001:db8::1
ping6 google.com

# 测试SSH端口
nc -6 -v 2001:db8::1 22

# 查看本机IPv6配置
ip -6 addr show
ip -6 route show

SSH连接调试

# 详细输出,看到底哪里出了问题
ssh -vvv user@[2001:db8::1]

# 只测试连接,不执行命令
ssh -T user@[2001:db8::1]

常见坑点

1. 地址格式错误

# 错误写法
ssh user@2001:db8::1

# 正确写法
ssh user@[2001:db8::1]

2. 本地没有IPv6路由

# 检查路由表
ip -6 route show

# 手动添加路由(根据实际情况)
sudo ip -6 route add 2001:db8::/32 via 网关地址

3. 防火墙拦截

# 检查IPv6防火墙规则
sudo ip6tables -L

# 临时开放SSH端口
sudo ip6tables -A INPUT -p tcp --dport 22 -j ACCEPT

实用技巧

保持SSH连接

~/.ssh/config 里加上:

Host *
    TCPKeepAlive yes
    ServerAliveInterval 60
    ServerAliveCountMax 3

多重跳转

# 一条命令跳转多个服务器
ssh -J jump1,jump2,jump3 user@[2001:db8::1]

非标准端口

# IPv6服务器用了非标准SSH端口
ssh -p 2222 user@[2001:db8::1]

# 通过跳板连接非标准端口
ssh -J jumphost -p 2222 user@[2001:db8::1]

推荐的IPv6 DNS服务器

Google DNS:
  2001:4860:4860::8888
  2001:4860:4860::8844

Cloudflare DNS:
  2606:4700:4700::1111
  2606:4700:4700::1001

Quad9 DNS:
  2620:fe::fe
  2620:fe::9

总结

对于偶尔使用的情况,推荐跳板服务器方法:

ssh -J user@跳板IP user@[IPv6地址]

对于经常使用的情况,推荐配置IPv6隧道,一劳永逸。

每种方法都有适用场景,根据自己的需求选择即可。最重要的是记住IPv6地址要用方括号包围,这个细节经常被忽略。



评论(0)

查看评论列表

暂无评论


发表评论

表情 颜文字
插入代码