子ども生まれたメモ(準備〜1ヶ月編)

7月に第一子(娘)が生まれました。

そのときに感じたことなどを記録しておこうと思います。

育休

私の所属している会社は男性の育休にとても理解があり、特に揉め事もなくすんなり取得することができました。
半年くらい前から育休を取得したい旨を上長に伝え、総務に取得に必要な事務作業的なことを聞いておくなどしておきました。

県や市町村によっては助成金のようなものをがあるようなので、情報収集しておくといいかと思います。(特に最近は「男性の育休向けの助成金」のようなものもあるっぽい)

今回は、妻は産後1年、私は産後2ヵ月での取得としました。期間については特に深く考えていなくてなんとなくって感じです。
本当はなるべく長く取りたいところですが、収入が下がるのでそのあたりとの兼ね合いです。

里帰り

妻の実家が自宅から近いこともあり、退院後の1ヶ月は妻の実家へ里帰りすることにしました。妻は実家で寝泊まりし、私は毎朝通って子の沐浴をしたら帰るという形にしました。

「妻の里帰りへついていくと精神的にキツイ」という話をちらほら聞いていましたが、妻の実家の人柄のおかげもあり、また、自宅へ戻るようにしたこともあったためか、それほど苦痛もなく過ごすことができました。
食事の準備を妻の実家の方ですべて用意していただけたので、とても助かりました。妻も産後のしんどい状況で実家で過ごすことは精神的に良かったのではないかなと思います。(たぶん)

マタニティ教室

予定日数ヶ月前に自治体主催で夫婦で参加できるやつがあったため参加しました。
沐浴やおむつ替えなど、出産後すぐに必要な事の練習ができました。

ここで産後の行政サービスの案内とかもありました。
もし参加してなかったらそういうサービスのこと知らなかったと思います...。

出産へ向けた準備

ネットや病院の案内などにあるものを参考に準備しました。
子ども向けには肌着数着とおくるみ、退院の際に必須になるので新生児対応のチャイルドシート
母親向けには...妻に任せたのであまり把握していません(ごめんなさい)。
授乳クッションも必要ですが、産院の方でもらえるようだったのでそれにしました。

出産するときは、いきなり破水して急いで病院みたいになるので、予定日近づいて来たらいつでも持ち出せるように準備しておくといいと思います。
また、後で「あれ足りないこれ足りない」になりうるので、妻の服や下着がどこにしまってあるかどうかをある程度確認しておくといいとも思います。

出産の立会

コロナ禍の影響でしばらく中止されていましたが、予定日数ヶ月前から立会できるようになりました。立会を希望していたのでとても嬉しかったです。

立会をした感想ですが、ドラマみたいな妻がぎゃーって叫んで夫が頑張れ!みたいな感じではなく、妻はひたすら深呼吸して私はただ突っ立ってるだけみたいな感じでした。
安産だったようで(?)、病院の駐車場で待機していたため呼び出しの連絡が来てすぐに駆けつけることができたにもかかわらず、入室して5分くらいで生まれてすぐに退室させられてしまいました。

感動する暇もなかったです。

産後の入院

産後の入院期間は1週間でした。

その間、決められた時間内に1日1回30分だけ面会ができました。
産後すぐから育休取ってたので、毎日会いに行くことができました。

洗濯物なども出てくるので、そういったものの運搬もここで行います。
新生児はびっくりするくらい毎日顔変わるので、絶対に毎日通う方がいいです。

また、今回は個室を選びましたがこれは正解でした。
(これはあくまで夫目線ですが)面会時は授乳中だったりもするので、相部屋とかだといくらカーテンなどで区切られているとはいえとても気まずかったと思います。(会話も聞こえてしまいそう。)

出産費用はそれなりにかかる

出産一時金で50万出ますが(ありがたい〜)、自然分娩だったにもかかわらず8万弱支払いました。(個室にしたのももちろんありますが...)
また、予定日すぎると結構な頻度(数日ごと)で検診に通うことになるのですが、予定日以降の検診は市の補助が効かなくなり毎回数千円払うことになるので、これも地味に痛い出費です。

