DebianのネットワークインターフェースにIPv6 / 64ブロック全体を追加する


15

を使用してインターフェイスにIPv6(/ 64)ブロック全体を追加しようとしました

ip route add local 2001:41d0:2:ad64::/64 dev lo

私のDebianサーバーでここで説明しようなものですが、何かが欠けているようです。

たとえば、2001:41d0:2:ad64::feローカルでpingを実行するとすべてが正常に機能しますが、リモートマシンから試行すると機能しません。次に、eth0にルートを追加してみました。

ip route add local 2001::41d0:2:ad64::/64 dev eth0

今では、ローカルにサンプルアドレスをpingすることさえできませんでした!

何かを見逃しているように見えますが、ここで答えが見つかりません。

簡単に言うと2001:41d0:2:ad64::/64、このブロックに含まれるすべてのIPがマシン上のインターネットから到達できるように、eth0にバインドされます。

誰かが私に正しい方法を教えてくれることを願っています。前もって感謝します。

ガイド ISPが提供するには、明示的インターフェイスに各IPv6を追加するために私を必要としません。暗黙的になりたいです。

Explict IPアドレスバインディングを使用した作業構成

/ etc / network / interfaces:

auto eth0
iface eth0 inet static
        address my.ip.v4
        netmask 255.255.255.0
        network my.network.address.ip
        broadcast my.broadcast.address.ip
        gateway my.gateway.ip

iface eth0 inet6 static
        address 2001:41d0:2:ad64::fe
        netmask 64
        gateway 2001:41d0:2:adff:ff:ff:ff:ff
        up ip addr add 2001:41d0:2:ad64::1/64 dev eth0
        down ip addr del 2001:41d0:2:ad64::1/64 dev eth0
        up ip addr add 2001:41d0:2:ad64::2/64 dev eth0
        down ip addr del 2001:41d0:2:ad64::2/64 dev eth0
        up ip addr add 2001:41d0:2:ad64::3/64 dev eth0
        down ip addr del 2001:41d0:2:ad64::3/64 dev eth0
        up ip addr add 2001:41d0:2:ad64::4/64 dev eth0
        down ip addr del 2001:41d0:2:ad64::4/64 dev eth0
        up ip addr add 2001:41d0:2:ad64::5/64 dev eth0
        down ip addr del 2001:41d0:2:ad64::5/64 dev eth0
        up ip addr add 2001:41d0:2:ad64::6/64 dev eth0
        down ip addr del 2001:41d0:2:ad64::6/64 dev eth0
        up ip addr add 2001:41d0:2:ad64::7/64 dev eth0
        down ip addr del 2001:41d0:2:ad64::7/64 dev eth0
        up ip addr add 2001:41d0:2:ad64::8/64 dev eth0
        down ip addr del 2001:41d0:2:ad64::8/64 dev eth0
        up ip addr add 2001:41d0:2:ad64::9/64 dev eth0
        down ip addr del 2001:41d0:2:ad64::9/64 dev eth0
        up ip addr add 2001:41d0:2:ad64::a/64 dev eth0
        down ip addr del 2001:41d0:2:ad64::a/64 dev eth0

解決方法#1

@kasperdが示唆したように、ローカルルートを再度有効にしようとしました。

/ etc / network / interfacesのコンテンツ

auto lo
iface lo inet loopback
    post-up ip route add local 2001:41d0:2:ad64::/64 dev lo
    pre-down ip route del local 2001:41d0:2:ad64::/64 dev lo

auto eth0
iface eth0 inet static
        # <snip of ipv4 config>

iface eth0 inet6 static
        address 2001:41d0:2:ad64::fe
        netmask 64
        gateway 2001:41d0:2:adff:ff:ff:ff:ff

ローカルルーティングテーブル:

# ip -6 route show table local
local ::1 dev lo  proto none  metric 0
local 2001:41d0:2:ad64::fe dev lo  proto none  metric 0
local 2001:41d0:2:ad64::/64 dev lo  metric 1024
local fe80::225:90ff:fe06:6bbe dev lo  proto none  metric 0
ff00::/8 dev eth0  metric 256

