2019年4月17日水曜日

Ubuntu Server 18.4をFreeBSD 10.xのNISクライアントとする

Ubuntu Server 18.4をFreeBSD 11.xのNISクライアントとする場合、いくつかの設定が必要でした。
FreeBSD 11をNISサーバーに、Ubuntu 16.04をNISクライアントするための設定
http://www.sakashita-net.jp/2018/01/freebsd-11nisubuntu-1604nis-1.html
http://www.sakashita-net.jp/2018/01/freebsd-11nisubuntu-1604nis-2.html
今回、これ以外にも設定が必要であることがわかりました。
  1. NISのパッケージをインストールして設定ファイルを記述
    $ sudo apt install nis

    $ cat /etc/yp.conf
    domain NISドメイン名 server NISサーバーホスト名
    $ cat /etc/nsswitch.conf
    passwd:         compat systemd nis
    group:          compat systemd nis
    shadow:         compat nis
    $
  2. NISでの認証の場合、ログインに時間がかかるので、以下のWWWページを参照して設定を行った。

    Ubuntu 18.04 マシンへのログインに時間がかかることに対する対処
    https://ocg.aori.u-tokyo.ac.jp/member/daigo/comp/memo/?val=valid&typ=all&nbr=2018051801

    問題
    Ubuntu 16.04 のころから ssh でログインするのに異様に時間がかかるようになった. ログインするたびに /var/log/auth.log には
    pam_systemd(sshd:session): Failed to create session: Connection timed out
    とのエラーが出ており PAM に問題があるようだったため,sshd が PAM を使わないよう設定していた. なお, このタイムアウトは 25秒 に設定されている. しかし, パスワード認証に PAM を使うシステムは sshd だけでなく,デスクトップの lightdm なども該当するため根本的解決が必要になった.
    原因
    ログインに時間がかかるマシンは NIS のクライアントでもあった.sshd の起動時, /var/log/syslog には
    systemd-logind do_ypcall: clnt_call:
    RPC: Unable to send; errno = Operation not permitted

    とのエラーが出ていた. PAM が呼ぶ system-logind が NIS サーバにアクセスできていないようである. ypcat などで passwd データなどは引けているので, この原因は不明である.
    対処
    /lib/systemd/system/systemd-logind.service
    にて
    IPAddressDeny=any

    #IPAddressDeny=any
    とコメントアウトし
    $ sudo systemctl daemon-reload

    で systemd をリロード. これで ssh, lightdm 等のログイン問題は解決した.

    Linux NISクライアントがログイン時にハングアップする
    https://qiita.com/kakinaguru_zo/items/18258d4dd296a755badd

    Ubuntu 18や最近のDebian testingやArch LinuxでNISを用いた認証を行うようにすると25秒間固まる。これはsystemdバージョン235からsystemd-logindが一切のネットワーク通信を出来ないように設定されているからである。これを解決するための方法はいくつかあり以下のどれかを実行すればよい。
    1. /lib/systemd/system/systemd-logind.service の IPAddressDeny=any の行をコメントアウトする
    2. unscd をインストールする(nscdは問題が多いのでやめたほうがよい)
    この問題はsystemdの開発者に認識されているがsystemdのほうで修正される予定はない

    私は、後者のunscdをインストールすることで対処しました。というのは、ファイル/lib/systemd/system/systemd-logind.service はsystemdのアップデートで更新されてしまうことがあり、変更が失われてしまう場合があったためです。