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

ping疎通はするけど、sshが接続できなかった場合の対応メモ [Linux]

Linux端末からLinuxサーバへssh接続しようとした時に、接続が出来なかった時の対応メモ。
$ ssh user@192.168.10.100
で、接続したときに初回接続時に表示される「The authenticity of host ・・・」が出て、yesを入力し、
続行するが、その後に何も表示がされず接続が出来なかった。
pingで疎通確認をしても、正常に応答が有るので物理的に接続は問題なし。
iptablesTCP Wrapperで、接続元の許可が無いまたは拒否されている状態または、
sshdが起動していないので有れば、「The authenticity of host ・・・」の表示は出てこない。

トラブルシューティングで、sshのオプション-vを付けて接続してみると、
$ ssh -v user@192.168.10.100
  :
  :
debug1: SSH2_MSG_KEXINIT sent
で止まっていることを確認。

調べたところ、バックアップ用セグメントのネットワークで、Jumboフレームに対応したL2SWへ
接続予定だったネットワークI/Fのため、MTU値9000に設定されていた。
このときは本設置前のテスト用ネットワークで、FastEthernetのL2SWに接続されていたので、
とりあえずMTU値を1500へ設定し、sshで接続が可能になった。
本設置時、Jumboフレームに対応したL2SWへ接続し、MTU値を9000に戻し、sshで接続したところ
問題なく接続が出来た。
インターネットVPNなどの接続で、MTU値の変更が必要な環境でも、同様のことが起こるのでこの辺りの確認が必要かも。

使用しているプロバイダがOP25B(メール送信規制)や、メール送信は出来るけど送付したメールが迷惑フィルタに掛る場合のメモ。 [Linux]

自ネットワーク内でメールサーバを構築したのは良いけど、インターネット回線で使用しているプロバイダがOP25Bで規制が掛かっているため25/tcpポートを使用してメール送信が出来なかったり、グローバルIPアドレスがブラックリスト(RBL)に入っていて、送信でエラーにならなくても、相手先で迷惑メールフィルタなどに引っかかり届かない場合のメモ。

やり方としては、他のメールサーバをリレーして送れば改善出来る可能性が有る。
ダメな場合も有るかも。
Gmailが利用しやすいので、Gmailを利用してみる。
OSはCentOS7
メールサーバはpostfix
予め利用するGmailアカウントを作成する。手持ちのアカウントがあれば使用可能。

CentOS7はOSインストール時にpostfixが入っているので、改めてインストールは不要。
認証でcyrus-saslcyrus-sasl-plainが要るので、入っていなければインストールする。
# yum install cyrus-sasl cyrus-sasl-plain

メール送信テストをするのに便利なmailxも入れておく。
# yum install mailx

postfixの設定
# vi /etc/postfix/main.cf

・メール受信を許可する設定
inet_interfaces = localhost
他の端末からのリレーを許可する場合は、設定を変更する。
inet_interfaces = all
など

・ipv4のみ利用
inet_protocols = ipv4

・メールリレー許可のネットワーク設定
mynetworks = 127.0.0.0/8
他の端末から許可する場合は
mynetworks = 192.168.1.0/24
など、許可するネットワーク・アドレスを指定する。

・gmailサーバへリレー
relayhost = [smtp.gmail.com]:587
smtp_use_tls = yes
smtp_tls_CApath = /etc/pki/tls/certs/ca-bundle.crt
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_mechanism_filter = plain

sasl_passwdの設定
# vi /etc/postfix/sasl_passwd
[smtp.gmail.com]:587 username@gmail.com:password
アクセス権変更
# chmod 600 /etc/postfix/sasl_passwd
DBの作成
# postmap /etc/postfix/sasl_passwd

設定ファイルの確認
# postfix check

postfix再起動
# systemctl restart postfix
または
# systemctl reload postfix

メール送信テスト
# mail username@domain_name
Subject: testmail  ←タイトル
testmail        ←本文
.             ←終了コマンド(Ctrl+Dでも可)
EOF

メールログ確認
# tail /var/log/maillog
ログに以下の認証エラーが出ていて、メール送信ができない場合
SASL authentication failed

使用してるgmailアカウントのメールに
件名:リンクされている Google アカウントのセキュリティ通知
内容で「安全性の低いアプリのアクセスの許可
のメールが届いていたら、文面にあるURLをクリックし、
安全性の低いアプリのアクセスの許可の設定を有効に変更する。
安全性の低いアプリの許可: 無効 → 有効

後は送信先のメールソフトなどで受信する。
送信元がリレーで使用しているgmailアカウントになるので注意。
大量にメール送信するとgmail側でブロックされる可能性も有るのでこれも注意かな。
Gmailヘルプを確認すると、1日に500通超や1通のメールで500人超の送信を行うと制限が掛るようです。

proxy配下でRocket.Chatをインストールした時のメモ。 [Linux]

proxy配下でRocket.Chatをインストールした時のメモ。
基本的には、前にRocket.Chatをインストールしたメモがベースですが、一部proxy設定をしないと、インストールをすることが出来ないので、ポイントだけを抽出。
OSは同じくCentOS7。

1.yum利用時
yumの設定にproxy設定を記述する。
# vi /etc/yum.conf
に以下の行を追加する。
proxy=http://proxy-server:port番号

2.npm利用時
# npm install -g inherits n
の前に以下を実行する。
# npn -g config set proxy http://proxy-server:port番号
# npn -g config set https-proxy http://proxy-server:port番号
# npn -g config set registry http://registry.npmjs.org/
以下で設定内容を確認
npm config list

3.node.jsのバージョン変更時
# n 4.5
の前に
export http:_proxy=http://proxy-server:port番号
export https:_proxy=http://proxy-server:port番号
4.Rocket.Chatのダウンロード
curl -L --proxy http://proxy-server:port番号 https://rocket.chat/releases/latest/download -o rocket.chat.tgz

で、proxy経由でインストールすることが出来ました。

閉ざされたネットワークで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で接続出来るようになった。

スポンサードリンク
シャンパン酵母エキス