Quantcast
Channel: Linux Install Memo
Viewing all 69 articles
Browse latest View live

□PgPool-IIでなくて、PgBouncerを使ってみる

$
0
0

参考

http://taichino.com/engineer-life/linux/3965
http://nippondanji.blogspot.jp/2008/05/apache-moddbd.html

先日来、GSLB(Global Server Load Balancing)機能のためにあれこれしているのだけど、データベースの負荷が上がって思うように処理ができない。見た感じセッションが多すぎてデータベースがアップアップな状態です。
それならばと定石のコネクションプーリングであるPgPool-IIを導入していますが、これIPv6に対応していないのと、設定が複雑なのでちょっと面倒です。

で、何かいい方法がないかなぁとネットをぶらぶらしていたら、PgBouncerというものがありました。
しかもこれ、IPv6での接続にも対応しています。(・∀・)イイネ!!

冗長化とか可用性とかはおいといて、とにかくデータベースの負荷を下げたいのでPgBouncerを使ってみることにしました。
インストール方法は参考ページはじめあちこちに書いてあるので省略しますが、はまったことだけ書いておきます。

・「auth_type = trust」なので、別にユーザー登録要らないんじゃ?

「/etc/pgbouncer/pgbouncer.ini」で

> auth_file = /etc/pgbouncer/userlist.txt

と定義しているんだけど、その手前でtrustにしちゃっているんだから要らないのでは?(結局まだ確認してない)

・「/etc/pgbouncer/pgbouncer.ini」には余計なことを書いてはいけない

コメントを書こうものなら「/var/log/pgbouncer.log」(/var/log/pgbouncer/pgbouncer.logではない)に

> ERROR broken auth file

と文句を言われます。でもtrustにしてたらスルーです。 :-P

・たぶんログを掃除しないとえらいことになる。

「/var/log/pgbouncer.log」はたいしたことにはならないのでずか、接続/切断を記録している
「/var/log/pgbouncer/pgbouncer.log」は、忙しさに比例してでかくなるので、
ログの掃除を忘れないように。

logrotatedを使っているなら、

cat > /etc/logrotate.d/pgbouncer

----------
/var/log/pgbouncer.log
/var/log/pgbouncer/pgbouncer.log
{
missingok
notifempty
sharedscripts
postrotate
/etc/init.d/pgbouncer restart
endscript
}
----------

と、こんな感じでいかがでしょう?

・PgPool-IIを止めてPgBouncerを起動しても繋がらない

> WARNING Cannot listen on ::/5439: bind(): Address already in use

こんな感じで怒られるので、動作確認のためにもマシンを再起動したほうがいい。

・mod_dbdとセットで使うときにはDBDPersistをOFFに。

まぁこれが一番書きたかったことなんですが…( ゚∀゚)アハハ

HTTP-BASICの認証情報をPostgreSQLに入れてあるので、mod_dbdとセットで使おうとしたら、
「/var/log/pgbouncer/pgbouncer.log」を見る限り接続はしているようなのだけど、
ブラウザでApacheにアクセスしてもぜんぜん表示できない。

いろいろ調べていたら、mod_dbd自体にもコネクションプール機能があるので、もしかしてと思って

> DBDPersist OFF

と明示してmod_dbdのコネクションプール機能をOFFにしたら、すっきりした。
これで無駄なセッションを増やすことなく、PgBouncerでまとめて扱うことができた。

これにより、いままでピークで2000近いセッションでPostgreSQLがぱっつんぱっつんだったのが
200以下になったのですから、そりゃ負荷も20~30前後だったのが0.0xに下がりますってもんです。

めでたしめでたし。 :-)


□IPv6/IPv4自動切換えスクリプト(perl)

$
0
0

どうも時々IPv6が安定しなくて、海外のVPSとの通信がパタッとできなくなったと思ったら、いろいろとあれなんです。

なので、IPv6の疎通を定期的にチェックして、途絶したらIPv4に切り替える、みたいな処理をするPerlスクリプトを作りましたので、適当に削って(笑)公開します。

適当に処理を追加するなどしてください。(自分はpgbouncerの接続先を一時的に切り替えるような処理を組んでます)

※なんでインデント(スペース)が無視されるんやー…適当に整形してください。

 

#!/usr/bin/perl -w
#
# IPv6でping6して、途絶したと判断したら何かをする(アクセス先をIPv4に変える、とか)
# IPv6の疎通が回復したら、元に戻す
#

#
# PING6
$PING6 = '/bin/ping6';

#
# HOSTNAME
#
$HOSTNAME = `/bin/hostname`;
chop $HOSTNAME;

#
# DAYTIME
#
$ENV{'TZ'} = "JST-9";
($sec,$min,$hour,$mday,$mon,$year) = localtime(time);
$NOW = sprintf("%04d/%02d/%02d %02d:%02d:%02d",
$year + 1900,
$mon + 1,
$mday,
$hour,
$min,
$sec);

#
# FROM ADDRESS
#
$FROM_ADDRESS = 'レポートの送信元アドレス';

#
# REPORT SEND TO ...
#
@MAIL = ('レポートの送信先アドレス01','レポートの送信先アドレス02');

#
# CHECK SERVER ...
#
@CHECK_LIST = ('監視したいサーバー01','監視したいサーバー02');

$MAIL_SUBJECT = '[WARNING] ';
$MAIL_STR = '';

#
# IPv6 LINK FLAG Init
#
$IPv6_FLAG = 0;

#
# ping6 check
#
foreach $CHECK_SERVER (@CHECK_LIST)
{
print '-> '.$CHECK_SERVER."\n";

if (system($PING6.' -c 5 '.$CHECK_SERVER.' > /dev/null') != 0)
{
$IPv6_FLAG ++;
$SERVER_RESULT .= $CHECK_SERVER.' IPv6 link down.'."\n";
}
}

#
# if IPv6 LINK DOWN ...
#
if ($IPv6_FLAG != 0)
{
print "IPv6 is DOWN!?"."\n";
#
# IPv6のリンクが途絶(不安定)な時の処理をする
#

$MAIL_SUBJECT .= 'IPv6 LINK DOWN!? ';
$MAIL_STR .= "\n".'['.$NOW.']'."\n";
#
# Send report mail
#
&send_report();
}
#
# if IPv6 LINK UP!
#
else
{
print "IPv6 is UP!!"."\n";
#
# IPv6のリンクが復活した時の処理をする
#

$MAIL_SUBJECT .= 'IPv6 LINK UP!! ';
$MAIL_STR .= "\n".'['.$NOW.']'."\n";
#
# Send report mail
#
&send_report();
}

