dcsimg

绕过IPv6

一旦知道了围绕IPv6地址空间的方式,就可以玩了。

我们无畏的网络管理员将在其中学习如何建立本地IPv6网络,以及如何轻松轻松地连接到公共IPv6网络。

在前两期中,我们了解了许多 使用IPv6的好处 不仅仅是拥有更大的IP地址池,以及如何 read and understand IPv6addresses。现在让我们去网络游乐场,玩得开心。

预制局域网
在我们深入探讨之前,我必须警告您,Linux中的IPv6仍然很粗糙。核心工作大部分已经完成:您的发行版应立即提供支持,网络应用程序也应如此。但是,如果遇到意外的麻烦和障碍,请不要感到惊讶—这不是你的错。通常。

默认情况下,您的网络接口卡应该获取IPv6链接本地地址,因此可以开始使用它们了。这意味着您可以将一群人聚集在一起开会,无需路由器,服务器或任何外部工具即可实现即时连接。连接是否对您有好处,是一个单独的问题—这取决于您要使用的应用程序以及它们是否支持IPv6。

要查看您的Linux安装是否支持IPv6,请 ifconfig 命令显示所有内容:

$ /sbin/ifconfig
eth1      Link encap:Ethernet  HWaddr 00:03:6D:00:83:CF
          inet addr:192.168.1.10  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::203:6dff:fe00:83cf/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
[...]

我们可以ping通回送地址和本地链接地址。像这样ping回送:

$  ping 6 -c4 ::1
PING ::1(::1) 56 data bytes
64 bytes from ::1: icmp_seq=1 ttl=64 time=0.048 ms
64 bytes from ::1: icmp_seq=2 ttl=64 time=0.057 ms
64 bytes from ::1: icmp_seq=3 ttl=64 time=0.057 ms
64 bytes from ::1: icmp_seq=4 ttl=64 time=0.058 ms

--- ::1  ping  statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.048/0.055/0.058/0.004 ms

对IPv6链路本地地址执行ping操作比较麻烦-您必须指定接口,如下所示:

$  ping 6 -c4 -I eth1 fe80::203:6dff:fe00:83cf
PING fe80::203:6dff:fe00:83cf(fe80::203:6dff:fe00:83cf) from fe80::203:6dff:fe00:83cf eth1: 56 data bytes
64 bytes from fe80::203:6dff:fe00:83cf: icmp_seq=1 ttl=64 time=0.051 ms
64 bytes from fe80::203:6dff:fe00:83cf: icmp_seq=2 ttl=64 time=0.064 ms
64 bytes from fe80::203:6dff:fe00:83cf: icmp_seq=3 ttl=64 time=0.060 ms
64 bytes from fe80::203:6dff:fe00:83cf: icmp_seq=4 ttl=64 time=0.064 ms

--- fe80::203:6dff:fe00:83cf  ping  statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 0.051/0.059/0.064/0.010 ms

现在,我们通过ping多播地址来发现LAN上的其他IPv6本地链接主机:

$  ping 6 -I eth1 ff02::1
PING ff02::1(ff02::1) from fe80::203:6dff:fe00:83cf eth1: 56 data bytes
64 bytes from fe80::203:6dff:fe00:83cf: icmp_seq=1 ttl=64 time=0.058 ms
64 bytes from fe80::214:2aff:fe54:67d6: icmp_seq=1 ttl=64 time=1.27 ms (DUP!)
64 bytes from fe80::200:24ff:fec1:1df0: icmp_seq=1 ttl=64 time=14.5 ms (DUP!)
64 bytes from fe80::220:e0ff:fe8f:ea44: icmp_seq=1 ttl=64 time=17.8 ms (DUP!)

当您开始看到重复的地址时,请按Ctrl + C组合键停止。这显示了网络上具有链接本地IPv6地址的四台主机。这些也可以被ping通:

$  ping 6 -I eth1 fe80::214:2aff:fe54:67d6

纯IPv6
您可以拥有一个完全没有IPv4地址的纯IPv6 局域网 。您的NIC需要物理连接到网络,并且它们需要最少的配置。在Debian上, / etc / network / interfaces 看起来像这样:

# never mess with lo! Always have
# these lines
auto lo
iface lo inet loopback

# eth0 minimal config
iface eth0 inet manual

