KubernetesクラスターのOpenVPNサーバー/ DNSとサービスの確認

KubernetesクラスターのOpenVPNサーバー/ DNSとサービスの確認

クーバーネティスクラスター操作アプリケーション(現在のローカルサーバーのVagrant CoreOS VMセットにあります)

私は自分のラップトップでローカルに特定のアプリケーションをデバッグできるようにしたいので、クラスタにVPNを設定する作業をしました。クライアント/サーバー VPNに基づくkylemanna/docker-openvpn一般的な配布として現物返済のお支払い

証明書/鍵ペア、クライアント証明書などを作成しました。 VPNに接続できます。

これでサービスにアクセスできない場合は、VPNサーバーに接続してもあまり役に立ちません。クラスタでskyDNSのDNSプラグインを実行しています。クラスタ内の他のポッドからサービスをインポートできるため、すべてがうまくnslookup機能しますが、VPNクライアントでは名前でサービスを解決できません。 VPNクライアント(サブネット)から10.2.0.0/16IPにポッドをpingできますが、DNSを使用して解決することはできません。

aクライアントからの返品nslookup

nslookup myservice 10.3.0.10
Server:     10.3.0.10
Address:    10.3.0.10#53

** server can't find myservice: SERVFAIL

トラブルシューティングの問題の1つは、DNS IP(すべてのポッドの)pingでは機能しませんが、サービスを解決することです。これは私が確認する方法ですが、多くの情報を提供しません。traceroutenslookup

PodがバインドされているVPNホストIPは192.168.10.152 Kubernetes、サブネットは10.2.0.0/16 SkyDNS、サーバーは次のとおりです。10.3.0.10

VPNサーバーサブネットは10.8.0.0/24 VPNサーバーにあります。 ifconfigは以下を提供します。

eth0      Link encap:Ethernet  HWaddr 02:42:0A:02:16:45
          inet addr:10.2.22.69  Bcast:0.0.0.0  Mask:255.255.255.0
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.8.0.1  P-t-P:10.8.0.2  Mask:255.255.255.255

10.2.22.69これもこうだ現物返済のお支払いIPとVPNサーバーのIPは私の考えでは10.8.0.1ゲートウェイです10.8.0.2

VPNサーバーPodでは、ルーティングテーブルは次のとおりです。

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.2.22.1       0.0.0.0         UG    0      0        0 eth0
10.2.22.0       *               255.255.255.0   U     0      0        0 eth0
10.8.0.0        10.8.0.2        255.255.255.0   UG    0      0        0 tun0
10.8.0.2        *               255.255.255.255 UH    0      0        0 tun0
192.168.254.0   10.8.0.2        255.255.255.0   UG    0      0        0 tun0

IPを介して自分のアプリケーションにアクセスしてデータを取得できますが、サービスIP(10.3.0.0サブネット上のプロキシIP)を使用すると、自分のアプリケーションにアクセスできなくなります。

VPNサーバーにルートを追加してから、route add -net 10.3.0.0/16 gw 10.8.0.2サービスIPを使用してデータを取得できますが、タイムアウトしnslookupます。

トラフィックがDNSから戻らない可能性があると思います。 DNS自体はKubernetesのプロキシサービスなので、複雑さが増します。この問題を解決する方法がわかりません。

ベストアンサー1

結局のところ、私の構成は次のようになります。

docker run -v /etc/openvpn:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig \
-u udp://192.168.10.152:1194 \
-n 10.3.0.10 \
-n 192.168.10.1 \
-n 8.8.8.8 \
-n 75.75.75.75 \
-n 75.75.75.76 \
-s 10.8.0.0/24 \
-N \
-p "route 10.2.0.0 255.255.0.0" \
-p "route 10.3.0.0 255.255.0.0" \
-p "dhcp-option DOMAIN-SEARCH cluster.local" \
-p "dhcp-option DOMAIN-SEARCH svc.cluster.local" \
-p "dhcp-option DOMAIN-SEARCH default.svc.cluster.local"

-uVPNサーバーのアドレスとポート

-nすべてのDNSサーバーで使用

-sVPNサブネット定義(デフォルトは10.2.0.0、すでにKubernetesで使用されています)

-dNATを無効にする

-pクライアントへのオプションのプッシュ

-NNATを有効にする:Kubernetesではこの設定が重要に見えます。

nslookup検索ドメインをクライアントにプッシュする最後の部分は、etcを操作するための鍵です。

カールは最初は機能しませんが、数秒後に動作を開始するようです。したがって、動作しますが、カールを解決するのに時間がかかります。

おすすめ記事