2.4.7
私のサーバーにopenvpnがあり、Ubuntu 20.04.2 LTS
私のクライアントはopenvpnを持つArchlinuxです2.5.1
。 IPv6リークを発見し、いくつかの研究の終わりにカーネルレベルでIPv6を無効にすることなくIPv6を使用できるようにすることにしました。これは私のものですserver.conf
:
local 127.0.0.1
port 1194
proto tcp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
auth SHA512
tls-crypt tc.key
topology subnet
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
ifconfig-pool-persist ipp.txt
push "dhcp-option DNS 1.1.1.1"
push "dhcp-option DNS 1.0.0.1"
keepalive 10 120
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
crl-verify crl.pem
server-ipv6 2001:0db8:ee00:abcd::/64
tun-ipv6
push tun-ipv6
ifconfig-ipv6 2001:0db8:ee00:abcd::1 2001:0db8:ee00:abcd::2
push "route-ipv6 2001:0db8:ee00:ee00::2/64"
push "route-ipv6 2000::/3"
ソリューションを読んだ後、最後の6行が追加されました(IPはチュートリアルからのもの以外に私のサーバーとは関係ありません)。これは私のものですclient.ovpn
:
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
route server_ip 255.255.255.255 net_gateway
client
dev tun
proto tcp
sndbuf 0
rcvbuf 0
remote 127.0.0.1 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-CBC
comp-noadapt
auth-nocache
auth SHA512
key-direction 1
verb 3
<ca>
...
</tls-crypt>
私のクライアントが127.0.0.1 1194に接続する理由は、1194でリッスンしているstunnelを使用しているためです。私が訪れるときhttps://ipv6-test.comVPNがない場合、ISPはIPv4とIPv6の両方を受け取ります。 VPN(および追加された6行)を使用すると、VPNサーバーのIPv4のみが取得され、IPv6を使用するとNot supported
VPNサーバーから得られる結果が得られます。これまではカーネルパラメータを操作せずにクライアントを使用するとき、少なくともIPv6が無効になっていましたが、IPv6も使用できるようにしたいと思います。
この問題をどのように解決できますか?
答え1
概要
このチュートリアルでは、VPN内でIPv6を動作させるためのいくつかの非常に重要なことを簡単に説明していると思います。以下で複雑さを説明しようとします。しかし、まずこれを行うには基本的に3つの方法があることを指摘します。
- 作る蛇口VPNを接続してEthernetに接続します(チュートリアルを見る)。
- VPNにサイト - ローカルIPv6アドレスブロックを割り当てます(例
FEC0::/64
:)VPNサーバーをIPv6 NATゲートウェイとして設定。 - VPNにグローバルインターネットIPv6アドレスブロックを割り当て、サーバー上のルーターがトラフィックを転送するように設定します。
ブリッジを使用したTAP VPNの作成
このソリューションには最小限の「gotyas」があり、Web上でチュートリアルに従うのは簡単です。 VPNはパケットヘッダーとブロードキャストパケットを送信する必要がありますが、TUN VPNはそうでないという点でパフォーマンス上の欠点があります。
サイト - ローカル IPv6 アドレスブロックの割り当て
これはあまり標準的ではありませんが、うまくいくはずです。クライアントは、VPNサーバーのIPを持っているとインターネット上で表示されます。ただし、低い基準のために正しく機能しないと、発生する問題の助けを求める可能性が低くなります。
VPNにグローバルIPv6ブロックを割り当てる
これを行うには、ISPによって割り当てられた代替IPv6 / 64ブロックが必要です。
サーバーがAWSと同じクラウドにある場合、運が悪くなる可能性があります。 AWS はデフォルトで /56 ブロックを割り当てるため、サーバーから VPN に /64 ブロックを簡単に割り当てることができます。
VPNサーバーが自宅またはオフィスにある場合、一部のISPは単一の/ 64ブロックのみを割り当てるため、運が悪くなる可能性があります。
さらに、VPNサブネットに着信するすべてのトラフィックをVPNサーバーに送信するようにサーバーのルーターを構成する必要があります。
なぜそんなに複雑なのですか?
IPv6は異なります
IPv4では、プライベートIPアドレスを持つことが一般的であり、NATゲートウェイ。たとえば、ホームルーターには公開IPv4アドレスがあり、ホームWiFi内のすべてのデバイス(ノートブック、携帯電話など)には公開IPv4アドレスがあります。地元のIPv4 アドレス。これらのデバイスのいずれかがインターネットにアクセスすると、ホームルータはデバイスのローカルIPアドレスを独自のパブリックIPアドレスに置き換えます。
NATゲートウェイはIPv6では一般的ではありません。まだ可能ですが、。
代わりに、ローカルネットワーク内の各デバイスは、独自のグローバルIPv6アドレスで構成されています。ローカルネットワーク(家庭用WiFiなど)には、(少なくとも)64ビットアドレスブロック全体が割り当てられます。しかし、一般的なアドバイスは、64ビットチャンクが使用する必要がある最小のチャンクです。何か動作が止まるかもしれません。。
これはなぜVPNに関連しているのですか?
TUN VPNは独自のネットワーク(サブネット)なので、独自に割り当てられたIPv6アドレスが必要です。 ISPが大きなブロック(たとえば/ 56ブロック)を割り当てる場合は、VPNに独自の/ 64ブロックを割り当てることができます。ただし、ISPが/ 64ブロックのみを割り当てるのは珍しいことではありません。二つ必要。
私が言ったように。 / 64ブロックを2つの/ 63ブロックに分割できますが、その場合に発生するリスクはユーザー自身の責任です。少なくとも/ 63ブロックでは "autoconfigure"を使用できません。
何がよりトリッキーなことができますか?
サーバーがIPv4と同様にNATゲートウェイとして機能する場合、VPNに関する情報を使用してサーバーのルーターを構成する必要はありません。これは、各 VPN クライアントがサーバー ネットワークにサーバーと同じ IP を持つように見えるためです。したがって、ルーターはすべてのVPNクライアントからのトラフィックをサーバーに送信し、サーバーがそれを把握できるようにします。
...しかし、NATがない場合、VPNクライアントには独自のIPがあり、ルータがデフォルトで認識するサブネットにもありません。だからあなたは〜しなければならないVPN サブネットへのトラフィックを VPN サーバに送信するようにルータでルーティングを設定します。