出生届

生まれるまであまり深く考えてなかったのですが、出生届を出すとそれで名前が確定してしまうので結構緊張しました。一人で出しに行くし。
一応、届けを出す際に役場の人が辞書みたいなやつを開いて、この字で間違いないかを確認してくれました。

実は、出生届を出すまでに時間がかかってしまっていて、出生届を出すために母子手帳なども持っていくのですが、その母子手帳や届けに必要な病院の書類が入院中受け取ることができなかったので、出産後一週間以上経過しての届けとなりました。まぁ、病院に言えばすぐに出すこともできそうですが。

出生届を出す際、新聞に載せるかを聞かれたので私達の場合は記念になると思って載せてもらいました。(新潟日報)

子どもの肌着について

子どもの肌着は種類が多くてわけわからなくなります。
長肌着、短肌着、コンビ肌着、ロンパース、ツーウェイオール...

結局色々買ってしまった(病院からもらった冊子にも書いてあった)のですが、結局は短肌着は全く使っていないです。どういうときに着るの...
もし、当時に戻って買うんだとしたらロンパースだけを買うかと思います。
まぁ、ロンパース買ったとしてもオムツ替え頻度が多くて結局下は開けっ放しになるんですけどね。

複数メーカのを買いましたが、個人的にはユニクロロンパースが一番使いやすかったです。

沐浴

沐浴、最初はとても怖いです。水の中に落としてしまいそうだし、子どももあばれます。
沐浴動画を見たりマタニティ教室でも練習しましたが、生身の人間相手だと全然思ったようにいかなくて、大変でした。

ただ、数回もすると親も子も慣れてくるのか、それほど苦もなくできるようになります。
うちの子だけなのかわからないですが、動画などでは「赤ちゃんは自然に浮かびます」ということですが、うちの場合は全然浮かばず何なら浴槽の底に立ってしまいます。まぁそれはそれで安定しているので洗いやすいですが。
脚の筋肉が多いのかな...?

あとから気づいたのですが、今どきは木浴槽ではなく沐浴用のマットに乗せてシャワーをぶっかけるスタイルらしいです。これなら浴槽に落とすこともないし水道代にも優しそうなので、もっと早く知っておけばよかった。。

タオルを大量消費する

とにかくうんちまみれになるので、タオルを敷きまくって汚れを回避しています。タオルを敷かないと、クッションやベッドなどがうんちまみれになって洗って乾かすのがしんどくなります。
タオルなら簡単に洗うことができるし、一日で乾きます。

ホルムアルデヒドについて

ネットなどで赤ちゃんグッズを調べると「屋内ではホルムアルデヒドがあるので、赤ちゃんの服はすべて袋に入れて保管しましょう」みたいなのがめっちゃ出てきます。
が、正直そんなこと気にしてられないので、気にしないことにしました。これはパートナーとの合意が必須な気がします。

赤ちゃん用洗剤

とりあえず最初は買いました。
段々面倒になってきたので、今あるやつ使い切ったら大人用と同じものにしようかなと考えています。これもパートナーとの合意が必須な気がします。

一応ウタマロ石けんも定番らしく買っていますが、今の所普通の洗剤で十分落ちているためまだ使っていません。

洗濯用バケツはほしい

うんちついた洗い物を洗濯機で洗う前に軽く落としたくなるので、バケツがあると便利です。洗濯機にうんちカス残したくないし。
また、少量ですぐに洗濯できるので、少量洗うのが得意な「バケツ型洗濯機」を考えています。

おむつ消費がすごい

話としては聞いていましたが、想像以上におむつを消費します。
1袋70枚前後(新生児用)とかだけど、1日で10枚以上は消費するので1週間もちません。
意外に(希望するメーカーの)新生児用がドラッグストアなどに置いてないないことが多いので、売ってるお店を事前にリサーチしておくと焦らないです。

