はじめに
NIS ServerとそのClientが同一Subnetになく、ロケーションを超えた場合、例えば東京-大阪など、このようなケースで機能するかを調べる必要がでたので、ここにまとめます。検証はAWSを用いました。ロケーション超えを想定するためにVPCを分けてNIS ServerとClientを設置しました。
NIS自体、ちゃんと構築したことがなかったので下記のようにまとめています。
-
- NIS Server: 一般的な構築方法を解説
-
- NIS Client: 一般的な構築方法を解説
-
- オペレーション: 基本的な操作方法
-
- NIS Clientが同一VPC上にない場合, ロケーションをまたぐ場合
結論からいうと、ロケーションまたぎ可能です。Clientから見るとOutboundの通信のみで機能します。
- NIS Server
============================
1.1 事前準備
サーバ情報の定義
NIS_HOSTNAME="nis-vpc1"
NIS_IP_ADDR="172.31.0.17"
CLIENT_NAME="client-vpc1"
CLIENT_IP_ADDR="172.31.0.171"
NISDOMAIN="vpc1"
ALLOWED_IP_RAGE="255.255.0.0 172.31.0.0"
ホストネームの変更
sudo hostnamectl set-hostname ${NIS_HOSTNAME}
sudo reboot
hostsファイルの編集
sudo sh -c "cat << EOF >> /etc/hosts
${NIS_IP_ADDR} ${NIS_HOSTNAME}
${CLIENT_IP_ADDR} ${CLIENT_NAME}
EOF
"
cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.31.0.17 nis-vpc1
172.31.0.171 client-vpc1
1.2 NISの設定
パッケージのインストール
sudo yum -y install ypserv rpcbind
NISドメインの定義
sudo ypdomainname ${NISDOMAIN}
sudo sh -c "echo \"NISDOMAIN=${NISDOMAIN}\" >> /etc/sysconfig/network"
cat /etc/sysconfig/network
NOZEROCONF=yes
# Created by cloud-init on instance boot automatically, do not edit.
#
NETWORKING=yes
NISDOMAIN=vpc1
NISクライアントとして許可する範囲を定義
sudo sh -c "cat << EOF >> /var/yp/securenets
255.0.0.0 127.0.0.0
${ALLOWED_IP_RAGE}
EOF
"
cat /var/yp/securenets
255.0.0.0 127.0.0.0
255.255.0.0 172.31.0.0
サービス起動
sudo systemctl start rpcbind ypserv ypxfrd yppasswdd
sudo systemctl enable rpcbind ypserv ypxfrd yppasswdd
NISデータベースの更新
sudo /usr/lib64/yp/ypinit -m
以下のような文章がでるが、HA構成にしない場合はいったん無視してよい。
<control D>
を入力後 y
を入力する。
この時点で、NISサーバーを実行するホストのリストを作成する必要があります。 nis-vpc1は、NISサーバーホストのリストにあります。 他のホストの名前を1行に1つずつ追加し続けてください。 リストが完成したら、<controlD> と入力します。
At this point, we have to construct a list of the hosts which will run NIS
servers. nis-vpc1 is in the list of NIS server hosts. Please continue to add
the names for the other hosts, one per line. When you are done with the
list, type a <control D>.
next host to add: nis-vpc1
next host to add:
next host to add:
- Client Side (同一VPC, 同一Subnet)
=========================================
2.1 事前準備
サーバ情報の定義
NIS_HOSTNAME="nis-vpc1"
NIS_IP_ADDR="172.31.0.17"
CLIENT_NAME="client-vpc1"
CLIENT_IP_ADDR="172.31.0.171"
NISDOMAIN="vpc1"
ホストネームの変更
sudo hostnamectl set-hostname ${CLIENT_NAME}
sudo reboot
hostsファイルの編集
sudo sh -c "cat << EOF >> /etc/hosts
${NIS_IP_ADDR} ${NIS_HOSTNAME}
${CLIENT_IP_ADDR} ${CLIENT_NAME}
EOF
"
cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.31.0.17 nis-vpc1
172.31.0.171 client-vpc1
2.2 NIS Clientの設定
使用する変数の確認
cat << ETX
NISDOMAIN=${NISDOMAIN}
NIS_HOSTNAME=${NIS_HOSTNAME}
ETX
パッケージのインストール
sudo yum -y install ypbind rpcbind
NISドメインの定義
sudo ypdomainname ${NISDOMAIN}
sudo sh -c "echo \"NISDOMAIN=${NISDOMAIN}\" >> /etc/sysconfig/network"
cat /etc/sysconfig/network
NOZEROCONF=yes
# Created by cloud-init on instance boot automatically, do not edit.
#
NETWORKING=yes
NISDOMAIN=vpc1
NISによる認証の有効化, 初回ログイン時のhome dir作成設定
sudo authconfig \
--enablenis \
--nisdomain=${NISDOMAIN} \
--nisserver=${NIS_HOSTNAME} \
--enablemkhomedir \
--update
サービス起動
sudo systemctl start rpcbind ypbind
sudo systemctl enable rpcbind ypbind
参照しているNISサーバーの確認
ypwhich
nis-vpc1
- オペレーション
============================
グループの作成
sudo groupadd -g 10000 xd-users
sudo groupadd -g 11000 dev
sudo groupadd -g 12000 japan
ユーザの作成
CentOSの場合はUIDを1000以上にすること
sudo useradd -u 10000 -g xd-users -G dev,japan xd-daisuke
sudo passwd xd-daisuke
データベースの反映
cd /var/yp; sudo make
gmake[1]: ディレクトリ `/var/yp/vpc1' に入ります
Updating passwd.byname...
Updating passwd.byuid...
Updating group.byname...
Updating group.bygid...
Updating netid.byname...
gmake[1]: ディレクトリ `/var/yp/vpc1' から出ます
- NIS Clientが同一VPC上にない場合, ロケーションをまたぐ場合
=============================================================
NISサーバが、NIS ClientにアクセスできないNetwork構成のときに、NISが機能するかテストした。
- NIS Server: Public Subnet領域に設置 (PublicIPアドレスを有す)
- NIS Client: Private Subnet領域に設置 (PrivateIPのみ、NIS Serverからアクセス不可)
NISサーバ側の設定変更
許容するIPレンジの変更
今回は/var/yp/securenets
をテスト的に以下のように 0.0.0.0/0
を許容するように変更。実際はNAT GatewayやProxyのIPアドレスを登録すれば良い。
255.0.0.0 127.0.0.0
0.0.0.0 0.0.0.0
Client側の設定
基本的には、上記のClient設定と同じ。NISサーバの名前解決はグローバルIPで名前解決するように設定する。
テスト結果
このようなケースでも正しくNISが動作することを確認できました。
[centos@client-vpc2 ~]$ su - xd-daisuke
パスワード:
ディレクトリ '/home/xd-daisuke' を作成中