Tsukiji Systems
RSS1.0


googleで
サイト内検索
このブログ
を検索!
  help

巻き戻し中。

2020年
7月
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31


2020-07-13(月) バ美肉 [長年日記] この日を編集

_ PC zoomで

オッサンがリアルにビデオ会議するの飽きた。

SnapCameraとか試してみたけど、なんつーか米国人のセンスでオイラにはイマイチ合わん。

で、FaceRig+Live2Dでバ美肉してみた。

ちゃんと頭の傾きとか目の動きとか、口の動き*1とか連動するので、それっぽくなる。

担当ミーティングだとオッサンの俺の声と連動したキャラのヴィジュアルで脳が誤動作してるのか呆れてるのか、あまりツッコミが無くて面白くなかったんだけど、、、、

(;^ω^)

メイド風味(サンプル

*1 音声と映像のどっちかで動きを同期できる


2020-07-12(日) 庭のお手入れ [長年日記] この日を編集

_ 天気も

何となく晴れている間に洗濯干したり、木の伐採したり。

相変わらず銀木犀はどこからその養分を得ているのか不思議になる勢いで伸びている。

確か昨年の秋にばっさり短くぶった切ったはずなのに。

葉っぱと小枝だけで90㍑ゴミ袋6袋分。

このほかに後日丸鋸でバラして捨てる太い枝が2袋分ぐらいある。*1

しかもこれで目標の2/3までしか終わらなかった。

残りは息子氏が帰省してきたらやるか。

もっさり(゚∀゚)

*1 結局4袋ぐらいになった

_ 負傷

太い枝をチェーンソーでぶった切りながら落ちてきた枝を、公園側に落としたくないので左手で受け止めようとした。

掴んだのは良いのだけど、重すぎてそのまま左手を軸に回転して落ちて行くのに巻き込まれて手を強くひねった模様。

夕方の晩飯買い出しに車のシフトノブを握るのも痛くて辛い。

捻挫と言うより骨が痛いが、来週はバイクの車検だし何とか治してor誤魔化して片付けねば(;´Д`)

_ 駄目押し

庭で伐採すると、公園と家の間の暗渠(あんきょ)の上に側にも枝が落ちる。

仕方が無いので公園側から回収に行くのだが、調子に乗って10年前のつもりでフェンスを跳び越えようとしたら脚が引っ掛かってフェンスの尖ったところに右足のモモを強打。

いやま、刺さりはしなかったけどモモに20cm四方の打ち身。

とっても痛い。・゚・(ノД`)・゚・。


2020-07-05(日) 一周回って [長年日記] この日を編集

_ PC 冗長化?

freevrrpdとrelayd組み合わせてWebと外向けDNSの冗長化が何とかならんかと時間を見つけては格闘していたのだけど、諦めた。

1.freevrrpdはルータ越えるとゴキゲンがよろしくない

2.relaydだと、DNSはプロキシモードじゃ無いとちゃんと動かないがそれだと問い合わせ元が全部プロキシになっちゃうのでaxfrとかの制御がアレ

3.DSRモードならアクセス元制御できそうなので色々試したけどbindはDSR方式には対応出来なさそう

なので、鯖2台+LB2台のトラディショナルな冗長構成はどうやら無理。

Linuxで別のLB建てるのも面倒だしなぁ。

内部から外向きのDNSとか串はrelaydで問題ないと思うし、DNSは実際そうしてる。

_ PC でもって

余計な事をしないでaliasだけを切り替える「なんちゃってvrrpd」を作ったついでに、FreeBSDで完全にdaemonとして動くようにしてみた。  
#!/bin/sh
# This is "Fake VRRP daemon"
# By H.Uekusa 20200705
# Put "fakevrrpd" into /usr/local/etc/rc.d
# such as below
# and do
# "service fakevrrpd enable"
# "service fakevrrpd enabled"
# "service fakevrrpd start"
#----------------------------------------------------
# #!/bin/sh
# # -*- coding: utf-8; mode: shell-script; -*-
# # insert `fakevrrpd_enable="YES"' in /etc/rc.conf
# # Use with fvrrpd
# # By H.Uekusa 20200630
# #
# # PROVIDE: fakevrrpd
#
# PROG="/usr/local/etc/fvrrpd"
#
# . /etc/rc.subr
#
# name=fakevrrpd
# rcvar=fakevrrpd_enable
# procname=/bin/sh
# pidfile=/var/run/fvrrpd.pid
#
# start_cmd="${name}_start"
# stop_cmd="${name}_stop"
#
# load_rc_config $name
# : ${fakevrrpd_enable:="NO"}
#
# fakevrrpd_start () {
#         echo "Starting fakevrrpd"
#         $PROG -d
# }
#
# fakevrrpd_stop () {
#         echo "Stopping fakevrrpd"
#         $PROG -k
# }
#
# run_rc_command "$1"
#----------------------------------------------------
#
############### configuration valiables ################
CAT="/bin/cat"
GREP="/usr/bin/grep"
IFCONFIG="/sbin/ifconfig"
KILLA="/usr/bin/killall"
LOGGER="/usr/bin/logger"
PING="/sbin/ping"
NC="/usr/bin/nc -z -w 1 " # and $MASTER and port
RESTART_NAMED="/usr/sbin/service named restart"
#
VIP="10.2.3.4"
MASK="netmask 255.0.0.0"
MASTER="10.2.3.5" #Actual master IP address
IF="vmx0" #Physical interface name in ifconfig
PORT="80" #Monitor for back up the master
WAIT_LIMIT="60" #Seconds
#
PIDFILE="/var/run/fvrrpd.pid"
LOGNAME="fake_vrrpd"
########################################################
#
######## main module ########
main () {
STAT_PREV="0"
PID=`echo $$`
echo $PID > $PIDFILE
if [ "$1" == "verbose" ];then
        LOG="echo"
elif [ "$1" == "daemon" ];then
        LOG=`echo $LOGGER -is -t $LOGNAME`
else
        exit 3
fi
$LOG "Fake vrrpd PID is $PID"
while [ 1 ]; do #Infinite loop
$PING -c1 -t1 $MASTER >/dev/null 2>&1
STAT_NOW=`echo $?`
        if [ $STAT_NOW != $STAT_PREV ];then #Found change
                if [ $STAT_NOW != 0 ];then #Change is master down
                        $LOG "Master $MASTER down detected! I will become the Master"
                        $IFCONFIG $IF |$GREP $VIP >/dev/null 2>&1
                        MY_VIP_ENABLED=`echo $?`
                        if [ $MY_VIP_ENABLED != 0 ];then #My VIP is not set
                                $PING -c1 -t1 $VIP >/dev/null 2>&1
                                STAT_VIP=`echo $?`
                                if [ $STAT_VIP != 0 ];then #Another VIP is not found
                                        $LOG "I become the Master!"
                                        $IFCONFIG $IF alias $VIP $MASK
                                        $LOG "Restarting named"
                                        $RESTART_NAMED
                                else
                                        $LOG "The Master seems down, but there is another Master ??"
                                        $LOG "To avoid conflict, do nothing."
                                fi
                        fi
                else #Change is master back up
                        $LOG "Master $MASTER interface back up detected! Waiting for enabling service at $PORT."
                        NC_STAT="1"
                        STAT_COUNT="0"
                        while [ $NC_STAT != 0 ];do
                                $NC $MASTER $PORT
                                NC_STAT=`echo $?`
                                echo "Status $NC_STAT"
                                echo "Count $STAT_COUNT"
                                if [ $STAT_COUNT -gt $WAIT_LIMIT ];then
                                        $LOG "Waiting for enabling service at $PORT timed out $WAIT_LIMIT sec, aborting."
                                        exit 5
                                fi
                                STAT_COUNT=`expr $STAT_COUNT + 1`
                                sleep 1
                        done
                        $LOG "Master $MASTER service back up detected! I will become the standby"
                        $IFCONFIG $IF |$GREP $VIP >/dev/null 2>&1
                        MY_VIP_ENABLE=`echo $?`
                        if [ $MY_VIP_ENABLE = 0 ];then #My VIP was set
                                $LOG "I become the standby! Removing alias $VIP"
                                $IFCONFIG $IF -alias $VIP
                                $LOG "Restarting named"
                                $RESTART_NAMED
                        else
                                $LOG "VIP $VIP is already removed or not set, Nothing to do."
                        fi
                fi
        fi
echo "IF Status $STAT_PREV->$STAT_NOW"
STAT_PREV=`echo $STAT_NOW`
sleep 1
done
rm -f $PIDFILE
exit 4
}
#############################
#
###### check arguments ######
if [ "$1" == "-d" ];then #Run as daemon
        LOG=`echo $LOGGER -is -t $LOGNAME`
        $LOG "Fake vrrpd is starting as daemon"
        if [ -f "$PIDFILE" ];then #Exist PID file?
                $LOG "There is PID file at $PIDFILE,I'm exiting"
                $LOG "If you would like to start forcibly, Use -k option first"
                exit 2
        fi
        $0 -vd >/dev/null 2>&1 &
elif [ "$1" == "-h" ];then #Display help
        echo "Usage"
        echo " -d : Run as daemon"
        echo " -h : Display help"
        echo " -v : Run on foreground"
        echo " -k : Kill daemon"
elif [ "$1" == "-k" ];then #Killing existing process
        LOG=`echo $LOGGER -is -t $LOGNAME`
        if [ -f "$PIDFILE" ];then #Exist PID file?
                PIDKILL=`$CAT $PIDFILE`
                $LOG -is -t $LOGNAME "Killing fake vrrpd $PIDKILL"
                kill -9 $PIDKILL
                rm -f $PIDFILE
                $LOG -is -t $LOGNAME "removing PID file"
        else
                $LOG -is -t $LOGNAME "PID file not found, killing with killall"
                $KILLA $0
        fi
        $IFCONFIG $IF |$GREP $VIP >/dev/null 2>&1
        MY_VIP_ENABLE=`echo $?`
        if [ $MY_VIP_ENABLE = 0 ];then #My VIP was set
                $LOG -is -t $LOGNAME "Removing alias $VIP for master"
                $IFCONFIG $IF -alias $VIP
        else
                $LOG "VIP $VIP is already removed or not set, Nothing to do."
        fi
        $LOG -is -t $LOGNAME "Restarting named"
        $RESTART_NAMED
        exit 1
elif [ "$1" == "-v" ];then #Run on foreground
        LOG="echo"
        if [ -f "$PIDFILE" ];then #Exist PID file?
                $LOG "There is PID file at $PIDFILE,I'm exiting"
                $LOG "If you would like to start forcibly, Use -k option first"
                exit 2
        fi
        main verbose
elif [ "$1" == "-vd" ];then #Run as daemon
        main daemon
else
        echo "Usage"
        echo " -d : Run as daemon"
        echo " -h : Display help"
        echo " -v : Run on foreground"
        echo " -k : Kill daemon"
fi
exit 0
#############################

_ PC 使い方

これ、マスター側はaliasにVIPを設定する以外は全部スタンバイ側の設定で良い。

コメントの通り/usr/local/etc/rc.dに「fakevrrpd」を置いて、本体*1は/usr/local/etc/に実行権付けておけばおk。

忘れずに冒頭の変数を環境に合わせて変更すること。

あとは

service fakevrrpd enable

service fakevrrpd enabled

service fakevrrpd start

で起動する。

ログはmessagesに吐かれるし、デバッグモード的に確認したければ「-v」オプションで直接叩くとフォアグラウンドで動くよ。

CTRL+Cで止めることになるので、最後に「-k」で状態をクリアしておくこと。

なお、マスターのIF起動検知後にWAIT_LIMIT秒待っても目的のサービスのポートが開かないとアボートして終了するので、手動対処。

これは、サービスの停止時間を削るためにマスターのIF起動時点ではまだaliasを止めないでサービスが動くまで粘る仕様。*2

あまりにも長いと「IPが衝突している状態」なので各所によろしくないからだ。

*1 fvrrpd

*2 そのうち、アボートするときにaliasも外すようにすると思う


2020-06-11(木) KVM [長年日記] この日を編集

_ PC 念願のIP-KVM?

10マソ円入ったので、殿お勧めのATENのCV211CPポチったの実装した(・∀・)

ESXi鯖の隣にあるRasPiからVirtualHereでUSBデバイスとしてリモートのWindowsに飛ばして何となくIP-KVMの完成である。*1

あと、「電源ボタンぽちー」用にSwitchbotも仕入れてRasPiから駆動できてるので、地球の裏側に出張していて基盤が死んでもなんとかなる(;^ω^)*2

実はあと1-2マソ出せば安いIP-KVM買えるのでどうなのか微妙ではあるのだが、殿が書いてたとおり、「直接ノートPCをモニタ/キーボードにする使い方"も"できるので便利」と自分に言い聞かせて。。。w

ちなみに今回のこれ、帯域制限のある無償版のVirtualHereで飛ばしても、ESXiのスクリーン程度に解像度低ければ使いモノにはなるレベル。

これでガリガリ作業すると言うよりは出張時などにパープルスクリーンとか出たときの対処が出来れば良いので、まぁ許容範囲。*3

*1 さすがに帯域/遅延の問題で直接VPN先までデバイスは飛ばせない。ローカルの単独Windows機をWOLで叩き起こしてRDPで使うことを想定

*2 丁度1年前の英国出張中のトラブルの雪辱。でも、セキュリティ的にちょっとアレなところがあるので保留

*3 ESXiに紫画面のあとの自動再起動パラメータ設定するの忘れてただけだけどorz


2020-05-25(月) 何気に [長年日記] この日を編集

_ PC sleep

linuxに続いてFreeBSDも1秒以下のsleep指定が出来るようになっていた。

昨日のスクリプトでも計測目的もあって0.1秒単位で実行するようにしたのだけど、標準のtestで動く条件判定やexprでの演算は整数しか出来ないので、bcに投げて計算したりしてる。

精度はあまり期待しない方が良いと思う。*1

*1 どっちみち間に挟まる処理時間が読めない


2020-05-24(日) 引き続き工事中 [長年日記] この日を編集

_ PC 冗長化

ルータの次はDNS鯖。

carpかvrrpか悩んだが、freevrrpdの切り替わり時にキックするスクリプトがpreかpostか分からないので、bindをインターフェース確立後に再起動したいけど上手くなさそう。

で、carp試してみたのだけど、どうやらNICにプロミスキャスモード設定してあると、マスターになろうと「俺マスター!」パケット出した瞬間に、自分のパケットを検知して「誰かおる!わしバックアップ」ってループするドリフのコントみたいな事になったので、やっぱvrrpにするw

_ PC freevrrpd

まず、「224.0.0.18」にipfw開けてないとダメだな。 ガッツリ閉じていた*1ので、socketに書けないってエラーで起動失敗してた。 bindを叩くスクリプトは、ifconfigでインターフェースにIPが付いたのを確認したら再起動するのをmaster_script.shからバックグラウンドで投げるようにした。  
#!/bin/sh
TIMER=0
LIMIT=10.0
STEP=0.1
VIP="inet hoge.hoge.hoge.hoge"
IF_CMD="/sbin/ifconfig"
IF_NAME="ngeth0"
GREP_CMD="/usr/bin/grep"
BC_CMD="/usr/bin/bc"
NAMED_RESTART="/etc/namedb/restart-named.sh"
while [ "$TIMER" != "$LIMIT" ]; do
    $IF_CMD $IF_NAME | $GREP_CMD "$VIP"
    STAT=`echo $?`
    if [ $STAT = 0 ];then
            $NAMED_RESTART
            logger -is -t named_restarter2 "named delayed restart at $TIMER sec"
            exit
    fi
sleep $STEP
TIMER=`echo "scale=1; $TIMER + $STEP" | $BC_CMD`
# echo $TIMER
done
logger -is -t named_restarter2 "could not restart named within time limit $LIMIT sec"

*1 デフォルトクローズなんで

_ PC ついでに

いままですっとTCPフォールバックがコネクションリセットされていた件を切り分けて解消。

ルータの前後に仮想端末付けて

「dig @鯖IP uekusa.jp +norec +dnssec +multi +vc +edns +noad」

で誰が引けて引けないのか確認。

結局ルータ跨がないやつしか引けないことが分かって、鯖のfirewallは無罪。

で、「貧者のCisco」Cisco841MのACLを何度眺めてもちゃんとTCP通してるのですよこれ。

でも、切り分けで敢えて明示的に先頭に「permit tcp any any eq 53 log」入れたら通るじゃん。

なんだこれ?

で、通ったなら一端logは大量になるのいやなので止めようと「permit tcp any any eq 53」に置き換えたら通らない。

え?おまえ、log止めると通さないってバグじゃんかよ!*1

しかも拡張ACLで53/tcpだけ引っ掛かってるぽい。

サポートに問い合わせてもいいのだけど、もうサポート期間切れてるし、わざわざお金払ってバグの報告してやるのもしゃくに障るw

ログ吐くの我慢すれば使えるし。

これが分かったおかげでここ一年悩んでた公開DNS鯖がTCPでクエリ受けられない問題が解消。

ようやく今年の DNS flag dayを生き残ることが出来るようになったw

*1 src/dstは指定もしてみたけどanyは関係なかった。

_ PC もういっちょ

バグ。

新しくしてもらったみかかルータのRX-600MIもACL変更すると予期しない行もしくはポートがdenyになるっぽくて再起動が必要。

たぶん、RT-S300SEのコンフィグを読み込ませてから変更したので、不整合もあるんだと思うのだけど、そもそも違う機種の設定ファイル読めちゃうのダメでしょ?


2020-05-23(土) ゴキゲン [長年日記] この日を編集

_ BGM

今週は、密林で入手したKeyの「Modification of Key Sounds Label VOL.2」*1(3枚組)をBGMにお仕事。

全体的に聞きやすいMIXである。

LightColorsはいままで色々mixあったけど、このmixが一番カコ(・∀・)イイ!!

なお、鳥の詩もいいのだけど後半のタイミングの良い「Are-you-ready?」でなんか笑ってまう。

国歌やぞwww

個人的には「サンブライト」がお気に入り。*2

*1 新品ですよ

*2 「ロックオン(´∀`)9 ビシッ!」

_ PC 切り分け

ルータを仮想化したおかげで、みかかルータ配下のWANセグメントにも仮想マシンからのNICが伸びた。

更に、DS-liteやPPPoEの別セッションで外から回って自宅鯖のグローバルIPを試験できるようになった。

いままで、LAN側とDMZ内で確認して「うーん、プロバイダのルータがへぼいんじゃね?」って思ってたDNS鯖にTCPのクエリが届かない問題を切り分けることに。

一応UDPのEDNS0はちゃんと動いてるので実害はまだ無いが、今後ダメになるヤツだ。


2020-05-18(月) vrrp [長年日記] この日を編集

_ PC ルータの冗長化

FreeBSDで建てたDS-liteのルータとCisco841Mの間でvrrpによる冗長化、あっという間に出来た。 概ねデフォルトの設定。  
----vrrpd側----
[VRID]
serverid = 1
interface = vmx0
carriertimeout = 10
spanningtreelatency = 0
priority = 255
addr = 192.168.VIPの.IP/32
monitoredcircuits = yes
MCClearErrorsCount = 3600
masterscript = /usr/local/bin/master_script.sh
backupscript = /usr/local/bin/backup_script.sh
vridsdep =
password = hogehoge
----Cisco側----
 vrrp 1 description VRRP_with_IPv6-router
 vrrp 1 ip 192.168.VIPの.IP
 vrrp 1 priority 101*1
 vrrp 1 authentication hogehoge
 vrrp 1 track 1
---------------

*1 デフォルトは100だけど、わざとconfigに表示されるように101 にした

_ PC 動作は

基本的には速度の速いDS-liteのFreeBSDがマスターで、そいつが落ちてる間だけCiscoが固定IPv4のルートからルーティングする。

FreeBSDが立ち上がるとCiscoはスタンバイになる。

実験したけど、PCで作業してる分には気にならない速度で切り替わる。

手動設定端末とDHCPで配布するデフォゲはVIPに変更。

これで心置きなくルータの再起動とか実験できる(・∀・)

次はDNS鯖の冗長化だな。

vrrpdでやるか、keepalivedでやるか・・・


2020-05-17(日) [長年日記] この日を編集

_ 飲み 梅酒からジャム

毎年梅酒を漬けるけど、飲み終わったあとの梅がもったいなかった。

cookpadでレシピ調べて梅ジャム作成(・∀・)

①水で暫く煮てアルコールを抜く

②種を抜いて潰す

③砂糖を入れて煮る

という簡単な手順。

砂糖控えめでちょっとお酒風味残したりして大人の味。

100均の広口瓶に入れて冷蔵庫で保存。

朝飯にパンとジャムと珈琲とか、QOLがちょっと上がる。

もったいない 煮て酒を抜く


2020-05-12(火) まーた [長年日記] この日を編集

_ 飲み zoom飲み

また寝落ちした。

反省しきり。

_ 給付金

習志野もオンラインになったので早速10マソ円の申請\(^o^)/オワタ

ところでこれ、電子証明書の有効期限が5年後の誕生日なので、サービス開始からするとギリギリとか切れてる人とか多いと思うのだけど、大丈夫ですかね?



過去の写真!
良い感じに付いた(・∀・) 削るぜ! オリジナル(すり減ってる) バンジョーはあるんだがw
アクセスカウンター!
累計:
本日:
昨日:
最近のツッコミ

(´・ω・`)ショボーン