ADSLモデムのNATテーブル溢れで困る

古いADSL モデムで自宅サーバを立てている場合の話なので現代では役に立たないでしょうが健忘録として書いておきます.(光回線?圏外なのですorz)

環境
ADSLモデム-SV3
Hardware Revision: 0001
Software Version: 03.20 (Tue Jul 27 20:45:13 JST 2010)
Boot ROM Version: 01.00 (Thu Jun 3 17:07:20 JST 2004)
DSP Firmware Version: 42.20
VDSP Firmware Version: 9.1.60.12

最近よく家のネットワークで名前解決できなくなることがあります.
DNSが多段になっていて無駄が多いのでそのへんの問題かなと思ったのですが,直接ISP や 8.8.8.8 とか 1.1.1.1 とかの PublicDNS に問い合わせても引けません.

ISP — Unbound — PiHole — PC

ip 直なら繋がるだろうと試すとhttpもsshも駄目です.タイムアウトになります.

ルータを再起動すると直ることもあれば,直ってもすぐに元に戻ってしまうこともあります.

ルータのログみると tcp80 に大量のアクセスがあってそれで NAT table が溢れてしまって繋がらないということのようです.NAT table は 1024 しかないのですが,一度に 1 ipから200〜400回くらいのアクセスが来てこれが複数回来ると NAT table が溢れてしまい通信ができなくなるようです.
#NAT table を増やす設定変更項目は見当たらない

31167785778 8d6ed1d3d7

とりあえずルータを再起動しなくてもNAT table をクリアすると一時的に通信できるようになります.でもどんどんこのアクセスが来てすぐに元に戻ります.おまけにこのアクセスは「有効期限(秒)」が9000とかになっているのでなかなかクリアされません.(ほかは60のよう)
#有効期限の設定変更項目は見当たらない

ip を逆引きしてみると大抵は一般の利用者のようで名前が振られていないレンジや,ipアドレス-domain みたいな名前です.おそらく何かのウィルスに感染して攻撃をしているのではないかと思います.(Google Cloud とかもあったけど……)
幸い自宅サーバのtcp80はhttpsへのリダイレクトとテスト用なのでこれらのアクセスをブロックしてみました.
whois で inetnum を確認して,CIDR を計算して「パケットフィルタ設定」でこのネットワークの tcp80 へのアクセスを drop するように設定してNAT table クリアでドロップされるようにありました.ドロップは「セキュリティログ」で確認できます.

44992821992 770d5444e2

これを繰り返していたのですが設定は64個しか書けません.すぐに溢れました…….

別のアプローチを考えます.
このADSLモデムのweb管理画面はレガシーでcurlでアクセスできます.

NAT table の登録件数を求める
$ echo $(curl  -s -u 'user:password' 'http://192.168.1.1/cgi-bin/main.cgi?mbg_webname=nattbl'|lynx -stdin -dump -width=256|grep -m1 '現在の登録件数'|sed -e 's/^.*:\(.*\)\/.*$/\1/')
308

NATクリアも同様に出来ます.

NATテーブル消去
$ curl  -s -u 'user:password' -F 'mbg_webname=natclear' -F 'nat_clear=消去' 'http://192.168.1.1/cgi-bin/main.cgi' | lynx -stdin -dump
   NATテーブル消去
   [1]ヘルプ [2]help
   -----

   NATテーブルの消去を行いました。

   戻る

参照

   1. file:///cgi-bin/main.cgi?mbg_webname=help&mbg_helpname=natclear
   2. file:///cgi-bin/main.cgi?mbg_webname=help&mbg_helpname=natclear

これを使って NAT table を確認して,溢れそうだったらクリアするscriptを用意してみました.

script の中に書きたくないので ID/PASSWORDは ~/.netrc に書いておきます.

// EDIT : wgetに怒られたので netrc の machine を ADSL ROUTER から ADSL_ROUTER に変更(scriptも)
// wget: /home/mk/.netrc:1: "ROUTER" は不明な区切り記号(token)です

~/.netrc に追記
$ echo 'machine ADSL_ROUTER
> login user
> password  password
> ' | tee -a ~/.netrc
machine ADSL_ROUTER
login user
password  password

適当な script を用意して,