ちなみに、おむつはamazonで買うのはおすすめしません。
(セール時はともかく)薬局より割高なことが多い印象であること、すぐになくなってすぐに欲しくなるので、届くのがちょっと遅れただけも詰むためです。

また、買いだめもあまりしないほうがいいです。
子の成長が早いので、すぐにサイズが変わって使えなくなります。

近所で売ってるお店に目星をつけて、こまめに買いに行くようにしましょう。

哺乳瓶について

哺乳瓶はガラス瓶のタイプが調子いいです。プラ製のはお値段は高い(気がする)のとガラスに比べて冷めにくいためです。
ただ、ガラス製のやつはお出かけには重いし割れる危険がありそうなので、一応プラのやつも1個位はあるといいと思います。
哺乳瓶のサイズは大きいやつ(240mL)で、0ヵ月用の乳首を買って付け替えました。

哺乳瓶用洗剤は絶対スプレー式のやつが良くて、これだとスポンジでこすらなくてもいいのですごく楽でした。ただ、わりとすぐになくなります。

哺乳瓶の消毒は、電子レンジでやるタイプにしました。煮沸や消毒液に浸けるやつよりは楽な気がします。

ぴよログ(アプリ)がとても便利

赤ちゃんの世話を記録する定番アプリです。
とても良く作り込まれてて、育児する人はみんな入れたほうがいいです。 特に授乳タイマーみたいなのが便利らしいです(妻談)。
睡眠はつけたほうがいいと思いますが、いつ寝ていつ起きたかの判定が面倒なのでうちはつけていません。

日記みたいな機能もあるので、その日あったことなども入力しています。

www.piyolog.com

ちなみに、みんなアレクサ連携などしているっぽいですが、うちはしていません。今の所はスマホでそんな面倒に感じでいないので。

みてね(アプリ)がまぁまぁ便利

画像共有アプリです。
親とかに画像を共有するのに使っています。
LINEとかで送るよりずっと効率よく画像をシェアできます。

mitene.us

ポッドキャスト

育児中、疲れ切ってブログ記事などを読む気力が湧きません。
ポッドキャストだと、ミルクあげながらとか抱っこであやしながら聴けるので便利です。(赤ちゃんの泣き声で聴こえないことも多いですが)
また、育児系のポッドキャストだとそのままパートナーとの育児方針についての参考にできるので気に入って聴いてます。

最近特に聴いているのはベビマヨです。

www.tbsradio.jp

ガルガル期

ネットで聞いてた妻のガルガルについては、ありがたい事にほぼありません。
どちらかというと授乳のことで頭がいっぱいでそれ以外のこと考える余裕がない感じらしいです。

赤ちゃんの泣き声で起きられない

私は寝ているときに赤ちゃんが泣いても気づかないことが多いようです。
一度、ベッドから落ちてうつぶせで泣きながらジタバタしてたのに気づかなくて、別室の妻が気づいて救助したことがありめっちゃ冷や汗をかいたことがありました。

正直に「自分は泣き声で起きられないようだ」と話して、理解してもらうようにしました。
(ネットを見ると、泣き声で起きない夫に対しての妻のアレソレが大量に出てくるのでビビります。)

参考にした育児系記事

ITエンジニア系の記事が自分には読みやすいなぁと感じています。
X(旧Twitter)で流れてきたリンクをみて、妻に共有するなどしていました。

syobochim.hatenablog.com

takumif.hatenablog.com

DHCPとDNSだけRTX1100に任せたい

YAMAHAルーター Advent Calendar 2017 - Adventar  - 8日目

みなさんYAMAHAルーター使っていますか。
師走とはよく行ったもので、とても忙しくてうっかり遅刻してしまいました(言い訳)

今日はRTX1100をDHCPDNS専用機として使ってみたいと思います。

 はじめに

なぜ、RTX1100をDHCP/DNS専用機にするかというと、もっともな理由があります。

我が家では特に3つ目、当時使用していた「無線LANルーター(AtermWR8600N)」ではDHCPのアドレス数が32までしかなく、家電ネットに繋がったりや個人でスマホやPCを持つようになった昨今、一瞬で使い尽くしてIPアドレスが降って来なくなりました。

