JCOM回線で自宅サーバ(Ubuntu)を建ててsshするまで(初心者向け)

現在マンションに住んでいるんですが, 家の構造上光回線が引けないらしく, やむなくJCOM回線を契約しています. JCOMは固定IPオプションが無いのでよくある自宅サーバを建てて外部に公開, みたいなことが出来ません.

以前から自宅サーバなるものをやってみたかったので今回はJCOM回線の人(に限らず固定IPが持てない人)向けのお手軽サーバ構築をやってみたいと思います.

ちなみに私はサーバやネットワークに関して完全素人なので多々間違っている記述がある可能性があります. 指摘があればコメントで教えてください.

対象読者

  • 固定IP持ってないけど自宅サーバをやってみたい人
  • Linuxコマンドが一通り分かる人

Linuxコマンドはググればいくらでも情報出てくるので, 分からなかったらググってください.

プラン

固定IPがないので他のやり方を探さないといけません. 選択肢は2つです.

  1. VPSからVPNを張って疑似固定IPゲット
    さくらやlightsailと言った適当なVPSを借りてVPNを張り, サーバを公開する方法です. しかしVPNサーバ建てるのはめんどくさそうだし, 第一余計に金が掛かるので却下(今非常に金欠). 今回は何か目的があってサーバを建てる訳でもないのでそこまでしたくはないです.

  2. 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

この記事書くまで気づいてなかったけどこれうちの大学のAdvent Calendarじゃん...(ちなみに私は村井研とは無関係)

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なのでインデントはタブ文字だとアウトらしい. スペースでインデントしてください. あとファイルの最後に改行を入れとかないとエラーを吐きます.

magazine.rubyist.net

編集し終わったら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に通知するアドレスです.

あとは

qiita.com

この記事を参考にIPアドレスの通知と定期実行の設定をします(他力本願).

ルータの設定

最後にポートフォワードの設定をします. 先程のルータの設定画面からポートフォワードの設定画面を探します.
うちのルータではこんな感じでした.

ポートフォワードの設定画面
ポートフォワードの設定画面
開始ポートはルータのポート, 終了ポートはサーバ側のポートを指します. sshは基本的には22番ポートを使うので, ルータの22番に入ってきたやつをサーバの22番に流します.
ここまでやったらあとは

$ssh サーバのユーザ名@hogefuga.mydns.jp

ssh接続が出来るようになります. 出来ない場合はmydnsの設定の反映が追いついてない場合があるので, 15分程待ってから再度sshしてみてください.

ここでは最低限の設定しか紹介していないので, そのまま使うとセキュリティ的にヤバいと思います. 「ssh セキュリティ」とかでググれば死ぬほど情報出てくるので後は頑張ってください.

あとがき

固定IPをくれ(切実)