So-net無料ブログ作成
検索選択
スポンサードリンク

閉ざされたネットワークでNTPサーバを構築するときのメモ [Linux]

テスト環境などでインターネットへ接続が出来なかったり、社内ネットワークのNTPサーバが利用出来ない環境で、時刻同期が必要でNTPサーバを構築するときのメモ。

通常のNTPサーバの設定ファイル「/etc/ntp.conf」で、同期先サーバの設定を

server IPアドレス

でしますが、同期先がない場合は、

server 127.127.1.0

にすると、NTPサーバとして利用可能になる。
127.127.1.0のアドレスを設定すると、システムクロックと同期するようになる。
NTP独自の仕様みたいです。
あとは、NTPを起動し、動作確認コマンドを実行
# systemctl start ntpd   ←CentOS7の場合
# ntpq -p
結果のremote欄が、LOCAL(0)になっていれば成功。

serverの設定を、ループバックアドレス(127.0.0.1)やネットワークインターフェースのアドレスにした場合は、正常に動作しないので注意かな。

NTPサーバにchronyを使用する場合は、「/etc/chrony.conf」ファイルで、
server 127.127.1.0
allow 127.0.0.0/8
local stratum 10
に書き換え、chronyを起動し、動作確認コマンドを実行
# systemctl start chronyd   ←CentOS7の場合
# chronyc sources
の結果で、MS Name/IP address欄が、「^* 127.127.1.0」になっていれば成功。
^? 127.127.1.0」になっている場合は、少し時間をおいて再度動作確認コマンドを実行してみる。

あとは他のクライアントやサーバからも時刻同期が出来ればOKかなと。

CentOS7でRocket.Chatをインストールしたメモ [Linux]

社内などローカルネットワーク環境で、何か良いチャットツールが無いかなと思い、色々調べたらRocket.Chatが良さそうなので、インストールしてみました。
サーバOSはCentOS7です。

インストールはCentOSのみのリポジトリでは出来ないので、EPELリポジトリを追加します。
# yum -y install yum-plugin-priorities
# sed -i -e "s/\]$/\]\npriority=1/g" /etc/yum.repos.d/CentOS-Base.repo
# yum -y install epel-release
# sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/epel.repo

Rocket.Chatのインストールに必要なもの、MongoDBNode.js等をインストール。
# vi /etc/yum.repos.d/mongodb.repo
[mongodb]
name=MongoDB Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/
gpgcheck=0
enabled=1

# yum install -y nodejs curl GraphicsMagick npm mongodb-org-server mongodb-org gcc-c++
# npm install -g inherits n
# yum install nodejs npm
# yum --enablerepo=epel install nodejs npm
# npm install -g inherits n
# n 4.5

Rocket.Chatをダウンロードし、インストール。
# cd /opt/
# curl -L https://rocket.chat/releases/latest/download -o rocket.chat.tgz
# tar zxvf rocket.chat.tgz
# mv bundle Rocket.Chat
# cd Rocket.Chat/programs/server/
# npm install

サイト名等編集
# vi /opt/Rocket.Chat/rocketchat.env
PORT=3000
ROOT_URL=ホスト名またはIPアドレス:3000/
MONGO_URL=mongodb://localhost:27017/rocketchat

ポート番号は3000になっているけど、変更も可能。

MongoDBの起動と自動起動設定
# systemctl start mongod
# chkconfig mongod on

# systemctl enable mongod
で、自動起動設定をすると、以下の表示が出る。
mongod.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig mongod on

Rocket.Chatの起動ファイル作成
[Unit]
Description=The Rocket.Chat server
After=network.target remote-fs.target nss-lookup.target nginx.target mongod.target
[Service]
ExecStart=/usr/local/bin/node /opt/Rocket.Chat/main.js
EnvironmentFile=/opt/Rocket.Chat/rocketchat.env
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=rocketchat
User=root
[Install]
WantedBy=multi-user.target

Rocket.Chatの起動と自動起動設定
# systemctl daemon-reload
# systemctl enable rocketchat.service
# systemctl start rocketchat.service

サービス起動確認
# systemctl status rocketchat

あとは、クライアントからWebブラウザを起動してアクセス出来ればOKかと。
アクセスできない場合は、firewalldの設定またはIptablesの設定を追加またはサービス停止。
SELINUXの無効化等をすればいけるかと。

インターネットへ公開する場合は、nginxやsquidなどでリバースプロキシを構築・設定して利用したほうが良さそうです。

Linuxのリモートデスクトップサーバ(xrdp)インストール時のメモ [Linux]

Centos7にリモートデスクトップサーバをインストールした時のメモ。

yumでインストールするときは標準ではインストール出来ないので、epelからインストールする。
yum --enablerepo=epel install xrdp

epelのリポジトリが入っていない場合は、
yum install epel-release
で追加しておく。

