2017年4月19日水曜日

飼っていた猫が死んだ

今僕の目の前には1つの骨壺が置かれている。
中に入っているのは10年以上飼っていた猫のものだ。
飼っている猫が死んだと書いて終わればそれだけの話ではあるんだけど、それだけで終わらせるには少しだけ思い入れのある可愛いヤツだった。

子供の頃から猫が好きで近所の友人の家へ友人が飼っている猫目当てで遊びに行ったりしていて、猫を飼うのが夢だった。中学生の頃の家庭科の時間理想の一軒家の間取りを書いて提出する課題では自分の部屋よりも大きな猫専用の部屋を書いて提出したことを今で覚えている。

だけれども残念ながら高校一年生まで僕は猫を飼ったことがなかった。飼いたいと思って両親に相談しても駄目というのはよくある話でその代わりというと彼らには失礼だがハムスターとかザリガニとか亀とかを飼っていた。

そういう猫が好きで野良猫や他人の猫を撫でて高校一年生を終えた頃、僕自身の心境に変化があり、簡単にいうと学校に行けなくなってしまった。よくある不登校というヤツだ。
ここでは不登校がどうのこのうのとか根性がないだの根性論を言う気は無い。何故なら既に正式に退学しているし、退学したこと自身は前向きの退学だったし、それに僕が今回書きたいのは猫の話だからだ。

僕が通っていた高校の近くには公園があってかなりの野良猫がいた。学校に通っていた頃は帰り道にその公園をわざと通って猫を眺めたり、ご飯をくれるまで後ろをトコトコ歩いてついてくる猫(という噂だった。野良猫にご飯をあげたことは今まで一度も無い)を連れてのんびり歩いたりと充実した生活だったのだが、学校に近づきたくもないという心境になり学校から離れてしまったので生活の中で猫と接する機会がめっきり減った。

まぁ高校生の息子がそのような状況だからと母親がカウンセリングを受けさせるために診療所に連れていってくれるようになり、カウンセリングのために家の外に出る以外は家の中に籠もっていたある日、僕はふと「猫が見たい」とカウンセリングの返り道に母に言った。

丁度自宅の最寄り駅の近くにペットショップが一件あって、そこで猫を眺めてから帰ろうということになりペットショップによることになった。

回りには血統書付きの売り物の猫がショーケースに入って愛想を振りまいている中、床に置かれた檻の中に雑種の子が一匹入っていて、見た瞬間一目惚れしたのは覚えている。
今まで猫は家では飼わないという約束だったのだが僕の母親も息子がそんな感じだったので心の足しになるだろうと思ったのだろう、仕事に出ている父親がOKと言ったら飼ってもいいよということになりその場でその子の値段を店員さんに確認した。

値段はタダ、ということで話を聞けば1週間ほど前から店の近くをうろついていたが非常に弱っていたので虫取り網で捕まえて保護していた。トイレの躾も完璧だし人に懐くので迷い猫かと思っていたがそのような情報も無く捨て猫なのだろうということだった。

仕事途中の父に電話をして自分や母がなんと言ったのかはもう覚えていないが、父も猫を飼うことを許諾してくれこうして我が家に新しい家族が増えたのであった。
今でもペットショップで入っていた檻ごと我が家に連れ帰り床に檻を置いたときになれないことにパニックになって檻の中で飛び跳ねて鳴き叫んでいた彼女の鳴くパターンは覚えている。

そしてそのペットショップで丁度捨て猫として保護されていたのが先日無くなった猫の凪紗である。

僕がそのような状況で17歳にして高校にも行けず家にいるわけなので必然と凪紗と接する時間が長かった。初めは本棚の本の隙間に隠れたり網戸をよじ登ったりと子猫らしいことをして楽しませてくれたり、人間が食べているカレーライスやラーメンに手を突っ込んで驚いたり、ポテチやシュークリームを奪って食べてしまったりと野良経験がある分人間の食べ物に興味があるんだなぁ流石は畜生と思わせてくれた。
猫を飼っているんだからとそれまでしてこなかった自室の掃除やゴミ取りをする習慣がついたのはこの頃である。

飼い始めてから1年2年過ぎて僕が布団で寝るときになると枕元に来るようになった。ただまれに僕が普段と逆さまに寝ると足ともで寝るという僕と寝たいに近いだけだったのだが、ある日逆さまに寝始めて彼女が足下で寝始めたとき、持ち上げて僕の枕元に寄せてきて頭を撫でてやったその日から僕がどんな向きで布団で寝始めても枕元で寝るようになり猫と言えども知恵があるんだと感心したものである。

何をするにも一緒、母が食事だと居間から呼ぶ声がすれば自室を一緒に出て居間に行き、戻るときも一緒、一緒に座ってテレビを見たり、僕が風呂に入れば脱衣場で風呂の磨りガラスのドアにしがみついて鳴いたり、僕がトイレで用を足していればドアの前で鳴いたり、寝るような時間になればはやく布団で寝るぞと言わんばかりに合図をしたりと生活してとても張り合いがある子だった。

その後高校は退学したものの大学に進学し僕自身はまだ人生やり直せるかなぁなんて思ったりもしたわけだけど、僕が家から出るときは僕の部屋の出窓から僕のことを見下ろしてくれて、僕が家に帰ってくるときも出窓からこちらを見ていて、玄関に入ると玄関までやって来て挨拶をしてくれた。お向かいさんからは「よく猫ちゃんがあそこの出窓から顔出してるわよね」なんて言われて嬉しかった。

