1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ロケーションまたぎのNISの検証

Last updated at Posted at 2021-11-02

はじめに

NIS ServerとそのClientが同一Subnetになく、ロケーションを超えた場合、例えば東京-大阪など、このようなケースで機能するかを調べる必要がでたので、ここにまとめます。検証はAWSを用いました。ロケーション超えを想定するためにVPCを分けてNIS ServerとClientを設置しました。

NIS自体、ちゃんと構築したことがなかったので下記のようにまとめています。

    1. NIS Server: 一般的な構築方法を解説
    1. NIS Client: 一般的な構築方法を解説
    1. オペレーション: 基本的な操作方法
    1. NIS Clientが同一VPC上にない場合, ロケーションをまたぐ場合

結論からいうと、ロケーションまたぎ可能です。Clientから見るとOutboundの通信のみで機能します。

  1. NIS Server
    ============================

1.1 事前準備

サーバ情報の定義

command
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"

ホストネームの変更

command
sudo hostnamectl set-hostname ${NIS_HOSTNAME}
sudo reboot

hostsファイルの編集

/etc/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ドメインの定義

/etc/sysconfig/network
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クライアントとして許可する範囲を定義

/var/yp/securenets
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

サービス起動

command
sudo systemctl start rpcbind ypserv ypxfrd yppasswdd
sudo systemctl enable rpcbind ypserv ypxfrd yppasswdd

NISデータベースの更新

command
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:
  1. Client Side (同一VPC, 同一Subnet)
    =========================================

2.1 事前準備

サーバ情報の定義

command
NIS_HOSTNAME="nis-vpc1"
NIS_IP_ADDR="172.31.0.17"
CLIENT_NAME="client-vpc1"
CLIENT_IP_ADDR="172.31.0.171"
NISDOMAIN="vpc1"

ホストネームの変更

command
sudo hostnamectl set-hostname ${CLIENT_NAME}
sudo reboot

hostsファイルの編集

/etc/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の設定

使用する変数の確認

Check
cat << ETX

NISDOMAIN=${NISDOMAIN}
NIS_HOSTNAME=${NIS_HOSTNAME}

ETX

パッケージのインストール

command
sudo yum -y install ypbind rpcbind

NISドメインの定義

/etc/sysconfig/network
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作成設定

command
sudo authconfig \
     --enablenis \
     --nisdomain=${NISDOMAIN} \
     --nisserver=${NIS_HOSTNAME} \
     --enablemkhomedir \
     --update

サービス起動

command
sudo systemctl start rpcbind ypbind
sudo systemctl enable rpcbind ypbind

参照しているNISサーバーの確認

command
ypwhich
nis-vpc1
  1. オペレーション
    ============================

グループの作成

3つのグループを作成する
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

データベースの反映

command
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' から出ます
  1. 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アドレスを登録すれば良い。

/var/yp/securenets
255.0.0.0    127.0.0.0
0.0.0.0  0.0.0.0

Client側の設定

基本的には、上記のClient設定と同じ。NISサーバの名前解決はグローバルIPで名前解決するように設定する。

テスト結果

このようなケースでも正しくNISが動作することを確認できました。

command
[centos@client-vpc2 ~]$ su - xd-daisuke
パスワード:
ディレクトリ '/home/xd-daisuke' を作成中

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?