F600Aを自宅サーバ公開用に設定する

経緯

別記事を参照

目的

  • 自宅鯖の公開のためルータを設定する
  • LANの内外で同一のドメインでアクセスできるようにする
    • 素人考えでは出来て当然ではないかと思うのだが、ルータによってできたりできなかったりする。 NATループバックとヘアピンNATという機能を搭載していればできるらしいが…
    • ブラウザだけなら別のアドレスを割り当てて開きなおせばいいのでドメインを分ければ済む。 問題なのはNextcloudなどのクライアントアプリで、アドレスごとにサーバーに紐づいて同期するため、同期ディレクトリが2つになり、データサイズ的にも視覚的にも邪魔だし管理も面倒

構成

ルータへのアクセス

まずルータのIPをブラウザで開く

ログイン

パスワードがadimnとかいきなり不安すぎる…。

Wifiのパスワードはランダムっぽい数値がデフォルトなんだから、こっちもそうしてくれてもいいと思うのだが…。

そもそもルータにアクセスされてる時点でLAN内に侵入されてるというわけで手遅れではあるが、念のためパスワードかえておく。

パスワード変更

ファイアーウォールの設定

ビフォー
ファイアーウォールがオフになっている…てっきりデフォルトでオンになっているのかと思っていた。

考えてみれば(従来のIPv4であれば)IPアドレスで特定できるのはルータまでなので、(ルータから端末へ転送する設定をしない限り)宛先不明で突き返すから検閲する必要がないということなのだろう。

(ちなみにインターネットを見たりなど内部の端末から外部へのアクセスをする場合は、ルーターがどの端末がどこへ通信したかを覚えていて、それに対する返事をそれぞれの端末に返すという処理になっているとか。)

とりあえずオンにしておいてセキュリティ的には問題ないと思うのでかたっぱしからオンにする。

なんか不便ができたらその時また修正すればいい。

アフター

フォワーディングの設定

今回は80と443ポートを自宅サーバに転送する。(自分用でかつ単純なブラウザからのアクセスであればポートをかえたほうがセキュリティ的にいいのかもしれないが、今回はNextcloudのクライアントアプリやLet's enclyptでSSL認証するために標準のポートにしておく。) あとはSSH用のポートも開けるかもしれない。開けないほうが間違いなく安全だが、外部からサーバの様子を見たりするのにはあったほうが便利ではあるので悩ましいところ。 それにいかにも遠隔操作という感じでロマンもある とりあえず今回はおいておく。

ポートフォワーディング

NATループバックとヘアピンNAT

ここまでで外からアクセスした場合はサーバにつながるようになった。

外部からのアクセス

しかし自宅LAN内から接続するとルータにつながってしまう。

内部からのアクセス

同LAN内からグローバルなドメインに対してアクセスする場合はNATループバックやヘアピンNATといった機能が必要らしいが、どうもこのルーターは対応していないらしい。

DNSの設定

ルータの設定画面を一通り見ていたところ、DNSというメニューがあり、ホスト名とドメイン名の入力欄があった。

メニュー画面に説明がないので推測だったが、仮にドメインをexample.comに設定して、ホスト名home-serverに自宅サーバの内部IPに設定にすれば、home-server.example.comで自宅サーバにアクセスできるのではないか?

ということで早速試してみた

ドメインの設定
ホストの追加

結果的には期待通り動いた。

これでとりあえず目的は達した。

今後のこと

ここまでやっていざ公開したはいいものの、案の定不審なアクセスがあり、心配になってきた。外部からスマホやノートPCでアクセスすることを考えると、IPでの制限も難しい。海外IPをはじくくらいならできるとはいえ、そもそも現状の構成だとこのIPフィルタリング用のファイアーウォールも自宅サーバが自分でやる形になる。負荷も心配だが何より怪しいパケットがサーバーに届いてしまっているというのは(受け取ってすぐにフィルターするのでそうそう問題ないとはいえ)やはり気味が悪いのは否めない。

そんなこんなで結局チキって直接のサーバーの公開をやめ、代わりにVPSをゲートウェイとしたVPNを用意して自宅サーバーにアクセスする形にした。(後日掲載予定)

余談

パスワードを変更する時文句言われた。

パスワード変更

ランダムな数字8文字でダメだったので、12文字に増やして再設定したがまだ警告が出た。 デフォルトがadminのくせに厳しすぎでは…?

その他参考

用語集「ドメイン・ホスト名とは?」 ホスト名 - Wikipedia Web(ウェブ)とは - IT用語辞典 e-Words