家族にも懐いてくれて居間にソファーがあったのだけれども、人間達が座っていると人間達の隙間で寝たり一緒にテレビを見たり、ソファーに座っている人間の膝の上に座ったりと家族も凪紗のことをかなり気に入っていた。

食卓に魚が並べば二本足で立ち上がりテーブルの縁に前足を置いて魚を捕ろうとしたり、花瓶に花を生ければ人間が見ていない好きを狙って花をかじったり花瓶を倒して割って母に雷を落とされたり、僕がテレビを見たりゲームをしたりとかまってあげないと部屋に飾ってあるフィギュアやぬいぐるみを1つ落としてはこちらの様子をうかがい構って貰えるまで1つずつ次々と落としていって困らせたりと賢いヤツだった。

そんなある日凪紗が最近元気がないという話になり病院に連れて行った。定期検診等は今まで受けたとことがなく、避妊手術をした時以来10歳にして初めての病院だったのだが、血液検査の結果腎不全と言うことが分かった。その時「ここまで悪い数字を出した猫ちゃんは2日後に亡くなったよ」と医者から言われて病院の中で泣いた記憶がある。

結局延命するには1日2回、僕が病院から購入した栄養剤?を皮下注射するということになり、1日2回、朝晩の凪紗への注射は僕の日課になった。それとご飯に混ぜる粉薬と飲み薬を買った。

初めの頃はどうしても凪紗は注射が嫌で物陰に隠れて引っ張り出すのが大変だったし、薬がかかったご飯は不味いようで「こんなもの食うくらいなら死んだ方がマシ」状態だったらしい。栄養剤だけで生きている状態になったりしたが、その後粉薬や飲み薬を飲んでくれない以上ご飯は何もかけずそのままのものを、皮下注射だけは続けようということになった。
しばらくは布団で凪紗と一緒に寝るときに枕元に来てくれた彼女を撫でつつ「凪ちゃんお前やっぱり美人だねぇ…」と声をかけつつ泣いていた記憶がある。

その後定期的に血液検査をしつつ栄養剤を毎日のように入れていて、ご飯は薬がかかってないものなら食べてくれるようになったし、その時点では回復しているように見受けられ一次的には栄養剤を皮下注射するのをやめた時期もあった。無論医者とも相談した結果だったのだが結局また皮下注射だけは毎日するように戻ってしまった。
医者に入ったり自宅で皮下注射するたびに「後10年くらい一緒に生活したいんだけどなー」と言っていた記憶がある。

そんなある日、僕は大学を卒業して社会人をしつつ凪紗への朝晩の注射だけは欠かさなかったのだが、会社との間で賃金交渉が決裂し、資格を取りつつ凪紗の世話をしつつ転職しようということで会社を辞めた。

なんのことはなく資格勉強は勤勉とは言えなかったが資格自身は取れ、凪紗の容体も皮下注射をし続けていれば安定していたある日、いつものように動物病院に薬を買いに行ったときに獣医から「凪紗ちゃんと同じ頃に腎不全になった子、みんな亡くなっちゃったよ」と言われた。覚悟は決めていたつもりがその場でペットの火葬を扱ってくれる業者を紹介して貰って家族とも値段を確認したり連絡先を確認したりと最後の時が来るのを覚悟した。

2016年のクリスマス、知人が家に遊びに来てくれて、チキンとクリスマスケーキを食べた。僕の部屋は凪紗の部屋でもあるので凪紗もいたし、僕も最後のクリスマスだからとチキンやケーキを少しだけ凪紗に舐めさせてやった。凪紗のヤツケーキの箱に頭を突っ込んで顔にクリームがついていたのを覚えている。

大晦日は姉夫婦が遊びに来てくれてまだ1歳にならない姪っ子を抱きかかえた旦那さんと、凪紗を抱きかかえた僕を母がデジカメで撮影してくれた。その時の写真は今目の前にある。

この頃は少し痩せてきたとは感じていたけれども、毛並みも良く、ご飯も食べてくれて愛想も振りまいてくれていた。いい年越しだったねぇ、来年はいないのかねぇ…なんて家族と言い合っていた記憶がある。

2017年の1月、僕は余らせていた趣味の機材を友人に売ったお金で安いコタツを買った。
実はかなり早い段階から猫とコタツでゴロゴロするのが夢だったのだが今まで我が家にコタツはなかった。凪紗も伊織も(実は凪紗の他にもう一人猫を飼っている。凪紗の次に来た子で今目の前で寝ている)コタツをとても気に入ってくれて三人でゴロゴロした。

2月頃、凪紗がご飯を食べなくなった。皮下注射だけはかかさずやっているのだが痩せていった。初めの頃は人間のご飯だけは食べようとしてくれたのだけれどもそれをあげるわけには行かず、どんどんと痩せていった。

しばらくすると口元が汚れていった。多分胃液か何かが逆流してきたものと思う。そのうち口から胃液のようなものをずっと垂れ流すようになった。僕はまだ人間のご飯だけは食べようとしてくれているからと今までよりも高級な猫缶とカリカリを買ってきて凪紗の前に置いてやった。かなり残してしまっていたが初めの頃は食べてくれた。少しすると舐めるだけになった。そして匂いをかぐだけになった。

