現在マンションに住んでいるんですが, 家の構造上光回線が引けないらしく, やむなくJCOM回線を契約しています. JCOMは固定IPオプションが無いのでよくある自宅サーバを建てて外部に公開, みたいなことが出来ません.
以前から自宅サーバなるものをやってみたかったので今回はJCOM回線の人(に限らず固定IPが持てない人)向けのお手軽サーバ構築をやってみたいと思います.
ちなみに私はサーバやネットワークに関して完全素人なので多々間違っている記述がある可能性があります. 指摘があればコメントで教えてください.
対象読者
Linuxコマンドはググればいくらでも情報出てくるので, 分からなかったらググってください.
プラン
固定IPがないので他のやり方を探さないといけません. 選択肢は2つです.
VPSからVPNを張って疑似固定IPゲット
さくらやlightsailと言った適当なVPSを借りてVPNを張り, サーバを公開する方法です. しかしVPNサーバ建てるのはめんどくさそうだし, 第一余計に金が掛かるので却下(今非常に金欠). 今回は何か目的があってサーバを建てる訳でもないのでそこまでしたくはないです.DDNSを使う
Dynamic DNSというやつです. 通常の家庭はプロバイダから動的にグローバルIPを振られている為, サーバを公開することが出来ない訳ですが, そのグローバルIPが変わるごとにDNSに通知をしてやればドメイン名でアクセスすることが可能になる訳です.
DDNSの提供者は様々ありますが, 今回は老舗で有名所のmydns.jpを選択. 一定期間IPアドレスの通知が無いと接続出来なくなってしまいますが, DNSもドメインも無料で使わせてくれます. ありがてぇ... (お金に余裕が出来たら寄付したい)
設定
サーバ側
方針が決まったのでさっそくサーバを建てていきます. 今回のサーバのスペックはこちら
化石みたいなマシンですが, 大したことしないのでこのスペックでも十分でしょう. ちなみにジャンク5000円で買いました. Win10のライセンスも付いてたのでとてもお得.
DDNSを使うやり方ではルータにポートフォワードの機能が付いている必要があります. だいたい本体裏に設定用のIPアドレスが書いてあるのでブラウザからアクセスして確認してください(ちなみにうちの機種では192.168.0.1
でした)
まずUSBメモリにUbuntu Serverを焼いていきます. ここは各自ググってください.
そしてインストールします. ここもググりましょう(は?). インストール時に「OpenSSHサーバを入れますか?」みたいな事を聞かれるのでそっちもインストールしておいてください.
インストールが終わったらまずLAN内でのIPを固定します. Ubuntu Serverの16.10以降は/etc/netplan
以下にyamlを置くことで設定出来ます. 初期状態では00-installer-config.yaml
とか/etc/netplan/50-cloud-init.yaml
とか言うファイルが置いてあるようですが, これらは触らない方がいいらしい.
参考↓
qiita.com
99_config.yaml
を作製して設定内容を記述します.
設定例:
network: version: 2 renderer: networkd ethernets: enp0s25: dhcp4: false dhcp6: false addresses: [192.168.0.24/24] gateway4: 192.168.0.1 nameservers: addresses: [8.8.8.8, 8.8.4.4]
yamlなのでインデントはタブ文字だとアウトらしい. スペースでインデントしてください. あとファイルの最後に改行を入れとかないとエラーを吐きます.
編集し終わったらsudo netplan apply
で設定を反映させます.
DDNS側
今度はDDNSの設定をやっていきます. まずmydns.jpを開いてユーザ登録をします. しばらくするとメールが届くのでそこに書いてあるIDとパスワードでログイン.
ドメインの設定
ログイン出来たら左側のメニューからDOMAIN INFOを選択.
Domainの欄に
hogefuga.mydns.jp
みたいな感じで使いたいドメイン名を入力します. mydnsでは無料で使えるドメインを発行していますが, 自分で用意することも出来ます. めんどくさいので今回は割愛.
MXの欄はメールサーバを建てる時に入力します. 今回はやらないのでスルー.
最後にHostname, レコードのタイプを入力します. 今回はHostnameに*
, レコードはA
を選択します. IPv4だけでいい人はAを, v6も使いたい人はAAAAを選択します.
一行下の欄ではHostnameにwww
, レコードにCNAME
を設定します. こうすることで
hogefuga.mydns.jp
でも
www.hogefuga.mydns.jp
でもアクセス出来るようになります.
IPアドレスの設定
ドメインの設定が終わったら, 次はドメインとIPアドレスの紐づけを行う必要があります. mydnsのサイト内でも出来ますが, 今回は手元のサーバから通知をしてみます. まずは自分のIPアドレスを確認します. ルータの裏側に書いてあるIPアドレスからルータの設定画面にログインします. IPアドレスが書かれてない場合は取説を読むかメーカーに問い合わせてください.
WAN側のIPv4アドレスってやつが今回mydnsに通知するアドレスです.
あとは
この記事を参考にIPアドレスの通知と定期実行の設定をします(他力本願).
ルータの設定
最後にポートフォワードの設定をします. 先程のルータの設定画面からポートフォワードの設定画面を探します.
うちのルータではこんな感じでした.
開始ポートはルータのポート, 終了ポートはサーバ側のポートを指します. sshは基本的には22番ポートを使うので, ルータの22番に入ってきたやつをサーバの22番に流します.
ここまでやったらあとは
$ssh サーバのユーザ名@hogefuga.mydns.jp
でssh接続が出来るようになります. 出来ない場合はmydnsの設定の反映が追いついてない場合があるので, 15分程待ってから再度sshしてみてください.
ここでは最低限の設定しか紹介していないので, そのまま使うとセキュリティ的にヤバいと思います. 「ssh セキュリティ」とかでググれば死ぬほど情報出てくるので後は頑張ってください.
あとがき
固定IPをくれ(切実)