nat_clear.bash
#!/bin/bash

# ~/.netrc 読み込み
usrinfo=(`awk 'c&&c--;/ADSL_ROUTER/{c=2}' $HOME/.netrc | awk '{printf "%s ", $2}'`)
USER=${usrinfo[0]}
PASS=${usrinfo[1]}

# NAT table 登録数確認
NAT_TABLE=$(curl  -s -u "${USER}:${PASS}" 'http://192.168.1.1/cgi-bin/main.cgi?mbg_webname=nattbl'|lynx -stdin -dump -width=256|grep -m1 '現在の登録件数'|sed -e 's/^.*:\(.*\)\/.*$/\1/')

# NAT table が 750 より大きいとNAT table clear
if[ 750 -lt $NAT_TABLE ]; then
  echo "NAT table clrar(${NAT_TABLE})"
  # tcp:80 にアクセスしている ip を確認して表示
  curl  -s -u "${USER}:${PASS}" 'http://192.168.1.1/cgi-bin/main.cgi?mbg_webname=nattbl' | lynx -stdin -dump -width=256 | grep 192.168.1.102/80 | awk {'print $6'} | cut -f1 -d\/ | sort | uniq -c
  # NAT table clear
  curl  -s -u "${USER}:${PASS}" -F 'mbg_webname=natclear' -F 'nat_clear=消去' 'http://192.168.1.1/cgi-bin/main.cgi' | lynx -stdin -dump
fi

実行権を付与.

$ chmod +x nat_clear.bash

crontab に登録して5分毎に呼ぶように設定.

// EDIT: 1024使い切ってからクリアが多いので3分毎に変更した

$ crontab -e
crontab: installing new crontab
$ crontab -l | grep nat_clear.bash
*/5 * * * *     /home/mk/bin/nat_clear.bash

// EDIT: 実際に動作したときのログ追記

NAT table clrar(1024)
    837 103.234.73.6
    102 51.254.167.83
   NATテーブル消去
   [1]ヘルプ [2]help
   -----

   NATテーブルの消去を行いました。

   戻る

References

   1. file:///cgi-bin/main.cgi?mbg_webname=help&mbg_helpname=natclear
   2. file:///cgi-bin/main.cgi?mbg_webname=help&mbg_helpname=natclear

とりあえずこれで様子見中です.しかし対処療法でアクセスが増えたら耐えられなくりますね…….
サーバ機能を引っ越して外部からのアクセスを遮断したらこの問題は解決するはずですが出来たら選びたくないです.
ADSLモデムを高機能なものに置き換えると設定でどうにかなるかもとか,しかしそもそもADSL自体が収束なので製品が存在するのか?

とか思いながら設定項目を見ていると「PPPoEブリッジ機能」というものがありました.これを使うとADSLモデムの裏のサーバ等からPPPoEで繋げそうな感じがします.それが出来たらn分以内にn回アクセスがあったらしばらく無視するとか柔軟な設定が出来るようになります.次はこれを試してみたいと思います.

30105335967 6ed05163ae

#光回線はよ……

キーボードの補修をした

41710094011 abf04f659a

KBC Poker X というメカニカルコンパクトキーボードを利用しています.最近外で使っているNotePC のキーがいくつか壊れて効かなかったりして外にも持ち運んでいます.持ち運び方が雑でむき出しのままパニアバッグに突っ込んだりしていました.そのせいか最近 `]’ key の効きが悪くなってきました.このキーはよく使うし,Linux Desktop ではShift + Ins をよく使うのですが,このキーボードでは `Fn + ]’ で Ins になっているので更に良く使います.
普通ならキーボードごと交換になりますが,このキーボードのキースイッチは Cherry MX (の赤軸)を使っているのでキースイッチが壊れている場合別途キースイッチだけ購入して交換が可能なはずです,キーキャップを外してスイッチを触るとグラグラします.でもキースイッチに型がある感じではありません.更に分解して裏側の基盤を確認してみました(要+ドライバー).

44001692861 8c71a52766

以下の丸部分が該当キーの裏側ですが,もともとハンダがほとんど乗っていなかったようです.これは効かなくなるのも当然ですね…….

43283005284 d6f52a9340

ということで以下のようにハンダを盛ってみるとグラつきもなくなりキー入力も問題なくなりました :)

