伊予鉗家インフラ覚え書き - 物理マシン、DNSサーバ編 -
「伊予鉗家」のインフラ担当であるロイスがサーバ環境を忘れないようにするための覚え書きです。
記憶を頼りに書いてあるのと、順番こうすればスムーズだったなと思いながら手順を入れ変えている所があるので、もしかしたらこの通りにやっても動かないかもしれません。
物理マシンでも Ansible とか使えば IaC できそうだけど、OS ごと潰す羽目になった時は色々終わってる時だと思うのであまり気にせず、代りにアプリ類を Docker 上に構築し物理マシンの設定を最小限に心掛けるようにする。
OS設定
前提
- マシンは Intel Corei5 が積んである適当なノートパソコン
- DHCP 機能を持っているルーターが LAN 内に存在する
Ubuntu インストール
部屋の片隅に転がっていたパソコンに Ubuntu を入れた。
ディストリビューションは何でも良かったけどあたりさわりの無さそうなのが Ubuntu だった。
初期設定は GUI なので促されるままに設定をする。
とりあえず sudo apt-get update
, sudo apt-get upgrade
だけはかけておく。
ルータ設定
サーバ上で IPv4 アドレスを確認し ( ip a
からそれっぽいのをみつける ) DHCP リースの記憶が残っているうちに手動割り当てに変更しておく。
接続周り
SSH 設定
手元の端末は Win10 だけど、 WSL(Ubuntu) でアクセスするから特別な弊害は無い。
どうせ外部公開はしないものなので SSH ポートの変更とかはしない。
- 接続したいパソコンでキーペアを作成する
-
ssh-keygen
で適当に作成する。パスフレーズなんてつけない
-
- サーバにパスワードでログインする
-
~/.ssh
を 700 で作成する -
~/.ssh/authorized_keys
を作成し、 vim からコンソール経由で貼り付ける。横着。 -
authorized_keys
のパーミッションを 600 にしておく - GUI でも使うユーザーなのでパスワードログインを弾くとかの設定はしない
DNS 設定
DNSだけは物理サーバ側に立てないとブートストラップ問題がおこりそうなので物理サーバに立てる。
サーバ側
/etc/systemd/resolved.conf
に以下の設定を入れこむ
DNS=127.0.0.1 8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:
sudo systemctl restart systemd-resolved.service
でリゾルバを再起動する
apt-get install dnsmasq
で dnsmasq を入れる
各種設定ファイルを変更する
# デフォルトの /etc/hosts を参照しない
no-hosts
# hosts として参照したいファイル
addn-hosts=/etc/hosts_dnsmasq
# ログを出力する
log-queries
# ログの出力場所
log-facility=/var/log/dnsmasq/dnsmasq.log
# dns が listen するポート
port=53
# プライベートIPを逆引きしない
bogus-priv
# 上位DNSファイル
resolv-file=/etc/dnsmasq_resolv.conf
# 名前解決の優先順位を上からにする
strict-order
# ドメイン名のないクエリに自動的にドメインを付与する
expand-hosts
# ドメイン名
domain=lan
local=/lan/
# ドメインの無いホストは転送しない
domain-needed
# キャッシュサイズ
cache-size=0
# DHCP機能は使わない
no-dhcp-interface=eth0
nameserver 8.8.8.8
192.168.11.18 iyokan.lan
192.168.11.18 gitbucket.iyokan.lan
192.168.11.18 iyotools.iyokan.lan
sudo systemctl restart dnsmasq.service
で dnsmasq の再起動を行ったら dig @localhost iyokan.lan
で設定が反映されているかどうかを調べる
Discussion