アーカイブ

‘Linux’ タグのついている投稿

Debianなマシンで IPv6 bridge

2012 年 7 月 19 日 コメントはありません

すでにだいぶ経ってますが、ここにメモってなかったので駄文。

引っ越してフレッツ光ネクストに切り替えたんでフレッツ光ネクスト上で提供されているIPv6接続サービスが利用できるようになりました。接続形態にはIPv4 と同じような PPPoE を使った接続と IPoE 接続 (とか書くとなんのこっちゃだけどネイティブ方式と呼ばれてた要は Etherでそのままつながってます方式)があるわけですが、余計なもの(PPPoEのトンネル)がはさまらない分 IPoE の方がレイテンシなどで有利なわけで、当然こっちを選択して接続しました。ISPにはIIJmioのFiberAccess/NFを選択。

なお、IPoEでの接続に関しては「ひかり電話を契約しているかどうか」によってネットワーク側の挙動が少し変わってきます。ここの説明が非常に詳しくてわかりやすいので興味がある方は見てみましょう。

さて、hanzubon.jp NOCにはひかり電話は導入されていません。ということで、ここの説明にあるように RAで取得した64bit長のprefixを使ってネットワークを構成することになります、RAを受け取ってごにょごにょして再広告するようなことをしてもいいんですが面倒だし特にメリットもないように思うのでRAをそのまま中でも受け取って動くようにIPv6ブリッジを作ってみることにしました(ひかり電話契約がある場合は、上記の記事で説明があるようにIPv6ルータを用意した方が楽しいように思います)。