42192424220 ae7d00c294

追記)これとなりのキーの写真ですね.間違えたorz

GoogleのVR180ビデオ変換アプリのVR180 Creator Tool(macOS/Linux対応)

Google製のVR180のビデオ変換やYoutubeでどう見えるかのプレビューなどが可能なVR180 Creator Toolが公開されています.

ビデオエディタではなく編集やトリミングは出来ないようです.
珍しいのはWindowsに対応しておらず,macOS (10.9+)/Linux (64-bit)対応.※64-bitとあるけどx86-64(amd64)のみ.
Linux版は全部入りで展開して実行するだけでOKでした.
※手元にビデオデータがないので動作確認は出来ていない.

20180624_04:06:15-11012
20180624_04:06:09-4261

アプリ概要
VR180 Creator overview – VR180 Help

利用できる機器
Google VR

利用できるカメラ
VR180

Lenovoのやつとか欲しいですね.

180度カメラを操作するスマートフォンアプリもあるようです.

Sigfoxのエリアなどを確認

Sigfoxのエリアってまだまだだよなーと思ってたのですが,siteを見に行ったら

以下のスケジュールで順次サービスエリアを拡大していきます。

2017年3月 東京23区、横浜市、川崎市、大阪市
2018年3月 政令指定都市を含む主要36都市
2020年3月 全国

思っていたよりエリア広がってそうです.
以下のページでエリアを確認してみると鹿児島市市街地や錦江湾あたりはOKそうです.

20180619_05:06:43-16494
20180619_05:06:05-16518

デバイスの入手性や価格はどうだろうと以下のあたりを見ると,Arduinoシールドなんかは入手できるお店も多くて試しやすそうです.入手性は悪そうだけど下の方のInnoComm Mobile Technology社のSigfox モジュール-SN10-23,ワイソル社のWSSFM20R3とかのSigfox, Wi-Fi, BLE, GPS入りコンボモジュールとか便利そうですね.自転車に積んで位置情報と振動情報とかを飛ばしたりしたいです.ESP社のESP-WROOM-32みたいに入手性が良くなったら試してみたいところです.

Unixstickersでステッカー13枚セットが送料込み$1

It’s FOSSで知ったのですが,現在Unixstickersでステッカー13枚セットが送料込み$1です.

以下のpageのPro packの$9が$1になっています.

 

内訳は以下のようになっているようです.

Badge sticker sheet (Arch Linux + Git + Vim + Python), Vim, Git, Python, Official Bash, Linux Tux, Debian, Arch Linux, Javascript, GoLang.

購入してみたところ日本への発送でも確かに$1でした.

20180611_20:06:29-13786

購入したのは11日でした.12日に発送の連絡が来ました.UPSのtracking number付きなので追跡もできそうです.

ステッカーセット3種類以外のグッズがなくなってしまっているのは悲しいですね.そのうち復活して欲しいです.

追記)
無事到着しました.

Trackingも出来たので安心でした.ちなみに購入したのは 6/11 の夜で,家に投函されたのは 6/23 でした.

20180625_07:06:28-491

沢山買っている人もいますね!

#unixstickers #stickermule #linux #unix #python #vim #git #coding #stickers #debian #redhat #ubuntu #archlinux

Ben Al-Assadiさん(@benalassadirus)がシェアした投稿 –

xargsで実行結果が無いときは実行しない

よくfindコマンドとxargsコマンドを組み合わせますが,findの結果が0のときでもxargsは動いてファイルがないのでエラーが出力されてしまいます.

$ find . -name 'hoge' -print | wc -l

0

$ find . -name 'hoge' -print | xargs flickcurl upload

flickcurl: Minimum of 1 arguments for command `upload'

  USAGE: flickcurl upload FILE [PARAMS...]

Try `flickcurl --help' for more information.

xargsを使わないでfindの-execで回避できるのですが,xargsを使いたいです.

$ find . -name 'hoge' -exec flickcurl upload {} \;

manをみるとそのもののオプションがありました.

-r, –no-run-if-empty
If the standard input does not contain any nonblanks, do not run the command. Normally, the command is run once even if there is no input. This option is a
GNU extension.

早速試してみるとうまく行きました :)

