2015年1月13日

samba を複数起動する

ちょっと事情がありまして、1台のサーバーで samba サーバーを複数起動する方法を調べてました。

ネットワークインターフェイス毎に1台のサーバーでそれぞれ別の SMB ファイルサーバーサービスを提供したいなどに便利です。

まずは、すでに起動している samba の設定ファイルとは別の smb.conf を用意します。

# cp -ar /etc/samba/smb.conf /etc/samba/smb_srv2.conf 

新しく作成した設定ファイルの内容を変更します。まずは、ネットワーク周り。interfaces、host allow、bind interfaces only、socket address などを公開したネットワーク向けに明示的に設定します。

interfaces = 192.168.1.123/24
bind interfaces only = yes
socket address = 192.168.1.123
hosts allow = 127. 192.168.1.0/24
log file = /var/log/samba/log_srv.%m

smb ports = で別のポートを指定するのもいいかもしれません。

次に、認証関係。このままでは、デフォルトの samba サーバーと同じユーザー認証情報をみてしまうので追加の samba サーバーが別のユーザー DB を持てるように、passdb の位置を新たに指定します。

passdb backend = tdbsam:/var/lib/samba/private/passdb_srv2.tdb

smb.conf の Share Definitions セクションを追加の samba サーバー用に設定したら pdbedit でユーザーを追加します。-b オプションで DB タイプとそのパスを渡すことで、デフォルトの samba サーバーとは別の db に操作が可能です。

# pdbedit -b tdbsam:/var/lib/samba/private/passdb_srv2.tdb -a -u USERNAME

ここまできたら、一度起動してみます。

# smbd -D -s /etc/samba/smb_srv2.conf

確認

# netstat -antp | grep smb
tcp        0      0 192.168.0.200:445            0.0.0.0:*                   LISTEN  4336/smbd
tcp        0      0 192.168.1.123:445            0.0.0.0:*                   LISTEN  14669/smbd

192.168.1.123:445 が samba_srv2 です。クライアントから、192.168.1.123 へ SMB で接続し、さっき追加したユーザーでログインできることが確認できればOK。

右に出ているプロセスID でいったん samba_srv2 を停止。

# kill -9 11454

samba の起動スクリプトをコピーして samba srv2 向けのものを作成するといいと思いますが、一時的な利用なので今回はここまで。

2013年10月15日

iCloud + dns-sd で自宅の iTunes へ接続

iCloud + SSH + dns-sd で自宅の iTunes へ接続の続きです。同僚に自分の記事を紹介してふと思い出しました。

dns-sd と iCloud シリーズ最終章。1年もほったらかしてましたね。

前回の記事では dns-sd の Regist モードと SSH の Port forward を使って自宅の Mac の _daap._tcp、つまり iTunes に接続しました。

実は SSH 使わずとも、dns-sd の Proxy モードだけで自宅の iTunes への接続は可能です。

dns-sd を -P オプション付けてコマンド叩くだけですが、ハマりがちなポイントが2つあります。

  1. iCloud を利用して家の Mac へ SSH する で調べた家の Mac の iCloud FQDN 名の後ろに .local をつけて指定する。
  2. 家の Mac の iCloud IPv6 アドレスも指定しないといけない。

1. はまぁそういう書式の問題なので、間違いやすいってだけですが、問題は 2. です。

家の Mac の iCloud IPv6 アドレスの調べ方ですが、dig や nslookup では引けません。
どこからでも引けたらセキュリティ上の懸念がありますので、なんらかの制限があるものと思われますが細かく調べてません。たぶん iCloud にログインしているコンピュータからじゃないと引けないんじゃないかな。

では、どうやって調べるかというと、ここでも dns-sd が活躍します。

dns-sd -G v6 <computer-name>.<account-number>.members.btmm.icloud.com
DATE: ---Tue 15 Oct 2013---
18:27:30.657  ...STARTING...
Timestamp     A/R Flags if Hostname                  Address                                      TTL
18:27:31.732  Add     2  0 <computer-name>.<account-number>.members.btmm.icloud.com. 2001:0db8:bd05:01d2:288a:1fc0:0001:10ee%<0>  152

"<computer-name>.<account-number>.members.btmm.icloud.com" の IPv6 アドレスは "2001:0db8:bd05:01d2:288a:1fc0:0001:10ee" である事がわかりました。ではおもむろに dns-sd を Proxy モードで動かします。

dns-sd -P "Home iTunes" _daap._tcp local 3689 <computer-name>.<account-number>.members.btmm.icloud.com.local 2001:0db8:bd05:01d2:288a:1fc0:0001:10ee "My Home iTunes Server"

これだけ。手元の Mac の iTunes の [共有] に [Home iTunes] が出てくるはずです。おめでとう!

なお、dns-sd の Proxy はその名の通り mDNS の広報を代理するわけですから、自分だけでなく同じネットワークへもこの家の Mac の iTunes 共有を広報します。-R オプションでの Regist も同様です。

