2014年6月11日水曜日

Gentoo勉強会#3 に参加してきた

2014年06月07日(土)に Miracle Linux さまの一室をお借りして開催していた Gentoo 勉強会#3 に参加してきた。

午前中に会社のビルが電気点検のため停電になっており、一部のサーバが Kernel の設定ミスにより正常に起動しなかった。その対応を行った関係で40分ほど遅刻してしまった
タイミングが悪く、入り口で10分ほど待ちぼうけになってしまった。

今回は2回目の勉強会より多い合計15名の参加者でした。
前回はちょっとGWの終わりで時期が悪かったね。

プレゼンメモ

今回も簡単に箇条書きで。

自己紹介

  • 残念ながら遅刻により不明

最近の Gentoo 事情(@aliceinwire)

  • 残念ながら遅刻により不明

Gentooステッカーの進捗について(@matsuu)

  • 前回の勉強会で、今回までに作ってくると言っていた
  • 色々調べたら、イタリアのサイトでステッカーが売っていた
  • 2種類買った
  • 6月7日の午前中に自宅に配達に来た
    • しかし、午前中は墨田セキュリティという勉強会に行っていた
    • 今日持ってきたのは、不在票だけ
  • ステッカーはここで買った
  • Gentoo以外にもいろんなステッカーが売ってる
  • ターミナルで注文もできるよ!
その後ちゃんと届いたようです。

grub2 + EFI + btrfs使い始めた話とか(@mazgi)

  • EFI+btrfsの前に、前回発表した RaspberryPi でデジタルサイネージ的なものを作ってエクスポに持ってった話を少々。
  • 今日の発表は Qiita にメモっている
  • LVM + Filesystem を今まで使っているが、ボリュームを追加したりしたときのフラグメンテーションが気になる
    • 実際にパフォーマンスの劣化が起きるかは調べてない
  • SystemRescueCD は EFI をサポートしてる
    • tmux も入ってるし便利
    • SystemRescueCD の EFIブートの画面(grub2)と BIOS ブートの画面(syslinux) を比べると、今のところ BIOS ブートの画面の方が派手。
  • btrfs の上で swap-file が作れなくてはまった
    • (青田先生)何かのAPIをbtrfsがサポートしてないからかもしれない
    • (青田先生)CoWを切ったら、動くかも?
  • /var/log を別のサブボリュームにしているのは、gzip圧縮にしたいから
    • 他のサブボリュームは lzo
    • gzip にすることでlogrotate時の compress を不要にしたい
  • 必要な Kernel config
    • CONFIG_EFI, CONFIG_EFI_PARTITION, CONFIG_EFI_VARS を y にしておく必要在り
    • (青田先生)CONFIG_EFI_VARS が m だとうまく起動できないことがあるらしいので y にしておいた方がいい
    • (青田先生)CONFIG_EFI_STUB
      • EFIから直接 Linux Kernel をロードできるようにするもの
      • grubが不要になる
      • 複数の kernel を入れ替えるのがちょっと面倒
      • リファレンス的存在
  • (青田先生)最新の kernel じゃないと btrfs の auto-defrag と snapshot は相性が悪い


Radxa Rock(@naobsd)

  • Gentooネタじゃないけど
  • [reksa] と読むらしい
  • http://radxa.com/
  • 透明なケース付き
    • 結構壊れやすいので注意
    • 割れちゃったら、問い合わせると対応してくれるかもしれない
  • インターフェイスが豊富
  • SPDIFケーブルも売っているが、写真がどう見ても光なケーブルじゃないから買わない方がいい
  • 中国の会社
  • Tom Cubieという方が開発している
    • 以前 CubieBoard というものを開発してた人らしい
  • Wifi/Bluetoothもついてるけど、技適通ってないので注意