仙石さんの昔の記事が大変参考になります。というか、ここに解説されてる通りに設定すれば(おおむね) OK です(わら ただし、ここの記事の最後に記述がありますが、現在ではすでにip6tablesにもphysdevモジュールが実装されてますので、ここでやっているようなebtablesでマークしてもげもげするような方法ではなくphysdevモジュールを使う方法をとってみることにします。

以下、ONU側につながっているインタフェースを eth0、内側のその他のサーバ類等々ぶら下がっているセグメント側のインタフェースをeth1とします。

まずは単純にbridgeを作成します。bridgeの操作にはbridge-utilsが必要なのでインストールしといてください。あとは、ebtablesとip6tables(はiptablesパッケージに入ってます)も使いますので入ってなければ入れておきましょう。

apt-get install bridge-utils ebtables iptables

/etc/network/interfaces には以下のように記述して br0 という名前で bridge インタフェースを作成します。

auto br0
iface br0 inet manual
      bridge_ports eth0 eth1

これだけです。さて、上記で bridge はできますが このままだとあらゆるパケットが通ってしまう状態になってしまうんでIPv6なパケットのみが通過するようにebtablesでフィルタしておきます。コマンドとしてはこう(注: bridgeインタフェースがひとつしかない前提でインタフェースの指定してないので 複数あるような場合は適宜 -i br0 とか指定してくださいな)

ebtables -t broute -P BROUTING DROP
ebtables -t broute -I BROUTING -p IPv6 -j ACCEPT

以下雑ですがこんな感じのスクリプトにして /etc/if-up.d/ipv6bridge とかいう名前にでもして放り込んでおくと、br0インタフェースがupした時に上記のフィルタが実行されると思います。

#!/bin/sh

[ "$IFACE" != "br0" ] && exit 0

ebtables -t broute -P BROUTING DROP
ebtables -t broute -I BROUTING -p IPv6 -j ACCEPT

exit 0

これで、IPv6 bridge の作成はおしまいです。ifup br0 とでもすれば br0 が有効になって内側のセグメントにもRAが流れ始めて(各マシンで RA を受け取って autoconfig するようにしてあれば) IPv6 で通信できるようになるはずです。

ただ、この状況だと各マシンにはIPv6のグローバルアドレスがそのままふられますしなんのフィルタもないので、うちから外へのパケットが通るのと同じく外から内へのパケットも自由自在に通りますので(わら 内側のセグメントのマシンにもアクセスし放題になります。

ということで、ふつーなんらかのフィルタをしたくなるだろうと思います。例えばこんな感じにします。

ip6tables -N v6-in
ip6tables -N v6-out

ip6tables -A FORWARD -i br0 -m physdev --physdev-in eth0 -j v6-in
ip6tables -A FORWARD -i br0 -m physdev --physdev-in eth1 -j v6-out

ip6tables -A v6-in -m state --state ESTABLISHED,RELATED -j ACCEPT
ip6tables -A v6-in -j DROP

ip6tables -A v6-out -j ACCEPT

最初の2行で v6-in と v6-out というchainを新たに作成しています(あとで、フィルタを消すようなときに楽だからなだけ)。

キモはその次の2行です。bridge に対して physdev モジュールを使って実際にパケットが入ってくるインタフェースを識別した上でそれぞれのルールセットのchainにjumpさせます(仙石さんの記事ではこの部分の処理を ebtables でつけた mark で行なっています)。

あとは、v6-inとv6-outに適宜必要なルールをてきとーに追加してやれば動作します(上記の例だと外向きのパケットは全部素通し、内向きは特定のstateのパケット以外は全部DROPします)。

ip6tables-save なりで save しておいて読み込ませるなり、スクリプトにするなり 適当に準備してどこかで設定するようにしましょう(オレはipv6filterとかいう名前のスクリプトにして/etc/network/if-up.dに放り込んであります)

というあたりで、特になにか目新しいことがあるわけじゃないですがこんな感じでIPv6 bridgeが作れます。

市販のいわゆるブロードバンドルータにもIPv6ブリッジ機能があるものがありますが安いもの(家電量販店とかで売っているようなもの)だと、IPv6パケットのフィルタリングができるようなものは現状皆無のようなので、ちょっと遊ぶだけならいいんですが実用的にはちょっと厳しいんじゃないかと思われます(というあたりも、IPv6 の一般家庭への普及の阻害要因の一つなんじゃないかなぁと思ったりします)。

カテゴリー: Debian, IPv6, Linux タグ: , , , , , ,

3TB HDD/4Kセクタ に関するえとせとら

2011 年 7 月 16 日 コメントはありません

最近は Western Digital の 3TB (3TiB) HDD WD30EZRX がものすごい安価(1万切って 9700 〜 9900 円くらい 下手すると特売で9000円きることも)で売っていて、手頃だしバイト単価も安くていいので これに手を出すわけです。

でも、この HDD って 4kセクタな上に単体で2TBをこえてるので いろいろあるわけですよ。

とりあえずメモ的に2点。

hanzubon.jp の mirror 用ストレージは areca の arc-1680 という SATA/SAS RAIDカードにぶら下がって構成されています。(その他のarecaのカード含めてのようですが)、最新の firmware (version 1.49)に更新してないと 3TiB な HDD を正常に認識しません。

接続されているのは、認識するんですが容量が0.0GBと表示されて まったく使えません(わら

1.49 まで上げてあるつもりで、つないだんですが 最初そんな状態になって ちょっと焦りました。

逆にいうと、1.49 にあげたところ 正常に認識され いまのところ特に問題もなく利用できています。

もう一点、いままでめんどくさいので避けてきた 4k セクタの話。

とりあえず、Linux的には周辺のブツ(fdisk とか parted)とかが すでにそのあたりを意識してくれるようになってるんで、深く考えずに Go しても大丈夫なんですね いまどきは(わら

2TB 以下の HDD であれば、DOS mbr でいけるんで fdisk でパーティションきれば 勝手に適当にアラインメントとってくれるようです。fdisk の表示上も物理セクタ/論理セクタのサイズをちゃんと認識してくれて表示してくれるようになっています、いつのまにか。

2TBを超える場合は GPT でということになりますが、こっちも parted でやってやればさくっといけます。あらかじめ mklabel gpt してある前提で


parted --align=min --script /dev/sdX mkpart primary ext2 0 100%

みたいなことをすれば、parted が「ぉい alignment できてねぇぞ その指定だと一番近い alignmentできてる開始位置はここだ」と教えてくれるので、その指示にしたがって先頭を指定するのがいいようです。

(追記)
こんなことしなくても –align=opt してパーティションきるのが正解?
おしえてエラい人(わら

以上、雑記的メモでした。

hanzubon.jp 止めてました

2011 年 7 月 16 日 コメントはありません

「debian mirror のストレージの構成 HDD 一本あたりの容量あげて本数減らしたいなー だれか HDD おごってくれないかなー(わら」と tweet したら、ありがたいことにほんとにnakanotにおごっていただけたので ゆうべから 構成変更作業をしてました。

データ自体は debian-cd 以下を除いて復旧/更新済です。

カテゴリー: Debian, Linux タグ: , ,

Debian 6.0.0

2011 年 2 月 7 日 コメントはありません

Debian 6.0.0 予告通り出た。

国内のミラーは今朝(2011/2/6)9:17ころのリリース直後に投げられたpushトリガで既に更新済み。

isoはhanzubon.jpのは今 生成中。jaistにはあるかも?

追記: 2011/2/6 19:02 JST 時点ですが jaist の iso ミラー 終わってないですね、まだ

カテゴリー: misc タグ: , ,

debian-volatile mirror 復活

2010 年 5 月 7 日 コメントはありません

なんか どーも push signal こねぇな と思ってたら、ルータで塞いでいました…orz

ということで、signal くるのを確認したので復活したはず。

どーも すいません(わら

カテゴリー: Debian, Linux タグ: , , , ,

たんきよ忘年会2009

2009 年 12 月 20 日 コメントはありません

昨日は、たんきよで毎年恒例の忘年会でした。

久しぶりの参加のひともちらほら、新しく参加の人も何人か。
うかいさんのおくさんに初めて会いましたが、なかなか面白い人でした。

その後、nnnの知ってる店に だいすけ、まくつ、nnn、ならき、オレという感じで移動して二次会?で終電前に解散。

これが終わると、なんだかようやく年末が近づいてきた気がします。

Linux software raid (md)にon lineでデバイスを追加してサイズを拡大してみる

2009 年 9 月 23 日 コメントはありません

Linux Software RAID (md)の onlie resizeの続編的ですが。

このmdは紆余曲折あって(?)現在は1TB HDD 5本でRAID5(スペアなし)という構成になっています。

が、なんとなく若干手狭な感じが出てきました(debian の iso imageにBDとか入ってきた
せいか、油断するとあふれることが…)

そこで、少し前からkernelでサポートされた「mdにデバイスを追加してでかくしてみる」ことを
してみましょう。1TBを5本→1TBを6本の構成にしてみます。

最初はこんな感じ。

$ lsscsi
[6:0:0:0]    disk    ATA      WDC WD740GD-00FL 21.0  /dev/sda
[8:0:0:0]    disk    ATA      WDC WD10EACS-22D 01.0  /dev/sdb
[11:0:0:0]   disk    ATA      WDC WD10EACS-22D 01.0  /dev/sdc
[13:0:0:0]   disk    ATA      WDC WD10EACS-22D 01.0  /dev/sdd
[14:0:0:0]   disk    ATA      WDC WD10EACS-22D 01.0  /dev/sde
[16:0:0:0]   disk    ATA      WDC WD10EACS-22D 01.0  /dev/sdf
[18:0:0:0]   cd/dvd  Optiarc  DVD RW AD-7170A  1.02  /dev/sr0
$ df /storage
Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
/dev/md0             3845731848 3078934784 766797064  81% /storage
$ df -h /storage
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/md0              3.6T  2.9T  732G  81% /storage
$ sudo mdadm --misc --detail /dev/md0
/dev/md0:
        Version : 0.90
  Creation Time : Fri Oct 17 21:15:30 2008
     Raid Level : raid5
     Array Size : 3907039744 (3726.04 GiB 4000.81 GB)
  Used Dev Size : 976759936 (931.51 GiB 1000.20 GB)
   Raid Devices : 5
  Total Devices : 5
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Tue Sep 22 08:58:55 2009
          State : clean
 Active Devices : 5
Working Devices : 5
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 64K

           UUID : 7b919d4f:b9e7742c:84bd942a:d4b8378f
         Events : 0.19904

    Number   Major   Minor   RaidDevice State
       0       8       33        0      active sync   /dev/sdc1
       1       8       49        1      active sync   /dev/sdd1
       2       8       17        2      active sync   /dev/sdb1
       3       8       81        3      active sync   /dev/sdf1
       4       8       65        4      active sync   /dev/sde1

HDDはSATA/SASのエンクロージャに全部ささってますし、最近のSATAの
デバイスであれば(少なくともahciの一部、sata_sil24、sata_mvはOk)hot plugで
つなげば認識してくれるので、無造作に(物理的に)HDDをさして認識させます。

$lsscsi
[6:0:0:0]    disk    ATA      WDC WD740GD-00FL 21.0  /dev/sda
[8:0:0:0]    disk    ATA      WDC WD10EACS-22D 01.0  /dev/sdb
[11:0:0:0]   disk    ATA      WDC WD10EACS-22D 01.0  /dev/sdc
[13:0:0:0]   disk    ATA      WDC WD10EACS-22D 01.0  /dev/sdd
[14:0:0:0]   disk    ATA      WDC WD10EACS-22D 01.0  /dev/sde
[15:0:0:0]   disk    ATA      WDC WD10EADS-00M 01.0  /dev/sdg
[16:0:0:0]   disk    ATA      WDC WD10EACS-22D 01.0  /dev/sdf

/dev/sdgが増えました。

fdisk とかでパーティションを一つだけ切って、タイプを Linux raid autodetect
(0xfd)にしときます。

$ fdisk -l /dev/sdg

Disk /dev/sdg: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0xfec868df

   Device Boot      Start         End      Blocks   Id  System
/dev/sdg1               1      121601   976760001   fd  Linux raid autodetect

次にmdにこのHDDを追加します。

$ sudo mdadm /dev/md0 --add /dev/sdg1
mdadm: added /dev/sdg1                   
$ sudo mdadm --misc --detail /dev/md0
/dev/md0:                                
        Version : 0.90                   
  Creation Time : Fri Oct 17 21:15:30 2008
     Raid Level : raid5                   
     Array Size : 3907039744 (3726.04 GiB 4000.81 GB)
  Used Dev Size : 976759936 (931.51 GiB 1000.20 GB)  
   Raid Devices : 5                                  
  Total Devices : 6
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Tue Sep 22 09:08:50 2009
          State : clean
 Active Devices : 5
Working Devices : 6
 Failed Devices : 0
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 64K

           UUID : 7b919d4f:b9e7742c:84bd942a:d4b8378f
         Events : 0.19909

    Number   Major   Minor   RaidDevice State
       0       8       33        0      active sync   /dev/sdc1
       1       8       49        1      active sync   /dev/sdd1
       2       8       17        2      active sync   /dev/sdb1
       3       8       81        3      active sync   /dev/sdf1
       4       8       65        4      active sync   /dev/sde1

       5       8       97        -      spare   /dev/sdg1
$ cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdg1[5](S) sdc1[0] sde1[4] sdf1[3] sdb1[2] sdd1[1]
      3907039744 blocks level 5, 64k chunk, algorithm 2 [5/5] [UUUUU]

unused devices: 

こんな感じでスペアとして追加されます。

でもって、RAIDデバイスの数を変更します。
変更には mdadmの –grow オプションと –raid-devicesを組み合わせて指定します。

$ sudo mdadm /dev/md0 --grow --raid-devices=6
mdadm: Need to backup 1280K of critical section..
mdadm: ... critical section passed.

ここまでは、とりあえず数秒で終了します。

で、ここからRAIDの再構成が行われますがこれがものすごく時間がかかるので
気長に待ちましょう。

$ cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sdg1[5] sdc1[0] sde1[4] sdf1[3] sdb1[2] sdd1[1]
      3907039744 blocks super 0.91 level 5, 64k chunk, algorithm 2 [6/6] [UUUUUU]
      [>....................]  reshape =  0.0% (279424/976759936) finish=1951.8min speed=8337K/sec

unused devices: 

mdのサイズにもよると思いますが、今回のサイズだと丸一日はかかるつもりで
いないとダメです(わら

この間もmdデバイスはon lineなので、通常どおり使用できます(が、まぁ今回の構成だと
このrebuild中にHDD一本でも死ぬとアウトなわけですが(わら 基本ここにはmirrorしか
入って無いので最悪死んでも復元できるので気にしない。もちろん用途によっては、
もう少し冗長性をとりましょう)

ただし、このrebuildが終わらないと「mdとしてのサイズが以前のまま(デバイス追加
する以前のサイズのまま)」なので、以下のファイルシステムのresizeはできません。

でもって、rebuildが終わったのを確認したら、ファイルシステムをresizeします。

$ sudo resize2fs /dev/md0
resize2fs 1.41.9 (22-Aug-2009)
Filesystem at /dev/md0 is mounted on /storage; on-line resizing required
old desc_blocks = 233, new_desc_blocks = 292
Performing an on-line resize of /dev/md0 to 1220949920 (4k) blocks.

これも容量によると思いますが、30分くらい待つと完了。

$ df /storage
Filesystem           1K-ブロック    使用   使用可 使用% マウント位置
/dev/md0             4807165280 3089638432 1717526848  65% /storage
$ df -h /storage
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/md0              4.5T  2.9T  1.6T  65% /storage

ほい、できました。

カテゴリー: Linux タグ: , , , ,

rsync の –delay-updatesを拡張(したい)

2009 年 4 月 19 日 コメントはありません

Debian mirrorの更新って、ミラー中もアクセスしても整合性がとれてるように、
ざっくりいうと次みたいな流れになっている。

  1. pool/以下を–deleteなしでrsync
  2. 全体を–after-deleteありrsync

(正確には dists/以下の特定パターンのファイルがあとで更新されること、
ファイルの削除が最後に消されることが条件だけど、まぁ細かいことは
考えなくてもいい、ここでは)

で、なにが言いたいかいうと、結局都合2回rsyncがかかるのと、1回目と2回目に
同じディレクトリのトラバーサルが走るので、まぁなんつーか若干効率が悪い
わけです。

でだ、一方 rsync には –deley-updates というオプションがあります。

これは取り合えずファイルを別の位置にどばーっととってきておいて、
実際のファイルの更新は最後にまとめてやりますよ というオプション。

一般的にリモートからローカルの転送には時間がかかるけど、ローカルでの
renameは比較的短時間で済むので、ツリー全体の不整合な時間を
ある程度減らせますよ というためのものですね(もちろん、atmicには
なりません)。

でね、この –deley-updatesオプションの動作を拡張するなり、
別のオプション(例えば –deley-update-patternとかいうオプション
を新設がいいんじゃね? という気がしている)して、「指定したパターンに
合致したファイル/ディレクトリのみ、delay-update する」とかできると、
Debian mirror 的には rsync 一発でいけるようになるので、ちょっと
うれしいんじゃねぇか? とか思いました。

誰かやる人?(わら
(自分でやれといわれそうだな(わら)

カテゴリー: Debian, Linux, opensource タグ: , , , ,

debian-cdミラー帯域制限

2009 年 2 月 22 日 コメントはありません

debian-cdのミラーからisoをhttpで持ってくアクセスがけっこう多くて、なかなかきびしいので

「大きめのisoイメージ(100M程度にしたつもり)」

「httpで」

取得しようとした場合のみ大幅に帯域しぼられるように調整しました。

とるならrsyncで取ってね。

カテゴリー: Debian, Linux タグ: , , , ,

Debian 5.0 released

2009 年 2 月 16 日 コメントはありません

てことで Debian 5.0.0 (aka ‘lenny’)出ました。

あちこちにかかれてるので、あんまり書くこともないけど(わら

とりあえず、インストール用のiso イメージは以下に生成中(2/16 22:00現在、まだhppaを作ってる様子)。でも よっぽどのことが
なきゃ jigdo 使って作ってね。

http://hanzubon.jp/debian-cd/5.0.0/

ちなみに amd64/i386/sourcesあたりは BD イメージも提供されるようになってるけど、

-rw-r--r-- 1 ftpadm ftpadm 19G 2009-02-16 17:21 debian-500-amd64-BD-1.iso

さすがに1枚組(ソースもあるので2枚か)らしい。

あと、今回から Live image も提供されるので、そいつらはここ。

http://hanzubon.jp/debian-cd/5.0.0-live/

カテゴリー: Debian, Linux タグ: , , , , , , ,