web-dev-qa-db-ja.com

Debianpptpを介してIPv6トラフィックをハリケーンエレクトリックIPv6トンネルにルーティングする

Debianマシンでハリケーンエレクトリックのサービスを使用してトンネルを設定しました。それは問題なく動作しているようです。私はできる ping6 ipv6.google.comそしてそれをlinksで開きます。

また、マシンにPPTPデーモンをセットアップしました(はい、PPTPは安全ではありません。これは、主に実験目的です。 )Mac OSXを使用してこのPPTPデーモンに接続すると、IPv4は正常に機能します。

ただし、IPv6トラフィックのルーティングを機能させることができないようです。 OS XはPPTPを介してIPv6アドレスを取得せず、IPv6ルーターの存在をアナウンスするためのデーモンのように見えるradvdを使用したアナウンスを無視します。明確にするために:radvdによって送信されたルーターアナウンスがOSXマシンのppp0インターフェイスのWiresharkに表示されます。

全体として、これは本番環境でも長期的なセットアップでもありません。ただ仕事に取り掛かりたいものです(そうでなければ、ServerFaultに投稿する可能性があります)。マシンが再起動すると、手動でリセットするまでセットアップの半分がダウンします。実際、この場合、それは私にとってプラスです。

/ etc/network/interfaces(スニペット)

auto he-ipv6
iface he-ipv6 inet6 v4tunnel
        address 2001:dead:beef:f00d::2
        netmask 64
        endpoint  216.66.86.114
        ttl 255
        gateway 2001:dead:beef:f00d::1

/etc/pptpd.conf

option /etc/ppp/pptpd-options
localip 10.0.101.1
remoteip 10.0.101.2-200

/ etc/ppp/pptpd-options

name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
nodefaultroute
lock
nobsdcomp
ipv6 ,

/ etc/ppp/chap-secrets

ivucica pptpd THEPASSWORDHERE 10.0.101.2 10.0.101.3 10.0.101.4 10.0.101.5

/etc/radvd.conf

interface ppp0
{
        AdvSendAdvert on;
        prefix 2001:dead:beef:f00d::/64
        {
        };
};

私はipv6転送をオンにしました:

echo 1 > /proc/sys/net/ipv6/conf/all/forwarding

はい、ppp0デバイスを再接続/再作成するたびにradvdを再起動しました。 :-)

何が足りないのですか?

5
Ivan Vučica

したがって、セットアップにいくつかの問題があったことがわかりました。すべてを文書化しましょう!

クライアントOS

Mac OS Xは、IPv6 overPPPを特に好みません。接続が確立されたら、以下を使用します。

Sudo ipconfig set ppp0 AUTOMATIC-V6
Sudo route add -inet6 default -interface ppp0

以前は、OSXをルーターのアドバタイズに準拠させているようです。後者は、IPv6のデフォルトルートを追加します。 (今、routeの特定のフルーティーなモバイルオペレーティングシステムバージョンだけが-inet6を提供した場合、私は幸せな木製の少年になるでしょう。)

また、OS Xは、IPv6を介してネゴシエートされるはずのアドレスをすべて無視し、ローカルアドレスのみを設定することに注意してください。これにより、OSXへのルーティングが妨げられる可能性があります。

一方、Windows 8(すべてのシステムの!)は、PPPを介して送信されたアドレスを問題なく取得し、ルーターアドバタイズメントに注意を払い、全体的に問題なく構成されています。 PPTPはWindowsで本当にうまく機能します。

サーバ