今回は以下のような構成になるように設定していきます。

項目
ip 192.168.100.2
上位のDNSサーバー 8.8.8.8
ローカルドメイン(※1) local
DHCPアドレス範囲 192.168.100.100~192.168.100.199

※1 ローカルドメインを設定すると、名前解決に失敗した場合にここの値を補完して再度問い合わせするようになる。例えばクライアントが「server1」で名前解決に失敗した場合は「server1.local」で再度問い合わせを行う。

初期設定

DNSDHCPの設定始める前に、最低限の設定をしましょう

ip route default gateway 192.168.100.1
ip address lan1 192.168.100.2/24

DNSの設定

まずはDNSの設定をしましょう。
個人的には家の中にDNS(キャッシュ)を置くことで、WANへのDNSのリクエストの削減もそうですが、何より簡易DNSサーバ機能でLAN内のサーバーの名前解決を気軽にできることにメリットを感じています。

dns service service # DNSサービスを使う
dns server 8.8.8.8 
dns domain local # ローカルドメイン
dns service fallback on # IPv6使うのならon

また、静的にDNSのレコードを追加するときは次のようにします。
例: 192.168.100.201server1.localを割り当てる

ip host 192.168.100.201 server1.local

DHCPの設定

最低限DHCPを使うには次のようにします

# dhcp service server
# dhcp server rfc2131 compliant except remain-silent
# dhcp scope 1 192.168.100.100-192.168.100.199/24
# dhcp scope option 1 dns=192.168.100.2 # これを設定しないと8.8.8.8が通知される

サーバーなどにDHCP側から固定したい場合は次のように設定します
例: サーバー(macアドレスxx:xx:xx:xx:xx:xx)に192.168.100.201を割り当てる

dhcp scope bind 1 192.168.100.201 xx:xx:xx:xx:xx:xx

DHCPは他に細かなoptionがあるので詳細は公式サイトを見てください。
http://www.rtpro.yamaha.co.jp/RT/manual/rt-common/dhcp/dhcp_scope_option.html http://www.rtpro.yamaha.co.jp/RT/FAQ/TCPIP/dhcp-scope-option.html

ルーター買ってネットに繋ぐまで

YAMAHAルーター Advent Calendar 2017 - Adventar  - 1日目

みなさんYAMAHAルーター使っていますか。
もうすぐクリスマス、まだ持っていない方は自分のご褒美に是非購入しましょう。

さて、タイトルにあるように今回はそんな購入間もない方が「買ったら何すればいいの」を書いていこうと思います。
今回は手元にRTX1100(古っ)があって検証が楽なので、これを前提に進めていきます。

 はじめに

まず、ネットに繋ぐために必要なもの(物理)を考えます。

  • RTX1100
  • プロバイダからもらうアカウント情報(PPPoE)
  • LANケーブル

本当はコンソールケーブルなども欲しいですが、今回は「とりあえずルーター買ったぜヒャッハー!!」って人向けに行こうと思います。

ルーターにログインしてみよう

PCとRTX1100をLANケーブルでつなぎます。
そして、RTX1100を裏返すとそこにMACアドレスが書いてあるので、それを使ってリンクローカルなアドレスを作ります。

www.itbook.info

そしたら、telnetコマンド(windowsの場合は機能の有効化しないと使えないかも)を使って接続します。

telnet FE80:0000:0000:0000:AAAA:AAFF:FEAA:AAAA

Password:と出てきたら何も入力せずにエンター、その後なんかゴニョゴニョ出てくれば成功です。
※ちなみにRTX1200とかそれ以降は初期化すると192.168.100.1のアドレスが割り当てられているので、それでtelnet接続できます。

セットアップしてみよう

まず、ネットに繋ぐために必要なもの(機能)を考えます。

これらをセットアップしていきます。

まずは管理者ログイン こちらもパスワードは何も入力せずにエンター

> administrator

