OpenVPNクライアントに完全なIPv6サブネットを割り当てる方法

OpenVPNクライアントに完全なIPv6サブネットを割り当てる方法

私のISPはIPv6をサポートしていないので、OpenVPNを使用して私のVPSからIPv6接続をトンネリングしようとしています。私のVPSには/ 64 IPv6サブネットがあります。私はOpenWRTルーターをクライアントとして使用しているので、OpenVPNサーバーがルーターで使用できるIPv6サブネット全体を割り当てたいと思います。私の現在の構成は次のとおりです。

port myport
proto udp
dev tun
tun-ipv6
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh2048.pem
server 192.168.200.0 255.255.255.0
server-ipv6 2a03:4000:6:b11b:2::/80
push "redirect-gateway def1 bypass-dhcp"
push "route-ipv6 2000::/3"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
duplicate-cn
keepalive 20 60
comp-lzo
persist-key
persist-tun
daemon
log-append /var/log/myvpn/openvpn.log
verb 3

ただし、OpenVPNサーバーは2a03:4000:6:b11b:2::1000など、IPv6アドレスのみを割り当てます。

だから私の質問は、クライアントにIPv6サブネット全体を割り当てるためにOpenVPNサーバーをどのように設定しますか?

ベストアンサー1

クライアントとサーバーの間で動作するようにしてください。

まず、サーバーのTUNデバイスにパケットをルーティングする必要があります。

route-ipv6 $PREFIX

また、OpenVPNサーバーにこのプレフィックスをクライアントにルーティングするように依頼する必要があります。

# This one needs to be in a CCD file:
iroute-ipv6 $PREFIX

このようにして、サーバーはそのプレフィックスのパケットをクライアントにルーティングできる必要があります。

クライアントでは、このプレフィックスで一部のIPv6アドレスを(手動で)設定する必要があります。 (Linuxの場合:)ip -6 addr $PREFIX dev tun0

この時点で、できることが必要です

  • サーバーからクライアントIPをpingします。

  • そのクライアントIPからサーバーをpingします。

このプレフィックスをサブネットにルーティングします。

サーバーのプライマリインターフェイスがポイントツーポイントインターフェイスの場合、働くべきです。ルーターはそのプレフィックスのすべてのパケットをサーバーに転送し、サーバーはそれをクライアントに転送します。

プライマリインターフェイスがポイントツーポイントインターフェイスではない場合、あなたは困った。パケットをプレフィックスのIPに転送しようとすると、プライマリリンクのホストはNDPを使用してこのIPv6アドレスに関連付けられているMACアドレスを見つけようとします。あなたのサーバーはそれに応答しません(このIPv6アドレスはそのアドレスの1つではないため)。クライアントは同じリンクにないため、NDP要求を表示できません(とにかく応答できません)。したがって、誰もこれらのNDP要求に応答せず、パケットはサーバーに送信されません。

あなたはできます:

  • ip -6 route add $PREFIX via $ipv6_of_the_serverサーバーをこのプレフィックス()のゲートウェイとして使用するには、ルーターにルートを追加します。ただし、これがあなたのルーターでない場合は、これを行うことができない可能性があります。

  • NDPプロキシルールを追加します(ip -neigh add proxy $some_ipv6 dev eth0)。これにより、サーバーはクライアントに代わってNDP要求に応答します。ただし、(少なくともLinuxでは)IPV6サブネット全体をNDPプロキシとして追加できないため、委任したい各IPv6アドレスにルールを追加する必要があります。

TAP トンネルの使用

プライマリインターフェイスがイーサネットインターフェイスの場合、もう1つの可能性は、TUN(IP経由)トンネルの代わりにTAP(イーサネット経由)OpenVPNトンネルを使用し、仮想Tapデバイスをプライマリインターフェイスに関連付けることです。これにより、クライアントはルーターと同じリンクになり、NDP要求に応答できます。

おすすめ記事