# --------------------
# Send report mail
# --------------------
sub send_report
{
print $MAIL_SUBJECT."\n";
print $MAIL_STR."\n";

foreach $TO_ADDRESS (@MAIL)
{
print "-> $TO_ADDRESS\n";
if (open(ML, "| /usr/sbin/sendmail $TO_ADDRESS\n"))
{
print ML 'From: '.$FROM_ADDRESS."\n";
print ML 'To: '.$TO_ADDRESS."\n";
print ML 'Subject: '.$MAIL_SUBJECT."\n";
print ML "Priority: high\n";
print ML "X-Priority: 1\n";
print ML 'X-Mailer: checklink ver 1.0'."\n";
print ML "\n";
print ML $MAIL_STR;
print ML "\n".'from /root/checklink.pl'."\n";
close(ML);
}
}
}

オブジェクトストレージの料金についてさらっと

$
0
0

世間でオブジェクトストレージが騒がれていたので、さくらの無料のβテストを使っていたけれど、有料化に移行するということなので、やっぱりトラフィックがあれなのかなぁ?と思って他いくつかのサービスを含めて調べてみた。

  • IDCフロンティア
    50GBまで無料、10TBで32,000円(320円/100GB)、OUTで10円/10GB。10TB/30TB月で62,000円月。
  • ConoHA
    100GB毎に450円、10TBで45,000円(450円/100GB)、OUTで0円。10TB/30TB月で45,000円月。
  • GMOクラウド ALTUS
    1GB毎に0.0108円/時、10TBで78,840円(10000×0.0108x24x365/12)、8円/GB。
    10TB/30TB月/1億Reqで78,840円+240,000円=318,840円月。
  • さくら
    100GBまで540円、10TBで49,140円(491.4円/100GB)、OUTで108円/10GB。10TB/30TB月で373,140円月。
  • Google Cloud Storage
    1GB毎に$0.02、10TBで$200(20,000円/$1=120円)、$0.12/GB~1TB、$0.11/GB~10TB、$0.08/GB,10TB~、$0.08/10,000Req。
    10TB/30TB月/1億Reqで$200+$120+$990+$1600+$800=$3710(445,200円/$1=120円)月。
  • Amazon S3
    1GB毎に$0.0330、10TBで$324.6(38,952円/$1=120円)、$0.140/GB~10TB、$0.0047/1000Req、$0.0037/10,000Req。
    10TB/30TB月/1億Reqで$324.6+$1399.86+$141+$22.2=$1887.66(226,519.2円/$1=120円、3千万PUT、6千万GET他)月。

NTT-COMのObject Storageは500MB/Reqしかやり取りできないので除外。

やっぱりトラフィックをまともに出してくれる(と思われる)会社はコストがかかるよね、そりゃそうだ。

それを気にしなければコスパがいいのはConoHaだが、OUTは100Mbps/ストレージだからどうなのかなぁ…

というか、まぁ実際のところストレージ使うならやっぱり自宅サーバーかなぁという結論になりそうだ。

ァ’`,、’`,、(‘∀`) ‘`,、’`,、

 

…(´ε`;)ウーン…

 

△プログラムをやりたいのですが…と聞かれたので

$
0
0

ある方から「プログラムをやらないといけないのですが何をしたらいいですか?」というような質問を受けましたので、なんとなく返事を書いていたら、できぬおっさんの説教みたいになったので、せっかくなのでここにも掲載しておきます。笑

—————

プログラムの勉強ですが、どの系統の言語やマシンを触るかで、選択肢が多岐にわたるかと思います。

・組み込み系か(CPUというかマイコンの系統によりさまざま、言語もさまざま)
・パソコンか(Windows?OSX?その他?、言語もさまざま)
・サーバーか(Linux?xBSD?UNIX?その他?、言語もさまざま)
・アプリケーションか?データベース(DB)か?ユーザーI/F(UI)か?セキュリティ関連か?
・スタンドアロンか?ネットワークか?
・ネットワークならプロトコルは?
・具体的なプログラム技術が必要なのか?それともコンピュータとしての概念か?

正直なところ、この業界自体が「実世界の縮図」(いろんな国や言語があって文化も歴史もさまざま)だと思いますので、すべてをやるというのは無理です。何か、というかどこか的を絞ってからでないとやり始める前に挫折します。

ちなみに私は

・組み込み系をちょっとやった(x86系、PICは現在もちょっとやってる)
・パソコンもちょっとやった(アプリは最近ぜんぜんやってない)
・最近はネットワークがらみとPostgreSQL(DB)とUI(WordPresもぼちぼち)周辺ばっかり

です。また使った&使っている言語は低レイヤーからいくと

86系アセンブラ、C、Pascal、Perl、PHP

こんなところです。

学生時代からも含めて30年、まだまだ覚えることが多々あるなと感じますし、やらなければならないことも山積みと思います。

…さて、というわけでどこから手をつけられますか?となります。 :-)

—————-

ほんと、はてぶとかによく書いてあるようなことなんだけど、どこから手をつけるかだなぁと思うし、どこから手をつけても結局あれこれやることになるわけで、椅子に座りながら(とかいいながらOSCとかハンズオンであちこち行ってるけど)世界を探検している一生もののRPGみたいなものなのかも。