それと同時期に凪紗がふらつくようになった。酔っ払ったおっさんがふらふらするかのようにとてもふらふら歩くようになったし寝転んでいる時間が増えた。トイレに行くにもふらふら、ふらふらとトイレに行き、トイレから戻るときもふらふら、ふらふらと戻ってきた。ただ名前を呼べば返事をするし、挨拶するとウィンクを返してくれて愛想は振りまいてくれていた。

その後トイレまでふらふらと入ってトイレの縁をよじ登って超えた後凪紗は猫砂の上に倒れるようになった。倒れて数十秒してから起き上がってから用を足すようになった。いよいよかなと思った。

それまでコタツにいた凪紗が僕のベッドの下に籠もったのは亡くなる1日前のことである。あまりそういうことに関しては興味が無い伊織も凪紗が籠もっているベッドの下を外からジッと見つめるようになっていた。僕はベッドの下は寒いからとコタツの中に持ち上げて入れてやった。その夜僕が最後に見た時は凪紗はコタツから頭だけ外に出して寝転んでいた。頭を撫でてやってまだ愛想を振りまいていた。

朝、目覚めると凪紗がコタツにいなかった。カーペットと板場の狭間でカーペットに頭を置いて、身体を板場に置いていた。寒いのになんでだろうと思い撫でてやったら下半身が濡れていた。恐らくトイレにもうよじ登れなかったのだろう。そして(これはあくまで親馬鹿な僕の勝手な想像だが)頭の良い彼女のことだったからカーペットを濡らすのは忍びないと思ってそのような倒れかたをしていたのだと思う。
その朝凪紗の皮下注射をしたとき、初めて彼女が針を刺しても無反応だったのを覚えている。
皮下注射を終えた僕は凪紗を抱きかかえて座蒲団に座らせた。その時に「最後くらい座蒲団の一枚二枚ぬらしたっていいんだから一緒にいてくれよ」のようなことを言った記憶がある。まだ呼びかけには反応してくれていた。
僕はコタツに入り、僕のすぐとなりに凪紗を寝転がせた座蒲団を置いて、左手で彼女の両手を握りつつ、右手で頭を撫でていた。呼びかけをするとウインクを返してくれた。
アンプも繋げていないエレキギターでヘタクソにアメージンググレースとかカントリーロードとか弾きつつ凪紗に聞かせてやったあと、まだ部屋の雨戸を開けていないことに気がついて「凪紗、お外見ようか」と言って雨戸を開けて部屋に光を入れた。

その時、凪紗に瞳孔反射が起こらなかったのである。そしてそれに気がついたときにはまだ凪紗は呼吸をしていた。兎に角手を握りつつ頭を撫でつつ「凪紗、俺が分かるかー?ずーっと一緒だからな?」と声をかけていた。でも遂ウィンクで返事をしてくれなくなり呼吸をしなくなったと分かったとき「ありがとな、今まで本当にありがとな」といった。
遂に看取ったんだと分かった後、葬儀屋に電話をした。葬儀屋に連絡し始めてようやく遂に凪紗が死んでしまったんだという実感をしなければならずその日初めて嗚咽がでた。

その日のうちに凪紗は葬儀屋に行った。そして家族が帰ってきた後、明日は親戚の結婚式、明後日は僕の入社式というこの日を選んだ凪紗は最後まで頭が良い子だったんだな、と話し合った。

遺骨は次の日には戻ってきた。戻ってきた骨壺を伊織に見せてやったら頬ずりをしてくれたのを覚えている。

そして僕は平日社会人をやるようになった。
1週間後、無職の頃は毎日掃除していた部屋を久しぶりに掃除することになり掃除機を部屋に当てていたときに、ゴミやチリの内容に茶色い毛が混じってないことに気がついた。凪紗を出棺した後すぐに部屋を掃除したし、茶色い毛が生えていたのは凪紗だけだった。
その時に凪紗はもういないんだと再度思ってしまい掃除を途中で投げ出して鳴いた。今まで子供の頃からひい婆ちゃんやじいちゃん、ハムスターなんかを亡くしたときも、亡くなって1週間も経ってから鼻提灯出して泣いたことはなかった。それほどまでにずっと一緒にいた家族でありある意味では凪紗は娘だった。

その日凪紗がなくなる2年前までつけていた首輪が出てきた。2年前に外した理由はご飯が食べづらそうだったから少しでも彼女に楽をさせるため、とかだった気がする。子猫の頃から同じ首輪で短く切りもしなかったから子猫時代の彼女には端が長すぎて邪魔だったんだろう。自分の歯で端っこをチリチリにさせてスカーフのようにしていてとてもお洒落だった。僕が生まれて初めて自分以外の相手にどんなものなら似合うのかと悩んで選んだアクセサリーだった。

その後、仕事の昼休み一人で凪紗の首輪を手に持ちつつずっと鳴いていた日もあったが今はその時よりはだいぶ楽になっている。

飼っていた猫が死んだ。と一文で終わらせることも出来る話だし、今までにペットを飼っていた人からすれば「最後がちゃんと看取れて良かったじゃないか」という話でもある。
オチもない話でもあるし、タダの内輪ネタに過ぎない話ではある。
ある意味では猫一匹の終身介護のために仕事を辞めて猫が天寿を全うしたから再就職したという内容でしかない。

