web-dev-qa-db-ja.com

Amazon VPCのIPv6:Ubuntuにデフォルトルートがありません

これで AmazonはIPv6を拡張しました eu-west-1を含むほとんどのグローバルリージョンへのVPCのサポートにより、インスタンスを接続しようとしています。残念ながら、ルーティングを機能させることができません。

移行ガイド の手順に従いました。つまり、IPv6 CIDRをVPCに関連付け、その一部を「パブリック」サブネットに割り当て、VPCルートテーブルを更新して送信しました_::/0_ igw(インターネットゲートウェイ)経由で、ルートテーブルがパブリックサブネットに割り当てられ、コンソールから新しいUbuntu 16.04インスタンスにIPv6アドレスが割り当てられていることを確認しました。

次に、ネットワーク設定に_iface eth0 inet6 dhcp_を追加して再起動することにより、DHCPv6を介して割り当てられたアドレスを取得するようにUbuntuを設定しました ここで説明

インスタンスを再起動すると起動に数分長くかかりますが、最終的にはログインでき、_ip a s_はIPv4とグローバルIPv6アドレスの両方が構成されていることを示しています。

ただし、v6ネットワークは機能していません。

_# ping6 www.google.com
connect: Network is unreachable
_

ルートテーブルには実際にデフォルトルートがありません。

_# ip -6 route
2001:DB8:1234:1234:1234:1234:1234:1234 dev eth0  proto kernel  metric 256
fe80::/64 dev eth0  proto kernel  metric 256  mtu 9001
_

_ip -6 route add default dev eth0_を介してデフォルトのv6ルートを手動で追加すると、正しいように見えるルーティングテーブルが作成されます。

_# ip -6 route
2001:DB8:1234:1234:1234:1234:1234:1234 dev eth0  proto kernel  metric 256
fe80::/64 dev eth0  proto kernel  metric 256  mtu 9001
default dev eth0  metric 1024
_

残念ながら、これは別のエラーになります:

_# ping6 www.google.com
PING www.google.com(dh-in-x6a.1e100.net) 56 data bytes
From dh-in-x6a.1e100.net icmp_seq=1 Destination unreachable: Address unreachable
From dh-in-x6a.1e100.net icmp_seq=2 Destination unreachable: Address unreachable
From dh-in-x6a.1e100.net icmp_seq=3 Destination unreachable: Address unreachable
_

DHCPv6-clientがデフォルトルートの追加を処理することになっているのではないですか?そして、なぜそれでも外の世界に到達できないのですか?

6
Martijn Heemels

移行ガイドの手順に失敗したことがわかりました。

既存のVPCでIPv6を有効にするとき、ルートテーブルやセキュリティグループなど、デフォルトのものに変更を加えた場合、手動で更新する必要があります。

ルートテーブルを更新しました(- http://docs.aws.Amazon.com/AmazonVPC/latest/UserGuide/vpc-migrate-ipv6.html#vpc-migrate-ipv6-routes に従って)およびセキュリティグループ(- http://docs.aws.Amazon.com/AmazonVPC/latest/UserGuide/vpc-migrate-ipv6.html#vpc-migrate-ipv6-sg-rules のとおり)が、同じページで説明されているように、ネットワークACLを更新するのを忘れていました。

そのため、すべてのIPv6トラフィックを効果的にファイアウォールで保護していました。 ::/0のインバウンドとアウトバウンドのALLOWルールを追加すると、Ubuntu 16.04の問題が修正されました。

Ubuntu 14.04の場合、Amazonの移行ガイドに実際にエラーがありましたが、その後修正されました。 iface eth0 inet6 dhcp/etc/networking/interfaces.d/eth0.cfgに追加するというアドバイスは機能せず、IPv6アドレスが構成されましたが、デフォルトルートがありませんでした。

代わりに、インターフェースがアップしたときにup dhclient -6のようにdhcp-clientを起動する必要がありました。 /etc/networking/interfaces.d/eth0.cfgファイルに次の作業構成が含まれるようになりました。

# The primary network interface
auto eth0
iface eth0 inet dhcp
    up dhclient -6 -v -pf /run/dhclient6.$IFACE.pid -lf /var/lib/dhcp/dhclient6.$IFACE.leases $IFACE

Amazonが移行ガイドを更新して同様のことを言っているようです( http://docs.aws.Amazon.com/AmazonVPC/latest/UserGuide/vpc-migrate-ipv6.html#ipv6-dhcpv6-ubuntu-14 )。

2
Martijn Heemels

ルーティングテーブルが正しくありません。この行は非常に間違っています:

default dev eth0  metric 1024

この行は、インターネット全体がeth0インターフェースに直接接続されており、中間ルーターを経由する必要がないことを示しています。これにより、システムは、到達しようとするすべてのホストについて、近隣探索要求をLANに送信します。また、そのホストがLANに直接接続されていない場合、ネイバー探索要求は表示されません。

そのため、そのルーティングテーブルで動作することを実際に期待することはできません。一部のルーターでは、誤った構成を回避するように隣接ルーターを構成することができます。しかし、それを当てにすべきではありません。代わりに、正しいゲートウェイアドレスを見つけて設定する必要があります。

次に、機能的な接続を備えた特定のマシンでのルーティングテーブルエントリの例を示します。

default via fe80::1 dev eth0  metric 1024  advmss 1220

via fe80::1の部分は、あなたに欠けているものです。使用する予定のアドレスがfe80::1と異なる場合があります。プロバイダーから通知されていない場合は、使用するゲートウェイアドレスをプロバイダーに確認する必要があります。私が主にプロバイダーがゲートウェイにアドレス指定することを選択した2つの方法は、fe80::1または/64接頭辞の後に::1が付いたもので、この場合は2001:DB8:1234:1234::1になります。

advmss 1220の部分は絶対に必要というわけではありませんが、一部のMTUの問題を回避するために含めています。

ルーティングテーブルエントリを修正したら、テストする次の手順は、ルーターがネイバーキャッシュに表示されることを確認することです。次に、traceroute6またはmtrを使用して、パケットが失われる前にパケットをどこまで取得できるかを確認します。

3
kasperd