ゲームならラスボス倒せば終わりだけど、このRPGにはラスボスないし…(´Д`)ハァ…

 

□WordPressの更新がダッシュボードからできない

$
0
0

WordPressの更新がダッシュボードからできないので、最初はダウンロードサイトに
アクセス集中でもしているのかと思っていたけど、いつまでたってもできないので、
Linuxのディストリビューションによる問題なのかな?と思いつつ、とにかく更新を
してもFTPがまともにできていないようだったので、手動でWordPressの4.1.1にアップ
デートした。

ひとまず既存のWordPressが展開されているディレクトリ(./html)のひとつ上で、

wget https://downloads.wordpress.org/release/ja/wordpress-4.1.1.zip
unzip wordpress-4.1.1.zip

として

./html/
./wordpress/

が並ぶようにしてから、

chown USER.GROUP ./wordpress/ -R

でファイルの所有権を変更して、

mv ./html/wp-admin ./html/wp-admin-
mv ./html/wp-includes ./html/wp-includes-

として、WordPressのアップグレードで改訂されたファイルに関係している
ディレクトリを避けといてから

cd ./wordpress/
tar cpf – ./wp-admin | tar xvpf – -C ../html/
tar cpf – ./wp-includes | tar xvpf – -C ../html/
tar cpf – ./license.txt | tar xvpf – -C ../html/
tar cpf – ./readme.html | tar xvpf – -C ../html/

として、改訂されたファイルが入っているディレクトリとかをごっそりとコピーする。

そしたら最後にhttpdをリスタート(PHPのキャッシュ対策)して、

/etc/init.d/httpd restart (もしくは/etc/init.d/apache2 restart)

もう一度ダッシュボードから更新にいって確認してバージョンが4.1.1になっていればOK。

うーん、CentOS6ではOKなのに、CentOS7でもVineLinuxでも手動でWordPressのバージョンアップをしないといけなかったのはなんでだろう!?

 

□Apache+PHP(+SSL)でのセキュリティ対策

$
0
0

□Apache+PHP(+SSL)でのセキュリティ対策

いろいろあるのでまとめてみましたが、バージョン隠すとか当たり前になると、botはそんなの無視してより効率的な方法で突いてきますので、実効性には?です。

それよりも、パスワードを取られたりするマルウェアに感染しないように、添付ファイルは基本開かない、親しいor信用ある相手からのメールでも疑うようにしないとダメです。「添付ファイル付きメールがきましたけどあけても大丈夫ですか?」とわざわざ聞くくらいでなければ、ね。

あとはこういう情報、IPAとかでまとめているので、時々目を通すといいんじゃないかと思います。時代の流れでIPAのまとめも変わってきますので。

・httpd.conf

----------
#LoadModule ldap_module modules/mod_ldap.so
#LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

Alias /icons/ “/var/www/icons/”

<Directory “/var/www/icons”>
Options -Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>

<Directory “/var/www/cgi-bin”>
AllowOverride None
Options -Indexes
Order allow,deny
Allow from all
</Directory>

# 最後に追加すればいい
TraceEnable Off
ServerTokens ProductOnly
ServerSignature Off
----------
※不要なモジュールを読み込まない(proxyを使っていないならproxy関連全て読まないようにする)
※iconsがそもそも要らないなら全部コメントアウトするか、mvしてしまう
※cgi-binがそもそも要らないなら全部コメントアウトするか、mvしてしまう
※デバッグ要求を拒否
※Apacheのバージョンが出なくなる
※他でも、インデックスを出したくないところで -Indexes した方がいいらしい

・/var/www/error/

mv /var/www/error/ /var/www/error-/

※http://[URL]/error/README などでアクセスされる可能性があるため

・cat > /etc/httpd/conf.d/access_denied.conf

----------
<FilesMatch “\.(cn?f|conf|inc|ini|tpl|log|[0-9]|exe|com|bat|sh|csh|tsh|bash|rc|lnk|scr|pif|eml|tpl|docx?|xlsx?|pptx?|vsd|[lm]db|~)$”>
Order Allow,Deny
Deny from All
</FilesMatch>
----------
※これらの拡張子のファイルにアクセスさせない…ので適時変更すること

・cat > /etc/httpd/conf.d/wp-login_denied.conf

----------
<FilesMatch “wp-login.php”>
Order deny,allow
deny from all
allow from .example.or.jp (アクセスを許可するホスト名 or ドメイン名)
allow from xxx.xxx.xxx.xxx (アクセスを許可するIPアドレス or ネットワーク)
allow from localhost
</FilesMatch>
----------
※WordPressの管理画面にアクセスできるホストやIPアドレスを制限する(ホスト名の逆引きを無効にしていてもホスト名で指定可能)
※.htaccessでもできる。

・php.ini

----------
expose_php = Off

session.cookie_httponly = 1
----------
※PHPのバージョンが出なくなる
※発行するcookieにhttponly属性を付与して、document.cookieで取得できなくする
Internet Explorer 6 SP1以降とか、最近のブラウザなら問題なし

・htpasswd

htpasswdでパスワードを生成するときには -m を忘れずに

※8文字以上のパスワードを有効にするため

□SSLも使う場合

・ssl.conf

----------
SSLHonorCipherOrder ON
SSLCipherSuite EECDH+HIGH:EDH+HIGH:HIGH:MEDIUM:+3DES:!ADH:!RC4:!MD5:!aNULL:!eNULL:!SSLv3:!SSLv2:!LOW:!EXP:!PSK:!SRP:!DSS:!KRB5
----------
※auはSSL3.0のみなので、!SSLv3するとアクセスすることが出来なくなる

・php.ini

----------
session.cookie_secure = 1
----------
※SSLな状態でのみCookieを食わす…ので、HTTP接続の時にはセッションIDが毎回変わるので注意
(何らかの方法で統一したセッションIDを設定してあげないといけない)

 

ここに書いてあることを鵜呑みで設定しないように!! 時代とともに設定は変わります。

ちゃんと意味を理解した上で設定してください。

(´Д`)ハァ…

□Raspberry Piのカーネル再構築でmmc_debugエラー

$
0
0

MyDNS.JP用のIPアドレス通知装置をRaspberry Pi 2に対応するべく、久しぶりにRaspberry Piのカーネルをリビルドしようと思って、githubから

git clone https://github.com/raspberrypi/linux.git
git clone https://github.com/raspberrypi/tools.git

で一式取ってきて、クロスコンパイル用サーバー(環境構築済み)で何度makeしても

> ERROR: “of_dma_request_slave_channel” [drivers/mmc/host/bcm2835-mmc.ko] undefined!
> ERROR: “mmc_debug” [drivers/mmc/core/mmc_core.ko] undefined!
> make[1]: *** [__modpost] エラー 1
> make: *** [modules] エラー 2

とか

> drivers/built-in.o: In function `mmc_fixup_device':
> clk-conf.c:(.text+0x166658): undefined reference to `mmc_debug’
> make: *** [vmlinux] エラー 1
> [root@devpi linux]# find ./ -name clk-conf.c
> ./drivers/clk/clk-conf.c

とかなるのでヽ(`Д´#)ノ ムキー!!となっていたのだけれど、もしかして?と思って別バージョンのZIPファイルを

cd linux/
git checkout -b rpi-3.19.y remotes/origin/rpi-3.19.y

というように取ってきてとりあえず素のままでmakeしたらすんなりできた。

「git clone https://github.com/raspberrypi/linux.git」で取ってくる3.18.yはバグってるってことか!?

(´Д`)ハァ…

 

参考になりました!!

http://sstea.blog.jp/raspi/build_kernel2.html

□Fedora22 for Raspberry Pi 2

$
0
0

PidoraがRaspberry Pi 2に対応しなくてどうしようかなーと思っていたら、
FedoraがARMに正式対応したとかで、ブートイメージ生成スクリプトがでて
ました。

https://github.com/spartacus06/rpi2-fedora-image-builder

おおー、これならPidoraを卒業してFedoraでいいかな。

…と思ったら、Fedoraのブートイメージを取得して指定したパーティション
サイズに拡張しようとするのはいいのだけれど、パーティションの操作関係
のコマンドがDebian系のpartxとかmountを使っている?のでCentOS6の上では
うまく動きません。

というわけで、まずはGitHubからこのツールを取ってきて、パーティション
サイズの設定だけでなく、./mkimage.shをちょっと修正することで、CentOS6
でもちゃんと動きました。

yum -y install git emacs

rm -rf /var/tmp/raspi2
mkdir /var/tmp/raspi2

cd /var/tmp/raspi2
git clone https://github.com/spartacus06/rpi2-fedora-image-builder.git

cd rpi2-fedora-image-builder/
cp settings.conf.example settings.conf