無理やり何を言いたいのかとまとめるならば、ペットはいい、とても素晴らしい家族です。
とても可愛いし生活にメリハリがつくし張り合いがある。出かけるとき家に帰ってくるときに挨拶してくれるし一緒にテレビ見たり一緒に寝たり、素晴らしいパートナーとなってくれます。
ただ生き物である以上必ず終わりは来ます。でもだからといって終わりが来るものだからペットは飼わなきゃ良かったなんてそうはならないはずです。それ以上のものをそれ以上の期間人間に与えてくれます。でも終わりは来ます。
終わりが来るととても悲しいです。所謂ペットロスでしたか、それはとても辛い時期です。

仮にペットを飼いたいとなったときに「いつかは死ぬものだしちゃんと最後まで面倒見られるのか?」とそれを言うが言われる側どちらにせよ多分その時は面倒見られますと答えるものでしょう。そして終わりが近くなれば建前としては覚悟をするでしょう。
でもいざその瞬間が訪れると分かったとき訪れたときその建前はしょせん建前でしかなかったと自分の覚悟が甘かったと思うかもしれません。それでもペットを飼うというのは素晴らしいことなんです。

2016年7月7日木曜日

リンクアグリケーションで静的とか動的の意味を理解していなかった話

参考文献とか引用とか足りないとは思うがあくまでも鳥頭の自分がまた忘れる前にメモということにしておく。こういうところならローカルで埋もれたりディスククラッシュ等々よりも安全でしょうし
業務でやっている人々には当たり前の話かもしれませんが触る機会がないと単語だけ渦巻いて躓くことだってあるんですよ。

事の発端はIntel I350-T4を取り付けてFreeNASでリンクアグリケーションをしようとしてよく分からなかったと言うところだったんですがそれはさておき、自宅のLANでリンクアグリケーション(チーミング? ボンディング?)をしようかと思ってNICを複数そろえたりスイッチを買っているうちに上手くいかないなと思っていたことがあったのですが要するにこういうことだったらしいということ

リンクアグリケーションって静的と動的の2タイプあるっぽい
多分下記くらいの認識しておけばこのレベルで悩んでいる場合OKっぽい
  • 静的アグリケーション->設定等々でStaticと表記されるようなもの
  • 動的アグリケーション->設定等々でLACPと表記されるようなもの

GS116の場合 ( http://www.netgear.jp/products/details/GS116E.html
例えばネットギアのGS116はリンクアグリケーション対応と書いてあってもLACP対応とは書いてない、専用ユーティリティーやWebインターフェース上ではアグリケーション可能なんだけどこいつの場合静的しか対応していないという事だった。スイッチ側の設定と、NICやOS側両方の設定が必要になる。
 
GS108Tの場合 ( http://www.netgear.jp/products/details/GS108T.html
GS108TだとmanualもLACPも対応と書いてあるのでLACPも使えるらしい、LACPだとスイッチ側の設定がいらないらしい(実はスイッチ持ってない…)

  • アンマネージドプラスだと静的のみ
  • スマートスイッチだと静的動的両方

ネットギアさんのスイッチだと上記くらいに思っておけば良いらしく、
個人的にはLVAN切るだけ(+スイッチ間のアグリケーション)ならアンマネージドプラス、スイッチ<->コンピュータ間のアグリケーションもしたいなスマートスイッチなのかなと

  • 静的動的共にスイッチのサポート必要なしでOS側の設定だけで可能なもの
  • 静的対応のスイッチが必要なもの
  • LACP対応のスイッチが必要なもの

今更なんだけどリンクアグリケーションってやるなら上記パターン知らないといけないんだなってのと、それ以上は真面目なドキュメント読んだほうがいいんじゃないでしょうか、RedhatとかFreeNASとか

2016年5月2日月曜日

RTX1200からlinux上の透過プロキシとして待ち構えているsquidに通信をフォワードする

はじめに

RTX1200を手に入れた後、やりたかった透過proxyサーバへ通信をねじ曲げる方法が調べてもまとまった情報として見つけることが出来なかったのでここにメモする。
恐らくは「RTX1200 透過プロキシ」なんかでググっていたのが悪いとは思うものの未だにどう調べればピンとくるんだということが分かっていない。

ip foward コマンド使え

RTX1200がゲートウェイの環境にて透過プロキシを使用したい場合、下記方法で指定したパケットをフォワードする必要がある。

参考) パケット転送フィルター
http://www.rtpro.yamaha.co.jp/RT/docs/forward-filter/


例えば、192.168.1.254のアドレスが設定されたRTX1200において192.168.1.2~192.168.1.253までのIPアドレスから外部へのhttp通信をRTX1200から192.168.1.1の透過プロキシサーバにフォワードする場合は下記のconfigになる。
このとき、ループの原因となるためフォワードするIPアドレスの範囲にRTX1200とプロキシサーバのアドレスを含まないようにする。

RTX1200側のconfig
ip lan1 address 192.168.1.254/24
ip lan1 forward filter 100
ip forward filter 100 1 gateway 192.168.1.1 filter 1100
ip filter 1100 pass 192.168.1.2-192.168.1.253 * tcp * www

Linuxで構築されているsquidサーバ
iptablesの記述
iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 80 -j DNAT --to 192.168.1.1:3128
プロキシの設定(今回はsquidなので/etc/squid.conf )
http_port 3128 intercept
その他
デフォルトゲートウェイ設定は192.168.1.254 ( <- RTX1200のアドレス) 

上記設定で後はsquidのログを確認するとよい。

プロキシサーバが落ちた場合どうするのか?

RTX1200は正常に動いているのにプロキシサーバ側が落ちたらどうするの?ということを考えなければいけないんだけどRTX1200でpingによる死活監視をして切り替えることができるっぽい。
ただし、これだけだと多分squidだけが落ちていて192.168.1.1からpingが返ってくると切り替わらない気がする。

参考 ) ネットワークバックアップ機能
http://www.rtpro.yamaha.co.jp/RT/docs/backup/network-backup.html

