作業記録:nginx, vsftpd, postfix, DNS

所感

ドメイン名を2つ所持していたのは良かった。ほとんど使ってない実験用ドメイン daphnia.org でテストや確認ができた。本番用の chimaira.org だけだと、出来なくはないが心理的に不安があっただろう。

時代の変遷を強く感じた。

特に、クソめんどくさいiptablesが分かりやすいfirewall-cmdになったのはありがたい。ファイアーウォール管理がめちゃくちゃ楽。iptablesについては過去の悪夢だったとスッパリ忘れよう。

[追記]
iptables の感想を iptablesにムカつく私 - (保存用) 檜山正幸のキマイラ飼育記 メモ編 より:

なんつーか、概念レベルのモデルをすっ飛ばして実装を露出させる、それをまた個別ケースごとに経験論と現象論で対処している、ってその感じが、僕の神経をいたく逆なでする。こういうところは、[UL]*x の悪い文化だ。

[/追記]

全体的手順

基本的に過去のセットアップスクリプトを手直ししながらそれを実行。スクリプトのベース名一覧は:

  1. ネットワーク・アプリケーション
    1. nginx
    2. postfix
    3. vsftpd
  2. その他
    1. useradd -- useraddの実行
    2. sudoers -- /etc/sudoers の設定
    3. set_ssh -- rsyncを使う場合の、ユーザーごとのssh設定
    4. mail_forward -- ユーザーごとのメールフォーワード設定

ネットワーク・アプリケーションは疎通確認が必要だが、この目的ではftpがいいと思った。単に疎通確認なら、httpよりお手軽。

  1. vsftpdをインストールする。vsftpdの設定は分かりにくいが、上記スクリプトがある。
  2. ユーザーホワイトリストにテストで使う(本番でもいいが)ユーザーを入れる。
  3. firewall-cmd でftpのポート開放をする。

現状のデフォルトでは、ssh以外のポート以外は全部閉まっている。他に cockpit, dhcp6client がデフォルトで利用可能だが、これはサーバー提供会社の都合かも知れない。ユーザーとして初期状態で使えるのはssh通信だけ

firewall-cmd の実行は:

firewall-cmd --zone=public --add-service=ftp --permanent
firewall-cmd --reload

次の手順で実験する。

  1. ローカルPCから、IPアドレス直接指定でアクセスしてみる。
  2. DNS設定(後述)をした後で、ドメイン名指定でアクセスしてみる。

今回、上記のとおりでうまくいったが、次のような直接的設定が必要になるケースもあるかも知れない。

firewall-cmd --permanent --add-port=20/tcp --zone=public --permanent
firewall-cmd --permanent --add-port=21/tcp --zone=public --permanent
firewall-cmd --permanent --add-port=23000-24000/tcp --zone=public --permanent
firewall-cmd --reload

ポートは、20/tcp はFTP (データ)、 21/tcp はFTP (制御) 。23000-24000/tcp はvsfpdの設定ファイル vsftpd.conf の番号と合わせる。

pasv_min_port=23000
pasv_max_port=24000

過去にハマった記録は:

ネットワーク・アプリケーション

インストールと設定は、セットアップスクリプトを実行。今回のポイントは:

  • デーモン管理が systemd, systemctl になった。便利。
  • ファイアーウォール設定が firewalld, firewall-cmd になった。便利。

yum → dnf の変化もあるが、あまり大きな影響はない。

関連するポートは:

  • TCP 20 : FTP (データ)
  • TCP 21 : FTP (制御)
  • TCP 25 : SMTP
  • TCP 80 : HTTP
  • TCP 443 : HTTPS

TCP 20/21 FTP に関しては次でOK。

firewall-cmd --zone=public --add-service=ftp --permanent
firewall-cmd --reload

TCP 80 HTTP に関しては次でOK。

firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --reload

TCP 25 SMTP に関しては次でOK。

firewall-cmd --add-service=smtp --zone=public --permanent
firewall-cmd --reload

確認したいときは、

firewall-cmd --list-all

セキュアなメール転送は次らしいが、まだやってない

firewall-cmd --add-service=smtps --zone=public --permanent
firewall-cmd --reload

TCP 443 HTTPS は、どうも個別ポート解法らしくて、

firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --reload

SSL上のFTPの設定(Vsftpd over SSL/TLS)は、例えば:

DNS設定

とりあえず、ConoHaの daphnia.org のDNS情報だけを書き換えた。ConoHaのDNS設定は簡単(ドメイン名、ネームサーバー、レジストラ移管 - (新) 檜山正幸のキマイラ飼育記 メモ編 参照)。

Aレコードで、次の関連付けをする。

  • daphnia.org → 160.251.23.194
  • www.daphnia.org → 160.251.23.194

CNAMEは使ってない(たぶん不要)。IPアドレスは契約時にもらったものだが、ログインできれば hostname -I または ip -4 addr または curl ifconfig.me でグローバルV4-IPアドレスが分かる。ホスト名の設定は、

hostnamectl set-hostname 名前
echo 名前 > /etc/hostname

次に、レジストラである Dotster の作業画面〈ダッシュボード | コントロールパネル〉から、daphnia.org のネームサーバー設定を選ぶ -- 分かりにくいが、トップ画面のドメイン名右側歯車アイコンから、左サイドバーの DNS & Nameservers 、ConoHaにおけるドメイン名の扱い - (新) 檜山正幸のキマイラ飼育記 メモ編 参照。Dotster側の登録情報は:

  1. daphnia.org のプライマリネームサーバー ns-a1.conoha.io
  2. daphnia.org のセコンダリネームサーバー ns-a2.conoha.io

ドメイン名情報がインターネットに浸透するのに多少の時間がかかる。とりあえず、nslookup で確認する。もっと具体的なテストは:

  • ローカルPCから、ftpクライアントにドメイン名指定でアクセスする。
トラブルと注意事項

ローカルからConoHaサーバーにSSH接続したときDNSスプーフィングの警告が出て、

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! 

となり繋がらない。これは、名前 daphnia.org のサーバーの実体が、GMO-VPSサーバー → ConoHaサーバー と変更されたからで、ローカルのSSHクライアントが保持していた接続先サーバーのアイデンティフィケーション情報との不一致が検出されたため。ローカルSSHクライアントは古いGMO-VPSサーバ(IPアドレス153.122.38.158)を名前 daphnia.org の実体だと思っている。この情報〈信念〉を削除すればいいが、IPアドレス直接アクセスすれば古いGMO-VPSサーバーに入れる。

古い {www.}?daphnia.org と 新しい www.daphnia.org

古い daphnia.org は:

  • http://daphnia.org でタブ郎が動いていた。file:///C:/Users/m-hiyama/Work/HosoDaigaku/TABROU/tabrou.html と同じ。
  • http://www.daphnia.org/ で Jeykll が動いていた。パットしない、捨ててもいい。

当面、新しい daphnia.org では、