IPアドレスの割当

# ip route default gateway pp 1
# ip lan1 address 192.168.100.1/24

PPPoE

# pp select 1
# pp always-on on
# pppoe use lan3
# pp auth accept pap chap
# pp auth myname [プロバイダからもらったID] [プロバイダからもらったパスワード]
# ppp lcp mru on 1454
# ppp ipcp ipaddress on
# ppp ipcp msext on
# ppp ccp type none
# ip pp mtu 1454
# ip pp nat descriptor 1
# pp enable 1
# pp select none

NAT

# nat descriptor type 1 masquerade

DHCP

# dhcp service server
# dhcp server rfc2131 compliant except remain-silent
# dhcp scope 1 192.168.100.100-192.168.100.199/24

疎通確認

ここまで設定終わったら、LAN3とONUをつなぎます。
LAN1→PC
LAN3→ONU
の状態にして、PCからping 8.8.8.8ping google.comをやって帰ってきたら成功です。

追記

macアドレスからipv6アドレス作るの地味に面倒だったので、雑にコード書いてみた。
ブラウザのコンソールにコピペ&エンターして、generateAddress("XXXXXXXXXXXX")(カッコ内は文字列のMACアドレス)って叩けば多分アドレスになる。

const generateAddress = (mac) => {
    const t = mac
        .split("")
        .reduce((a, b) => a.concat(parseInt(b, 16).toString(2)), [])
        .map(e => ("0000" + e).slice(-4))generateAddress
        .map((e, i) => i === 1 ? e.replace(/(?:.{2})(.)+?/,Math.pow(e[2] - 1, 2)+"") : e)
        .map(e => parseInt(e,2).toString(16))
        .toString()
        .replace( /,/g,"");
    return `FE80:0000:0000:0000:${t.substring(0,4)}:${t.substring(4,6)}FF:FE${t.substring(6,8)}:${t.substring(8)}`.toLocaleUpperCase();
};

Elasticsearchを使ってみた

twitterを見ていたら、こんなTLが流れてきました

見ててなんとなくこれまでzabbixとかでやりたいと思ってたことの代わりにできそうな気がしてきたので、触ってみることにしました。 ※zabbixはすでに挫折している

ただ、そもそもデータとして何を集めるかってことですので、とりあえず手元にあったRPi3とBME280で温度とってみることにしました。

目次

  1. RPiのセットアップ
  2. ELK(Elasticsearch+Logstash+Kibana)のインストール
  3. Logstashの設定
  4. その他

環境

  • 温度湿度気圧の取得
    RaspberryPi3(Raspbian)+BME280
  • ELKサーバー
    ProxmoxのContainer(Ubuntu16.04)

1. RPiのセットアップ

方針としては、httpでリクエスト投げるとjsonで情報取得できるといいなと思います。
とりあえず、温度とか取るためにこの記事を参考にして標準出力にcsvで情報を出せるようにしました。 karaage.hatenadiary.jp

ただ、自身の技術力の問題で「python書けない」&「node.js使ってもセンサー情報を取得できない」ことがよくわかったので、node.jsからpythonを呼び出す感じでソースを書きました。
github.com

これで、温度の取得はOK

2. ELKのインストール

困った時のbitnami bitnami.com ドキュメント丁寧に書いてあったので、さくさくっとインストールできました。

3. Logstashの設定

logstashの設定はここにインストールされる
installdir/logstash/conf/
のでいい感じに書いて配置しました。

input {
  http_poller {
    type =>"http_poller"
    urls => {
      service => {
        method => "GET"
        url => "http://hostname" # 温度取得してるサーバのurl
      }
    }
    request_timeout => 60
    interval => 60
    codec => "json"
  }
}

output {
  if [type] == "http_poller" {
    elasticsearch {
     hosts => ["XXX.XXX.XXX.XXX:9200"] # elasticsearchのIP
     document_id => "%{logstash_checksum}"
     index => "get_sensor_data-%{+YYYY.MM.dd}"
    }
  }
#  stdout { codec => rubydebug }
}

