web-dev-qa-db-ja.com

IPv6 PPPリンクがルーターアドバタイズメントのローカルLANへの転送に失敗する

eth0eth1を持つDebianサーバー。 eth2ppp0デバイス:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether xx:yy:zz:yy:xx:yy brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether xx:yy:zz:yy:xx:yy brd ff:ff:ff:ff:ff:ff
4: eth2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether xx:yy:zz:yy:xx:yy brd ff:ff:ff:ff:ff:ff
63: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492 qdisc pfifo_fast state UNKNOWN qlen 3
    link/ppp

転送はどこでも有効になっています:

/proc/sys/net/ipv6/conf ~
  all/forwarding=1  default/forwarding=1
 eth0/forwarding=1     eth1/forwarding=1
 eth2/forwarding=1     ppp0/forwarding=1

そしてautoconfもアクティブになります:

/proc/sys/net/ipv6/conf ~
  all/autoconf=1     default/autoconf=1
 eth0/autoconf=0        eth1/autoconf=1
 eth2/autoconf=1        ppp0/autoconf=1

さらに[〜#〜] ra [〜#〜](= Router Advertisement)はどのデバイスでも受け入れられますが、設定accept_ra = 2 for at leat ppp0およびeth1

/proc/sys/net/ipv6/conf ~
  all/accept_ra=1                              default/accept_ra=1           
 eth0/accept_ra=1                                 eth1/accept_ra=2           
 eth2/accept_ra=0                                   lo/accept_ra=1           
 ppp0/accept_ra=2

ipv6 :: dead:beefオプションが/ etc/ppp/peer/myProvider構成ファイルに設定されているため、PPP接続が正常に確立されます。

63: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492 qlen 3
    inet6 2003:42:e67f:d3ca:6105:155:f2b3:71f0/64 scope global temporary dynamic 
       valid_lft 14266sec preferred_lft 1666sec
    inet6 2003:42:e67f:d3ca::dead:beef/64 scope global dynamic 
       valid_lft 14266sec preferred_lft 1666sec
    inet6 fe80::dead:beef/10 scope link 
       valid_lft forever preferred_lft forever

プロバイダーのリンクローカルアドレスへのデフォルトルートが設定されています。

2003:42:e67f:d3ca::/64 dev ppp0  proto kernel  metric 256  expires 13559sec
fe80::/64 dev ppp0  proto kernel  metric 256 
fe80::/10 dev ppp0  metric 1 
fe80::/10 dev eth1  proto kernel  metric 256 
fe80::/10 dev ppp0  proto kernel  metric 256 
fe80::/10 dev eth0  metric 1024
default via fe80::90:1a10:1b2:b780 dev ppp0  proto kernel  metric 1024  expires 1789sec

パブリック2003:42:e67f:d3ca::/64プレフィックスには、ppp0デバイスへのルートがあります。 radvdインストールおよび実行中、radvdumpppp0 IPv6リンク送信を示しますRAs

interface ppp0
{
    AdvSendAdvert on;
    # Note: {Min,Max}RtrAdvInterval cannot be obtained with radvdump
    AdvManagedFlag off;
    AdvOtherConfigFlag on;
    AdvReachableTime 0;
    AdvRetransTimer 0;
    AdvCurHopLimit 0;
    AdvDefaultLifetime 1800;
    AdvHomeAgentFlag off;
    AdvDefaultPreference medium;
    AdvLinkMTU 1492;

    prefix 2003:42:e67f:d3ca::/64
    {
        AdvValidLifetime 14400;
        AdvPreferredLifetime 1800;
        AdvOnLink on;
        AdvAutonomous on;
        AdvRouterAddr off;
    }; # End of prefix definition

}; # End of interface definition

サーバーからホストiはping6インターネットからのホストを正常に実行できます。 ppp0のルーターを要求して、[〜#〜] ra [〜#〜]を強制しようとすると、次のようになります。

Soliciting ff02::2 (ff02::2) on ppp0...
Hop limit                 :    undefined (      0x00)
Stateful address conf.    :           No
Stateful other conf.      :          Yes
Router preference         :       medium
Router lifetime           :         1800 (0x00000708) seconds
Reachable time            :  unspecified (0x00000000)
Retransmit time           :  unspecified (0x00000000)
 MTU                      :         1492 bytes (valid)
 Prefix                   : 2003:42:e67f:d3ca::/64
  Valid time              :        14400 (0x00003840) seconds
  Pref. time              :         1800 (0x00000708) seconds

私が期待するのは、eth1のすべてのノードがSLAACを構成することですが、eth1で要請しようとすると次のようになります。

Soliciting ff02::2 (ff02::2) on eth1...
Timed out.
Timed out.
Timed out.
No response.
  • DHCPv6を使用したくないが[〜#〜] slaac [〜#〜]経由radvd
  • Bash kung fuがプロバイダーから実際のプレフィックスを切り取って(例:from rdisc6 output)、自分でradvd.confファイルを微調整するのを避けたい(例: if-upイベントで)
  • デバイスのブリッジングは解決策ではありません。 PPPデバイスは仮想であり、ブリッジできません。

どういうわけか転送[〜#〜] ra [〜#〜]ppp0からeth1(および他のデバイス)へのパケットはまったく機能していないようです。どうして?私が理解している限り、DSLモデムを備えたルーターは、何らかの方法で転送する必要がありますRAs内部モデムデバイスから接続されている物理LANポートに転送する必要があります。そうしないと、そこに接続されているホストはIPv6アドレスを取得できません。 ?ルーターと私のDebianボックスの違いはどこにありますか?私はあなたが持っているかもしれないどんなヒントにも感謝するでしょう。

1
3ronco

ルーターアドバタイズメントは転送されません。したがって、転送されていないことがわかった場合、少なくともその部分は意図したとおりに機能しています。

ルーターで独自のルーターアドバタイズメントデーモンを実行して、LANにアドバタイズするようにする必要があります。

3つのLANには、3つの個別の/ 64プレフィックスが必要です。したがって、ISPからルーティングされた/ 62以下が必要です。 ISPはこの目的のために短いプレフィックスを与えることになっているので、これは問題ありません(どれだけ短いかは、誰に尋ねるかによって異なります。元々は/ 48でしたが、/ 56しか配らないものもあります)。

Pppリンクを介して利用可能なDHCPv6サーバーがある場合は、委任するプレフィックスを要求するDHCPv6要求を送信できます。そうでなければ、実際に人と話をしなければならないかもしれません。

5
kasperd

この種のIPセットアップの構造は通常次のとおりです。

  • Ppp0を介してRAを受信するため、システムはデフォルトルートとオプションでプレフィックスを取得します
  • システムでDHCPv6-PDクライアントを実行して、ISPにルーティング可能なプレフィックスを要求します
  • そのプレフィックスの/ 64を使用して、他のインターフェイスに番号を付けます
  • Radvdを使用してRAをローカルインターフェイスに送信し、ipv6ネットワークがどのように構成されているかを他のシステムに通知します
  • あなたはISPのルーターではないので、ppp0にRAを送信しません。彼らの側はあなたのためのルーターです。
2
Sander Steffann