traceroute(私のローカルホームPC)の出力:

  1    <1 ms    <1 ms    <1 ms  fritz.box [xxx]

  2    20 ms    21 ms    24 ms  2002:c058:6301::1
  3    21 ms    22 ms    24 ms  10gigabitethernet6.switch2.fra1.he.net [2001:470
:0:150::1]
  4    44 ms    31 ms    40 ms  100ge3-1.core1.ams1.he.net [2001:470:0:2d4::1]
  5     *        *        *     Zeitüberschreitung der Anforderung.
  6     *        *       35 ms  ams-5-6k.nl.eu [2001:41d0::8d1]
  7    37 ms    39 ms    36 ms  rbx-g2-a9.fr.eu [2001:41d0::ab1]
  8    37 ms    70 ms    36 ms  chi-3-4m.il.us [2001:41d0::176]
  9  Zielhost nicht erreichbar.

Ablaufverfolgung beendet.

traceroute6 サーバー上:

traceroute to 2001:41d0:2:ad64::23 (2001:41d0:2:ad64::23), 30 hops max, 80 byte packets
 1  2001:41d0:2:ad64::a (2001:41d0:2:ad64::a)  0.028 ms  0.009 ms  0.008 ms

ping6 サーバー上:

PING 2001:41d0:2:ad64::23(2001:41d0:2:ad64::23) 56 data bytes
64 bytes from 2001:41d0:2:ad64::23: icmp_seq=1 ttl=64 time=0.029 ms
64 bytes from 2001:41d0:2:ad64::23: icmp_seq=2 ttl=64 time=0.057 ms
^C
--- 2001:41d0:2:ad64:23 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.029/0.043/0.057/0.014 ms

tcpdump 出力(リモートサーバーでのpingおよびtracerouting中):

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes

tracert ゲートウェイへ:

Routenverfolgung zu vss-3-6k.fr.eu [2001:41d0:2:adff:ff:ff:ff:ff] über maximal 3
0 Abschnitte:

  1    <1 ms    <1 ms    <1 ms  fritz.box [2002:5476:1b4c:0:c225:6ff:fe40:b2b0]

  2    23 ms    22 ms    26 ms  2002:c058:6301::1
  3    24 ms    40 ms    23 ms  10gigabitethernet6.switch2.fra1.he.net [2001:470
:0:150::1]
  4    28 ms    37 ms    39 ms  100ge3-1.core1.ams1.he.net [2001:470:0:2d4::1]
  5     *        *        *     Zeitüberschreitung der Anforderung.
  6    38 ms    33 ms     *     ams-5-6k.nl.eu [2001:41d0::8d1]
  7    36 ms    39 ms    38 ms  rbx-g2-a9.fr.eu [2001:41d0::ab1]
  8    36 ms    35 ms    35 ms  vss-3-6k.fr.eu [2001:41d0:2:adff:ff:ff:ff:ff]

Ablaufverfolgung beendet.

ping ゲートウェイへ:

Ping wird ausgeführt für 2001:41d0:2:adff:ff:ff:ff:ff mit 32 Bytes Daten:
Antwort von 2001:41d0:2:adff:ff:ff:ff:ff: Zeit=36ms
Antwort von 2001:41d0:2:adff:ff:ff:ff:ff: Zeit=34ms
Antwort von 2001:41d0:2:adff:ff:ff:ff:ff: Zeit=38ms
Antwort von 2001:41d0:2:adff:ff:ff:ff:ff: Zeit=57ms

Ping-Statistik für 2001:41d0:2:adff:ff:ff:ff:ff:
    Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0
    (0% Verlust),
Ca. Zeitangaben in Millisek.:
    Minimum = 34ms, Maximum = 57ms, Mittelwert = 41ms

したがって、ローカル(サーバー)で動作しますが、リモート(マイPC)からは動作しません。


リモートマシンからtracerouteを試しましたか?トレースはどこで失敗しますか?
ゾレダチェ14

すべてのホストが同じネットワーク内にある場合、ルートはありません。
スパック14

2番目のip routeコマンドには、IPv6アドレスにタイプミスがあります。
マイケルハンプトン

@Spack eth0がipv6 / 64プレフィックス全体(着信トラフィック)をリッスンするようにしたい、@ michael-hamptonが修正された、この質問を入力している間、@ Zoredache ISPゲートウェイで失敗し、2001:41d0:2:adff:ff:ff:ff:ffその後タイムアウトする
光新道14

過去に行った研究から、これは不可能です。ローカルで動作する理由は、ルーティングテーブルパケットのルーティング先を認識しているためです。このプレフィックスをエッジルーターの静的ルートとして追加すると、LANクライアントが接続できるようになります。
ネイサンC 14

回答:


13