んで、実行
logstash -f kibana.conf

4. その他

ここまでくれば、kibanaにアクセスすればデータが入ってるのがわかるのでムフフできます。あとはそのデータでグラフ書いたりして遊びましょう。 ちなみに、部屋の温度を測ってみたらこんな感じになりました。 f:id:kam1nchu:20161217182602j:plain

ハマったところとか

  • logstashコマンドが起動しない
    bitnamiでインストールするとinstalldir内にJavaが配置されるので、JAVA_HOMEとかのパスをそこに指定した
  • logstashがバックグラウンドで動かない
    まだやり方がわかってないので、screenコマンド(仮想端末)内で実行してます
  • http_pollerプラグインでscheduleが使えない
    bitnamiでインストールした時のhttp_pollerのバージョンが古いみたい。intervalで対応できた。
  • RPi3の無線LANが死ぬ
    最初は無線LANでやってましたが、半日くらいで切れてしまうので、結局有線LANでやっています。。
  • 情報が少ない
    特にlogstashの情報が少なかったです。ていうか英語ばっかでした。読めるようになろう英語!!

おわりに

ほとんどネット記事とか公式のドキュメントに沿ってやっただけで大したことしてないのに、それっぽいものができてなかなか楽しかったです。 Zabbixと違い、あくまでデータの分析がメインになるのでそのシンプルさが逆にとっつきやすくなってとてもいいなと感じました。 見た目もイケイケですしね。 温度の取得をできるようになった後に、RTXのsyslog分析とかもやりましたが詳細についてはまた次回にしたいと思います。

butimi.liクローンのクローンを書いた

トゥイッター見てたらbutimiliクローン書いてる人がいた。

utgwkk.hateblo.jp

 

なので、node.jsの練習兼ギッハブ練習を兼ねてブチミリしてみた

github.com

 

まだローカルでしか動作確認してないけど、もう眠い。

そのうちREADME書きます。おやすみ。。。。

 

 

参考になりました

www.nodebeginner.org

Javaのコメントの書き方の話

ソースレビューしてたら先輩社員とコメントの書き方について揉めた意見の交換ができたので、その話。

背景

外注の方が、プロジェクトにアサインされて実装をお願いすることになったのですが、当然最初なので少し実装をしてもらったところでソースレビューを行いました。 その時に、たまたま聞こえる範囲にいた先輩が覗きに来て、そのまま2人でレビューをしました。 その中で、(色々とあるにはありますが中でも)特にコメントの書き方で意見が別れたので書いてみます。

コメントを書く粒度

  • 先輩
    すべての処理(行)にコメントを記述すべきだ。

  • 自分
    変数名やメソッド名などで処理の内容がわかるなら不要。

設計書の内容

  • 先輩
    書くべき。設計書の変更を行う際にソースコードのどの位置を変更すればいいのかわからんくなるから。

  • 自分
    書かないべき。設計書の変更があった際にソース上のコメントを変更し忘れた際に、どっちを信じたらいいのかわからなくなる。コメントのメンテナンスコストもバカにならない。

変更履歴

  • 先輩
    書くべき。不具合発生時などにそのコメントが役に立つこともある。

  • 自分
    書かないべき。ソースファイルはソースコード書くところであって、履歴はSVNのコミットログを使うべき。

コメントのないコードは

  • 先輩
    (例外なく)糞。

  • 自分
    (読めるなら)美しい。

お互いの主張

  • 先輩
    ソースを触る人間はPGだけじゃなくて、ソースが読めないSEやPMの場合だってある。その場合にコメント無しでどうやって修正などするんだ。

  • 自分
    コメントは実際に動作する処理とは無関係で、触らなきゃいけないのはソースそのもの。コメントが多いとその分ノイズとなって修正すべき箇所が見つけにくくなる。

考察?

お互い立場も違うので意見の相違はあるとは思うし、確かにソースが全く読めない人間からしたらコメントはあったほうがいいのかなぁ。
(なんでソース全く読めない人間が触る想定なんだよ)

