birdきょうのつぶやき@digitune

きょうのつぶやき@digitune

CSSいじりだすと時間がいくらあっても足りん(汗。 (07:20 PlumeforAndroidから・詳細)

「ebb and flow」って潮の満ち干きのことだったのか。 (07:24 PlumeforAndroidから・詳細)

物語の中で月が破壊されることはままあるけれど、本当にそうなったらどうなる?という話を昨日あゆみさんとした。潮の干満が無くなるときっと生態系に大きな影響があって、おそらく大絶滅が起こる。生命は強いからそのうち復活するかもだけど、一時的な停滞は避けられないんじゃないかなぁ。 (07:27 PlumeforAndroidから・詳細)

まぁどんな風に破壊されるのかにもよるか。バラバラに割れる感じなら、そうはいってもほとんどの質量はしばらく元の位置に留まり徐々に散逸していくのだとすると、そこまで急速な変化は起こらず生き物も対応可能なのかも。 (07:42 PlumeforAndroidから・詳細)

image 0これを見るとskeletonは明らかにbootstrapを意識して作ってる感じがするなぁ>Responsive CSS Framework Comparison: Bootstrap, Foundation, Skeleton http://responsive.vermilion.com/compare.php (12:37 Twitter Web Clientから・詳細)

おうちサーバの「dnssec-validation auto;」なbind9が起動直後だけbad cache hit (./DNSKEY) error (broken trust chain)で名前解決出来ない件、原因らしきものがわかった気がする。 (15:57 Twitter Web Clientから・詳細)

夜にまとめて書こう。 (15:59 Twitter Web Clientから・詳細)

起動直後だけbindがうまく動かない件、原因は時計にありました。DNSSECのキャッシュには有効期限が設定されており、マシンの時計が狂っていると正常に動作しないことがあるのは結構よく知られた問題だったらしい(いわゆるFAQ)。 (21:53 PlumeforAndroidから・詳細)

おうちサーバでは当然ntpも動作させていますが、なぜかdebian標準の設定ではntpよりもbindの方が先に起動するようになっており、しかもおうちサーバはNAS由来のせいかリブートすると必ず時計がoriginまで巻き戻る→ntpで補正、という動きをしていたことなどが原因っぽい。 (21:57 PlumeforAndroidから・詳細)

/var/log/daemon.logを眺めているときにタイムスタンプがやたら飛んでいること、DNSSECの紹介記事に時計に注意、と書いてあったことなどで気がつきました。やーかなり難易度高いねこれ。 (21:59 PlumeforAndroidから・詳細)

RT @satoh_fumiyasu: .@OrangeMorishita @digitune 「常に」は、「いいえ」。Debian で起動時に確実に時刻合わせしたいなら、ntpdate パッケージを入れるべきです。ntpd は step で時刻合わせする設定になっているとは限… (22:15 PlumeforAndroidから・詳細)

ためしてみよ>RT (22:15 PlumeforAndroidから・詳細)

早速ntpdate入れて再起動してみたけど、それだけでは解決しないみたいだなぁ。ntpdate[2033]: step time server 157.7.235.92 offset 1429712045.539244 secとかスゴい時計ズレてて笑えるw。 (23:17 Twitter Web Clientから・詳細)

ntpdateはif-up.dで起動されるみたいなのに、それよりもbindの起動の方が速い、ってのはなんなんだ。ntpdateが時計を合わせ終わるのが起動後30秒過ぎくらいなのに対し、bindのログは起動後15秒前後から出力され始めている。bindの起動を遅らせるしかないのかな。 (23:21 Twitter Web Clientから・詳細)

birdきょうのつぶやき@digitune

きょうのつぶやき@digitune

image 0IIJmioの友達紹介キャンペーン、僕のURLを晒しときます。BIC SIMカウンターで申込む時は使えないかもですが…>IIJmioの格安SIMをお申し込み頂いた方限定でおトクな特典をもれなくプレゼント! https://www.iijmio.jp/campaign/mgm/invite/?id=245814807230931&sns=1 (06:00 Twitter Web Clientから・詳細)

週末忙しかったせいか体調が下降気味。むむ。 (07:28 PlumeforAndroidから・詳細)

birdきょうのつぶやき@digitune

きょうのつぶやき@digitune

今日はあったかいねぇ。 (09:22 PlumeforAndroidから・詳細)

以前とさほど使い方は変わってないと思うんだけど、モバイル回線での通信量がひと月1GBだと微妙に足りなくなってきた。アプリ毎の通信量を見てみると、以前はそうでもなかったはずのtwitterクライアントが一位。画像付きのつぶやきが全体に増えてるのが原因かしら… (09:26 PlumeforAndroidから・詳細)

そういや相変わらず「シドニアの騎士」はハードな展開で怖い。しっぽふりふりは可愛かったけど(^^;。 (09:27 PlumeforAndroidから・詳細)

自宅でちょっと物作りモードになるとスーパー生返事マンになるらしく、あゆみさんの機嫌が悪くなる(^^;。明示的なモードチェンジがたいせつ。 (09:30 PlumeforAndroidから・詳細)

今週はGW前の駆け込みでいろいろ新製品発表が多いのかな? (09:36 PlumeforAndroidから・詳細)

RT @mnishi41: ていうかそろそろ「日本は、作り方を含めたハード作りそのもので負けたのだ」ということをきちんと認めないとまずい。現場はわかってるのに回りがそれを認めていなくて、「日本はソフトだけで負けた」と勘違いしつづけている。 (09:39 PlumeforAndroidから・詳細)

image 0Android Chromeはやたら等幅フォントになっちゃうサイトが多いのだけれど、そのことを調査してくれた人がいました>AndroidのChromeにおける欧文フォントよく分からなかったのでfont-familyの挙動調べ… - http://memo.sanographix.net/post/82270542602 (09:51 PlumeforAndroidから・詳細)

新しいXperiaの水色素敵だなぁ。 (12:21 Twitter Web Clientから・詳細)

image 1おお、ちょっとおもろい機能が。 https://twitter.com/mnishi41/status/589992194360016896 (12:22 Twitter Web Clientから・詳細)

image 2RT @gurinomama: その昔、ある校正のプロに「第二次世界大戦は、次がないように、漢字で」と教わった。これだけは心に刻んだ。
岩波の方でした。
“@murasime: 朝日新聞の算用数字と漢数字の使い分けについて、書籍翻訳でも参考になる。 … http://twitter.com/murasime/status/588949376627671040/photo/1 (21:01 PlumeforAndroidから・詳細)

へー。僕も参考にしようっと>RT。 (21:01 PlumeforAndroidから・詳細)

birdきょうのつぶやき@digitune

きょうのつぶやき@digitune

ホンダS660を早速路上で見かけたよ。路上での佇まいは、黄色の車体色だったせいもあってか、まさに現代版ビート、という感じでした。バックミラーに映るS660は全く軽自動車っぽくなくてかっこ良かった。 (12:40 Twitter Web Clientから・詳細)

GWを前にまたガソリン価格が上がり始めていますね。今回は季節性のものか投機的なものか… (12:48 Twitter Web Clientから・詳細)

久々に見たNHK基礎英語テキストの表紙のテイストにちょっと驚いてしまった。 (18:46 PlumeforAndroidから・詳細)

birdきょうのつぶやき@digitune

きょうのつぶやき@digitune

image 0やはりAIRWAVEの完成度には及ぶべくもなく。フィットから内装変えてきたのはちょっと意外だった>ホンダ、新型コンパクトワゴン「シャトル」をホームページで先行公開 - Car Watch http://car.watch.impress.co.jp/docs/news/20150417_698307.html (07:38 Twitter Web Clientから・詳細)

そういやパーキングブレーキレバーがない、ってことは電動化された、ってことですかね?>シャトル。軽のN-BOXでも電動パーキングブレーキ搭載している時代なので驚きはないし、もしかしたら単に足踏み式なのかもしれないけれど。 (07:40 Twitter Web Clientから・詳細)

birdきょうのつぶやき@digitune

きょうのつぶやき@digitune

image 0実に良い観戦記だった。書かれていることに全く同意。それにしても、阿久津八段のプロ棋士らしい徹底的な研究はスゴいと思ったけど、もはや将棋じゃない別のゲームになってますね…(汗>電王戦FINAL第5局 観戦記 野月浩貴七段 http://news.nicovideo.jp/watch/nw1548112 (20:55 PlumeforAndroidから・詳細)

案の定debian wheezy標準のgolang1.0.2ではhugoうまく動かせなかったので、unstableのsrc pkgを使って1.3.3をpackaging中。それにしてもWindowsとかdarwin、netbsdのdebまで作ってるように見えるのは何でだ… (21:29 Twitter Web Clientから・詳細)

Debian unstable(sid)から持ってきたgolang1.3.3を使ってhugo動いた!とりあえず今日はここまでにしよう…。しかしgo、実行するといきなり1GB近くの仮想メモリ割り当ててるみたいなんだが何だこれ。設定出来るのかなぁ。 (23:54 Twitter Web Clientから・詳細)

birdきょうのつぶやき@digitune

きょうのつぶやき@digitune

!自動車税納めるために最近nanaco readyな状態にしたんだけど、もしかして今年ってエコカー減税により免税かも?まぁ良いか。無駄にはならんし。 (19:56 PlumeforAndroidから・詳細)

そういえばこれまでgo言語ってまともに見たことなかったんだけど、ああいう言語だったのね。ちょっと予想と違った。ここのところJSやPythonのような言語とばかり戯れていたせいかな。しかし明確に「Javaを駆逐してやる!」という意志を感じるのは妄想が過ぎるでしょーか?(^^; (20:11 PlumeforAndroidから・詳細)

image 0RT @manking: グラV来たよ! PS2アーカイブス『ロマンシングサガ ミンストレルソング』『幻想水滸伝III』『グラディウスV』『蚊2』などが配信スタート! : はちま起稿 http://blog.esuteru.com/archives/8131404.html (23:35 PlumeforAndroidから・詳細)

やべー!グラV買わねば!! (23:35 PlumeforAndroidから・詳細)

birdきょうのつぶやき@digitune

きょうのつぶやき@digitune

今さらながらに非力なおうちサーバのために静的サイトジェネレータなどを調査中。node.jsは結構富豪的だったんで(hexoは結構調べてみた)、次はgolangなhugoでも試してみようかしら。SFファンとしても<?。 (09:20 PlumeforAndroidから・詳細)

いっしゅん、今のtdiaryのまま高速化する事を目論んでmod_ruby化とか考えたんですが、実際のところ大した改善にならないしメモリも食うしということで早々に却下。 (09:22 PlumeforAndroidから・詳細)

POD=Publishing on demand、かな? (22:22 PlumeforAndroidから・詳細)

確かになんだかんだ言って相変わらずviが一番しっくりくるなぁエディタでは。eclipseくらい周辺の機能が充実してると使っちゃうんだけど、ぱっと使うエディタはやっぱりviだ。 (22:30 PlumeforAndroidから・詳細)

image 0RT @Satoru_00q: オリジナルTVアニメ『SHIROBAKO』 特別エンドロール: https://youtu.be/yYs4DAZTWog @YouTubeさんから (22:35 PlumeforAndroidから・詳細)

おっと見ようと思って忘れてた。見ねば>RT (22:35 PlumeforAndroidから・詳細)

「ebb and flow」の語りはアリ。大いに。 (22:47 PlumeforAndroidから・詳細)

「とらドラ!」か。 (22:54 PlumeforAndroidから・詳細)

細田監督の新作も今年なのか。今年は見たいアニメ映画がてんこ盛りだなぁ。 (23:01 PlumeforAndroidから・詳細)

birdきょうのつぶやき@digitune

きょうのつぶやき@digitune

RT @issei_y: 昨日の結末のモヤモヤがまだ消えない。
「電王戦に関わった皆が最終的に笑顔になる」という、バカみたいな目標は更に遠い所に行ってしまったように思える。
これが最後となってしまうと考えると、この結末はやるせない。 (09:25 PlumeforAndroidから・詳細)

山本さん悔しいだろうな。僕はあの大ポカの後のAWAKEの差し回しも見てみたかったな。アマでも勝てる流れだから研究ばっちりのプロ相手なら必敗かもしれないけど、コンピュータのドジっ子ぶりが際立ってまた別の愛すべき棋譜になったんじゃないかと。初戦のAperyのように。 (09:31 PlumeforAndroidから・詳細)

過去の三浦八段や屋敷九段に勝ったときのコンピュータはそれこそ化け物のような強さで、あの印象だけではそれこそ人工知能驚異論がにわかに盛り上がっても不思議はない感じだった。だからこそ今回、様々な人工知能の現実の課題が明らかになってようやくバランスが取れてきたと思っただがなぁ。 (09:35 PlumeforAndroidから・詳細)

「バーナード嬢曰く。」、同僚のN氏のオススメで読んでスゴく面白かったんだけど、この間あゆみさんとの雑談「絵はちょっと下手でも面白い漫画」の例として真っ先にあげてしまった。ご、ごめんなさい… (09:50 PlumeforAndroidから・詳細)

そういや今回、自宅でちょっと特殊な透過プロキシを立てるのに久々にGoogle先生にがっつりいろいろ教えてもらったんですが、この手の情報のS/N比が微妙に悪化しているように感じた。検索結果のコピペでなんだか分からんけど動いた、的記事が多くなった印象。なので今はコピペ危険ッス(汗。 (10:03 PlumeforAndroidから・詳細)

歌プリラッピングヤマノテラインだた。 (19:56 PlumeforAndroidから・詳細)

Vita torneをLANでの認証を忘れて出張に出ちゃうと悲しいんだよな… (20:18 PlumeforAndroidから・詳細)

nasne複数台運用は、話で聞くと「どんだけー」って感じだけど、実際は周辺のアプリ(torneやTV SideViewなど)も複数台運用前提で設計されてるから実に自然なUXになってるんだよな。 (20:33 PlumeforAndroidから・詳細)

個人的にnasne最大の欠点は内蔵HDDを交換もバックアップも出来なくしてしまったことだと思うんだよなぁ。必然的にHDDの寿命が製品の寿命になってしまう(本体側HDDが飛ぶと外付けストレージ側のデータも再生不能になる)。HDDは消耗品なのでどんどん交換して使いたい。 (20:42 PlumeforAndroidから・詳細)

ちなみに我が家のPS3は既に2回HDD交換していたり。HDDと言いつつHDD(160GB)→SSD(120GB)→SSD(256GB)ですけど。 (20:44 PlumeforAndroidから・詳細)

個人的な印象として、通電時間が長く、それほど激しく読み書きしないような用途ならば、HDDよりもSSDの方が安心感がある。HDDはどうしても常時回転してると思うと劣化が気になるし、SSDは常時通電して読み込んでいればフラッシュメモリの揮発問題もリフレッシュ機構が効きそうだし。 (20:48 PlumeforAndroidから・詳細)

新しいNSXとS660を見ていると、かつてのトヨタ2000GTとトヨタ800(ヨタハチ)の関係もこんな感じだったのかなー、なんて想像しちゃいますな。 (21:03 PlumeforAndroidから・詳細)

今回調べていてもう一つ発見したのは、我が家のおうちサーバにmediatomb+mysqlな構成のDLNAサーバは富豪的過ぎるかも、ということ。mediatombはもう開発止まっているという話もあるし、そんなわけでこれを機会にminidlnaに乗り換えました。これスゴい良いね。 (21:49 Twitter Web Clientから・詳細)

birdiptablesのnatテーブルを使わずに透過プロキシ(transparent proxy)を実現する, Outbound port25 blocking (OP25B) 対応, きょうのつぶやき@digitune

iptablesのnatテーブルを使わずに透過プロキシ(transparent proxy)を実現する

自宅のインターネット回線を自宅までEthernetで配線されていたUCOM spaaqs光からフレッツ網+VDSLを利用するmioひかりに乗り換えたことで、実行スループットが100Mbps→50Mbps以下へと激減してしまった1点を少しでも挽回すべく、家庭内LAN内に透過プロキシーを立ててみようと思い立ちました。

おうちLANはこれまで、当然ですがprivate addressを使った1セグメントで構成されていて、このサイトもサービスしているおうちサーバはあれどDHCPサーバやDNSなどは全て、NECのwifiルータ、Aterm WG1800HPにより実現されていました。当初の構想では、DHCPサーバの設定を変えておうちLANにつながる全てのclientのdefault routeをおうちサーバに向け2、その上で透過プロキシとしてsquidを動かせば比較的簡単に実現出来るのではないか、と考えました。

「squid 透過プロキシ」などでググると例えばこちらこちらのページなどがヒットしますが、どちらもiptablesのnatテーブルを利用しています。そこでとりあえずおうちサーバ上でiptablesが使えるかどうかを確認してみると、2年前にビルドしたカーネルにはiptables関連のmoduleが含まれていないことがわかりました。というわけでまずはカーネルをリビルドするところから開始。ところが今回最初にビルドしたカーネルは、前回と全く同じ手順を踏んだにも関わらず、起動はしたもののxfsファイルシステムである/や/homeをマウントしようとすると「ファイルシステムが壊れている」と言われてしまってまともに動かない、という代物だったため、慌てて元に戻しました。原因を考えてみたんですが、前回ビルドした2年前から比べると、システム標準のgccのバージョンが4.4から4.6に上がっています。昔からlinux kernelはgccのversionに依存があると言われていましたので、おそらくそれが原因と当たりをつけ、シンボリックリンクである/usr/bin/gccをgcc-4.6からgcc-4.4に切り替えた上で再ビルドしたところ、今度はこれまでどおり動くカーネルが出来ました。今回、どうせなら、ということでnetwork/router系のmoduleを軒並み追加してみましたが3、参考までに最終的な構成となったおうちサーバでlsmodした結果は以下の通りです。意外にたくさんmodule使ってますね(^^;。

$ lsmod  
Module                  Size  Used by  
xt_tcpudp               1916  5  
xt_TPROXY               2269  1  
nf_tproxy_core           817  1 xt_TPROXY  
xt_socket               1799  1  
nf_defrag_ipv4           979  2 xt_socket,xt_TPROXY  
xt_mark                  814  1  
iptable_mangle          1027  1  
iptable_filter           903  0  
ip_tables              10204  2 iptable_filter,iptable_mangle  
x_tables               11726  7 ip_tables,iptable_filter,iptable_mangle,xt_mark,xt_socket,xt_TPROXY,xt_tcpudp  
usblp                   9694  0  
usb_storage            35718  1  
uhci_hcd               19597  0  
ohci_hcd               16648  0  
ehci_hcd               35116  0  
usbcore               117168  6 ehci_hcd,ohci_hcd,uhci_hcd,usb_storage,usblp  
usb_common               592  1 usbcore  

さて、カーネルのコンパイルも無事に完了し、aptitude/apt-getでsquidも入れて、さあ透過プロキシを設定しようと前述したページなどを見つつiptablesの設定を入れようとしたところ、natテーブルに触った途端システムが無反応になる、という現象が発生しました。おうちサーバはディスプレイ等は繋がらないNASをベースにしたサーバなので、ネットワークが唯一のインターフェイスです。そのインターフェイスが無反応になってしまうため、再起動するしか手が無くなってしまいます。ちょっと調べてみたところ、iptable_natカーネルモジュールをmodprobleにてロードしただけで固まる、iptable_natモジュールロード後即リブートするように連続してコマンドを実行しても再起動してこないため、単にinterfaceがdownしているだけでなく、どうやらkernel panicしている様子、などが分かりました。うーむ困った。必要なモジュールが足りてない?とかnetwork interfaceが一つしかないとダメ?など、いろいろ当たりを付けて試してみましたが(後者はaliasを作るくらいしか方法ありませんでしたが…これがこの先の伏線に)、この問題はどうやっても回避できず、仕方なく別の方法を模索することにしました。これが、タイトルの「iptablesのnatテーブルを使わずに透過プロキシ(transparent proxy)を実現する」の由来です。ググると分かりますが、透過プロキシを作る手順はほぼnatテーブルを利用するものなので、なかなか望みの情報に行き当たるのに苦労しました。

iptablesの他のテーブル、filterテーブルやmangleテーブルは正常に利用出来ることが分かっていましたから、natテーブルを使わずに実現する方法を探して、まずはsocatやredirのようなuserlandのツールを使う方法(これらは基本port forwarderなので今回のおうちLAN用透過プロキシを立てるという意味では使えなかったかも)を探してみたのですがうまい手が見つからず、うーむといろいろ考えている中で、そういえばカーネルをリビルドしたとき、カーネルモジュールの中に「TPROXY」というものがあったことをふと思い出しました。

そういえばあれはどういうものなんだろう?と思い調べてみると、こんな文書が、またそこからリンクされているこんなそのものズバリな文書も見つかりました。おお!これを読む限り、iptablesのmangleテーブルのみでいけそうです。

というわけで、まずは後者のページに載っていた手順をほぼそのまま使い、カーネルパラメータはそのままで書かれた通りの設定だったためskip、squid3に以下の設定を追加、

http_port 3129 tproxy  

policy routingの設定をし、

ip -f inet rule add fwmark 1 lookup 100  
ip -f inet route add local default dev eth0 table 100  

最後にiptablesの設定を入れて、おうちサーバを透過プロキシに仕立て上げ4、おうちLAN内のclientを一つ、デフォルトルートをおうちサーバに向けて試してみました。と、いきなりloopが発生してしまったようでsquidのログが大量に出力され、慌てて「iptables -t mangle -F」にてルールをフラッシュ。ふぅ。

おうちサーバは普通のDebianサーバなので、自身がWebサーバにもなればそこから外部に向かってHTTP通信を行うことも定期的にあります。iptablesに設定するルールではそのあたりも考慮しなければならなかった模様。というわけで、最終的には以下のようなルールとしました。

# DIVERT chainを作るところは同じ  
iptables -t mangle -N DIVERT  
iptables -t mangle -A DIVERT -j MARK --set-mark 1  
iptables -t mangle -A DIVERT -j ACCEPT  
# 自分自身宛、また自分自身発のpacketはそのままACCEPT  
iptables -t mangle -A PREROUTING -p tcp -s 127.0.0.1/32 --dport 80 -j ACCEPT  
iptables -t mangle -A PREROUTING -p tcp -d 127.0.0.1/32 --dport 80 -j ACCEPT  
iptables -t mangle -A PREROUTING -p tcp -s 192.168.0.132/32 --dport 80 -j ACCEPT  
iptables -t mangle -A PREROUTING -p tcp -d 192.168.0.132/32 --dport 80 -j ACCEPT  
#  
iptables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT  
iptables -t mangle -A PREROUTING -p tcp --dport 80 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 3129  

この状態でテスト用clientからアクセスしてみると、squidのログにはwebアクセスが記録されるのに全ての通信がその後connection timeoutになってしまう5、という状況となりました。先のページのFAQによると、こういう状態の時はsquidにちゃんとパケットが返ってきていないことが原因、routingを疑え、と書いてあります。ふむ。

上で書いたように、この時点ではまだおうちLANのネットワーク構成は192.168.0.0/24の単一サブネットとなっています。おうちサーバもテスト用clientも外へ出て行くwifiルータも同じ一つのサブネットに接続され、テストclientのみがdefault routerとしておうちサーバを向いているためpacketをそちらへ流す状態です。実はこの時点で僕はまだ、カーネルのTPROXYモジュールの動作を全く理解していませんでした。squidにまでtrafficが流れてきているとすると、外向けのHTTP connectionもproxyの常としてsquidが作成するはず、とすると、wifiルータとおうちサーバの通常通りの通信となって普通に通信出来るのではないか、と思っていました。

なんじゃらホイと思いつつ、自分でもTPROXYを使った上記設定の意味をほとんど理解していないことがちょっと気持ち悪かったため、まずはそちらを少し勉強してみることにしました。するとTPROXYを使ったtransparent proxyではNATを使った方法と違ってpacket上のclientのIPアドレスを変更しない、といった記述が目に入りました。なるほど、そうするともしかして今の状態では、テストclientから発信されたpacketはおうちサーバに届いた後squidを通ってwifiルータ経由で外へ出て行くものの、帰りのpacketはおうちルータを経由セずに直接テストclientに戻ってしまうためsquidがpacketを受け取れず、connection timeoutになってしまうのではないか?と予想しました。

仮にその予想が正しいとした場合、解決策としては戻りのpacketも全ておうちサーバを経由するようなネットワーク構成となっていればうまく動きそうです。そこで、おうちLANに新しいサブネット192.168.1.0/24を作成し、おうちサーバにnetwork interfaceのaliasを作成した上でそちらのセグメントのdefault routerとして設定、テスト用clientもそちらのネットワークに属するように構成してみました。具体的に行った作業としては下記の通り。

  1. まずそもそも、wifiルータのDHCPサーバ機能ではclientに配るdefault routerの設定を変更することも出来なかったので、wifiルータ側のDHCPサーバ機能を停止させた上でおうちサーバ上でisc-dhcp-serverを動作させました。その上で、テスト用clientのMACアドレスからのリクエストには192.168.1.0/24のネットワークのIPアドレスが割り当てられ、default routeもおうちサーバを向くように設定しました。
  2. 次に外から戻ってきたpacketがちゃんと192.168.1.0/24のネットワークにも届くように、wifiルータにスタティックルートとして「192.168.1.0/24ネットワークのゲートウェイはおうちサーバ」というルートを追加しました。

ここまで設定してから動作を確認すると、おお!ついにおうちサーバを透過プロキシとして正常に動作させることが出来るようになりました。パチパチパチ。

最後に、上記で行った設定が再起動したときにもちゃんと設定されるようにします。policy routingの設定はdebianの場合、/etc/network/interfacesファイルに書いておくのが流儀のようでしたので、以下のような記述を追加しました。

auto eth0:0  
iface eth0:0 inet static  
        address 192.168.1.1  
        netmask 255.255.255.0  
        post-up ip -f inet rule add fwmark 1 lookup 100  
        post-up ip -f inet route add local default dev eth0 table 100  

また、debianの場合iptablesの設定を保存するには「iptables-persistent」パッケージを使うのが流儀なようだったので、いつものようにaptitude/apt-getにてインストール後、rootで「service iptables-persistent save」を実行して設定を保存しました。設定は/etc/iptables/rules.v4に保存されます。

その後、おうちサーバ上のDHCPサーバの設定を変更して、おうちLANに繋がる全てのclientが192.168.1.0/24側のネットワークに属するようにして、今回の作業は完了。実際にはその後、local networkとして192.168.1.0/24をあちこちに追加し忘れていたことが分かって足して回ったり(/etc/hosts.allowとかpostfixやapacheの設定などなど)、ついでにおうちLAN内にDNSサーバ(bind9)も立ててキャッシュによる高速化+懸案だったおうちLAN内からのおうちサーバを直接叩けるようにしたりしましたが、それはまぁ別の話。

昔から一度立ててみたいと思っていつつ機会がなく試していなかった透過プロキシを今回立てることが出来て面白かった。実はLANに繋がっているclientが少ないと透過プロキシで行われるキャッシュよりもclient localでブラウザが行うキャッシュの方がずっと支配的になってほとんど効果がない、という結果になってしまうのが分かっていたためこれまで試すところまで行かなかったのですが、ゲーム機やスマホのような小さくリソースも限られたデバイスもたくさんInternetにアクセスするようになったこと、家族が複数デバイスを持つのが当たり前の状況になったことから、今ならそれなりに効果が出るのかもしれないと思ったりしています。

Outbound port25 blocking (OP25B) 対応

イマドキのインターネットプロバイダは、固定IPではない、一般会員向けの動的IP割り当てなclientに対しては、spam発信を防止するためにいわゆる「Outbound port25 blocking」という施策を行っています。つまり顧客側から外部のInternet上のhostに対して25番ポート6の通信は出来ないようにしている、という意味です。実はこれまで使っていたUCOMはイマドキのプロバイダでは無いらしく(^^;、その施策が実施されていなかったために、自宅LAN内で運用しているMTA (Postfix)ではまだその対応を入れていなかったのですね。

今回透過プロキシを立てる過程でおうちサーバに入り浸っていて、ふとmail queueに何通かメールが溜まっていることに気が付きました。/var/log/mail.logを読んでみるとoutboundなSMTP通信が全てtimeoutしていました。そこで初めて、Outbound port25 blockingの存在に気が付きました。

PostfixにおいてOP25B対応を行う方法 (というかSubmissionポート+SASL認証を使ってrelayhostへメール送信する方法) はググれば山ほど出てきますので省略しますが、当初Submissionポートを使ってもなおconnection timeoutになってしまってまたしてもなんじゃらホイと思っていたところ、よくよく調べたら僕が使っているプロバイダのメールサーバのFQDNが最近変更になっていた、というオチだったりしました(^^;。旧FQDNでも (おそらく過去からの互換性維持のために) 25番ポートによるメール送信は引き続き受け付けてくれているようなんですが、Submissionポート (587番ポート) を使った送信は新FQDNを使う必要があった、ということですね。ホントいろんなところに落とし穴があるなぁ…。

きょうのつぶやき@digitune

ISPを切り替えたことで超今さらながらoutbound port25 blockingに悩まされるなど(汗。言われてみればUCOMはイマドキblockしてなかったのですね。定跡通りrelayhostへの送信をSubmission+SASLへ切り替えることで対応。 (08:24 Twitter Web Clientから・詳細)

最初、単純に切り替えただけではうまくいかなくてなんじゃらホイと思ったら、実はもう20年近く使ってきた相手側メールサーバのホスト名がつい最近変更になっていたという…。全然気が付かんかった。古いホスト名でもまだ25番ポートだけは受け付けてくれていたんだね。 (08:45 Twitter Web Clientから・詳細)

3年ぶりくらいにおうちサーバにIMAPで接続しようとしたら、dovecotの設定が何故かMaildirではなくmboxを見るようになってて設定変更が必要だった。いつの間に元に戻っちゃったんだろ?たぶんOS updateしたときとかだろうなぁ。全然気がつかなかった(汗。 (10:12 Twitter Web Clientから・詳細)

未読が7万通とかあってビビる。お掃除しないと…。 (10:12 Twitter Web Clientから・詳細)

Gmailのメール転送機能は、「アーカイブしたメールだけを転送する」というオプションがあるべきだと思うよ。 (12:00 Twitter Web Clientから・詳細)

image 0まとめました>Digitune [memo] - iptablesのnatテーブルを使わずに透過プロキシ(transparent proxy)を実現する , Outbound port25 blocking (OP25B) 対応 http://memo.digitune.org/?date=20150412 (20:11 Twitter Web Clientから・詳細)

image 1アマチュアでも今はこのレベルで合成+マッチムーブな動画作れるんだなぁ。ゴイス>ぶれないカメラで撮りたかった、ぶれないアイで 【マッチムーブ】 - ニコニコ動画:GINZA http://www.nicovideo.jp/watch/sm25983565 (20:43 Twitter Web Clientから・詳細)

First | Prev | 221 | 222 | 223 | 224 | 225 | Next | Last