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

CentOSをProxy配下で使用する時のメモ。 [Linux]

自宅ネットワークなど、好き勝手に出来るネットワーク環境で有れば、問題は無いのですが、会社のネットワークなどはproxy経由でないとインターネット環境へ接続が出来ないので、OSのダウンロードや各パッケージのインストールなどをproxy経由でするためのメモ。

・yum
パッケージ管理でyumを使うと便利なので、インターネット環境が無いとかなり不便。
proxy経由で接続する場合は、
# vi /etc/yum.conf
[main]カテゴリー内に
proxy=http://proxy-sever-address:port番号
を入れればOK

・wget
ファイルのダウンロードをする時にあると便利。
ユーザ毎に利用したい場合は
$ vi ~/.wgetrc
http_proxy=http://proxy-sever-address:port番号/

全ユーザで利用したい場合は
# vi /etc/wgetrc
https_proxy = http://proxy-sever-address:port番号/
http_proxy = http://proxy-sever-address:port番号/
ftp_proxy = http://proxy-sever-address:port番号/
を設定すれば、wgetでファイルをダウンロード出来る。

・curl
Webサイトの表示にも使えるけど、ファイルのダウンロードでも使えるので便利。
コマンドで、
curl -L --proxy http://proxy-sever-address:port番号 http://downloadsite -o Filename
で、ファイルをダウンロード出来る。
回数が多いと手間ですが、wgetの設定をするのが手間な時には便利。
・npm
サーバーサイドJavascriptで利用しますね。こちらもインターネットが無いと不便です。
# npn -g config set proxy http://proxy-sever-address:port番号
# npn -g config set https-proxy http://proxy-sever-address:port番号
# npn -g config set registry http://registry.npmjs.org/
で使用できるようになる。

・node.jsのバージョン管理
# vi ~/.bashrc

export http:_proxy=http:///proxy-sever-address:port番号
export https:_proxy=http:///proxy-sever-address:port番号
を設定すれば使用可能になる。

・GNOMEデスクトップ
メニューの「Applications」から「System Tools」→「Settings」を起動
Networkで、MethodをManualへ変更し、各項目にProxyサーバアドレスとポート番号を
入れれば利用可能。
ブラウザだけ利用したい場合は、FirefoxProxy設定だけでOK

他にも有れば気づき次第追記する。

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

ハードディスクの冗長化RAIDが有りますが、DRBD (Distributed Replicated Block Device) はネット上でハードディスクの冗長化が出来るということで、インストールしてみたときのメモ。
感覚的には、ネットワーク上でRAID1を組む感じですが、RAID1みたいにディスク全体を冗長化させるのではなく、ブロックデバイス単位で設定することができます。
インストールする時の注意点は、冗長化させるパーティションを用意することです。
OSインストール時のパーティション設定で、/など一つに纏めると後が手間なので、空き領域を残すか、/drbdなど、とりあえずで作成することも可能。
設定は冗長化する2台とも同じ作業をします。
ディスクの冗長化で、ネットワークトラフィックがかなり多いので、専用のネットワークI/Fとネットワークが有ったほうが良い。

DRBDはCentOSの標準リポジトリには無いので、ELRepoのリポジトリを追加してインストール。
# http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
# yum install drbd84* kmod-drbd84*

DRBDを設定するパーティションを設定
※OSインストール時に/drbdでパーティションを作成していた場合。
/drbdの設定を確認
# lvscan
対象ドライブをアンマウント
# umount /drbd
対象のパーティションを削除
# lvremove /dev/cl/drbd
パーティションの再設定
# lvcreate --name drbd0 --size xxGiB cl

DRBDの設定変更
# vi /etc/drbd.d/global_common.conf
※disk { の直下に on-io-error detach; を追加
リソース設定
# vi /etc/drbd.d/r0.res
resource r0 {
protocol C;
   device /dev/drbd0;
meta-disk internal;
on host-a {
address 192.168.0.1:7788;
disk /dev/cl/drbd0;
}
on host-b {
address 192.168.0.2:7788;
disk /dev/cl/drbd0;
}
}

DRBDモジュールのロード
# modprobe drbd
# lsmod | grep drbd

メタデータの作成
# drbdadm create-md r0

DRBD起動
# systemctl start drbd

host-a側をプライマリに設定(host-a側で実施)
# drbdadm -- --overwrite-data-of-peer primary r0

動作確認
# drbd-overview
もしくは
# cat /proc/drbd

sync'edの表示がなくなり、cs:Connected ro:Primary/Secondaryなどの
表示がされれば同期完了

ドライブのファイルシステム作成
# mkfs.xfs /dev/drbd0

ドライブのマウント
# mount /dev/drbd0 /drbd

プライマリとセカンダリを入れ替える場合は、
host-a側で
# umount /drbd
# drbdadm secondary r0
host-b側で
# drbdadm primary r0
# mount /dev/drbd0 /drbd
で完了。

基本的な設定はこんな感じで、とりあえず冗長化させたいので有れば、これだけでも良いかも。
KVMなどの仮想環境でも設定可能。

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などのメールサーバなど名前解決を多用するシステムは設定したほうが良さそうです。

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