ゲストLANを構築してみた

RTX1100と今流行の小型PC?の一種pcDuino(RaspberryPi見たいなやつ)使ってゲストLANを構築してみました。
今回ゲストLANに求める要件としては以下

  • ゲストLANはサブネットを分ける
    →今回はルータを挟むことにしました
  • ゲストLANは別に速くなくてもいい
    →なので100Mbpsで十分
  • ゲストには横着なことされたくない
    →通信をhttpとhttpsに制限して、なおかつproxy経由以外で通信できなくする

要件を満たすための今回設定したことを、備忘録的につらつらと書いていこうと思います。
ただし、結論から書くと、RTXの設定でわからなかった(思い通りいかなかった部分もある)のでそのへんご了承願ます。 フィルター難しい・・・。

RTXの設定

RTX側でやらせたいことは、すごく簡単にまとめちゃうと「proxyのwebな通信以外を禁止する」ことです。
ただ、最初は通信を完全に遮断したのですが、それやったらurlフィルター動かなくなったので許可しちゃってます。
また、そのurlフィルターもhttpの時は動くのですが、httpsの時動かなくてうーん。 まぁ、実際の設定を貼っつけたほうがいいと思うので貼っつけます。

ip route default gateway 192.168.128.1
ip lan1 address 192.168.132.1/24
ip lan1 secure filter in 100 101 102 103
url lan1 filter in 100 101
ip lan3 address 192.168.128.7/24
ip lan3 nat descriptor 1
ip filter 100 pass 192.168.132.2,192.168.132.100-192.168.132.191 * tcp * www,https
ip filter 101 pass * * udp * dhcps
ip filter 102 pass * * udp * domain
ip filter 103 pass * * icmp * *
ip filter 104 reject * * * *
nat descriptor type 1 masquerade
nat descriptor timer 1 protocol=tcp port=www 120
nat descriptor address outer 1 primary
nat descriptor address inner 1 auto
nat descriptor masquerade session limit 1 1 200
url filter use on
url filter port 80 443
url filter reject redirect http://proxy.local/block.html
url filter 100 pass * 192.168.132.2
url filter 101 reject * *
dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.132.100-192.168.132.191/24 gateway 192.168.132.1
dhcp scope option 1 dns=192.168.132.1 252=68,74,74,70,3a,2f,2f,70,72,6f,78,79,2e,6c,6f,63,61,6c,2f,70,72,6f,78,79,2e,70,61,63
dns server 8.8.8.8
dns cache max entry 1024
dns private address spoof on
ip host proxy.local 192.168.132.2
schedule at 1 */* *:00 * ntpdate ntp.nict.jp
  • フィルターの設定
    内容、かなり未熟だと思う。。
    ここに書きながら「こうすればいいのになんで?」ッて思う箇所あるけど、実際こうやって設定ましたっていうのを正直に載せます。
ip lan1 secure filter in 100 101 102 103
url lan1 filter in 100 101
ip filter 100 pass 192.168.132.2,192.168.132.100-192.168.132.191 * tcp * www,https // ホントは192.168.132.2だけにしたかたんだけど、urlフィルタうまく動かなかった
ip filter 101 pass * * udp * dhcps // dhcp動かしたかった
ip filter 102 pass * * udp * domain // dns動かしたかった
ip filter 103 pass * * icmp * * // ping使いたかった
ip filter 104 reject * * * * // 使いたかった奴以外を使いたくなかった
url filter use on
url filter port 80 443 // httpsが動かねー!!
url filter reject redirect http://proxy.local/block.html 
url filter 100 pass * 192.168.132.2 // プロキシ以外からのwebアクセス禁止
url filter 101 reject * *
dhcp scope option 1 dns=192.168.132.1 252=68,74,74,70,3a,2f,2f,70,72,6f,78,79,2e,6c,6f,63,61,6c,2f,70,72,6f,78,79,2e,70,61,63
  • DNSの設定
    proxy.pacの配布にローカル用の名前解決させないといけないかなーって思ったので
dns cache max entry 1024 // キャッシュ増やせばそれだけ上位の負荷減るかなーって
dns private address spoof on // 要るか要らないかわからなかった・・・
ip host proxy.local 192.168.132.2 // プロキシサーバを設定
  • NATの設定
    NATの設定の仕方調べてたら、NATテーブルを使い過ぎないようにする設定があったので、その辺もノリで設定しました。
nat descriptor type 1 masquerade
nat descriptor timer 1 protocol=tcp port=www 120 // NATテーブルの保持時間をデフォルトの15分→2分に!?
nat descriptor address outer 1 primary
nat descriptor address inner 1 auto
nat descriptor masquerade session limit 1 1 200
  • その他
    なんか設定中にルータの時間が1980年になってたので、勢いで時刻の同期設定
schedule at 1 */* *:00 * ntpdate ntp.nict.jp