この一連の dns-sd コマンドの記事では同じネットワークにいる他の人の iTunes からも見えている事に気をつけてください。iTunes 共有をパスワードは設定しておいた方がいいでしょう。

なお、音楽メディアのストリーミングはネットワークに負荷をかけますから会社や公共ネットワークでこういう事するのはお勧めしません。

環境が許すならリモートの Mac に音楽を一切入れないでも自分の音楽の全てを聴くことができて便利です。

最終的にはこのコマンドを LaunchAgents 化して DropBox に設置し、必要なときに $ launchctl load するような使い方をしています。LaunchAgents 化する際にコロコロ変わる IPv6 アドレスを取得するのがめんどうですが作っておくと楽でいいですね。

次回は、Windows で dns-sd コマンド使ってみる感じのメモを書く予定です。Windows でもほぼ同じことが出来ますよ。

2013年2月19日

CentOS で Air Video Server らへんについて

以前にCentOS で Air Video Server (alpha6) をつくるという記事を書いて、そこで rc スクリプトをでっち上げたのですが、いくつかの他の Blog さんでも利用されているようでした。

嬉しいやら恥ずかしいやら。ただ、あれは root で AirVideoServerLinux.jar を叩きますので、AirVideoServerLinux.jar や JAVA にセキュリティの問題があるととんでもないことなりかねません。特にグローバルIPで運用の場合は十分注意してご利用ください。

自分が記事にした時から AirVideo もバージョンが上がってますし、スクリプトも JAVA のインストール Path 指定をスマートに記載されていたりと内容が新しくなっているのでごらんくださいませ。

JAVA=`which java`

monitでAirVideo Server for Linuxを監視する。とかステキです。

そのうち最新版の AirVideo での記事をまた書きたいな。最新版はとてもパフォーマンスが良くなっていますよ。

2012年11月13日

Mac OS X v10.8.2 の Appleeventd が拗ねる件について

Mac OS X v10.8.2 になってからなのか、Mountain Lion 当初からなのかわかりませんが Appleeventsd がアプリケーション間のコミュニケーションを取り持ってくれず沈黙してしまう問題が出ています。

気づきづらいのですが、Tune•Instructor などのメニューバーからアップルイベント経由で iTunes をコントロールするアプリケーションで問題になります。iTunes をコントロール出来ない!意味ないじゃん!あと、iVolume とか、1Password の機能拡張など。

根本的な解決方法は今のトコロ無いようです。困った。

暫定対処としては再起動やログイン・ログアウトなど、要するに Appleeventsd の再起動で治ります。
Appleeventsd はプロセス番号の若さから見ても早い段階で起動する結構大事なサービスなんで早く直してもらいたいものです。

個別に対応してくれているアプリケーション製作者さんもいる(iVolumeとか)ので、もしかしたら何か仕様が変わったのかもしれませんし Appleeventsd だけの問題じゃないのかもしれませんが、時間が経過するとダメになるという時点でなんかバグでしょう。

仕方ないので、1時間ごとに Appleeventsd を再起動する LaunchAgents を仕込む事にしました。

続きを読む: Mac OS X v10.8.2 の Appleeventd が拗ねる件について

2012年10月 3日

iCloud + SSH + dns-sd で自宅の iTunes へ接続

前回の記事、iCloud を利用して自宅の Mac へ SSH するの応用編です。

iCloud を利用して自宅の Mac へ SSH ができるなら、SSH の Port forwarding を利用して WAN 越しに自宅の iMac の iTunes 共有へアクセスできるんじゃないか?という実験です。結果から言うと、あっけなく出来ました。

続きを読む: iCloud + SSH + dns-sd で自宅の iTunes へ接続

iCloud を利用して自宅の Mac へ SSH する

結構有名ネタですが、次に書くネタの基礎になるのでメモ。iCloud で「どこでも My Mac」を有効にしていると、Apple から独自のグローバルのホスト名と IPv6 アドレスが割り当てられます。

これを利用すれば、自宅の Mac や遠隔地の iCloud に登録してある Mac へ SSH が可能というわけです。これは地味に便利です。

続きを読む: iCloud を利用して自宅の Mac へ SSH する

2011年5月16日

CentOS で Air Video Server (alpha6) をつくる

iPhone / iPad アプリの Air Video がかなり便利です。いつでもどこでも自宅のビデオをみれるのが最高。どんなアプリなのかは Google で検索してもらうとして、Linux 向けの Air Vide Server がリリースされていたのでインストールしてみました。

Air Vide には新しめの x264 が必要なので、Cenr OS 5系列 なら最新版を持ってきて make します。Cent OS 6 なら rpmforge の x264 が割と新しいんでそのままでいいと思います。