$ find . -name 'hoge' -print | xargs -r flickcurl upload

Windows10標準のsshの鍵はレジストリに保存されているらしい

[janog:14329] より.

Windows 10標準のssh-keygenで鍵を作ると標準で %HOMEPATH%/.ssh で鍵が管理されるようだけどここから消した鍵が再起動後も使えてしまうという話からはじまっている.

HKCU\Software\OpenSSH\Agent\Keys 以下に保存されているらしい.

以下のscriptでレジストリ内の鍵が取り出せるよう.

今環境がないけどなんか嵌りそうだし今度試してみよう.

wgetコマンドでCMSサイトを静的html化

CMSのサイトをもう更新しない,でもアーカイブとして残したいという場合CMSの機能は必要なくなります.メンテナンスコストやセキュリティの面からも動的じゃなく静的にしたほうが良いです.
ということでwgetコマンドを使って静的html化を試してみました.

$ wget --mirror --page-requisites --html-extension --convert-links http://example.com/

基本的にこれだけでOKでした.

  • –mirror

    • サイトのミラーに適したオプションです.再帰的な取得などを行います.次のオプションと同等です.-r -N -l inf --no-remove-listing
  • –page-requisites

    • ページに必要な画像やスタイルシートなどのコンテンツも取得します.
  • –html-extension

    • 取得したhtmlコンテンツの拡張子を.htmlに変換します.
  • –convert-links

    • 取得したコンテンツをダンロードしたコンテンツを参照するように書き換えます.例えばfoor/doc.htmlから/bar/img.gifを参照している場合 doc.html のリンクを../bar/img.gifと書き換えます.
  • http://example.com/

    • 取得したいsiteのurlです.

入手したアーカイブは静的htmlなので適当な場所に置いてアクセスすればOK.確認時は旧siteのコンテンツを見に行ったりしないように確認するマシンのhostsに以下のような細工をしました.

$ grep example.com /etc/hosts
127.0.0.1       example.com

大丈夫そうでしたが,検索ボックスはCMSの機能を使っているので動かなくなりました.検索ボックス自体を消してしまってもいいと思うのですが,今回はDuckDuckGoのものに変更してみました.これについては次のエントリにて.

今回試したCMSはImpress Pageです.参考にしたsiteではWordPressをアーカイブしていました.他のCMSでも応用が効きそうです.

参考URL

 

DuckDuckGoの検索ボックスを利用する

もう更新しないCMSを

$ wget --spider --recursive --no-directories --no-verbose ${SITEURL}

のような感じでhtml化したのですが,検索ボックスは動的なままです.検索エンジンの検索ボックスに入れ替えると良いのではとDuckDuckGoのものを探してみました.

例えばこれでこのblogの検索が出来るようになります.

この辺りを見てカスタマイズするとさらにいいかもしれません.

Googleが一般的ですがDuckDuckGoはアカウントも必要ないしお手軽でいいですね.

関連

 

鹿児島らぐの「鹿児島Linux勉強会 2018.05」に参加

DP1M0523

今月も一人.でもドタ参あるかもってことで鹿児島市に向かいます.てことで今月もポタリング日記です.
今回は海岸線で桜島フェリー乗り場まで,その後なんとなく関吉の疎水溝を見て来ました.帰りは垂水フェリー経由で帰宅.
技術要素はありません.

先月はけぶっていて対岸が見えなかったけど今月は神川から開聞岳だけでなく桜島もよく見えました.
DP1M0436DP1M0437

例によって高須からはとぎれとぎれの旧大隅線のサイクリングロードを北上.
DP1M0438DP1M0439DP1M0441
菅原小学校跡の施設,先月は工事中でしたが今月はある程度舗装が完成してFanRideまでの道が出来ていました.工事自体は9月迄なのでウギは正門の方を工事するのかな?
DP1M0442DP1M0443DP1M0444DP1M0445

菅原からCR途切れたところからは旧道を利用.少しだけ獲得標高減るけど距離は伸びる?古江手前からCRで霧通りを降りてトンネル.裏道で古江漁協前を通って郵便局の先の辺りまで.信号や大きな交差点が避けられます.ここの公園も設備チェックしようと思ってたんだけど忘れてました.
DP1M0449DP1M0450DP1M0451DP1M0452DP1M0453DP1M0454DP1M0456