pcDuinoの設定

pcDuinoってなんぞやって人はこのサイト読んで下さい。
http://www.linksprite.com/linksprite-pcduino1/
中身は普通にlubuntuなので、こいつにsquid3とproxy.pac配布用にnginxをインストールしました。

  • ウザいネットワークマネージャの削除
$ sudo apt-get remove network-manager
  • 固定IPの設定
    /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.132.2
network 192.168.132.0
netmask 255.255.255.0
broadcast 192.168.132.255
gateway 192.168.132.1
dns-nameservers 192.168.132.1
  • squid3のインストール
$ sudo apt-get install squid3
  • squid3の設定
    /etc/squid3/squid.conf(抜粋)
# ポート
http_port 3128

# これやんないと使えないのでアクセス許可
acl localnet src 192.168.132.0/24
http_access allow localnet

# プロキシ経由を隠す
forwarded_for off

request_header_access X-Forwarded-For deny all
request_header_access Via deny all
request_header_access Cache-Control deny all
reply_header_access X-Forwarded-For deny all
reply_header_access Via deny all
reply_header_access Cache-Control deny all

# キャッシュ増やす
cache_mem 256 MB
maximum_object_size_in_memory 2048 KB
maximum_object_size 64 MB
  • squid3の再起動
$ sudo service squid3 restart 
  • nginxのインストール
    なんとなく、公式?リポジトリを追加してます。
$ wget -O - http://nginx.org/keys/nginx_signing.key | sudo apt-key add -
$ sudo sh -c 'echo "deb http://nginx.org/packages/ubuntu/ trusty nginx" >> /etc/apt/sources.list'
$ sudo sh -c 'sudo echo "deb-src http://nginx.org/packages/ubuntu/ trusty nginx" >> /etc/apt/sources.list'
$ sudo apt-get update
$ sudo apt-get install nginx
$ sudo service nginx start
$ sudo update-rc.d nginx defaults
  • proxy.pacの配置
    よくわからなかったのでテキトーに書いちゃいました
    /usr/share/nginx/www/proxy.pac
function FindProxyForURL(url, host) {
    if ( isInNet(host, "192.168.132.0"   , "255.255.255.0"  )
    || isInNet(host, "127.0.0.0"  , "255.0.0.0"  ) )
        return "DIRECT";
    else
        return "PROXY proxy:3128";
}
  • MIME-typeの設定
    いるかどうかわからんけど、一応
    /etc/nginx/mime.types(追加)
application/x-ns-proxy-autoconfig       pac;
  • リダイレクトの時のページの配置
    ついでのRTXでurlフィルターでrejectされた時のページをmarkdownをpandocで変換して作成して、配置しました。
    /usr/share/nginx/www/block.html

所感

今回、やりたいことは大体出来たかと思いますが、RTXのフィルターがかなり甘いのと、urlフィルターがhttpsなページでうまくリダイレクトかからないのが残念です。
ルーター設定はやっぱり難しいですね!!

あと、日頃markdown書くときはVSCode使ってますが、はてなブログへ投稿するとめちゃくちゃ崩れちゃって使いにくい!!
何かいい方法ナイカナー