僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。
200.217.80.93 - - [17/Feb/2005:12:05:37 +0900] "POST /_vti_bin/_vti_aut/author.dll HTTP/1.0" 404 472 "-" "MSFrontPage/4.0" 200.217.80.93 - - [17/Feb/2005:12:05:37 +0900] "PUT /www.arplhmd.cjb.net_233515 HTTP/1.0" 405 243 "-" "Microsoft Data Access Internet Publishing Provider DAV 1.1"
ステータスコードが405なんて初めて見た(気がする)。
あと、googlebotの跡は304が結構あった。
繋がったので一言。
これで好き放題に更新できるか?
AirHのNAPT。dhcpdもノートに立てた。 LANのデスクトップでノートを介して外に 出れるか試す。
下らない間違いにひっかかってしばらく難渋。
tcpdump -n で見ていたら、FreeBSDでdhclinetした直後
急におかしくなった。.1にした筈のアドレスが
何時の間にか.25になっている!?
/var/state/dhcp/dhcpd.leases を見直す。
なんと自分のeth0(dhcpdがlistenしている筈)に
自分で.25を割り当ててしまっていた。
dhclientを殺しきれてなかったのかもしれない。
ついでに tcpの137-139 と445をiptablesで 撥ねるようにもしておいた。が、効力は いまいち判然としない。デスクトップから Sygate にも行ってはみたけど。
apacheを止めて、
事前にmakeしたphp-4.4.5をmake installする。
一応バージョンアップには成功した模様。
(ぶろーどばんど)ルータを設定する。
LANの外から来たプロトコル番号41のIPパケットを、
LANの特定マシンに転送するよう設定する。
外側のIPv4アドレスを確認する。
LANの中のLinuxホストを、アドホックなv6にセットアップする。
かめが泳いでいるのが見えた。
さて、IPv6 OnlyなDMZな気がするが、大丈夫か?
さきの環境でなんだかんだ。
sit0 をtcpdump した状態で ping www.kame.net しても
何も流れない。ping6 www.kame.net でぞろぞろ。
iptables で v4のDNSを封じると、
ping も ping6 もできなくなった。
考えれば /etc/resolv.conf
にはv4アドレスしか書かれてないから、当たり前かも。
ping6でv6アドレス直打ちなら、-P INPUT DROP かつ -A INPUT -p 41 -j ACCEPT で通るが、 -A INPUT -p 58(IPv6-ICMP) では通らない。
wireshark で ping と ping6 をとってみる。
ping6 でも、送受信はv6ゲートウェイ(ipv4アドレス)
とやりあっているが、
ping6 はIP ヘッダの"プロトコル"がIPv6(0x29)になっている
(ipv4の場合、ICMP(0x01))。
こういう時は、やっぱり、という感じで仮想マシンにPlamo-5.2。
tmux やkpartx(git clone http://git.opensvc.com/multipath-tools/.git)
をインストールする。
kernel-3.13.3 をビルド。
既存の /proc/config.gz を gzip -dc /usr/src/linux-3.13.3/.config
し、make oldconfig で適当にenter。
make menuconfig で、要りそうにないデバイスなどを外し、
今なおDangerousなオプションを。
CONFIG_UFS_FS=m CONFIG_UFS_FS_WRITE=y CONFIG_UFS_DEBUG=y
で、RaspberryPi向けFreeBSDのイメージを食わせてみる。
一旦Read Onlyで確認。
$ sudo losetup /dev/loop0 bsd-pi.img $ sudo kpartx -av /dev/loop0 add map loop0p1 (253:0): 0 65520 linear /dev/loop0 63 add map loop0p2 (253:1): 0 2031561 linear /dev/loop0 65583 $ sudo mount -t ufs -o ro,ufstype=ufs2 /dev/mapper/loop0p2 /mnt $ mount | grep mnt /dev/mapper/loop0p2 on /mnt type ufs (ro,ufstype=ufs2)
DEBUGを有効にしたせいか否か、なんか重かった。
ls -l などやってから一旦umountし、本番。
$ sudo mount -t ufs -o ufstype=ufs2 /dev/mapper/loop0p2 /mnt $ mount | grep mnt /dev/mapper/loop0p2 on /mnt type ufs (rw,ufstype=ufs2) $ sudo sh -c "ls -l > /mnt/foo.txt" $ ls -l /mnt/foo.txt -rw-r--r-- 1 root root 234 Feb 17 17:17 /mnt/foo.txt
一度再起動して、書いたファイルが消えてないことを確認。
あと、カーネルソースの fs/ufs で、grep 20[0-1][0-9] *.h *.c
してみたが、"2007" より後はなかった。
2007 年以降放置、なのかは分からないけど。
ついでに、二つのファイルを交互に追記するスクリプトを走らせてみた が、ディスクが埋まる前に制御不能になった。らしい。
gccとclangで。初期化時の範囲外への読み書き。
いずれも警告オプションは最大に。
#include<stdio.h> int main() { int list[3] = {1,2} ,num; list[5] = 8; for(num = 7; num >= 0; num--) printf("%d\n", list[num]); return 0; }
ほぼ予想通りだった。gccはスルーしたが、clangは
文句を言ってきた。
もちろんlist[3]はゼロになり、list[0],[1] 以外は
不定になるはずである。
あと、clangでできた実行形式ファイルをFreeBSDで実行
すると、すぐには終わらなかった。
Ubuntu+GCC, Jessie+clangではいずれも一瞬であったけど。
$ time ./list 537104384 0 8 -1073742552 0 0 2 1 セグメンテーション違反 (コアダンプ) real 0m13.833s user 0m0.007s sys 0m0.786s
ファイル名の途中にRLO(右から左に)制御文字を
入れる手法が
流れてきた。
適当なプログラムの名前をWin10上で変えて、bullseyeに
持ってきてみた。
$ ls -1 1SomeProg.exe.txt 2SomeProg.txt.exe
ターミナル上でコピペすると、↓のようにコピペ元には見えていない
<202e>が表示された。
$ ls -1 1LineInst.<202e>txt.exe 2LineInst.txt.exe
hexdumpしてみた。
$ ls -1 | head -n1 | hexdump -c 0000000 1 S o m e P r o g . 342 200 256 t x t 0000010 . e x e \n 0000015 $ ls -1 | tail -n1 | hexdump -c 0000000 2 S o m e P r o g . t x t . e x 0000010 e \n 0000012
リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。