例えば下記を用意した場合、下記configを使うとプロキシサーバAである192.168.1.1からのpingが帰ってこなくなるとBに切り替えてくれる。

  • RTX1200
  • プロキシサーバ A 192.168.1.1
  • プロキシサーバ B 192.168.1.2 <- AとIPアドレス以外同じ設定


ip lan1 address 192.168.1.254/24
ip lan1 forward filter 100
ip filter 1100 pass 192.168.1.2-192.168.1.253 * tcp * www
ip keepalive 1 icmp-echo 5 5 192.168.1.1
ip forward filter 100 1 gateway 192.168.1.1 filter 1100 keepalive 1
ip forward filter 100 2 gateway 192.168.1.2 filter 1100

2016年3月26日土曜日

squid+privoxyの多段プロキシ環境で、親プロキシを経由させないホワイトリスト設定をする

squidで親プロキシをわざと経由させないルールやホワイトリストを作成したい

透過プロキシにて Squid -> Privoxy を通し、Webページの広告フィルタリングとキャッシュを行うときにキャッシュしたくないURLや広告フィルタリングを通したくないページなどがあるのでどうするべきかということを試した。

PC -> デフォルトゲートウェイ -> Squid(http_port *** intercept) -> privoxy -> インターネット

上記のような環境で透過プロキシとしてSquid+Privoxyを組み合わせるときに、そのゲートウェイを使うPCからは全て一度Squidに入りますが、親プロキシであるprivoxyを経由させないホワイトリストをsquid.confにて設定する話になります。

補足になりますが、私の環境ではtcp/80のインターネットに出る通信だけをRTX1200からプロシキサーバにフォワードしているので、http以外のことは知らないしあまり深入りはしないようにしようと思っています。


また、大前提として下記を想定していますがそういう話はこれ以上省きます。

  • ゲートウェイからインターネットに出るtcp/80の通信を全てsquidにフォワードしている
  • Squidは透過モード
  • Squidが子供 ( Arch linux squid 3.5.15-2 )
  • Privoxyが親 ( Arch linux privoxy  3.0.24-2 )
  • squid.confの親プロキシ設定は下記1行のみ
cache_peer 127.0.0.1 parent 8118 7 no-query



パターン1 クライアントのIPアドレスで親プロキシを経由しない場合



  • 192.168.254.1~127までは親プロキシを経由する
  • 192.168.254.128~192.168.254.254まで親プロキシを経由しない

ということが可能になる。
ゲーム機やAmazon FireTVStick等をdhcp側でIPアドレス決め打ちするときに便利

acl noFilterSrc src 192.168.254.128-192.168.254.254
always_direct allow noFilterSrcIp
never_direct allow all

パターン2 指定ドメインにアクセスするときに親プロキシを経由しない


主にトラブル回避のためにxbox.comとかmicrosoft.comとか、
特定のドメインにアクセスするときには親プロキシであるprivoxyを経由しない。
親プロキシが今回のようにフィルタリングプロキシの場合、
privoxy側のフィルタルールを緩めたり例外するのも勿論とは思いますが:p

acl noFilterDomain dstdomain "/etc/squid/noFilterDomainList"
always_direct allow noFilterDomain
never_direct allow all

/etc/squid/noFilterDomainListの中身
# Bypass filter proxy domain List
.yahoo.co.jp
.google.com
.xbox.com
.microsoft.com
.apple.com
.steampowered.com

パターン3 指定した拡張子のファイルにアクセスするときに親プロキシを経由しない


主にprivoxy等の不可が酷くなる場合で尚且つアンチウイルスレイヤーを貼っていない場合にバイナリファイル等を拡張子で判別して親プロシキを経由しない。

acl noFilterFileExt url_regex \.(zip|exe|iso|img|7zip|rar|bin|dll|msi|bundle)$
always_direct allow noFilterFileExt
never_direct allow all

上記3パターンを全て混合する場合は下記のような記述になります。

acl noFilterSrcIp src 192.168.254.128-192.168.254.254
acl noFilterFileExt url_regex \.(zip|exe|iso|img|7zip|rar|bin|dll|msi|bundle)$
acl noFilterDomain dstdomain "/etc/squid/noFilterDomainList.txt"
cache_peer 127.0.0.1 parent 8118 7 no-query
always_direct allow noFilterSrcIp
always_direct allow noFilterFileExt
always_direct allow noFilterDomain
never_direct allow all

(2016年11月21日 勘違いしている箇所もあったので修正及び追記)

2015年7月23日木曜日

arch linux で lxcを動かす

本文章はarch linuxをlxcホストにしようと
  https://wiki.archlinux.org/index.php/Linux_Containers を参考にして

  # lxc-create -n playtime -t /usr/share/lxc/templates/lxc-archlinux
 を実行し
  ... is corrupted (invalid or corrupted package (PGP signature))
と言われ正常に動作できなかった環境向けに
arch linuxをlxcホストとしてarch linuxをコンテナとして動かすという文章になります。


またこの文章を見る前に大変参考になる
  http://hachulog.blogspot.jp/2013/03/lxcarchlinux.html

を参照することを強く推奨します。

