ipv6 + openvpn ..に関して興味深い質問があります。
私のバージョンはOpenVPN 2.1.1
私は2つのネイティブ/ 64ipv6ネットワークを与えられました
(Block1-> 2a01:abc:123:deac ::/64)
(Block2-> 2a01:abc:123:dead ::/64)
(ゲートウェイ-> 2a01:abc:123:deaf :: 1/59)*これを制御することはできません*
計画は、この「Block2」をopenvpn経由でオフィスにルーティングすることでした(テスト目的で)
説明するすごい。
データセンターの最初のLinux「ルーター」としてCentosボックスを使用し、オフィスの2番目のLinux「ルーター」としてUbuntuボックスを使用しています。tunを使用して単純なポイントツーポイントトンネルを作成しました(ipv4アドレスに基づいて開始します。トンネル)
Centosに割り当てました
ip addr add 2a01:abc:123:dead::1/64 dev eth0
ip addr add fed0::2/128 dev tun0
ip route add 2a01:abc:123:dead::/64 dev tun0 ## ipv6 Block2 down the tunnel
ip route add ::/0 via 2a01:abc:123:deaf::1 dev eth0 ## Default out to Gateway
buntに割り当てました
ip addr add fed0::3/128 dev tun0
ip addr add 2a01:abc:123:dead::2/64 dev eth0
ip route add ::/0 via 2a01:abc:123:deaf::1 dev tun0 ## Default up the tunnel
私も両方のサーバーに含めました。
sysctl -w net.inet6.ip6.forwarding=1
よさそうだ...そうだね?違う.. :(
Ubuntu-eth0からゲートウェイまたは2a01:abc:123:dead :: 1にpingを実行できません
Centosボックスの任意のipv6インターフェイスからインターネットにアクセスできますが、Ubuntuボックスからは明らかにアクセスできません。
さらに、私は最終的にUbuntuボックスeth0でradvdを実行し、ネットワークをipv6アドレスでautoconfします。
私を助けるためにいくつかのアドバイス/ヒントを持っている人.. ???
乾杯
私が管理している別のネットワークでまったく同じソリューションを使用する可能性があるため、あなたの質問は本当に私を夢中にさせました。私はそれを実験しました、そしてそれは確かに可能です! (私はLinuxが大好きです...)。
私はあなたの状況をモデル化する Netkit ラボを作成しました。ラボをダウンロードできます ここ (1.8KiB)。
マシンでのテストに興味がない場合は、Netkitをインストールする必要はありません。上記のパッケージを入手して、さまざまなマシンの.startupファイルを確認できます。ラボをテストする場合は、「radvd」がインストールされたファイルシステムが必要です。これは、Netkitの標準ファイルシステムには含まれていません。ファイルシステムパッケージのREADME)をチェックして、マシンにマウントする方法を確認してから、apt-get update && apt-get install radvd
を使用してください。
ラボには6台のマシンが含まれています:v6site(アクセスしたいV6インターネットサイト)、v6isp(ISP)、r1(V4およびV6接続を備えた最初のルーター)、r2 (OpenVPN経由でr1に接続する2番目のルーター)、pc1およびpc2(r2によってIPv6に接続され、提供されるマシン)。
例では、使用したランダムな例のアドレスの代わりに、 RFC 3849 ドキュメントプレフィックス2001:DB8 ::/32を使用しました。また、OpenVPNエンドポイントにFEC0 ::/96を使用しましたが、これは廃止されました。展開では、代わりに 一意のローカルアドレス の小さなプレフィックスを使用することをお勧めします。
説明:RFC 3849 例および文書化の目的で使用されるプレフィックス2001:DB8 ::/32を定義します(グローバルユニキャスト)。ランダムなIPv6アドレスを選択する代わりに、2001:DB8 ::/32プレフィックスのアドレスを、実際の展開で別のアドレスに変更される例のワイルドカードとして使用することをお勧めします。この質問では、最初に2001:acb:132:acb ::/64、次に2001:123:123:11a1 ::/64です。答えでは、両方をドキュメントプレフィックスのアドレスに置き換えました。実際のシナリオに答えを適用するときは、2001:DB8 ::アドレスが出現するたびに検索し、実際のアドレスに置き換えてください。
トンネルエンドポイントにもアドレスが必要です。トンネルエンドポイントで使用されるアドレスは、内部でのみ使用されるため、外部でルーティング可能である必要はありません。 FED1 ::およびFED2 ::で始まるアドレスを使用しましたが、FECO ::で始まるアドレスを使用しました。これらのアドレスは元々 RFC 351 で定義されていました。これらは、IPv4の私用アドレス10.0.0.0/8、192.168.0.0/16、および172.16.0.0/12と同等です。問題のため、後で RFC 3879 で非推奨になり、 RFC 419 の一意のローカルアドレス(ULA)が優先されました。 ULAには、エンドユーザーごとに一意の「ランダム」プレフィックスがあります。利点は、たとえばトンネルを使用してこれらのネットワーク間をルーティングする場合、アドレス変換なしで相互に通信できることです(たとえば、192.168.0.0/16を使用すると、衝突が発生する可能性があります)。この説明の前にリンクされているページは、独自のULAプレフィックスを作成するのに役立ちます(場合によっては登録しますが、登録する必要はありません)。
トンネルエンドポイントでFECxやFEDxなどのサイトローカルアドレスを使用しても、実際の問題はありません。それらは非推奨ですが、それはそれらを間違ったものにしません。 ULAの使用をお勧めします。
最初のルーター(r1)の全体構成は次のとおりです。理解を深めるためにコメントに従ってください。
# Enable forwarding for IPv6 (between eth0 <-> tun0)
sysctl -w net.ipv6.conf.all.forwarding=1
## ISP V6 Internal network
# Since there is no Host specific address, we pick an address in the /64
# prefix. Note that this address is the same in two different prefixes:
# ..11a1::/64 and ..11a0::/59. This requires a proxing hack in R2.
# Optimally, you would have an address in the /59 prefix to use here,
# outside the delegated /64 prefix.
ip link set eth0 up
ip addr add 2001:db8:1:11a1::1/59 dev eth0
ip route add default via 2001:db8:1:11a0::1 dev eth0
## V4 Internet
ip link set eth1 up
ip addr add 192.168.1.1/24 dev eth1
## OpenVPN tunnel via IPv4 Internet to R2
# This is the most basic configuration of OpenVPN. No encryption, no security,
# no nothing. DO NOT USE THIS OUTSIDE THIS LABORATORY.
openvpn --dev tun --tun-ipv6 --daemon
while ! ip link show tun0 2>/dev/null
do
echo "Waiting for OpenVPN to connect..."
sleep 1
done
# Configure OpenVPN endpoints. Choose a distinct small prefix for the endpoints
# and use it to route the the /64 prefix to R2.
ip link set tun0 up
ip addr add fec0::1/96 dev tun0
ip route add 2001:db8:1:11a1::/64 via fec0::2 dev tun0
2番目のルーターの全体構成(r2):
# Enable forwarding for IPv6 (between eth0 <-> tun0)
sysctl -w net.ipv6.conf.all.forwarding=1
## Internal Company IPv6 Network
# The router address is arbitrary.
ip link set eth0 up
ip addr add 2001:db8:1:11a1::ffff/64 dev eth0
## V4 Internet
ip link set eth1 up
ip addr add 192.168.1.2/24 dev eth1
## OpenVPN tunnel via IPv4 Internet to R1
# This is the most basic configuration of OpenVPN. No encryption, no security,
# no nothing. DO NOT USE THIS OUTSIDE THIS LABORATORY.
openvpn --remote 192.168.1.1 --dev tun --tun-ipv6 --daemon
# Wait for OpenVPN...
while ! ip link show tun0 2>/dev/null
do
echo "Waiting for OpenVPN to connect..."
sleep 1
done
# Configure OpenVPN endpoints. See comments for R1 above.
# Note that we route ALL IPv6 traffic through the tunnel.
ip link set tun0 up
ip addr add fec0::2/96 dev tun0
ip route add default via fec0::1 dev tun0
# R1 address is in our private network (eth0, see above), but on the other
# side of the tunnel. We need a more specific route specifically for it.
# Also, make this router (R2) act as a neighbor proxy so that other
# machines on the private network can see R1 through the tunnel.
# This is a hack that would be avoided if we had a bigger prefix than
# /64, or if R1 had a Host-specific address outside of the /64.
ip route add 2001:db8:1:11a1::1/128 via fec0::1 dev tun0
ip neigh add proxy 2001:db8:1:11a1::1 dev eth0
## Routing advertisement daemon
# NOTE: The standard Netkit filesystem does not have radvd, it has to be
# installed manually with `apt-get update && apt-get install radvd` in
# the model fs.
chmod 644 /etc/radvd.conf
radvd
r1(eth0)に接続されたPCの構成は、radvdのおかげで非常に簡単です。
sysctl -w net.ipv6.conf.all.autoconf=1
ip link set eth0 up
これは最も重要な構成です。その他の詳細(r2の/etc/radvd.confのコピーを含む)は、上記のラボパッケージに含まれています。
トンネルブローカーに/ 56または/ 48の割り当て、少なくとも別の/ 64を要求します。これで、リンクの遠端のこのブロックに/ 64を生成できるようになります。複数のトンネルがある場合は、トンネルごとに個別の/ 64が必要になります。
FED1アドレスは常にTUNデバイスにのみ存在すると思います。 (サイトのローカルアドレスは非推奨であり、使用しないでください。)Ubuntu側で:: 0/0のルーティングを指定する必要がある可能性があります。 Ubuntu eth0インターフェースには2001:またはFED1:x:アドレスを使用します。 RADVはアドレスを自動的に取得するはずですが、私はそれをでプログラムします。
私の構成では、LANデバイスに/ 48の割り当てを使用し、DMZアドレスに/ 64を使用します。これにより、ファイアウォールの構成が重複しない範囲にあるため、簡単になります。
あなたのpingの結果は私が期待するものです。 UbuntuではFED1 :: 1へのリンクを指定する必要があります。 Centos eth0アドレスをFED1:1 :: 1に変更し、アドレスを/ 32sまたは/ 64sとして指定すると役立つはずです。トンネル端のリンクアドレスを知る必要があるだけです。 eth0インターフェイスには2001 :(パブリックアドレス)が必要です。
Centosのeth0がアップストリームリンクである場合、アップストリームリンクのローカルエンドのポイントツーポイントIPv6アドレスを持っている可能性があります。これは、6to4トンネルのセットアップで処理する必要があります。これにより、インターネットへのデフォルトルートも追加されます。
編集:推奨される構成
Centos(サーバー/ネットワーク)
ip -6 add fe81 :: 1/64 dev tun0 ip -6 add 2001:acb:132:acb :: 1/64 dev eth0 ip -6 add route(新しい/ 64割り当て)fe81 :: 2 devtun0経由
bunt(トンネル経由のクライアント)
経由/etc/network/interfaces
auto tun0 iface tun0 static アドレスfe81 :: 2 ネットマスク64 ゲートウェイfed1 :: 1
auto eth0 iface eth0 static アドレス(新しい/ 64割り当て):: 1 ネットマスク64
または、VPN起動スクリプトで手動(tun0を処理することもできます)ですが、eth0を/etc/network/interfaces ip-6 add fe81 :: 2/64devで構成します。 tun0 ip -6 add(new/64):: 1/64 dev eth0 ip -6 add route default via fe81 :: 1 dev tun0
Eth0(LAN)インターフェースを使用して、デフォルトのipv6ルートでホストにradvd
をセットアップします。 tun0ルーティングは手動で行われます。
警告:これが機能するようになると、すべてのIPv6コンピューターにインターネットでルーティング可能なアドレスが割り当てられます。ファイアウォールが適切であることを確認し、許可するトラフィックを理解してください。