为什么 IPv6 会破坏 Ubuntu 12.04 中的网络?

为什么 IPv6 会破坏 Ubuntu 12.04 中的网络?

好的,我有一个运行良好的 Ubuntu 12.04 无头服务器。它非常开心。它是我的路由器/防火墙/DNS/等。eth0 是 WAN,eth1 是 LAN。

我可以轻松连接我的 IPv6 Hurricane Electric 隧道,我的服务器将继续正常工作,并查看和浏览 ip4 和 ip6 站点。太棒了。

但是如果 ip6 正在运行,我无论如何也无法让我的网络的其余部分浏览我网络之外的任何内容。

但如果我回滚更改,我的网络就没问题了。

DNS 似乎仍然有效,因为我可以从客户端机器 ping 并且它会解析地址,但它实际上不会返回 ping。

我可以提供哪些信息来帮助大家帮助我?

我猜是添加 ip6 后无法正确从 eth1 桥接到 eth0。但我搞不清楚为什么 ip4 桥接会断开。

这是我的工作界面:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
        address <ISP-STATICIP>
        netmask 255.255.255.240
        network <ISP-Assigned>
        broadcast <ISP-Assigned>
        gateway <ISP-Assigned>
        dns-nameservers 208.67.222.222 208.67.220.220 8.8.8.8 8.8.4.4
        post-up iptables-restore < /etc/iptables.up.rules
        dns-domain tymanthius.net
        # dns-* options are implemented by the resolvconf package, if installed
        MTU 9000

auto eth1
iface eth1 inet static
        address 192.168.1.1
        netmask 255.255.255.0
        network 192.168.1.0
        broadcast 192.168.1.255
        MTU 9000

这是坏的:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo eth0 eth1 he-ipv6
iface lo inet loopback

# The primary network interface
iface eth0 inet static
        address <ISP-STATICIP>
        netmask 255.255.255.240
        network <ISP-Assigned>
        broadcast <ISP-Assigned>
        gateway <ISP-Assigned>
        dns-nameservers 208.67.222.222 208.67.220.220 8.8.8.8 8.8.4.4 2620:0:ccc::2 2620:0:ccd::2 2001:4860:4860::8888 2001:4860:4860::8844
        dns-domain tymanthius.net
        gateway 98.175.23.209
        # dns-* options are implemented by the resolvconf package, if installed

iface eth1 inet static
        address 192.168.1.1
        netmask 255.255.255.0
        broadcast 192.168.1.255
        network 192.168.1.0

iface he-ipv6 inet6 v4tunnel
        endpoint 216.218.224.42
        address 2001:470:1f0e:1034::2
        netmask 64
        up ip -6 route add default dev he-ipv6
        down ip -6 route del default dev he-ipv6
        gateway 2001:470:1f0e:1034::3

iface eth0 inet6 static
        pre-up /sbin/modprobe -q ipv6 ; /bin/true
        address 2001:470:1f0e:1034::3
        netmask 64

iface eth1 inet6 static
        pre-up /sbin/modprobe -q ipv6 ; /bin/true
        address 2001:470:1f0e:1034::4
        netmask 64

我做的唯一其他更改是在 sysctrl.conf 中添加一行“net.ipv6.conf.default.forwarding=1”

答案1

你删除了

post-up iptables-restore < /etc/iptables.up.rules

IPv4 使用iptables和 IPv6 使用ip6tables。您的 iptables 配置中的更改可能会破坏您的 IPv4 连接。因此,您可能不想删除该行。它可能定义了在您的eth0eth1接口之间转发 IPv4 数据包的策略,因此这可能会破坏您的配置...

再往下看,您的 IPv6 配置已经损坏,但这不会影响您的 IPv4 连接。

对于隧道,您定义两个默认网关:

iface he-ipv6 inet6 v4tunnel
    endpoint 216.218.224.42
    address 2001:470:1f0e:1034::2
    netmask 64
    up ip -6 route add default dev he-ipv6
    down ip -6 route del default dev he-ipv6
    gateway 2001:470:1f0e:1034::3

up/down行中添加指向隧道设备的默认路由。该gateway行添加另一个指向隧道接口上未使用地址的默认路由(HE 始终为其隧道末端提供以 ::1 结尾的地址),因此会破坏一切。以下配置应该效果更好:

iface he-ipv6 inet6 v4tunnel
    endpoint 216.218.224.42
    address 2001:470:1f0e:1034::2
    netmask 64
    gateway 2001:470:1f0e:1034::1

然后你试图做不可能的事 :-) 你试图在你的链路上使用隧道使用的地址eth0。这不会奏效。隧道 IPv6 前缀是,是到2001:470:1f0e:1034::/64范围内的所有地址。即使隧道只使用该范围内的两个地址(和),你也不能在隧道以外的任何地方使用其他地址。2001:0470:1f0e:1034:0000:0000:0000:00002001:0470:1f0e:1034:ffff:ffff:ffff:ffff2001:470:1f0e:1034::12001:470:1f0e:1034::2

您的eth0链接似乎是您与 ISP 或上游网络的连接。如果它不提供 IPv6,则不要配置它,尤其是不要配置与其他链接冲突的地址。只需删除以下几行:

iface eth0 inet6 static
    pre-up /sbin/modprobe -q ipv6 ; /bin/true
    address 2001:470:1f0e:1034::3
    netmask 64

链接也是如此eth1。您不能在另一个接口上使用隧道的地址。以下操作不起作用:

iface eth1 inet6 static
    pre-up /sbin/modprobe -q ipv6 ; /bin/true
    address 2001:470:1f0e:1034::4
    netmask 64

在 tunnelbroker.net 创建 IPv6 隧道时,您有两个 /64。如果您的隧道有,2001:470:1f0e:1034::/64那么您的路由 /64 可能有2001:470:1f0f:1034::/64,但请检查您从 tunnelbroker.net 获得的信息以确认这一点。如果我是对的,那么正确的配置应该是:

iface eth1 inet6 static
    pre-up /sbin/modprobe -q ipv6 ; /bin/true
    address 2001:470:1f0f:1034::1
    netmask 64

然后你应该启用 IPv6 转发。/etc/sysctl.conf文件中应该有类似以下内容:

# Uncomment the next line to enable packet forwarding for IPv6
#  Enabling this option disables Stateless Address Autoconfiguration
#  based on Router Advertisements for this host
net.ipv6.conf.all.forwarding=1

为了完成配置,您可能还应该ip6tables像配置那样进行配置iptables

相关内容