しばらく前から垂水市街地の信号機は薄いLEDの信号機に.薄くてなんか強度心配に.
DP1M0457

荒崎から海潟あたりの裏道は今回は使わず.江ノ島あたりの路面が綺麗だと良いんですけどね.路面が悪いので疲れます.
DP1M0459DP1M0461DP1M0462DP1M0463

桜島フェリーで鹿児島市へ.
New photo added to galleryDP1M0467DP1M0470

結構時間があるので先日匿名掲示板で近所に住んでいるという人に教えてもらった「関吉の疎水溝」に行ってみることに.全く下調べしていないのでフェリーの中でちょっと地図を見ただけ.多分県道25号を進むと看板か何かがあるのではないかと当たりをつけて向かいます.吉野の方だからきっと登りだろうけど7~8km程度なのでどうにでもなるでしょう.案外細いのに交通量のある道でした.角度は緩やかだけど標高200m程上って少し下る感じ.看板は新しいものが何箇所かあったので地図を確認しなくて住んで良かったです.

現地にはボランティアの解説をしてくれる方が2名いらっしゃって説明をしてもらいながら観光できました.ここから取水して集成館(今の仙巌園内にある)までの約7kmの水路を作ったそう.その水で水車を回し,蒸気機関になるまでの動力として使われていたそう.
住宅の開発で現在は途中で途切れているけれど今もそこまでは水路は続いていて灌漑などに使われているそう.
夏場涼しそうな場所でした.

DP1M0471DP1M0473DP1M0474DP1M0478DP1M0481DP1M0482DP1M0483DP1M0484DP1M0486DP1M0489DP1M0492DP1M0494DP1M0495DP1M0496

水路沿いに道路はあるか聞いたらあるってことだったので途切れるところまで水路をたどってみました.歩行者や自転車じゃないと無理な細い道もあるので自転車がおすすめ.
水路が途切れたところからは多分あっちかなーという感じで住宅地を突っ切って帰りました.獲得標高は減ったのでちゃんとルートを調べれば坂道少ないルートがありそう.
DP1M0497DP1M0497DP1M0499DP1M0500DP1M0502DP1M0503DP1M0504DP1M0505DP1M0511DP1M0512

天文館に帰ってきてまだ時間があったのでジュンク堂とダイソーアオヤマ,Can☆Doに.ジュンク堂ではO’Reillyのフェアをやっていました.カタログも.ダイソーにはminiUSB Cableがなくなっていました.棚が移動しただけだと良いのですが見当たらず.Can☆DoはUSB Cableがごっそりなくなって補充されていませんでした.タイミングが悪かったですね.
New photo added to galleryNew photo added to gallery

そろそろ時間なので今回の会場にしたジョイフル 鹿児島中央駅前店へ.そういえばこのお店は2度めですが1度目に来た時はまだ西鹿児島駅なのにこのジョイフルは鹿児島中央駅前店になっていた気がします.
DP1M0513DP1M0514

駐輪場,駐車場は有料でした.自転車の駐輪は2時間まで無料.12時間ごとに200円でした.
店内は思ったより混んでいました.でも禁煙席の一番奥の席を確保.足元に電源もありWi-Fiも問題なく利用できました.結構旅行者の方も利用している感じで待ちはあまりでませんがだいたい席は埋まっている感じです.勉強会の会場としては先月の西鹿児島店のほうがよさそうです.駅の西側に鹿児島中央店もあるのですが,駅からのアクセスが良い分このお店より混んでそうな気がします.
値上がりしたモーニングを食べて,GPSロガーからデータを吸い出して写真にジオタグを付けてアップロードとかしつつ #IoTSecJP の同人誌を読んでいたらあっという間に時間になりました.

DP1M0523DP1M0524DP1M0525DP1M0526

帰りは寄り道あまりせずなんか寿がきや感のあるニシムタスカイマーケットでコッペパン(55円!)と豆乳を買って垂水フェリー経由で帰宅しました.
DP1M0527DP1M0528DP1M0529DP1M0530DP1M0531DP1M0533DP1M0535DP1M0536

次回は6月の1,2週目辺りかなと思っています.