過去に似たようなものが必要でした。これを機能させるには3つのステップが必要であることがわかりました。

  • プレフィックスをホストにルーティングする必要があります
  • ホスト上のローカルルートが必要です
  • アプリケーションはソケットでIP_FREEBINDor IP_TRANSPARENTオプションを設定する必要があります

プレフィックスをホストにルーティングする適切な方法には、プロバイダーがまだ提供していない場合、プロバイダーに連絡することが含まれます。適切なDHCPv6要求を送信するだけで、プレフィックスを委任できるDHCPv6サーバーを持っている場合があります。

実際のルーテッドプレフィックスが何らかの理由で取得できない場合でも、ネットワークインターフェイスの1つで利用可能なリンクプレフィックスから必要な数のアドレスを使用するアクセス権がある場合、その一部をルーテッドプレフィックスに変換できます。その範囲内のすべてのIPv6アドレスの近隣探索要求にデーモンが応答するようにします。

このようなデーモンを使用することは、最後の手段として以外はお勧めしません。なぜなら、それはすべての隣人からのメモリを不必要に消費するからです。そのようなデーモンにはいくつかの実装がありますが、有望に見えるのはndppdです。(リンクプレフィックスをハードコーディングして独自のコードを作成した後に初めて学習したため、特定の経験はありません。)

すでにローカルルートが機能しているようです。お気づきのように、lo機能するためにはインターフェイスに割り当てる必要があります。

最後に、この範囲のアドレスを使用するアプリケーションは、ホスト上の特定のネットワークインターフェイスに明示的に割り当てられていないアドレスにバインドできるようにするために、IPオプションが必要です。使用できるコードフラグメントを次に示します。

const int one = 1;
setsockopt(fd, SOL_IP, IP_FREEBIND, &one, sizeof(one));

ISPによってサーバーにルーティングされる静的なプレフィックスがあります(DHCPは提供しません。IPv4もIPv6もありません)。この/ 64ブロック内のすべてのIPv6が外部から到達できるようにしたい(私のアプリケーションのほとんどは::にバインドされます。これで、これらすべてのIPがeth0で利用可能になり、そのブロック内のIPv6に接続しようとすると、指定されたポートをリッスンするアプリケーションが応答できるようになります(たとえば、各IPはpingに正しく応答する必要があります)。
ヒカル-進藤

::にバインドする場合、IP_TRANSPARENTオプションは必要ありません。プレフィックスをサーバーにルーティングし、ローカルルートを配置すると、::にバインドして、その範囲内の任意のIPv6アドレスへの接続を受信できます。ping6も機能します。私はこれをUbuntu 12.04でテストしていますが、他のディストリビューションの最近のカーネルでも同様に動作することを期待しています。それがあなたのために働いていない場合、私はあなたが使用してネットワークトラフィックを見てみることをお勧めしますtcpdump -pni eth0 'host 2001:41d0:2:ad65::fe'
kasperd 14

まだ機能していません。私は質問で構成についてさらにいくつかの情報を提供しましたが、これはおそらく役立つでしょう。
光新道14

/ 64がサーバーにルーティングされていると言います。ただし、ホスティングプロバイダーのガイドの例には、リンクプレフィックスのみがあり、ルーティングプレフィックスはありません。また、tcpdumpおよびtraceroute6の出力は、アドレスがサーバーにルーティングされていないように見えます。プロバイダーのドキュメントを使用して、単一のIPv6アドレスを機能させることができましたか?
カスペルド14

1
@Arya私はそのようなことを必要としたとき、私はコマンドを入れました/etc/rc.local
kasperd

2

今は2019年です。一言:ip_nonlocal_bind(4.3カーネルは知っているので)。

ndppd + sysctl net.ipv6.ip_nonlocal_bind = 1を使用します。最後の1つを使用すると、任意のIPv6アドレスにバインドできます(この場合、IP_FREEBINDは不要です)。

そうだと思います:

ip add add local 2001::41d0:2:ad64::/64 dev lo
ip route add local 2001::41d0:2:ad64::/64 dev eth0
sysctl  net.ipv6.ip_nonlocal_bind = 1

ndppd.confは次のようになります。

route-ttl 30000

proxy eth0 {

   router no

   timeout 500
   ttl 30000
   rule 2001::41d0:2:ad64::/64{
       static
   }
}

ndppdを実行すると、(追加したブロックの)任意のアドレスにバインドし、それを追加したとおりに使用できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.