他にも Air Video 向けのパッチのあたった ffmpeg をインストールするので、ffmpeg x264 使っているソフトを利用しているなら、レポジトリでインストールした ffmpeg と x264 は残して、AirVideo Server 用に入れる ffmpeg と x264 は configure --prefix/foobar して make & make install するのがおすすめです。

以下の例では、/opt/airvide/ 配下にインストールしています。かなり変態的な入れ方です(chroot なイメージ)が /usr/ や /usr/local を汚さずに済みます。

続きを読む: CentOS で Air Video Server (alpha6) をつくる

2010年11月 4日

CentOS 5.5 へ kvm を導入-その4

CentOS 5.5 へ kvm を導入-その1 で、ブリッジインターフェイスをつくって eth0 のリンクアップを mii-tool で確認すると 100baseTx になっていた件。

ハブのリンクアップランプはちゃんと 1000baseTx になっている。おや?と思い ethtool で確認してみた。

# ethtool eth0
Settings for eth0:
	Supported ports: [ TP ]
	Supported link modes:   10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Half 1000baseT/Full 
	Supports auto-negotiation: Yes
	Advertised link modes:  10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        1000baseT/Half 1000baseT/Full 
	Advertised auto-negotiation: Yes
	Speed: 1000Mb/s
	Duplex: Full
	Port: Twisted Pair
	PHYAD: 1
	Transceiver: internal
	Auto-negotiation: on
	Supports Wake-on: g
	Wake-on: g
	Current message level: 0x000000ff (255)
	Link detected: yes

ちゃんと、Speed: 1000Mb/s となっていた。mii-tool で確認したのがまずかった。
mii-tool は古いコマンドなので、ギガビットなNICに対応してないそうだ。

Linux で SATA のリンクアップ速度を確認する

Linux で SATA のリンクアップ速度を確認しようとしたが、イイ方法が見つからない。lshal コマンドでわかるかと思ったが、ダメだった。そういうときは、dmesg。

# dmesg | grep "SATA link"
ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
ata2: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
ata4: SATA link up 3.0 Gbps (SStatus 123 SControl 300)

チップセット的にも ML115 G1 のオンボードは SATA II (SATA 300) に対応しているコトがわかってひと安心。

2010年9月15日

CentOS 5.5 へ kvm を導入-その3

VM のインストールが終わって、ある程度環境を作ったらせっかくなのでスナップショットを作っておくことにする。

ちなみに、CentoS には qemu-img コマンドは2種類ある。qemu パッケージに入っている qemu-img コマンドではスナップショットを作ったりできない。また、後述する CoW (Copy on Write) 用のイメージ作ろうとするとイメージが壊れた。必ず kvm-qemu-img パッケージの qemu-img コマンドを使おう。

こういう混乱を避けるためにも他のディストリビューションでは kvm-qemu-img の qemu-img コマンドを kvm-img コマンドとしてるみたい。

まずは、シンプルにディスクイメージに対してスナップショットを作ってみる。

# qemu-img snapshot -c 20100915#1 Windows_XP.img

スナップショットの確認。

# qemu-img snapshot -l Windows_XP.img
Snapshot list:
ID        TAG                 VM SIZE                DATE       VM CLOCK
1         20100915#1                0 2010-09-15 09:12:50   00:00:00.000

スナップショットに書き戻す場合は以下の用に通り。

# qemu-img  snapshot -a 20100915#1 Windows_XP.img

スナップショットを削除するには以下の通り。

# qemu-img  snapshot -d 20100915#1 Windows_XP.img

さて、問題なくスナップショットが取れたのはいいけどスナップショットを作るのも、戻すのもかなり時間がかかる。それぞれ、15分以上待たされた。

それじゃあということで、CoW (Copy on Write) によるスナップショットを試すことに。

CoW (Copy on Write) はマスターのディスクイメージは読み込み専用になり、そのディスクイメージへの書き込みは別の差分ファイルに対して行われるというもの。

差分ディスクイメージを用意してあげれば、マスターディスクイメージに手を加えず、ディスクイメージへの変更は、差分ディスクイメージファイルに対して行われるようになる。

差分ディスクイメージを指定して起動すれば、変更は差分ディスクに記録されてマスターイメージを指定して起動すれば、すぐに戻れるという寸法。

複数のスナップショットを取りたい場合には向かないが、こちらの方が自分の使い方には向いている気がする。

差分ディスクイメージは qemu-img で作る。

# qemu-img create -b Windows_XP.img -f qcow2 Windows_XP.diff.img

/etc/libvirt/qemu/Windows_XP.xml の ブートディスクのパスを差分ディスクイメージに書き換える。

<source file="/var/lib/libvirt/images/Windows_XP.diff.img">

設定反映させればおしまい。

# virsh define /etc/libvirt/qemu/Windows_XP.xml

差分をマスターディスクにマージするには、以下のようにする。

qemu-img commit -f qcow2 Windows_XP.diff.img

しばらくコレで運用してみようと思います。