インストール後にサービスを起動する。
systemctl start xrdp
systemctl enable xrdp

Firewall設定がされていたら、ポートを開放する。
iptablesの場合はtcp3389を受け入れ設定する。

クライアントPCからリモートデスクトップを起動し、リモートデスクトップサーバのIPアドレスを入れて接続すると、なぜか接続できない。

エラーから以下のファイルを修正
vi /etc/xrdp/xrdp.ini
max_bbp=32 → 24へ変更

サービスを再起動後、リモートデスクトップから接続が出来た。
systemctl restart xrdp

デフォルト設定のままだとrootユーザでログインが出来るので、以下のファイルを編集。
vi /etc/xrdp/sesman.ini
AllowRootLogin=1 → 0へ変更
もしくは
AllowRootLogin=true → falseへ変更
で、rootユーザでのログインが出来なくなる。

シェルスクリプトは動くけど、cronで動作するとエラーになる原因。 [Linux]

シェルスクリプトは動くけど、cronでは動作せずエラーが出るときの原因メモ。

ユーザでログインし、シェルスクリプトで動作テストは問題なく動作する。
$ test.sh
OK

しかし、そのシェルスクリプトをcronで設定すると動作しない。
crontab -l
10 * * * * /home/test.sh
NG

どうやら、ログインしてシェルスクリプトを実行するのと、cronでシェルスクリプトを起動するのでは
環境が違うもよう(当たり前ですが)。
特にありそうなのが、PATHと文字コード。
まずはシェルスクリプトが動作する環境のPATHを確認。
$ echo $PATH

出てきた結果をcrontab -eで最初の方に記載する。
crontab -l
PATH=/usr/local/bin:/usr/sbin/:・・・・

文字コードの確認をする。
$ echo $LANG

出てきた結果を、実行スクリプトの前に記述する。
crontab -l
10 * * * * export LANG=ja_JP.UTF-8; /home/test.sh
※日本語、UTF-8の場合。

全部のスクリプトに割り当てる場合は先頭に設定を入れる。
crontab -l
LANG=ja_JP.UTF-8
※日本語、UTF-8の場合。

で、動作するようになるはず。
基本的にはデフォルト設定で問題無く動作すると思うのですが、後からインストールしたものや
追加した環境が有るとなりやすいかも。
OSを英語環境でインストール後に日本語環境を追加とか、rubyやpython3を追加しそのプログラムを
実行したときや、サードパーティー製アプリをインストールしそのプログラムを実行するなどかな。

それ以外のcronのメモ。
cronの結果メールが不要な場合。
crontab -l
MAILTO=""
メール送信先を変更する場合。
MAILTO="hogehoge@hogehoge.jp"

特定のスクリプトだけログを出さないようにする場合。
crontab -l
10 * * * * /home/test.sh > /dev/null 2>&1

個別のログへ出力する場合。
10 * * * * /home/test.sh >> /tmp/ok.log 2>>/tmp/error.log
標準出力はok.logへ、標準エラーログはerror.logへ出力する。

個別でメール送信をする場合。
10 * * * * /home/test.sh 2>&1 | Mail hogehoge@hogehoge.jp

cronで実行するものによって、使い分けるようにしたほうが良さそうですね。

pingやdigの応答は早いけど、tracerouteやtelnetなどの応答が遅いときは [Linux]

名前解決でDNSサーバを利用する時に、pingdigはDNS応答は早いけど、traceroutetelnetなどはDNS応答が遅くなるパターンが有ります。
OSもCentOS5までは問題無く早い応答が有るけど、CentOS6以降は遅くなります。
遅延は5秒位で環境にもよるみたいですが、DNSサーバと利用するサーバ間にFWが有ると発生するようです。
特にFWがIPv6に対応していないとなるみたいですね。
OS側でIPv6を無効にすれば良いみたいですが、改善しないことも有るようです。

対応方法は
同一セグメントまたはFW配下にDNSサーバを構築し利用するか、
ネットワーク設定の
/etc/resolv.conf

options single-request-reopen
を追加すれば良いようです。

DNS応答が少々遅延しても良いシステムやクライアント利用の場合は問題無さそうですが、
squidなどのproxyサーバpostfixsendmailなどのメールサーバなど名前解決を多用するシステムは設定したほうが良さそうです。

messageログに”imuxsock lost 100 messages from pid 1000 due to rate-limiting"が出た時の対処 [Linux]

/var/log/message
jun 1 10:00:00 hostname rsyslogd-1000: imuxsock lost 100 messages from pid 1000 due to rate-limiting
のようなログが出た場合、rsyslogが処理出来なかったメッセージを捨てましたよということみたいです。
ログ出力が多いアプリをrsyslog経由にすると出るようになるのかな。
エラーから見ると100メッセージほど捨てられているようです。