私が最初に見逃したのは、ハリケーンエレクトリックのトンネルブローカーが実際に2つの/ 64プレフィックスを割り当てていることでした。 1つはクライアント専用で、もう1つは追加のクライアント(PPTPクライアントなど)のルーティングを目的としています。さらにアドレス(またはプレフィックス!)が必要な場合は、次のことができます。/48プレフィックスを取得することもできます(IPv6では、これは「あなたの」使用のためのビットが多いことを意味します。HEのプレフィックスは「48ビットのみ」を取ります。したがって、自動生成されたサフィックスの前に制御するビットがさらにいくつか提供されます。 MACアドレス、またはランダムに作成されたもので、最後の64ビットを開始して引き継ぎます。理論的には、64ビットの余裕があっても小刻みに動くことができますが、Windows8またはOSXで奇妙な動作が見られたので、そうしませんでした。あまり頼りにしないでください。)

radvdを直接構成してサーバーとして実行する代わりに、グローバルに構成しないでください。つまり、Debianでサービスとして実行しないでください。

代わりに、Silmor.deで Konrad Rosenbaumの例 に従い、radvdがPPPインターフェイスを作成した後にpppdを構成します。

  1. IPv6接続をセットアップします。私はハリケーンエレクトリックを使用しています。私はそれを次のように構成しました:

    # hurricane electric tunnel
    # based on: http://www.tunnelbroker.net/forums/index.php?topic=1642.0
    auto he-ipv6
    iface he-ipv6 inet6 v4tunnel
        address 2001:470:UUUU:VVVV::2
        netmask 64
        endpoint  216.66.86.114
        ttl 255
        gateway 2001:470:UUUU:VVVV::1
        ## from http://lightyearsoftware.com/2011/02/configure-debian-as-an-ipv6-router/
        # I did not set up the routing of the /64 nor the /48 prefix here, but
        # this would ordinarily do it.  
        #up ip link set mtu 1280 dev he-ipv6
        #up route -6 add 2001:470:WWWW:VVVV::/64 he-ipv6
    
        # Note that Hurricane Electric provides different /64 IPv6 prefixes
        # for the client (UUUU:VVVV) and routing (WWWW:VVVV). 
        # And the /48 prefix is very different altogether.
    
  2. Pptpdをインストールします。 (もちろん、プロトコルとしてのPPTPの不安定さに注意し、OpenVPNまたはその他の代替手段の使用を検討してください。)

  3. 編集/etc/ppp/pptpd-options

    name pptpd
    refuse-pap
    refuse-chap
    refuse-mschap
    require-mschap-v2
    require-mppe-128
    proxyarp
    nodefaultroute
    lock
    nobsdcomp
    ipv6 ::1,::2
    

    最後の行は私の質問のテキストとは異なることに注意してください。クライアントOSによって尊重されるかどうかに関係なく、いくつかの静的アドレスを割り当てています。 (OS Xはそれらを無視しているようですが、Windowsはそれらを使用します。)

  4. PPTPのユーザーを作成します。 2番目の列は、pptpd-optionsname引数に基づいてフィルタリングします。編集/etc/ppp/chap-secrets

    ivucica pptpd AHyperSecretPasswordInPlainText 10.0.101.2 10.0.101.3 10.0.101.4
    

    手動でリストする代わりに、アドレスを*に置き換えることができるはずです。私はそれを試しませんでした。

  5. PPTPユーザーにいくつかのIPv6プレフィックスを割り当てます。注:これは、Konradのスクリプトから派生した以下にリストするスクリプトによってのみ使用されます。

    編集/etc/ppp/ipv6-addr

    ivucica:1234
    littlejohnny:1235
    
  6. 新しいファイルを追加する/etc/ppp/ipv6-up.d/setupradvd

    #!/bin/bash
    ADDR=$(grep ^$PEERNAME: /etc/ppp/ipv6-addr |cut -f 2 -d :)
    if test x$ADDR == x ; then
     echo "No IPv6 address found for user $PEERNAME"
     exit 0
    fi
    
    # We'll assign the user a /64 prefix.
    # I'm using a Hurricane Electric-assigned /48 prefix.
    
    # Operating systems seem to expect to be able to assign the 
    # last 64 bits of the address (based on ethernet MAC address
    # or some other identifier). So try to obtain a /48 prefix.
    
    # If you only have a /64 bit prefix, you can try to assign a
    # /80 prefix to your remote users. It works, but I'm only now
    # trying to enable these users to have routing.
    
    USERPREFIX=2001:470:XXXX:$ADDR
    USERPREFIXSIZE=64
    USERPREFIXOURADDRESS=1
    USERPREFIXUSERADDRESS=2
    
    # Add the address for your side of the tunnel to the PPP device.
    ifconfig $IFNAME add $USERPREFIX::$USERPREFIXOURADDRESS/$USERPREFIXSIZE
    
    # establish new route
    # (when a packet is directed toward user subnet, send it to user ip)
    route -6 add $USERPREFIX::/$USERPREFIXSIZE gw $USERPREFIX::$USERPREFIXUSERADDRESS
    
    #generate radvd config
    RAP=/etc/ppp/ipv6-radvd/$IFNAME
    RA=$RAP.conf
    echo interface $IFNAME >$RA
    echo '{ AdvSendAdvert on; MinRtrAdvInterval 5; MaxRtrAdvInterval 100;' >>$RA
    echo ' prefix' $USERPREFIX::/$USERPREFIXSIZE '{};' >>$RA
    
    # Instead of your DNS...
    #echo ' RDNSS $USERPREFIX::$USERPREFIXOURADDRESS {}; };' >>$RA
    # ...try assigning the Google DNS :)
    echo ' RDNSS 2001:4860:4860::8888 {}; }; ' >> $RA
    
    # The creation of radvd configuration could be more readable, but whatever.
    
    # Start radvd
    /usr/sbin/radvd -C $RA -p $RAP.pid
    
    exit 0
    

    スクリプトをchmodして、pppdで実行可能にすることを忘れないでください。

    chmod 755 /etc/ppp/ipv6-up.d/setupradvd
    
  7. スクリプトはradvd構成を/etc/ppp/ipv6-radvd/に吐き出します…フォルダーが存在することを確認してください!

    mkdir /etc/ppp/ipv6-radvd
    
  8. また、/etc/ppp/ipv6-down.d/setupradvdを追加します(そして実行可能にします!)-逐語的に取得 Konradから

    #!/bin/bash
    RAP=/etc/ppp/ipv6-radvd/$IFNAME
    kill `cat $RAP.pid` || true
    rm -f $RAP.*
    

    そして

    chmod 755 /etc/ppp/ipv6-down.d/setupradvd
    