emacs ./settings.conf

---------
###IMAGEURL=”http://mirror.pnl.gov/fedora/linux/releases/22/Images/armhfp/Fedora-Minimal-armhfp-22-3-sda.raw.xz”
IMAGEURL=”https://download.fedoraproject.org/pub/fedora/linux/releases/22/Images/armhfp/Fedora-Minimal-armhfp-22-3-sda.raw.xz”
# size in MB
BOOTSIZE=200
ROOTSIZE=3600
COMPRESS=0
---------
※必要に応じてROOTSIZEとか変更する

emacs ./mkimage.sh

---------

###ROOTOFFSET=$(partx –show $IMAGEFILE | tail -n 1 | awk ‘{print $2}’)
ROOTOFFSET=$(kpartx -dl $IMAGEFILE | tail -n 2 | awk ‘{print $6}’)

###sudo mount boot.img $MNTDIR || exit 1
sudo mount -o loop boot.img $MNTDIR || exit 1

###sudo mount root.img $MNTDIR || exit 1
sudo mount -o loop root.img $MNTDIR || exit 1

---------
※kpartxやmountのバージョンその他によってはここが微妙に変わる可能性がある

設定、変更できたら

./mkimage.sh

これだけで、Fedora-Minimal-armhfp-22-3-sda.raw.img のようなイメージファイルが
できるので、あとはddコマンド等でで

dd if=./Fedora-Minimal-armhfp-22-3-sda.raw.img of=/dev/mmcblk0 bs=512M

とmicroSDカードに焼けばOK。

GitHubでのPull Requestとかの仕方がわからないオジサンなのですいませんが
ここにメモするだけです。 :-)

※でもね、raspistillとかraspi-setupとかないから、あくまでFedora系が好きな人がどうぞ、ってことで。

 

追記:

実際のFedora/ARM版は

https://arm.fedoraproject.org/

にある。

https://download.fedoraproject.org/pub/fedora/linux/releases/22/Images/armhfp/Fedora-Minimal-armhfp-22-3-sda.raw.xz

これを(ミラーから)取得して、RasPi2用のfirmwareを書き込んでいるだけ。

他のイメージがよかったら、このイメージファイルを変更すればよい。


□wvdialはちゃんとresolv.confを出力する

$
0
0

最近とあることでwvdialを使ってあれこれしているのだけれど、これを使うと

> Jul 07 13:39:46 localhost pppd[1517]: primary DNS address 222.146.35.1
> Jul 07 13:39:46 localhost pppd[1517]: secondary DNS address 221.184.25.1

こんなふうに二つのDNS(リゾルバ)を教えてくれるのに、実際にはシステムに反映されず、
ほとんどのwvdialについて書いてあるサイトでも「resolv.confに反映できません」と
書いてあるので、深く調べずGoogleせんせーのDNSをresolv.confに設定していた。

でもさ、そんなわけないよね?と思っていたら、まぁちゃんとこの情報はあるところに
出力していましたよ。

> # ls -al /var/run/ppp/
> total 12
> drwxr-xr-x 2 root root 80 Jan 1 1970 .
> drwxr-xr-x 30 root root 900 Jul 7 13:39 ..
> -rw-r–r– 1 root root 8192 Jan 1 1970 pppd2.tdb
> -rw-r–r– 1 root root 48 Jul 7 13:39 resolv.conf

`;:゙;`;・(゚ε゚ )ブッ!!

というわけで、wvdialに完全に任せるなら

mv /etc/resolv.conf /etc/resolv.conf-
ln -s /var/run/ppp/resolv.conf /etc/resolv.conf

とでもして、シンボリックリンクでも張っておけばいいんじゃないでしょうか?

まぁ本当は/etc/resolv.confか、これを参照するソフトの方で「include」オプション
でもあればいいんだけどね。

というわけで、「wvdialはちゃんとresolv.confを出力する」でした。

□fail2ban でうざいアクセスをシャットアウト -2-

$
0
0

□fail2ban でうざいアクセスをシャットアウト』っていうのを前に書いたのだけど、
ありがたいことに今ではepelの方にfail2banパッケージが用意されていて、

yum –enablerepo=epel -y install fail2ban

とするだけで一式全部入るようになっている。

あとは、/etc/fail2ban/jail.confを見て、どんなJailsが様子されているかを見ながら、
必要なフィルターのみ、

cat > /etc/fail2ban/jail.local

----------
[DEFAULT]
destemail = hogehoge@example.co.jp
sender = fail2ban@example.co.jp

[sshd]
enabled = true

[sshd-ddos]
enabled = true

[apache-auth]
enabled = true

[apache-badbots]
enabled = true

[apache-nohome]
enabled = true

[apache-modsecurity]
enabled = true

[apache-shellshock]
enabled = true

[vsftpd]
enabled = true

[postfix]
enabled = true

[dovecot]
enabled = true

[postfix-sasl]
enabled = true
----------

のように、jail.localファイルに有効にするタグと「enabled = true」を書いて

/etc/init.d/fail2ban restart

するだけ。

※該当サービスのログファイルがないと怒られるよ。

 

□Raspberry Pi での謎のハングアップ対策(watchdogtimerで再起動)

$
0
0

□Raspberry Pi での謎のハングアップ対策(watchdogtimerで再起動)

表題の通り、Raspberry Pi で動かしているシステムでハングアップが「たまーに」発生するので、どうしたものかと悩んでいた。
本当は根本原因を突き止めたいのだけれど、電源電流の不足とかハード的な要因も少なからず考えられるRaspberry Piなので、
ソフトの対策をあれこれするだけでなく、ハード的に再起動すればシステムとしては稼動し続けるような仕組みにしたい。

幸いにもRaspberry PiにはハードウェアとしてWatchDogTimer(WDT)が組み込まれているので、これを有効にする。
が、どうもぐぐってみるとみんな肝心のハード的なWDTのテストをしていないようなんですが…今回はこれを言いたかった。
ま、使っているOSもpidora/fedoraなので、モジュールの宣言する場所も違ったりするのでこれも合わせてね。

yum -y install watchdog

として、watchdogパッケージをインストールしてから

/etc/modules
/etc/modprobe.d/bcm2708_wdog.conf
/etc/default/watchdog

…これらにモジュールを書いてもだめで、

echo “bcm2708_wdog” | sudo tee /etc/modules-load.d/bcm2708_wdog.conf

これでOK!! 再起動してもちゃんと

> bcm2708_wdog 4082 1

というようにモジュールを読み込んでくれる。

で、肝心の設定だけど、自分は以下を有効にした。

emacs /etc/watchdog.conf

----------
admin = メールアドレス

max-load-1 = 24

watchdog-device = /dev/watchdog
watchdog-timeout = 10