はじめて ebuild Patch(@aliceinwire)

  • ebuild でパッチを当てる方法
  • filesディレクトリにパッチを置いて epatch コマンドであてる
  • EAPI=2 から src_prepare() で epatch を使うことになった
  • patch は plain/text だけじゃなく xz などの圧縮形式もサポートしてる
  • ARCHごとにパッチのファイル名を生成できる
    • ??_${ARCH}_foo.${EPATCH_SUFFIX}
  • epatch は eutils.eclass に含まれている
  • epatch_user はユーザ独自のパッチを当てられる構文
    • /etc/portage/patches/category/package/*.patch
    • ebuild 内で epatch_user が実行されていたら、使える
    • 実行されてなかったら、パッチを置いても使われない
    • eclass によっては中で使われてるかも

ハッカソンタイム

  • 各自てきとーに。
  • 翻訳とか
  • 青田先生の質問コーナーとか
  • Gentoo初心者のインストールバトルとか
  • 松鵜先生のebuild作成1on1とか

こういう勉強会では Macbook の割合が非常に高くなることが多いが、今回は 50% くらいのような気がする。
他は ThinkPad だったり、その他メーカーだったりしたようだ。


DSC_4309

ULA と Src/Dest NPT を使ってみた

IPv6 では IPv4 と違い使用できるアドレスが潤沢にあるため、LAN 内でもグローバル IPv6 アドレスを使用するのが一般的です。

ただ、グローバルアドレスを付与すると接続している上位の ISP が変わったりすると、LAN 内の機器も新しいグローバルアドレスに変更しなければなりません。
また、複数の ISP に接続していたりするマルチホームな環境の場合、複数のグローバルアドレスを機器に付与するため、ソースアドレスの選択の問題が発生したりします。

そこで ULA(Unique Local Address) を LAN 内の機器に付与し、ルータ等でグローバルアドレスに変換すればアドレスが変わったときに楽にならないかなと、以前から使用したいと思ってたので、試してみました。

アドレスの変換には NPTv6(RFC6296: IPv6-to-IPv6 Network Prefix Translation) を使用します。
変換先のアドレスはプレフィックスが変わったことによりチェックサムが変わらないように計算されたアドレスに変換されます。
これによりトランスレーターの計算負荷を減少させているそうです。

IPv4 の NAT と同様にエンドポイントのアドレスが変わるので、例えば SIP や FTP などは別途対応が必要になりますが、この辺はまだ調べてません。



NPTv6の設定

Linux では Kernel に実装されています。
次のコンフィグを有効化しておきます。
CONFIG_IP6_NF_TARGET_NPT=m
ユーザランドでは netfilter で設定できます。

まずは ULA -> グローバルアドレスの変換。
変換元 fd34:fe56:7891:2f3a::/64
変換先 2001:0db8:abcd:1234::/64


$ ip6tables -t mangle -A POSTROUTING -s fd34:fe56:7891:2f3a::/64 -j SNPT --src-pfx fd34:fe56:7891:2f3a::/64 --dst-pfx 2001:db8:abcd:1234::/64

続いてグローバル -> ULA の変換
$ ip6tables -t mangle -A PREROUTING -d 2001:db8:abcd:1234::/64 -i eth1 -j DNPT --src-pfx 2001:db8:abcd:1234::/64 --dst-pfx fd34:fe56:7891:2f3a::/64
net.ipv6.conf.all.forwarding が有効になっていれば、この箱を通過するパケットのアドレスが自動変換されます。

ちなみに、iptables-1.4.21 の ip6tables-save はルールの保存部分に問題があり、正しいルールが出力されませんのでご注意下さい。

... -j DNPT--src-pfx 2001:db8:abcd:1234::/64 ...
こんなルールが出力されてしまいます..
一応バグ報告を出してみましたが、未だ受理されてないようです。
nftables の方に開発リソースを振ってるのかもしれません。使ってるユーザが少ないというのもありそうですが。

感想

宅内のネットワークで1ヶ月ほど使ってますが、FTPも利用しませんし今のところ不便はないです。
ただ、IPv4のネットワークと同じく、内部ネットワークがプライベートアドレスになってしまうため、サーバ等を NPT の内側に置いてしまっていると、外から見えるアドレスと中から見えるアドレスが異なってしまうのが面倒です。
IPv6の利点であるグローバルアドレスをたくさん使えるメリットがなくなってしまうのは、勿体ない。
しかし、DMZを置くとなると、また最初の問題に戻ってしまうという...