自宅のPC(LAN)から自宅のサーバーにアクセスできない問題

ネットワーク

自宅のWEBサーバーを立てた時から疑問だった、「自宅のLANから自宅のサーバーにアクセスできない」問題を調べてみました。

ことの発端は…

先月、自宅のラズパイにWEBサーバーを立ててSSLの証明書をとってHTTPSに対応させて、安心して寝たのですが…

その翌日…

えええ、、、アクセスできない!?!?!
それに悪意のあるユーザー!?😱😱😱😱

とそんな感じで、翌日からサーバーを乗っ取られてしまったのかと背筋が凍りました…(冗談抜きで)

原因は?

しかしながら、Apacheのログなどを見ても全然普通だったので、色々試行錯誤してみるとスマホの4Gからならアクセスできることに気がつきました。
その事から、VPNを繋いでPCから見てみると普通に見れた事から、原因は自宅のLAN経由でつながっている事でした…

なので、ホット一安心して今まで自宅ではVPNに繋いでやっていたのですが、そろそろ面倒になって来たのとモヤモヤして夜しか寝れないので調べてみることにしました。

ヘアピン NATという機能

どんな風にググればいいのか分からなかったので「自宅サーバー LAN アクセスできない」みたいに調べると、以下のサイトと出会いました。

このサイトの記事を簡単にまとめと、LAN内から自宅のサーバーのグローバルIPに接続する際にヘアピンNAT非対応のルータだと
PC→ルーター→DNSサーバーまでは出来るようですが、その後のDNSサーバー→ルーターの時に自分で自分の所にアクセスしてるのでルーターちゃんがパニックを起こしてしまうらしいです。
なので、どうやら自宅のルーターではヘアピンNATというものに対応していないのが原因でした。

なんだよヘアピンNATってオシャレな名前しやがって…

対応させる方法

どうやら対応させる方法は大きく4つあるそうで

  1. VPNなどから外部のプロキシサーバを経由してWAN側からアクセスする方法
  2. ヘアピンNATに対応するルーターを利用してアクセスできるようにする方法
  3. プライベート用のDNSサーバーを構築する方法
  4. hostsファイルを編集して、ドメイン名を直接サーバーのプライベートIPにルーティングする方法

今やっているのは、1番のやつですね。

結局そのままで行くことに

前述した通り、色々とどうにかする方法はあるみたいで、その中でhostsファイルを編集するのがよさげな感じがしました。

しかしながら、自分の使っているPCは学校などでも利用するので、毎回hostsファイルを編集しなおさないといけないらしく、プライベート用のDNSサーバーを構築してもよさげですが自分の知識が足りないのと、それにかける時間を考えると結局1番の方法でやるのが無難かなぁという結論に至りました。

なので、今回はヘアピンNATという言葉の意味と、接続ができない理由と仕組みを勉強することができて良かったです(笑)
プライベートDNSサーバーは、時間が出来たらやってみたいと思います。

コメント

タイトルとURLをコピーしました