(2016年 11月21日追記 )
実は先日新規にarch linuxのlxcホストサーバーを構築していて気がついたのですが、
どうもPGP関係のログの箇所で止まることに関しては
arch wiki https://wiki.archlinuxjp.org/index.php/Linux_Containers の通り
システムエントロピーが足りない(?)ことが原因している可能性があります。 
裏でhavegedを起動してしまえばそもそも本文章のようなことをしないでと思われます。
(追記終わり)
 
(というか上記様の構築方法を参考にしようとしていたら現在だと少し後半の作業が不必要だったり差異があって
1つのまとまった文章としてこっそり後でどこからでも見れるものを用意しようとしてこの記事は存在します。)


 
悩ましいところとしては
  • # lxc-create -n playtime -t /usr/share/lxc/templates/lxc-archlinux がうまく動いてくれない? 
  • /usr/share/lxc/templates/lxc-archlinux がおかしい?
  • lxc-create とか lxc-atattch が変?(少なくとも手元ではlxc-attachでpacmanするとPGP云々で正常ではない
という感じ

 

本文章では下記のような構成にてコンテナを動かします。
 
  • lxcの原理とか動かねぇとかしったこっちゃないがlxcを使ってみたい自宅ネットワーク管理者向け 
  • macvlanを用いて既存のネットワークに直にコンテナを出す
  • 初期設定を除き最終的にsshdでの管理を行う
  • lxcのコンテナの開始停止自動実行等はsystemdにて行う
  • コンテナの中のarch linuxは強引にarchをベアメタルインストールするときのようにpacstrapにてインストールする。 

ホストの環境
  %uname -r
  4.1.2-2-ARCH

ホストで必要なパッケージ
  # pacman -S arch-install-scripts lxc

 
コンテナ sample の作成
 
  下記設定にてsampleを作成した場合
    ホスト名 sample.localdomain 
    ネットワークインターフェース eth0 
    IPアドレス 192.168.1.128
    ゲートウェイ 192.168.1.254
  というsampleが出来上がります。

    # cd /lxc/var/lib/lxc

    # mkdir sample
    # mkdir -m 0755 /sample/rootfs
    # vi /lxc/sample/config
 
autodevを使わずにsample直下にはrootfsとconfigのみとなり、configにて/dev下をホワイトリスト形式で許可します。 
(デバイスの箇所は http://hachulog.blogspot.jp/2013/03/lxcarchlinux.html 様そのままです。)
 
  lxc.utsname にてホスト名
  lxc.network.link にて、既に通信が可能なネットワークインターフェースを指定します。
 
/lxc/sample/config 

lxc.utsname                     = sample.localdomain

lxc.network.type                = macvlan
lxc.network.macvlan.mode        = vepa
lxc.network.flags               = up
lxc.network.link                = lxcdmz0
lxc.network.name                = eth0

lxc.network.ipv4                = 192.168.1.128/24
lxc.network.ipv4.gateway        = 192.168.1.254
# device configration
lxc.pts                         = 1024
lxc.tty                         = 4 
 lxc.rootfs = /var/lib/lxc/sample/rootfs
# deny all devices
lxc.cgroup.devices.deny         = a

# /dev/tty0..3
lxc.cgroup.devices.allow        = c 4:0 rwm
lxc.cgroup.devices.allow        = c 4:1 rwm
lxc.cgroup.devices.allow        = c 4:2 rwm
lxc.cgroup.devices.allow        = c 4:3 rwm

# /dev/tty
lxc.cgroup.devices.allow        = c 5:0 rwm
# /dev/console
lxc.cgroup.devices.allow        = c 5:1 rwm
# /dev/ptmx
lxc.cgroup.devices.allow        = c 5:2 rwm

# /dev/null
lxc.cgroup.devices.allow        = c 1:3 rwm
# /dev/zero
lxc.cgroup.devices.allow        = c 1:5 rwm
# /dev/random
lxc.cgroup.devices.allow        = c 1:8 rwm
# /dev/urandom
lxc.cgroup.devices.allow        = c 1:9 rwm

# /dev/pts/*
lxc.cgroup.devices.allow        = c 136:* rwm
# /dev/rtc
lxc.cgroup.devices.allow        = c 254:0 rwm



# device configration
lxc.pts                         = 1024
lxc.tty                         = 4
sample/rootfs に pacstrapでシステムを入れます。
  # pacstrap -i -d /var/lib/lxc/sample/rootfs/ base openssh

sampleを起動してみます。
  # systemctl start lxc@sample

sampleの状態を確認します。
  # systemctl status lxc@sample
  # lxc-ls -f
  # ping 192.168.1.128
 
動いている場合lxc-ls -fの結果が下記のようになります。
 
NAME       STATE    IPV4             IPV6  GROUPS  AUTOSTART
------------------------------------------------------------
sample     STOPPED  192.168.1.128    -     -       NO

 
 
(注意 macvlanの仕様により同じインターフェースからは通信できません。
例えば、NICが1つしかないホストでmacvlan使っている場合上記ではホストからping通りません。
デュアルNIC等で別なインターフェースから飛ばすか、別なマシンからpingテストして下さい) 
 
sampleに乗り込みます。
  # lxc-console -n sample -t tty1
    => root パスワード無しでログイン

sshで管理出来るようにするまで設定します。
 rootのパスワード設定
  # passwd
 
 管理ユーザー等作成
  # useradd -m hoge
  # passwd hoge 
 
 時刻を日本にお住まいなら日本に設定
  # timedatectl set-timezone Asia/Tokyo
 
 journalctl -xeして確認するとsystemdがコンクリフトさせている箇所があるので /dev/nullへ対処
  # ln -s /dev/null /etc/systemd/system/systemd-udevd.service
  # ln -s /dev/null /etc/systemd/system/systemd-udevd-control.socket
  # ln -s /dev/null /etc/systemd/system/systemd-udevd-kernel.socket
  # ln -s /dev/null /etc/systemd/system/proc-sys-fs-binfmt_misc.automount
 
 sshdの自動起動
  # systemctl enable sshd
 
 sampleから抜けます。
  # exit

C-a qでsampleから抜けて、ホストマシンに戻る
 諸々内部を荒らしたのでリスタート
  # systemctl restart lxc@sample
 
 自動スタートさせたい場合
  # systemctl enable lxc@sample 
 
sshでアクセスしてみましょう
  # ssh hoge@192.168.1.128
念のためにログは確認してみましょう
  # journalctl -xe 
 
上記でsshdで管理出来るlxcのコンテナが少なくとも手元では動いていますが
 
既知の問題として
  # lxc-attach -n sample 実行後
     pacmanとかzshとかが動いてくれない
     -> 何かあった場合はホストから # lxc-cosole -n sample -t tty1 して乗り込む

ということは確認しています。(sshdで管理しているので気にしないことにしていますが…)

2013年12月6日金曜日

マルチプレイ可能なゲームって遊ぶ方法複数あるんじゃないか

コンピュータゲームをやるとなるとソレを実行出来るハードウェア環境が必要になるわけですが、
オンラインマルチプレイが出来るゲームだと更にネットワークなんかも絡んできたりして、更にはDRMとかPC版なら各々のPCの具合も影響してきたりすると思う今日この頃

それが私の中ではバトルフィールド4の発売あたりでようやく文字に起こしてみようかなぁと思うことが出来ていてとりあえず前提知識として

バトルフィールド4というゲームが、ある (このゲームじゃなくても多分この話はいい)

・PS3、xbox360という海外では既に次の世代に世代交代している(日本ではまだ)ゲーム機
・PS4、xboxOneという海外では既に手に入る上記よりも1世代後のゲーム機
・上記のものと比べて資金をつぎ込めば遙かに高性能な実行環境であるPC

という感じの機械で遊べてそれぞれハードを超えてオンラインマルチ対戦が出来ないとなっている。

ここで最初に思うことと言えばどの機械で遊ぼうか、ということだと私は思っているというか、実際に購入するときに考えたのだけれども、僕は結局xbox360版を買った。

じゃあ何故ソレを考える必要があるのか、悩む必要が出てくるのかということが起きるのだけれども
僕の場合はそれまでのxbox360でバトルフィールドバッドカンパニー2というゲームを友人達と遊んでいて、その友人達とこのBF4というゲームがしてみたかったからだった。

私とそのまわりの愉快な仲間達は各自宅にxbox360を所持していて普段は各自自分の家で、インターネットやXboxLiveなんかを使ってオンラインの同じサーバに参加して遊ぶという極々普通のオンラインゲームの遊び方をする一方で、集まれるときに集会場として用意されている私の自室に集まって同じ部屋の中人数分のxbox360と人数分のゲームディスクとディスプレイを使ってLANパーティーをすることがあったのだけれども僕がxbox360版BC2で遊んでいた、BF4を買ったのにはここが関係していてLANパーティーをするときにPC版だと色々な難しいところがあったからだ。

・人数分のPCは誰が用意するのか(または部屋のブレーカーが落ちないのか)
・ネットワーク回線の制約(僕の環境にはグローバルIPアドレスが1つしかない)

1つ目で特に難しいのはゲーム機は買ってゲームを遊ぶ人がゲームが出来るPCを必ずしも持っているわけではないということだったし、2つ目はゲームによっては同じ外のサーバーに接続するには苦しい場合があった。(実際BFBC2のPC版となると静的NATでtcp/80とtcp/443を開けろ等)

折衷案を出すとすれば人数分のPCを僕が自室に用意して、グローバルIPアドレスも人数分以上契約しておけばいいだろう、でもそうするとまた1つ問題が出てくる。(そしてそんなもの維持する費用の問題も出てくる)

・LANパーティーをするときにPC版を遊ぶとしてその子が自宅でそのゲームを遊べるような性能のPCを所持していない場合

で、LANパーティーをするときだけ、そのゲームのPC版を楽しむということなら話は簡単なのだが、話はそう簡単ではなく例えばBFBC2やBF4の場合、プレイヤーはマルチプレイの試合で活躍すると新しい武器が使えるとか、成績が出て他のプレイヤーとランキングで比較出来るとかそういうことが出来る。
特に新しい武器が無いとヘリコプターが破壊しにくいとか、戦車で火災が発生したときに消化器が使えなくて鎮火出来ずに戦車が壊れるとかゲームで出来る行動が減ったりして思ったように試合の流れを作れなくなったりする。

そうすると流れとして各自自宅で遊んでいるときに使用している自分の成績や武器を集会場に集まってLANパーティーしているときにそのまま使えるということが理想になるわけで、そうするとどうしてもそのゲームにPC版があったとしても、PC版を最初から購入してオンラインだけで集まったり、オフラインでもオンラインでも集まったりするということが難しくなる。

幸いなことにxboxliveはグローバルIPアドレスを1つしか契約してない環境でもupnpで勝手に
xboxliveにudpで穴開けて6台くらいまでは全てNATがオープンな状態になってくれたというのもあったのだけれども

BFBC2の時はあまりPC版だのxbox360版だの考えずにxbox360版で楽しんでいたのだけれども、丁度BF4の時にここいらの話で思うことが色々あって、まぁなんだそのここまでは話したいこととちょっとズレているからここからなんですが

ゲームする機械によってBF4(とかBF3もそうだった)最大同時参加人数が違ったりするんですよ。
xbox360が24+2人、xboxOneとPCが64人+2人で、これだけ人数が違うとゲームでマップの移動出来る領域やオブジェクトが削られていたりしていてxbox360となるとハードウェアの性能から来ているんだろうなぁとは分かっていたり、実際それ以外でも製品版遊んでいて凄いカクツキがあったり

既に古いゲーム機でもあるxbox360だけ24+2人で、xboxoneとPCでは64+2人ということでやはり64人が基本なんだなぁとは思いつつ、PC版は上の方での話でLANパーティーするには不向きだとしても、xboxoneは日本ではまだ発売されてないですし、そうなるとPCを人数分用意するだのという話よりもめんどくさく僕とその友人達が少なくとも最低1台xboxoneを入手しておくというのは非現実的だったわけです。

ゲーム機にもゲームソフトにもLANパーティーの参加者や戦友が付属してない
というわけで僕も友人もxbox360のBF4を購入し、一応各自の自宅ででも、僕の自室に集まってでもワイワイ遊んでいます。
が、ゲームを遊ぶって文字にするとただそれだけなんですけどその遊び方ってかなり違う考え方があって少なくとも私には

・オフライン用ゲーム(またはモード)を遊ぶ
・オンラインマルチ用ゲームをオンラインでのみ集まって複数人で遊ぶ
・オンラインマルチ用ゲームをオンラインでもオフラインでも集まって複数人で遊ぶ(LANパーティー)

の3つがあって、そこでは要求される機械や環境の構成の現実解が違うと思うんです。
後ろになればなるほど複数人のプレイ環境のつじつま合わせ以上にパーティー会場の環境構築が難しくなっていくというかLANパーティーを出来る時にしたいね、という前提がある場合はやり最大公約数的な環境がチープになって行きがちになると思うわけです。

実行するハードウェアの境目をマルチプレイで超えられないことが1つ大きいかな?とは思ったりもしますが

因みに僕個人はオフライン用のゲーム(今年だとフォールアウト3とかスカイリムとか楽しんだ)はPC版を主にやっていました、理由もそもそも1人用のゲームで他のプレイヤーや人間と環境のすりあわせをする必要が無かったことと、MOD使いたかったから、ですが

何の話だったかと読み返せば多分ゲームを遊ぶってどうやって遊ぶのかって分類ができそうだと思うって話だし、複数人で出来るオンラインゲームを私が知って遊ぶようになってからこんな感じで分類できるんじゃないかって内容

最近ずっともやもや考えていて文字に起こしてみたらやっぱりもやもやしている文章にしかならん。

2012年9月28日金曜日

HDDが振動してHDDのパフォーマンスが下がる場合があるかもしれないというお話

聞いただけの話というか過去の障害対応なんかで出てきた話題なので案外こんなことまで気にしないといけないんだなぁという話題を1つ程

ここ最近のノートPCなんかだと意識させられることがあるんですが(FMVの機種だったかな?忘れてしまいました)ノートPCを操作しているときに本体を振動させるとタスクバーあたりからポコンと「振動を検知したのでHDDの回転を止めました」あたりの表記、出ることあるんですが(これは自宅で家族が使っているノートPCで始めた見ましたが)案外持ち運んだり動かしたりするわけでもないものでも起こりえることがあるんだなとと言うお話でして

いつのことかはともかく、ラックサーバーに内蔵していたHDDの読み書き速度が中々安定せず、RAIDカードの交換や、HDD自体の交換をしてもそれが改善されず、最終的にラックサーバー内部のファンの回転数を下げたら読み書き速度が安定したというトラブルがありまして
まぁ何のことかというとどうやらファンの振動でHDDが振動していたようなのですがそんなことまで気にしないといけないのかよ、と

ラックサーバーのファン自体は1Uや2Uサイズだと平気で4000rpmとか6000rpmで回転しているのでそりゃ確かに普通に使われている家庭用のデスクトップケースのファンよりかは回転が速いわけですがHDDの振動というだけの話だと外付けHDDケースの置き場所が悪くて読み書き速度が安定しないという例もあるようで、いやはやHDDも中で円盤がブン回っているだけあって扱いがめんどくさいな、と

要するに(普通はこんなことは滅多に気にしなくてもいいはずだとは思うのですが)筐体内部のファンの回転数を上げると熱に関しては強くなるけれどもファンの回転数を上げすぎるとHDDが振動し始めて読み書き速度が遅くなる場合があって、ファンの回転数を下げると熱に関しては弱くなるけれどもHDDの安定性は少しは良くなるというケースがごくまれに存在するとのことらしく、ついでに外付けHDDケースなんかもちゃんと安定した場所に置こうね。なんて流れなようですが

その昔サーバールームのHDD装置同士が共振して全部駄目になって泡を吹いた人がいたなんて話は聞いたことがあったのですが、まぁ防振ゴムやらどっしりしたケースなんかもパフォーマンスに影響することがあるのだな、と(私自身自宅のデスクトップPCの類でHDDの振動なんかを気にするような機会がないので