私の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要求に応答できます。