realtime = yes
priority = 1
----------
まぁ実際、いくら「admin = メールアドレス」とか書いても、ハングアップすると
メールとか送ってくれないんだけど、その他のロードアベレージ(とか有効にして
いないけどpingとかメモリとか)で再起動と言う場合には、エラーコードとともに
メールを送ってくれるので便利かも?

「watchdog-timeout = 10」を書かないと

> cannot set timeout 60 (errno = 22 = ‘Invalid argument’)

こんなエラーでwatchdogが起動しない。

で、

systemctl enable watchdog
systemctl start watchdog
systemctl status watchdog -l

として、再起動しても起動するようにして、とりあえず起動したかどうか確認。

> watchdog.service – watchdog daemon
> Loaded: loaded (/usr/lib/systemd/system/watchdog.service; enabled)
> Active: active (running) since Thu 1970-01-01 09:00:22 JST; 45 years 6 months ago
> Process: 245 ExecStart=/usr/sbin/watchdog (code=exited, status=0/SUCCESS)
> Main PID: 256 (watchdog)
> CGroup: /system.slice/watchdog.service
> mq256 /usr/sbin/watchdog
>
> Jan 01 09:00:20 mydns-adapter.local systemd[1]: Starting watchdog daemon…
> Jan 01 09:00:20 mydns-adapter.local watchdog[256]: starting daemon (5.13):
> Jan 01 09:00:20 mydns-adapter.local watchdog[256]: int=1s realtime=yes sync=no soft=no mla=24 mem=0
> Jan 01 09:00:20 mydns-adapter.local watchdog[256]: ping: no machine to check
> Jan 01 09:00:20 mydns-adapter.local watchdog[256]: file: no file to check
> Jan 01 09:00:20 mydns-adapter.local watchdog[256]: pidfile: no server process to check
> Jan 01 09:00:20 mydns-adapter.local watchdog[256]: interface: no interface to check
> Jan 01 09:00:20 mydns-adapter.local watchdog[256]: test=none(0) repair=none(0) alive=/dev/watchdog heartbeat=none temp=none to=メールアドレス no_act=no
> Jan 01 09:00:20 mydns-adapter.local watchdog[256]: hardware watchdog identity: BCM2708
> Jan 01 09:00:22 mydns-adapter.local systemd[1]: Started watchdog daemon.

で、本当にWDTが効くのかどうかを試すには、

pkill -9 watchdog

としてwatchdogプロセスを強制終了すると/var/log/messagesに

> wdt: WDT device closed unexpectedly. WDT will not stop!

というようにでて「WDTは止まってねーよ」(=このままだと再起動するよ)と言われて
10秒後にめでたく再起動する。

 

□Windows10でWi-Fi接続してもDNS_PROBE_FINISHED_NO_INTERNETといわれて接続できないエラー(未解決)

$
0
0

Windowsネタかよ!!という突っ込みはおいといて。 :-)
ノートパソコンをWindows10にしてWi-FiでAPに接続しても、『再起動しないと』DNS_PROBE_FINISHED_NO_INTERNETといわれて接続できない。

ノートパソコンのWi-FiスイッチをOFF/ONしたり、Windows10のWi-Fiを押したり機内モードを押したりしてOFF/ONしてもだめ。

とにかく『再起動』しないと選択したAPに繋がらない、ので、APの変更とかを途中でしようとするとかなり面倒くさい。

一回再起動したうえでなら、「自動的に接続」のチェックは関係なく、再起動前に選択したAPになら接続してインターネットにも繋がる。

ほんと、これを解決する方法はないのかなー?

 

□PowerDNS用のfail2banフィルター

$
0
0

PowerDNSを使っていて、しつこくゾーン転送(AXFRとかIXFRとか)をリクエストしてくるのが要るときに、ログがもったいないのでfail2banすることにした。

cat > /etc/fail2ban/filter.d/pdns.conf

----------
# Fail2Ban configuration file
#
# Author: T.Kabu
#
# $Revision: 001 $
#

[Definition]

# Option: failregex
# Notes.: regex to match the password failures messages in the logfile. The
# host must be matched by a group named “host”. The tag “<HOST>” can
# be used for standard IP/hostname matching and is only an alias for
# (?:::f{4,6}:)?(?P<host>[\w\-.^_]+)
# Values: TEXT
#
failregex = denied: client IP <HOST> has no permission

# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
----------

emacs /etc/fail2ban/jail.conf

----------
[pdns-iptables]

enabled = true
filter = pdns
action = iptables[name=PDNS, port=53, protocol=udp]
sendmail-whois[name=PDNS, dest=disco-v8@4×4.jp, sender=fail2ban@mydns.jp, sendername=”Fail2Ban”]
logpath = /var/log/messages
maxretry = 5
bantime = 86400

----------

/usr/bin/fail2ban-client stop
/usr/bin/fail2ban-client -x start

あ、これはパッケージでなくてtar.gzからfail2banを入れた場合です。

ほかにも気になるアクセスがあったらバンバンする予定。 :-)

 

 

□CentOSにSCL(Software Collections for CentOS)をインストール -新しいバージョンのソフトを使う-

$
0
0

CentOSを使っていると、PHPやPythonやRubyが古かったりApacheが古かったりでもんにょりしている人に。

CentOS6 : yum install centos-release-SCL
CentOS7 : yum install centos-release-scl

でインストールできるが、デフォルトで常にSCLを参照してしまうのがうざい場合には

emacs /etc/yum.repos.d/

で、Software Collectionsを参照する設定ファイルの中を

----------

###enabled=1
enabled=0

----------

として、

CentOS6 : yum search –enablerepo=scl python27
CentOS7 : yum search –enablerepo=centos-sclo-rh python27
CentOS7 : yum search –enablerepo=centos-sclo-sclo python27

のように「–enablerepo=」をつけないと検索とかインストールできないようにするといい。

□Let’s encrypt SSLを導入してみる

$
0
0

□Let’s encrypt SSLを導入してみる

MyDNS.JPのユーザーから

https://letsencrypt.org/

を使ってもいいですかー?と質問されたので、いいですよーとお答えしておきました。

で、ついでに自分も試してみることにしました。:-)

まずPythonを2.7にあげる

apt-get -y install python27*

※VineLinuxの場合にはaugeasを手動でインストール。

cd /usr/src/package/
wget http://download.augeas.net/augeas-1.4.0.tar.gz
cd ../
tar xvzf package/augeas-1.4.0.tar.gz
cd augeas-1.4.0/
./configure –prefix=/usr
make
make install
ldconfig
ldconfig -p | grep libaugeas

で、Python-2.7が入ったら、

cd ~/
git clone https://github.com/letsencrypt/letsencrypt.git

cd ~/letsencrypt
./letsencrypt-auto –help

で、OS別に./boot/~.shを動かせとかドキュメントには書いてあるけど、実際には

apt-get install -y \
git \
python \
python-devel \
python-virtualenv \
gcc \
dialog \
openssl-devel \
libffi-devel \
ca-certificates