在Fedora(以及Red Hat和所有RH克隆)上,eth0配置文件深埋在文件树中,位于 / etc / sysconfig / network-scripts / ifcfg-eth0:

DEVICE=eth0
BOOTPROTO=none
ONBOOT=no
IPV6INIT=yes

在Debian上,即使没有配置,似乎在启动网络时仍会显示IPv6接口。在Fedora上运行 ifup [接口] 做到这一点。 跑 / sbin / ifdown 接着 / sbin / ifup 如果遇到任何接口Sass。

SSH和SCP
您已建立连接,可以开始使用了。你现在做什么?所有基本的Linux网络实用程序都支持IPv6。今天我们来看一下OpenSSH。

OpenSSH具有强大的本机IPv6支持,因此您可以登录到LAN主机并执行SSH和 scp 就像在IPv4上一样。然而 scp 手册页忽略了提到IPv6地址需要特殊的语法。本示例说明如何将本地文件“ coolstuff”复制到另一台PC:

$  scp   coolstuff \[fe80::220:e0ff:fe8f:ea44%eth1\]:

当我弄清楚这一点时,我已经快要杀人了。 IPv6地址必须用方括号括起来,然后必须用反斜杠将其转义。而且您仍然必须指定要使用的本地接口,并以百分号分隔-在本示例中为 %eth1。此示例显示如何登录到另一个远程用户的帐户,以及如何在其目标位置重命名该文件:

$  scp   coolstuff [email protected]\[fe80::220:e0ff:fe8f:ea44%eth1\]:coolstuff_copy

如果您做的不正确,scp会无助地告诉您

ssh: fe80: Name or service not known
lost connection

SSH连接是这样建立的,没有愚蠢的逃逸套路:

$ ssh fe80::20a:e4ff:fe40:8bfd%eth1

或者,您可以以其他用户身份登录:

$ ssh [email protected]::20a:e4ff:fe40:8bfd%eth1

分配全局IP
这些示例仅用于练习,因为您的实际示例来自Internet服务提供商分配给您的IPv6前缀池。在未连接到Internet的测试网络上执行此操作,或者关闭到Internet网关的任何路由,否则您可能会发现 ping 在互联网上徘徊。使用 ip 分配新地址的命令:

#  ip  -6 addr add 2001:0db8:0:f101::1/64 dev eth1

当您要ping或ssh到全局单播地址时,不必麻烦指定接口或转义括号:

#  ping 6 2001:0db8:0:f101::1
$ ssh 2001:0db8:0:f101::1
$  scp  wordcount \[2001:0db8:0:f101::1\]:

只要 scp 仍然很固执。

删除地址是通过以下命令完成的:

#  ip  -6 addr del 2001:0db8:0:f101::1/64 dev eth1

/ 64不是CIDR表示法,而是前缀的长度。即使我们总共可以使用128位,我们甚至还差一点就无法使用它们。该地址可用于接口的部分是64位,就像前缀一样。它的未压缩符号是0000:0000:0000:0001,或者比整个IPv4地址空间还多,后者是一个很小的32位。接口地址本身占用了整个四位,因此留出了扩展的空间。 (看到 part 2 学习使用 ip v6calc to calculate IPv6addresses.)

全局单播地址块将以不同的大小分配。如果您好奇,请访问 Iana.org 有关完整的信息。

是否要向同一接口或其他主机添加其他地址?非常简单:

#  ip  -6 addr add 2001:0db8:0:f101::2/64 dev eth1

只需依次以十六进制计数-01、02、03、04、05、06、07、08、09、0a,0b,0c,0d,0e,0f,10、11等。

IPv6Over the Internet
在互联网上进行实时测试和练习IPv6实在是不胜枚举。您可能很幸运,并且在真正的IPv6骨干网上拥有一个IPv6友好的ISP。另一个选择是在众多免费的IPv6 Internet隧道代理之一中获得一个帐户,这将使您可以并行测试运行服务以及并行运行IPv6和IPv4的各个方面,这在可预见的情况下将是这样。未来。

资源资源
SixXS list of IPv6tunnel brokers
IPv6&Linux-当前状态-发行版
网络应用程序的IPv6支持的当前状态
O'Reilly出色的标题,“ IPv6基本知识”和“ IPv6网络管理”

添加到del.icio.us | DiggThis

本文最初发表于2006年9月27日
通过网络更新新闻获取最新消息