対応方法は
/etc/rsyslog.conf
にログの制限を広げる以下の2行を追記するか、
$SystemLogRateLimitInterval xx(秒数)
$SystemLogRateLimitBurst xxxx(メッセージ数)
デフォルトは5秒、200メッセージみたいです。

リミット無しにする以下の行を追記すれば解決するようです。
$SystemLogRateLimitInterval 0

サーバのスペックが高く、余裕も有るようでしたらリミット無しの方がよいかも。
rsyslog.confを変更したら、rsyslogを再起動。
service rsyslog restart ※CentOS6など
systemctl restart rsyslog ※CentOS7など

あとはmessageログを確認して、該当のログが出ていないことを確認する。

teratermでLinuxへSSHで接続出来なかった時のメモ [Linux]

既存のサーバ(CentOS6)にsshdの設定をして起動し、teratermでサーバに接続するとエラーが出て接続が出来なかった。

SSHパケットを送信中に通信エラーが発生しました。
切断します。(WSAAsyncSelect1:10093)

/etc/ssh/sshd.conf
の設定に拒否するような設定は無し。

iptablesの設定にも問題無し。
service iptables stop
で、停止しても状況変わらず。

TCPWrappersの設定を見ると、
/etc/hosts.allow
に、記述有り。
sshd: 192.168.0.
を追記したら、teratermからsshで接続出来るようになった。

NTPサーバの動作確認でエラーが出た場合 [Linux]

CentOS6やCentOS7をインストール後に、NTPをインストールし、
/etc/ntp.conf
を設定後、ntpdを起動。
しばらくして、NTPDの動作確認で、
ntpq -p
コマンドを入力すると、
localhost: timed out, nothing received
***Request timed out
とエラーが出る時がある。
時間を置いて、試してみるが変わらず。

調べてみると、IPv6が問題らしい。
/etc/ntp.conf
の中にある
restrict ::1

restrict -6 ::1
へ変更し保存し、ntpdを再起動すれば正常に動作した。
LAN内で、ntpdの上位がIPv6未対応だと出るのかな。
WAN接続でデフォルト設定のままで起動するとエラーにはならなかったし。

OSでIPv6を無効にしていたら、このエラーは出ない。

SELINUXの無効化と確認 [Linux]

Centos6や7でサーバーを構築するときに、SELINUXを無効化にした方が良いことが多いので、無効化する方法。
selinuxディレクトリ配下にあるconfigファイルを編集
~]# vi /etc/selinux/config

SELINUX=enforcing
 ↓
SELINUX=disabled

保存して再起動すると、無効化になる。

SELINUXが有効なのか無効なのかを確認する方法。
~]# getenforce
を実行すると
有効なら
Enforcing
無効なら
Disabled
と表示される。

ファイル表示にも変化があって、リスト表示すると、
mnt]# ls -al
合計 4
drwxr-xr-x. 4 root root 28 1月 7 21:30 .
dr-xr-xr-x. 17 root root 4096 1月 7 21:28 ..
drwxr-xr-x 2 root root 6 1月 7 21:30 NFS
drwxr-xr-x. 2 root root 6 1月 6 20:47 cdrom

アクセス権の後ろにドット”.”があるものは、SELINUXが有効な特に作成されたもの。
ドットが無いものは無効の時に作成されたもの。
なので、何らかのファイルまたはディレクトリを作成すれば、有効なのか無効なのかを
確認することが出来る。

SELINUXが無効化されていたのを有効化した場合は、再起動に少し時間が掛かる(再起動中に再起動する)。
無効化の時に作成したファイルやディレクトリもリスト表示すると
drwxr-xr-x. 4 root root 28 1月 7 21:30 .
dr-xr-xr-x. 17 root root 4096 1月 7 21:35 ..
drwxr-xr-x. 2 root root 6 1月 7 21:30 NFS
drwxr-xr-x. 2 root root 6 1月 6 20:47 cdrom

ドットが付いて無かったファイルにもドットが付くようになる。

Linuxでisoファイルを作成する方法 [Linux]

VMなどのOSで使用するのに有ると便利なisoファイル。
このファイルが無いと、VMのゲストOSをインストールするのにOSのCDROMやDVDROMが必要となる。
isoファイルが有ればメディアをセットしなくても、指定するだけでインストールが可能となり便利。

まず、CDROMまたはDVDROMをセットしてマウント
マウントしなくても出来ますが、念のため。

mount -t iso9660 /dev/cdrom /mnt/cdrom

で、ddコマンドでisoファイルを作成する。

dd if=/dev/cdrom of=/tmp/osname.iso

で、しばらくするとファイルが作成される。

あとはVMでゲストOSをインストールするときに、作成したisoファイルを指定すればOK。
スポンサードリンク
シャンパン酵母エキス