こんなパッケージ類のインストールをしているだけ。

で、

libaugeas0 \

…はVineではパッケージが無いので、上記のようにインストールしておく。

準備が出来たら

./letsencrypt-auto certonly \
–webroot –webroot-path /home/example/html -d ssl.example.jp \
–agree-tos -m webmaster@example.jp

とすると、

> IMPORTANT NOTES:
> – Congratulations! Your certificate and chain have been saved at
> /etc/letsencrypt/live/ssl.example.jp/fullchain.pem. Your cert will
> expire on 2016-03-07. To obtain a new version of the certificate in
> the future, simply run Let’s Encrypt again.
> – If like Let’s Encrypt, please consider supporting our work by:
>
> Donating to ISRG / Let’s Encrypt: https://letsencrypt.org/donate
> Donating to EFF: https://eff.org/donate-le

となる。

ls -la /etc/letsencrypt/live/ssl.example.jp/

> lrwxrwxrwx 1 root root 39 12月 8 13:08 cert.pem -> ../../archive/ssl.example.jp/cert1.pem
> lrwxrwxrwx 1 root root 40 12月 8 13:08 chain.pem -> ../../archive/ssl.example.jp/chain1.pem
> lrwxrwxrwx 1 root root 44 12月 8 13:08 fullchain.pem -> ../../archive/ssl.example.jp/fullchain1.pem
> lrwxrwxrwx 1 root root 42 12月 8 13:08 privkey.pem -> ../../archive/ssl.example.jp/privkey1.pem

に公開鍵と秘密鍵が出来ている。

これを以下のように設定する

cat > /etc/apache2/conf.d/vhosts/ssl.example.jp.conf

----------
<VirtualHost *:80>
ServerAdmin webmaster@example.jp
ServerName ssl.example.jp
ServerAlias www.ssl.example.jp
# SuexecUserGroup apache apache
DocumentRoot /home/example/html
ErrorLog /home/example/logs/error_log
CustomLog /home/example/logs/access_log combined
ErrorDocument 404 /

CBandSpeed 80Mbps 200 100
CBandRemoteSpeed 50Mbps 50 50

<Location /traffic-status>
SetHandler cband-status
Order allow,deny
Allow from 210.197.72. 210.197.73. .big.or.jp .bbexcite.jp
</Location>

<Directory />
AllowOverride All
</Directory>
</VirtualHost>

<VirtualHost *:443>
ServerAdmin webmaster@example.jp
ServerName ssl.example.jp
ServerAlias www.ssl.example.jp
# SuexecUserGroup apache apache
DocumentRoot /home/example/html
ErrorLog /home/example/logs/error_log
CustomLog /home/example/logs/access_log combined
ErrorDocument 404 /

SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite DEFAULT:!EXP:!SSLv2:!SSLv3:!DES:!IDEA:!SEED:+3DES
SSLCertificateFile /etc/letsencrypt/live/ssl.example.jp/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/ssl.example.jp/privkey.pem
SSLCACertificateFile /etc/letsencrypt/live/ssl.example.jp/fullchain.pem

<Files ~ “\.(cgi|shtml|phtml|php3?)$”>
SSLOptions +StdEnvVars
</Files>
<Directory “/var/www/cgi-bin”>
SSLOptions +StdEnvVars
</Directory>

SetEnvIf User-Agent “.*MSIE.*” \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0

<Directory />
AllowOverride All
</Directory>
</VirtualHost>
----------

あとは定期的に鍵の更新を実行すればよい。

cat > /root/renew_sslkey.sh

----------
#!/bin/sh
/root/letsencrypt/letsencrypt-auto certonly –webroot –webroot-path /home/example/html -d ssl.example.jp –renew-by-default
----------

chmod 700 /root/renew_sslkey.sh

として、これを定期的に実行すればいい。

----------
#
# RENEW SSL
50 11 1 * * /root/renew_sslkey.sh > /var/log/renew_sslkey.log
----------

複数ドメインを利用する場合には、

NameVirtualHost *:443

を忘れずに。

そのドメインでWordPressを動かしていたら、ダッシュボードから設定に入って、
URLを「http://~」から「https://~」にするだけでOK。楽チン!!

補足:

