eduroam経由でVPN使おうとした時に困ったこと

困ったこと

  • 自分のWebサイトが見えない
    • VPNサーバーとWebサーバーが同IPアドレスなため、VPNを経由せずに直接アクセスされる
    • eduroamはhttpが通らない
    • 結果、自分のWebサイトは見えない

解決方法

ただ、単純に新しくIPアドレスを取得して設定したりするにはお金かかるししたくない。 そこで、追加料金無しで解決する方法を考えた。

Webサイトのドメインの名前解決で内部のIPアドレスになるように設定する。 そうすれば、自分のWebサイトでもVPNを経由してくれるようになる。 しかし、単にhostsに書いてしまうと、VPNを使っていない時に繋がらなくなってしまう。 そのため、サーバー内にDNSを立てて、VPN時はそのDNSを参照するようにしてあげる。

前提環境

やり方

サブドメインVPN用とWeb用と分ける

VPNとWebサイトで使うドメインが違えば良い。 VPNドメインを使わず直接IPアドレスを指定して接続したり、hostsファイルに書き込んだWebサイトで使っているドメインとは違うドメインを利用してもよい。

自分の場合は以下のような感じに

  • VPN: vpn.abcang.net
  • Web: abcang.net

普段は両方同じIPアドレスになっている。

新しくネットワークインターフェースを作成

ネットワークインターフェースを作成して、10.0.0.1など他で使っていない適当なネットワークアドレスになるようにIPアドレスを設定する。 Conohaでネットワークインターフェースを追加する方法は公式のガイドを参考に。

www.conoha.jp

dnsmasqの設定

dnsmasqをインストールして、以下のように設定。

dnsmasq.conf

strict-order
listen-address=10.0.0.1
bind-interfaces

/etc/hosts

10.0.0.1    abcang.net blog.abcang.net

上の例ではblog.abcang.netもVPN経由でアクセスできるように設定している。

SoftEther VPNの設定

SecureNAT機能を有効にして、DNSを10.0.0.1に指定

結果

これでVPN接続中は名前解決すると以下のようになる

これでabcang.netへのアクセスはVPNを経由してくれるようになった。 ただ、dnsmasqはワイルドカードでのドメイン追加ができないみたいなので、VPN経由でアクセスしたいサブドメインが増えた場合はその分hostsファイルに追記する必要がある点が残念だ。

魔法のトンネルSoftEther

魔法のトンネルSoftEther