特にrtadvshouldがこれらの役割を果たす必要があるため、DHCPv6を使用してルーティング情報、アドレス、またはDNS情報を配布することはテストしていません。また、Mountain Lionの時点では、 OS XにはまだDHCPv6クライアントが付属していません (おそらく意図的に; 歯科医の10人に9人 IPv6の専門家のほとんどは、DHCPが悪であることに同意しています)。

繰り返しになりますが、 PPTPセキュリティ に関するMichaelのコメント;本番環境でOpenVPNを使用することを検討してください。

はい、Konrad Rosenbaumにも OpenVPNを介したIPv6に関する素晴らしいチュートリアル があります。 :-)

6
Ivan Vučica

PoptopはIPv6をサポートしていないようです。そして セキュリティ上の理由から、とにかく使用しないことをメンテナが推奨しています

PPTPは欠陥のあるプロトコルであることが知られています。プロトコルの設計者であるMicrosoftは、固有のリスクがあるため、プロトコルを使用しないことを推奨しています。多くの人がPPTP使いやすさのためにとにかく使用しますが、それがそれほど危険ではないという意味ではありません。PPTPクライアントとPoptopのメンテナはお勧めします代わりにOpenVPN(SSLベース)またはIPSecを使用します。

最近のバージョンのOpenVPNはIPv6をサポートしています なので、移行中はおそらくそれが最善の策です。

1
Michael Hampton