こんにちは、ちゃりおです。
OpenVPNのスタティックルートを使って「このドメインはVPNを経由する」のような設定をしました。
ほとんどは上手くいくのですが、一部上手く行かないドメイン(login.salseforce.com)がありました。
原因は、名前解決されるIPアドレスの範囲の設定でした。
login.salseforce.comへのVPN経由の接続が不安定
事象
スタティックルートを設定して、VPNを経由して通信できるようになったことを確認しました
しかし、「login.salseforce.com」のドメインだけログインが出来たり出来なかったりしていました。(ログイン時にIPアドレス制限がかっている)
事象発生時の状態
IPアドレス制限にはVPNサーバーのIPアドレスを追加済み。
全転送するVPNサーバーでは、安定してログインできました。
OpenVPNのconfには以下のルートが登録されています。
push "route login.salesforce.com 255.255.255.255"
ローカルからVPNに接続して、ルートテーブルを確認すると
$ netstat -rn
~~~省略~~~
101.53.160.130/32 10.30.2.249 UGSc utun2
101.53.170.152/32 10.30.2.249 UGSc utun2
101.53.171.24/32 10.30.2.249
~~~省略~~~
3つのIPに対するVPNを経由する経路がありました。
しかし、Salseforceの記事を見てみるとIPアドレス範囲はもっと多そうです。
許可すべき Salesforce の IP アドレスとドメイン
watchコマンドでrouteの情報を定期的に取得しましたが、IPアドレスは上記3つ以外にも書き換わっていました。
ルートテーブルに無いIPアドレスだったため、VPNを経由せずにSalseforceにログインしようとして失敗したようです。
$watch route -n get login.salesforce.com
解決策
スタティックルートでSalseforceのグローバルIPを指定しました。
# APNICのアドレス範囲を登録
push "route 101.53.160.0 255.255.192.0"
・
・
・
routeをwatchで定期実行した感じは、「101.53.160.0 – 101.53.191.255」の範囲だけ返ってきた気がしますが念の為ほかのAPNICのIPアドレスも登録しました。
「101.53.160.0 – 101.53.191.255」だけ返ってくるのであればドメインでも、サブネットマスクを変えればいけそうですね。
まとめ
OpenVPNのスタティックルートについてでした。
IPアドレス範囲の広そうなサービスは、設定するまえに公開されているIPアドレスを調べた方が良さそうでした。