ドメイン指定受信なのに迷惑メールが届く
携帯のメールアドレスに、最近迷惑メールが届くようになってきた。 迷惑メールフィルタでドメイン指定受信を設定し、 受信したいメールはいちいちドメインを登録しているのに….
でも、改めて確認すると、その迷惑メールは、
hogehoge@mixi.jp-sendmail.ok-google.com
といったメールアドレスを使っている。 確かに、ドメイン指定受信では"google.com"を許可している。
とはいえ、カレンダーの通知メールは、"…@google.com"だけど、 他のサービスだと、"…@subdomain.google.com"からメールが 届くかもしれない。
ということで、ドメイン指定受信には、
@google.com .google.com
を追加しておいた。他のサイトでも同様な手口がでてきたら、 サブドメインからメールが届く可能性があると、 いちいち2つ登録になるのか…
たぶん、後追いで facebook.com あたりも使われるだろうな…
(2013/04/10追記)
くそ、今度は、後ろはデタラメ。送信側は、mixi.jp,gree.jpが許可リストに 入っていることを利用してやがる。hogehoge@gree.jp.デタラメドメインということで、mixiやgreeからのメールは、すべてgmail宛てにして、 携帯でmixi,greeのメールを受け取ること自体をあきらめた。 どうせ、mixi,greeはほとんど使ってないし…
オンラインストレージSkyDrive中心にしようかな
Dropbox,Google Drive,iCloud,SkyDrive,Amazon Cloud Drive…様々な オンラインストレージがあるけど、何を使うべきか。 一応、どのサービスも便利だから、アカウントは持ってる。 でも、用途別に分散して使うなんて器用なことはできない。
iCloudは、素直にiPhone/iPadのバックアップ、 Kindle(持ってないけど)の書籍ストレージ、これらは本来の目的だからその使い方。 んで、Dropbox,Google Drive,SkyDriveは、どれが便利か? 古株のDropboxは、これに対応したアプリも多いので、一応は使う。
だけど、ストレージも貧弱なMacBookAirとかだとオフィスソフトは入れたくないけど、 rich&重い端末は持ち運びたくない。 仕事柄、MS-Officeなファイルがデフォルトだから、OpenOfficeは少し面倒だし、 やっぱりインストールすればHDDも浪費する。 ブラウザで動くOffice環境もいいけど、Office365を真面目に買うほど Microsoftに投資はしたくない。
んで結論は、ちょっとOfficeファイルを編集できて、さくっと人に見せるのなら ということで、SkyDrive が便利かな。
Googleリーダのサービス終了
Google RSSリーダのサービスが終了するらしい。 毎日のニュースで、Newsサイト、Google News、Facebook/Twitterのタイムラインでは、 見逃しもあるので、ひとまず全部タイトルだけでも読みたい情報は、 RSSリーダで読んでいたんだけど、 サービス停止か。
関連記事を読んでいると、TwitterのRSSフィードで記事参照も、停止になる。 こちらは完全に見落とし。 個人的に動かしていたTwitterのBOT系で、RSSフィードを参考にしていた部分があるので、 フィード参照を停止するように設定を変更する。
んで、リーダ、何を使おうかな… Thunderbird のフィード閲覧機能は、既読情報の同期ができない(実はある?)ので、 最近は設定していないし、Thunderbirdが「あとで読めばいい…」的なフィードでいちいち「未読」が表示されるのも好きじゃない。
dhcpdのexecute機能
子どもがインフルエンザで5日間休みとなってしまった。 んで、このままだとゲーム三昧をしそう。 ということで、あんまり遊んでいるようなら、自動的にネットワークを切れないか、検討してみる。
子どもの端末やアカウントでは、Proxyサーバを通すようにしてあって、 そのアクセス時の利用時間によって、Proxyを通す/通さないをコントロールしている。 しかし、ゲーム機でhttp以外を使っていれば、効き目がない。
そこで、DHCPサーバで子どものゲーム機からのアクセスで、 禁止状態なら fake の情報をDHCPサーバが返すことで、 ネットワーク遮断させてみること考えてみた。
自宅では、isc-dhcpd-4.2.2 を使っているので、色々方法を調べてみた。
DHCPリース時のスクリプト起動
DHCPのリース時にscriptを動かすには、on commit { execute(…); }といった方法がある。
(( /etc/dhcp/dhcpd.conf ))
on commit {
execute( "shell script..." ) ;
}
でも、これでは fake 情報を返せなさそう。
リース前にスクリプト起動
リース情報を決めるための if文が使えそうで、ここを見たら、こんなことが書けそう。 でも試してみるけど、うまく動かない。
host playstation {
hardware ethernet 11:22:33:44:55:66 ;
fixed-address 192.168.XXX.YYY ;
# dhcpd.scriptは使わせたくない時は "exit 1"
if ( execute( "/etc/dhcpd/dhcpd.script" ) = 1 ) {
option routers 192.168.YYY.ZZZ ; # 偽のルータ情報
}
}
出力されたエラーメッセージは以下の通り。
dhcpd self-test failed. Please fix /etc/dhcp/dhcpd.conf. The error was: Internet Systems Consortium DHCP Server 4.2.2 Copyright 2004-2011 Internet Systems Consortium. All rights reserved. For info, please visit https://www.isc.org/software/dhcp/ /etc/dhcp/dhcpd.conf line xx : boolean expression expected. if ( execute( ^ /etc/dhcp/dhcpd.conf line xx : semicolon expected. if ( execute( "/etc/dhcpd/dhcpd.script" ) = ^ Configuration file errors encountered -- exiting]
参考にしたサイトだと、dhcpd-3.x ではexecuteが使えるように書いてあるけど、 dhcpd-4.x のマニュアルを見ると、if 式 で execute などの"action"が使えるようなことは書いてない。 うーむ、dhcpd-3.x の隠れ技っぽいのを勝手に期待しちゃダメってことか…
Wii U と WiFi の干渉?
Wii U を導入してから、WiFi の接続に影響が出ている様子。 同様トラブルとか対処方法ご存じの方いません?
典型的な症状は、iPhone5だと、接続先を選ぶ画面では 電波強度も最強なのに、実際に接続すると電波強度が最低になる。 無線帯域が干渉しているのではないかと想像される。
「Bluetooth(2.4GHz帯)、IEEE.802.11g(2.4GHz帯)、11n(2.4GHz帯、5GHz帯)で、 干渉する時は、11nのチャンネルを5GHz帯を使うようにする」という テクニックが見受けられる。 でも、調べてみると Wii U – gamepad間の通信は規格は不明だけど、 5GHz帯らしい。 ということで、11nの5GHz帯を使おうとして、GamePad通信と干渉していると 想像してみる。
自宅WiFiルータは、Buffaloなので使用チャンネルが 1〜13の自動選択になっているが、 低い番号にすれば2.4GHz帯選んでくれるのかな。 でも Bluetooth との干渉も心配しないとダメか?
> それに無線キーボードも2.4GHz帯だしなぁ…
ためしに、ひとまずCH1固定にしたけど、あんまり変化ない。 iPhone5ステータスバーのWiFiアイコン最低電波強度だけど、 特に通信速度速度おちてないな… Err頻度も確認してみるが、ルータのステータス画面では、Err 0 じゃん。
mod_pagespeedを入れてみた…
Webサーバの高速化のためにGoogleが開発している mod_pagespeed を試してみた。 詳しくは、紹介記事 を見てもらうとして、 基本的に、CSSやJavaScriptの実行順序に伴う速度低下や、画像表示の低下を防ぐために、 様々なデータに変換しながら送り出してくれる機能。 "aptitude search mod-pagespeed"しても出てこないし、もう少し待とうかと思ったけど、 *.deb なパッケージが提供されているので、自宅サイトに入れてみた。
# wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-beta_current_amd64.deb # dpkg -i mod-pagespeed-*.deb # /etc/init.d/apache2
といっても、ページに埋め込んだCSS,JavaScriptなんて movable-type が生成した わずかな部分だし、速度向上はするのだろうか? 実際試して、自宅サイト表示させてみたけど、"いつもどおり"としか言いようがない。 ページ表示の際の、画像読み込みタイミングでレイアウトがピョコピョコ移動するのが無く 表示されて速いじゃん…と高速化した気分がする。 だけど、改めて"a2dismod pagespeed;/etc/init.d/apache2 restart"してから試したけど、 やっぱり違いはわかんない…
ただし、mod-pagespeed は、サーバ側で送出するデータに変更を加える訳だから、 サーバの処理負荷としては重くなる。ひとまず、このまま放置で変化を見てみよう。
早々にエラー出たじゃん
そのまま経過観察…と思ってたけど、munin のグラフを見ようとしたら、 早々に以下のようなエラーメッセージ。どうもJavaScriptの文法エラー。 試しに、"a2dismod pagespeed"したら普通に表示できたので、 原因は mod-pagespeed に間違い無い。
ssh+ajaxtermでトンネル
職場仕事を自宅でやるために、時々sshのトンネルにお世話になっている。 といっても、職場は FireWall の内側。このため、 職場のWebサーバにて、ajaxterm なるブラウザ上からターミナルを起動するソフトで、 自宅に向けて ssh のトンネルを掘ることになる。 んで、ssh やら ajaxterm やらのバージョンを上げていたら、 最近は数分でセッションを自動的に切られるようになってしまい、 肝心の作業中に…といったことになる。
そこで、ssh のセッションで定期的に ping を動かし、セッションが切れないように するのが定番なんだけど、その技を改めて確認。 探すと、想定した技をそのまんま書いてくれているページ発見。
ということで、改めて職場より自宅にssh内でトンネルを掘るためのテクニック。 shスクリプトにしておこう。
#!/bin/bash REMOTE=ひみつ HOST=tsaitoh.net /usr/bin/ssh -R $REMOTE:localhost:22 $HOST ping -i 60 localhost
ipsetを使って国別のFireWall設定
Web記事を探していたら、国別のFireWallでのブロックで ipset というものが使える との情報から、試してみた。 ipsetを使った理由は、iptables に、別物管理したい国別ルールを入れたくなかったため。
ちなみに、ipdeny から取得した CIDR なIPv4なアドレスブロック数は、以下のようになった。 ロシアが多いのは納得だけど、インターネットの普及のイメージとして中国≒インド≒韓国 ぐらいの感じを抱いていたけど、中国のアドレスブロックの数はインド・韓国の3倍。 人口の影響かな?後発出遅れで細切れアドレスになったのかな….
$ wc -l *.zone 2635 cn.zone 602 id.zone 706 in.zone 659 kr.zone 6520 ru.zone 388 tw.zone 11510 合計
また、mergecidr.pl によって、隣接CIDRをマージさせてみたけど、 元々の11510件が、併合で9255件に減らすことができた(20%減)。
mergecidr.pl
#!/usr/bin/perl
my %net = () ;
while( <> ) {
if ( /^(\d+)\.(\d+)\.(\d+)\.(\d+)\/(\d+)$/ ) {
my $ip,$bt;
($ip,$bt) = ( ($1 << 24) + ($2 << 16)
+ ($3 << 8) + $4 , $5 ) ;
$net{$ip} = $bt ;
# printf( "# %08x/%02d\n" , $ip , $bt ) ;
}
}
my $count = 1 ;
while( $count > 0 ) {
my $lip = 0 ;
my $lbt = 0 ;
$count = 0 ;
foreach my $ip ( sort { $a <=> $b } keys %net ) {
my $bt = $net{$ip} ;
if ( $bt > 0 ) {
if ( $lbt == $bt && $bt > 1 ) {
# printf( "%08x/%02d\n" , $ip , $bt ) ;
my $dbt = $bt - 1 ;
my $mask = (((1 << $dbt) - 1)
<< (32 - $dbt)) ;
if ( ($ip & $mask) == ($lip & $mask) ) {
$count++ ;
undef $net{$lip} ;
undef $net{$ip} ;
$net{$ip & $mask} = $dbt ;
#printf( "%08x/%08x/%02d\n" ,
# ($ip & $mask) , $mask , $dbt ) ;
}
}
$lip = $ip ;
$lbt = $bt ;
}
}
}
foreach my $ip ( sort {$a <=> $b } keys %net ) {
my $bt = $net{$ip} ;
if ( $bt > 0 ) {
printf( "%d.%d.%d.%d/%d\n" ,
(($ip >> 24) & 0xff) ,
(($ip >> 16) & 0xff) ,
(($ip >> 8) & 0xff) ,
( $ip & 0xff) ,
$bt ) ;
}
}
geoipdeny.sh
参考サイトのスクリプトをほぼ、そのまま借用。
DIR="/usr/local/etc/geoipdeny" ZONEURL="http://www.ipdeny.com/ipblocks/data/countries" # download zonefile for GEO in cn.zone kr.zone ru.zone tw.zone id.zone in.zone do /usr/bin/wget -q -O - "$ZONEURL/$GEO" \ | /bin/grep -v "^#|^$" > $DIR/$GEO done /usr/sbin/ipset destroy GEOIPDENY > /dev/null 2>&1 /usr/sbin/ipset create GEOIPDENY hash:net for IP in ` $DIR/mergecidr.pl $DIR/*.zone ` do /usr/sbin/ipset add GEOIPDENY $IP done /usr/sbin/ipset save GEOIPDENY > $DIR/geoipdeny.store /usr/sbin/ipset destroy GEOIPDENY
fermの設定に登録
自宅のFirewallの設定には、iptablesな設定を、ブロック的にまとめて記載できる、 ferm というのを使っているので、その設定の中に、上記でできた ipset を参照させる。
(( 設定ファイルの先頭に )) @hook post "/usr/sbin/ipset destroy GEOIPDENY" ; @hook pre "/bin/cat /usr/local/etc/geoipdeny/geoipdeny.store | /usr/sbin/ipset restore" ; @hook flush "/usr/sbin/ipset destroy GEOIPDENY" ; (( Firewallのブラックリストな設定部分に )) mod set set GEOIPDENY ( src dst ) REJECT ;
次は動作確認。
# geoiplookup www.baidu.cn GeoIP Country Edition: CN, China # ipset test GEOIPDENY www.baidu.cn 220.181.111.147 is in set GEOIPDENY. # w3m http://www.baidu.ch これがなぜか接続成功するんだよな....
ということで、まだなにかオカシイ?
# export http_proxy=http://中国のOpenProxy:xxxx # w3m http://tsaitoh.net/ Connection Refused...
おお、ちゃんと拒否られるな….
自宅からだと、間に透過PROXYでも入っているのかな…