・punnycodeなドメイン(日本語ドメインとか)には対応していない…(´・ω・`)


□Raspberry Piでパケット通信!?

$
0
0

いや、たぶん出来るとおもうんですよね、Pi2のスペックなら…

dnf search ax25

> libax25-devel.armv7hl : Development files for libax25
> ax25-tools-docs.armv7hl : Documentation for ax25-tools and ax25-tools-x
> libax25.armv7hl : AX.25 library for hamradio applications
> ax25-apps.armv7hl : AX.25 ham radio applications
> ax25-tools.armv7hl : Tools used to configure an ax.25 enabled computer
> ax25-tools-x.armv7hl : X tools used to configure an AX.25 enabled computer

まだありますね、パッケージ。

ほかにもHAM関連では、

> linpsk.armv7hl : Psk31 and RTTY program for Linux
> xpsk31.armv7hl : GTK+ graphical version of lpsk31 for Ham Radio
> lpsk31.armv7hl : A ncurses application for ham radio communications using PSK31 digital mode

dnf -y install libax25 libax25-devel ax25-apps ax25-tools
dnf -y install soundmodem soundmodem-devel

で、あとはsoundmodemの設定。

mkdir /etc/ax25/

としてディレクトリを作ってから、X-Windowが動いていれば

soundmodemconfig

として設定してもいいし、ダイレクトに設定ファイルを生成してもいい。

cat > /etc/ax25/soundmodem.conf
---------
<?xml version="1.0"?>
<modem>
  <configuration name="RaspberryPi2">
    <channel name="Channel 0">
      <mod mode="afsk" bps="1200" f0="1200" f1="2200" diffenc="1"/>
      <demod mode="afsk" bps="1200" f0="1200" f1="2200" diffdec="1"/>
      <pkt mode="MKISS" ifname="sm0" hwaddr="JS1FVG-10" ip="192.168.10.1" netmask="255.255.255.0" broadcast="192.168.10.255"/>
    </channel>
    <chaccess txdelay="150" slottime="100" ppersist="40" fulldup="0" txtail="10"/>
    <audio type="soundcard" device="/dev/dsp" halfdup="0"/>
    <ptt file="none"/>
  </configuration>
</modem>
---------

で、起動してみても…あれれ?Failですよ?

というわけで、ステータスを見てみると…

> # systemctl status soundmodem.service  -l
> ● soundmodem.service – Soundcard Packet Radio Modem
>    Loaded: loaded (/usr/lib/systemd/system/soundmodem.service; enabled; vendor preset: disabled)
>    Active: failed (Result: exit-code) since Thu 1970-01-01 09:00:14 JST; 45 years 11 months ago
>   Process: 306 ExecStart=/usr/sbin/soundmodem –daemonize (code=exited, status=1/FAILURE)
>
> Jan 01 09:00:13 mydns-adapter.local systemd[1]: Starting Soundcard Packet Radio Modem…
> Jan 01 09:00:14 mydns-adapter.local soundmodem[306]: sm[345]: audio: Error, cannot open “/dev/dsp”
> Jan 01 09:00:14 mydns-adapter.local soundmodem[306]: sm[345]: cannot start audio
> Jan 01 09:00:14 mydns-adapter.local soundmodem[306]: sm[306]: SoundModem init failed
> Jan 01 09:00:14 mydns-adapter.local systemd[1]: soundmodem.service: Control process exited, code=exited status=1
> Jan 01 09:00:14 mydns-adapter.local systemd[1]: Failed to start Soundcard Packet Radio Modem.
> Jan 01 09:00:14 mydns-adapter.local systemd[1]: soundmodem.service: Unit entered failed state.
> Jan 01 09:00:14 mydns-adapter.local systemd[1]: soundmodem.service: Failed with result ‘exit-code’.

/dev/dspなんてねーよ、とのこと。

http://wikiwiki.jp/tetsuya/?asoundrc

ふむふむ…今は中身がないのね。

> # more /etc/asound.conf
> #
> # Place your global alsa-lib configuration here…
> #

cat > /etc/asound.conf
---------
pcm.!default {
type hw
card 0
}
ctl.!default {
type hw
card 0
}
---------

として、

cat > /etc/ax25/soundmodem.conf
---------
<?xml version="1.0"?>
<modem>
  <configuration name="RaspberryPi2">
    <channel name="Channel 0">
      <mod mode="afsk" bps="1200" f0="1200" f1="2200" diffenc="1"/>
      <demod mode="afsk" bps="1200" f0="1200" f1="2200" diffdec="1"/>
      <pkt mode="MKISS" ifname="sm0" hwaddr="JS1FVG-10" ip="192.168.10.1" netmask="255.255.255.0" broadcast="192.168.10.255"/>
    </channel>
    <chaccess txdelay="120" slottime="100" ppersist="40" fulldup="0" txtail="10"/>
    <audio type="alsa" device="plughw:0,0" halfdup="0"/>
    <ptt file="none"/>
  </configuration>
</modem>
---------
systemctl restart soundmodem
systemctl status soundmodem -l

お?今度は動いたみたいですよ。

…ん? 「/etc/asound.conf」これかんけいなくね?

なくてもいけた。:-)

で、ip aしてみると…

> # ip a
> 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
>     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
>     inet 127.0.0.1/8 scope host lo
>        valid_lft forever preferred_lft forever
>     inet6 ::1/128 scope host
>        valid_lft forever preferred_lft forever
> 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
>     link/ether b8:27:eb:ce:3a:ba brd ff:ff:ff:ff:ff:ff
>     inet 192.168.100.81/24 brd 192.168.100.255 scope global eth0
>        valid_lft forever preferred_lft forever
>     inet 192.168.81.81/24 brd 192.168.81.255 scope global eth0:99
>        valid_lft forever preferred_lft forever
>     inet6 fe80::ba27:ebff:fece:3aba/64 scope link
>        valid_lft forever preferred_lft forever
> 6: sm0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 256 qdisc fq_codel state UNKNOWN group default qlen 10
>     link/ax25 94:a6:62:8c:ac:8e:14 brd a2:a6:a8:40:40:40:00
>     inet 192.168.10.1/24 brd 192.168.10.255 scope global sm0
>        valid_lft forever preferred_lft forever

ちゃんとsm0ができました。

あとは

ping 192.168.10.2

とかすると、ピギャーというはず。

chaccessのパラメータがゆとりを持たせてあるので、送信しないこともあるけれどどど… :-)

これでサウンドモデムの下準備は出来たので、続いてAX.25関連の設定をする。

cat > /etc/ax25/axports
---------
#
# The format of this file is:
#
# name callsign speed paclen window description
#
sm0 JS1FVG-10 1200 192 5 XXX.XXMHz (1200 bps)
---------
cat > /etc/ax25/ax25d.conf
---------
#
# ax25d Configuration File.
#
# AX.25 Ports begin with a '['.
#
[JS1FVG VIA sm0]
NOCALL   * * * * * *  L
default  * * * * * *  -        root  /usr/sbin/ttylinkd        ttylinkd
#
[JS1FVG-11 VIA sm0]
NOCALL   * * * * * *  L
default  * * * * * *  -        root  /usr/sbin/node    node
---------

本来NET/ROMは<>で囲って

/etc/ax25/node.conf
/etc/ax25/node.perms

に設定する。

むかーしむかしJFにそういう説明があった。

http://archive.linux.or.jp/JF/JFdocs/AX25-HOWTO/x1714.html

ほかに必要なファイルがあるので(中身は空だけど)作成しておく。

cat > /etc/ax25/nrports
---------
#
# The format of this file is:
#
# name callsign alias paclen description
#
---------
cat > /etc/ax25/rsports
---------
#
# The format of this file is:
#
# name address description
#
---------

で、あとは

/usr/sbin/ax25d

として起動すればOK。

で、あとは

cat > /etc/init.d/ax25d
---------
#!/bin/sh
#
# chkconfig: 345 51 51
# description: Turn AX.25 daemon
#
### BEGIN INIT INFO
# Short-Description: Turn AX.25 daemon
# Description: Turn AX.25 daemon
### END INIT INFO
# Source function library.
. /etc/rc.d/init.d/functions
prog="ax25d"
lockfile=/var/lock/subsys/ax25d
start()
{
        echo -n $"Starting $prog: "
        daemon /usr/sbin/ax25d
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && touch $lockfile
        return $RETVAL
}
stop()
{
        echo -n "Stopping $prog: "
        killproc ax25d
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && rm -f $lockfile
        return $RETVAL
}
restart()
{
        stop
        start
}
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  force-reload|restart|reload)
        restart
        ;;
  try-restart|condrestart)
        [ -f $lockfile ] && restart ||:
        ;;
  status)
        status $prog
        ;;
  *)
        echo $"Usage: $0 {start|stop|restart|contrestart|status}"
        exit 3
        ;;
esac
exit $RETVAL
---------
chmod 755 /etc/init.d/ax25d
chkconfig --level 345 ax25d on

とすると、再起動時に必ず soundmodem と ax25d が起動する。

あとはxfbbでもインストール?
PTTのON/OFFはGPIOで出来るのかな?

http://ve3bux.com/?p=825

<ptt file="none" hamlib_model="" hamlib_params="" gpio="0″/>

こんな設定がいけるみたいだけどホントかなぁ?

ふむふむ、GPIOのひとつにシリアルのRTSかなんかを出力するようにしたのか。
3.3VなRasPiだから、トランジスタスイッチでも何でもいいから、何らかの保護
回路入れないと壊れるよ、って書いてあるね。

Are you lucky? No USB to serial converter needed!

確かにこれでPTTの制御は出来そうです。

さて、無線機がなぁ…TH-K48は処分してしまったし、といういまさらパケット?だし。
それよりもPSK31とかの方が面白そうだけど、そもそもHFのアンテナが広げられない。

そもそも今の無線機はフィルターが狭すぎて、9600bpsですら通らないしね。

□ハンディ機でnewqpskを試す-通らないんですけどね-

そうそう、こんなことやってたね。

この分だときっとまた数年後に「やりたいなー」とか思ってなんかいじったりするんだろうな。

□ConoHaクラウドでping/ping6が通らない…(解決済

$
0
0

asia.www.mydns.jpがとにかく不安定なので、ConoHaのシンガポールリージョンを借りて、ひとまずpingを打ち続けて回線状況がどうなのかを調べてみようと思いました。

ConoHaといえばOSCでも有名なVPS/クラウド事業者で、自分も大きなサイズのメールサービス:PiTaMeで利用させていただいています。PiTaMeをはじめたころは日割りのVPSだけでしたが、現在は時間単位で課金するより使いやすいサービス携帯になっていますので、ちょっとした試験に使うには持ってこいです。

で、WEB上からぽちぽち申し込んで、いざテスト用のサーバーを構築するときに、

20151217_001

コンパネの説明のままにまずはSSHだけ、

20151217_002

とかセキュリティ意識の高いところを見せてやってみたら、pingが通りません。

で、ぐぐってみると同じ会社(GMO)の方ではpingは通してませんよ、ということらしいので、そういうことなのかなぁ…と思ってそっとテストをやめようかと思っていたら、ConoHaの中の人(美雲このはでも美雲あんずでもない)から

『仕様でもICMPは制限していないのですが、接続許可ポートを「全て許可」にしないとTCP以外通らなくなります。
 お手数ですがこちらを試していただければと。』
『いえ、「接続許可ポート」の設定は、VM(VPS)がつながっている仮想スイッチ側でフィルタリングが入ります。
 なのでOSのiptablesとは別になります。』
『コンパネの設定はどちらかというとiptablesなどの設定が困難な初級者向けの機能なのです・・・。
 そしてポートを限定した場合、ICMPも自動的にフィルタされるような仕様になっています。』

とのフォローがツイッターでありました。

なるほど納得!! ありがとうございます!!

というわけで、無事にpingも通りましたので、本来やりたかったテストが出来そうです。:-)

 

□HotmailはX-Mailerに馬鹿正直に書くと迷惑メールにする

$
0
0

まぁ表題の通りなのですが、MyDNS.JPでHotmailのメールアドレスの人から「メールが迷惑メールとして振り分けられます」と言われたので、まぁ年末の大掃除ということで調べてみました。

Hotmailに届いたヘッダーを見ても

Authentication-Results: hotmail.com; spf=pass (sender IP is 104.200.131.181)
 smtp.mailfrom=apache@mydns.jp; dkim=pass header.d=mydns.jp; x-hmca=pass header.id=system@MyDNS.JP

なんかいろいろと「pass」しているのでいいんじゃないかと思うけどだめらしい。

いろいろぐぐって、最初は「X-PHP-Originating-Script」問題なのかな?と思ったけど、どうも違うみたい。

でもたぶんいいところをついていると思ったので、ももう一度ヘッダーをしげしげと眺めてみると、

X-Mailer: PHP5 Script

と馬鹿正直に書いています。

…もしかしてこれ?

 

とおもって、これを

X-Mailer: MyDNS-System

としたら、

通りましたよ!! Σ(゚Д゚;エーッ!

┐(´д`)┌ヤレヤレ

 

Contact Form 7 が動かない(WordPress)

$
0
0

WordPressのバージョンアップをしたら、プラグインもバージョンアップしてしまうと思います。

今回してみたら、ダッシュボードの上の方に

Misconfiguration leads to mail delivery failure or other troubles. Validate your contact forms now. » Validate Contact Form 7 Configuration

という表示が出て、Contact Form 7 が動かなくなってしまいました。

ひとまず「Validate Contact Form 7 Configuration」をクリックすると、Validate Configurationという画面に変わってボタンが押せるようなので押してみました。

すると、設置していたコンタクトフォームに2つのエラーがあると書いてあります。

2 configuration errors found

工エエェェ(´д`)ェェエエ工

というわけで、このフォームを編集してみると、メールタグのところに

This email address does not belong to the same domain as the site.

 This field can be empty depending on user input.

というメッセージが出ています…厳しくなったのね。(´Д`)ハァ…

 

…なので、フォームタグを押して、まずは題名として定義しているテキストに「*」をつけて入力必須とします。

[text your-subject] →[text* your-subject]

これで保存してメールタグに戻ると、メッセージが一つ消えます。

さらに、送信元アドレスはサイトのドメインと同じじゃないとだめ、というので適当なものにします。

[your-email]→wordpress@(サイトのドメイン)

でもこれだと返信時に面倒なので、追加ヘッダーのところに

Reply-To: [your-email]

を追記します。

これでクリアになりました、とさ。( ´Д`)=3 フゥ

※[]は便宜上全角文字にしていますのでコピペの際には注意してね

 

バーチャルIPアドレスの定義ってアバウトなのね…

$
0
0

LVS(Linux Virtual Server)を試していて、ロードバランサでLANにIPアドレスを別途割り当てないといけなくなったのだけど、あちこちのページを見ていたら

inet xxx.xxx.xxx.xxx/24 brd xxx.xxx.xxx.255 scope global secondary eth0:vip

とかいうのがあって「なんだこれ?」とか思ったのだけど、確かにファイル名として

/etc/sysconfig/network-scripts/ifcfg-eth0:vip

とかをおいて、中身も

BOOTPROTO=static
DEVICE=eth0:vip
#
IPADDR=xxx.xxx.xxx.xxx
PREFIX=24

とか書いたら同じようにいけたわけです。

「へー、eth0:0とかeth0:1とかじゃなくてeth0:vipって書いてもいいんだ」

とか思ったけど、そもそもこのコロンの後ってもしかしてなんでもいいのでは?とか思って

/etc/sysconfig/network-scripts/ifcfg-eth0:aaa

を置いたら、あらまいけちゃいましたよ。

inet xxx.xxx.xxx.yyy/24 brd xxx.xxx.xxx.255 scope global secondary eth0:aaa

なんだか気持ち悪いような、エイリアスのラベルとしてはこの方がいいのかな!?

ま、何にしてもLVSはDR方式(DSR方式?)で、分散先WEBサーバーでもiptablesでnatでREDIRECTとして動いてデータもいろいろ取れたのでよかったよかった。 :-)

 

 

 

Viewing all 69 articles
Browse latest View live