SlideShare a Scribd company logo
1 of 17
Download to read offline
第 回 ワークショップ30 FreeBSD
Jailが起動しない
発端
1
環境
• OS:FreeBSD10.3 on XenServer
– Linden 1cpu、2GByte
• この上で3つのJail環境を動かしています
– tuba、viola、pianica
• /etc/rc.conf.local
– Jail_enabled=“YES”
• /etc/jail.conf
<省略>
# each jail
tuba { ip4.addr = 192.168.1.71;}
pianica { ip4.addr = 192.168.1.72;}
viola {ip4.addr = 192.168.1.73;}
2017-6-30
3
1
あれ?サーバ上がってない?
• Jailを確認する
* JID IP Address Hostname Path
1 192.168.1.72 pianica /jail/pianica
2 192.168.1.71 tuba /jail/tuba
• ( ゚д゚) ・・・
• (つд⊂)ゴシゴシ
• (;゚д゚) ・・・
• なぜ、2つしか上がってない?
2017-6-30
4
1
教えて!ふりーびーえすでーのえらい人!
• ということで、折よくFreeBSD Workshopがあったので聞いてみる。
• Q: こんなんありましたが知ってます?
• A: 知りません! (๑•̀д•́๑)キリッ
• Q: え?
• A: じゃ、次回のLTで
• えぇぇぇぇぇ、めんど(ry
• まぁ、しらべましょ
2017-6-30
5
1
調査するのかぁ…
2
Rc_debug=“YES”でログをとる
• うん、ちゃんと動いてる
Jun 27 18:47:17 linden root: /etc/rc: DEBUG: run_rc_command: doit: /usr/sbin/cron -s
Jun 27 18:47:17 linden root: /etc/rc: DEBUG: checkyesno: jail_enable is set to YES.
Jun 27 18:47:17 linden root: /etc/rc: DEBUG: run_rc_command: doit: jail_start _ALL
Jun 27 18:47:21 linden root: /etc/rc: DEBUG: run_rc_command: start_postcmd: jail_warn _ALL
Jun 27 18:47:21 linden kernel: pianica tuba viola
JID IP Address Hostname Path
1 192.168.1.72 pianica /jail/pianica
2 192.168.1.71 tuba /jail/tuba
3 192.168.1.73 viola /jail/viola
• おっとぉ
Jun 27 18:47:17 linden root: /etc/rc: DEBUG: run_rc_command: doit: /usr/sbin/cron -s
Jun 27 18:47:17 linden root: /etc/rc: DEBUG: checkyesno: jail_enable is set to YES.
Jun 27 18:47:17 linden root: /etc/rc: DEBUG: run_rc_command: doit: jail_start _ALL
Jun 27 18:47:21 linden root: /etc/rc: DEBUG: run_rc_command: start_postcmd: jail_warn _ALL
Jun 27 18:47:21 chives kernel: tuba: created
JID IP Address Hostname Path
1 192.168.1.72 pianica /jail/pianica
2 192.168.1.71 tuba /jail/tuba
2017-6-30
7
2
いろいろやった結果
• 別のVMでも症状は再現した
• コマンドラインでserviceコマンドを利用した場合も同じように失敗する
• 失敗するときは「kernel: jail名:created」と出る
• でも、失敗してるjail名ではない
• Jail_listを指定すると出ないようだ
2017-6-30
8
2
/etc/rc.d/jailを読んでみまひょ
_ALL)
command=$jail_program
rc_flags=$jail_flags
command_args="-f $jail_conf -c"
_tmp=`mktemp -t jail` || exit 3
if $command $rc_flags $command_args >> $_tmp 2>&1; then
$jail_jls jid name | while read _id _name; do
echo -n " $_name"
echo $_id > /var/run/jail_${_name}.id
done
else
tail -1 $_tmp
fi
rm -f $_tmp
echo '.'
return
;;
esac
指定なしでくるところ
2017-6-30
COPYRIGHT
9
for _j in $@; do
_j=$(echo $_j | tr /. _)
_jv=$(echo -n $_j | tr -c '[:alnum:]' _)
parse_options $_j $_jv || continue
eval rc_flags=¥${jail_${_jv}_flags:-$jail_flags}
eval command=¥${jail_${_jv}_program:-$jail_program}
command_args="-i -f $_conf -c $_j"
_tmp=`mktemp -t jail` || exit 3
if $command $rc_flags $command_args ¥
>> $_tmp 2>&1 </dev/null; then
echo -n " ${_hostname:-${_j}}"
_jid=$($jail_jls -j $_j jid)
echo $_jid > /var/run/jail_${_j}.id
else
rm -f /var/run/jail_${_j}.id
echo " cannot start jail " ¥
"¥"${_hostname:-${_j}}¥": "
cat $_tmp
fi
rm -f $_tmp
done
Jail名を指定している場合
2
なんか、こうやって動いてるらしい
• どうも、jail_listを指定した場合と指定しない場合で動きが違う
• jail_listを指定した場合
– jail –c –f /etc/jail.conf –j jail名 でLoopしてる
• jail_listを指定しない場合
– jail –c –f /etc/jail.conf
2017-6-30
10
2
再現するかな?
# jail -f /etc/jail.conf -c ; jls
pianica: created
tuba: created
viola: created
JID IPAddress Hostname Path
23 192.168.1.72 pianica /jail/pianica
24 192.168.1.71 tuba /jail/tuba
25 192.168.1.73 viola /jail/viola
# jail -f /etc/jail.conf -c ; jls
ifconfig: ioctl (SIOCAIFADDR): Address already in use
jail: pianica: ifconfig xn0 inet 192.168.1.72 add: failed
tuba: created
viola: created
JID IPAddress Hostname Path
26 192.168.1.71 tuba /jail/tuba
27 192.168.1.73 viola /jail/viola
2017-6-30
11
2
一台ずつでloopと同じように起動してみる
root@linden:~ # jail -f /etc/jail.conf -c pianica
pianica: created
root@linden:~ # jail -f /etc/jail.conf -c viola
viola: created
root@linden:~ # jail -f /etc/jail.conf -c tuba ; jls;
tuba: created
JID IPAddress Hostname Path
436 192.168.1.72 pianica /jail/pianica
437 192.168.1.73 viola /jail/viola
438 192.168.1.71 tuba /jail/tuba
• まぁ回避はできたみたいだ
• 再起動でも症状は出ないみたいだ
2017-6-30
12
2
まとめ
3
なんとか、回避はできるようになった?
• jail_listを指定するのが吉
• どうも、原因はjailコマンド内部、またはifconfig関連のライブラリに潜んで
いるようだ
• とりあえずは、回避できたので良し、とする…
• …
• ………
• ………………
• ……………………… 「parallel_start」は?………………………
• えっ………!?
2017-6-30
14
3
jail_parallel_start=“YES”
• 再起動してJailを確認する
* JID IP Address Hostname Path
1 192.168.1.72 pianica /jail/pianica
2 192.168.1.71 tuba /jail/tuba
• コマンドラインでも再現する
ifconfig: ioctl (SIOCAIFADDR): Address already in use
jail: pianica: ifconfig xn0 inet 192.168.1.72 add: failed
2017-6-30
15
3
なんとか、回避策
• jail_list を指定するのが吉
• とりあえずは、回避できたので良し、とする…
• ……………………… 「parallel_start」は?………………………
2017-6-30
16
3
おしまい
2017-6-30
17
3
はんぱですが、ここまでです
ありがとうございました

More Related Content

What's hot

EC2でkeepalived+LVS(DSR)
EC2でkeepalived+LVS(DSR)EC2でkeepalived+LVS(DSR)
EC2でkeepalived+LVS(DSR)Sugawara Genki
 
Firefox OS + Raspberry Pi
Firefox OS + Raspberry PiFirefox OS + Raspberry Pi
Firefox OS + Raspberry PiEnsekiTT
 
さくらのクラウドでVyOS使ってみた
さくらのクラウドでVyOS使ってみたさくらのクラウドでVyOS使ってみた
さくらのクラウドでVyOS使ってみたSAKURA Internet Inc.
 
Xen4.0 and vt-d Network Performance Benchmark
Xen4.0 and vt-d Network Performance BenchmarkXen4.0 and vt-d Network Performance Benchmark
Xen4.0 and vt-d Network Performance BenchmarkMitsutoshi Kiuchi
 
/etc/network/interfaces について
/etc/network/interfaces について/etc/network/interfaces について
/etc/network/interfaces についてKazuhiro Nishiyama
 
ちょっと古いマシンにLinuxを
ちょっと古いマシンにLinuxをちょっと古いマシンにLinuxを
ちょっと古いマシンにLinuxをKenichiro MATOHARA
 
httpd.conf line 1 to 7, 24
httpd.conf line 1 to 7, 24httpd.conf line 1 to 7, 24
httpd.conf line 1 to 7, 24Naoya Nakazawa
 
サーバー実装いろいろ
サーバー実装いろいろサーバー実装いろいろ
サーバー実装いろいろkjwtnb
 
Openstack calendar20141222
Openstack calendar20141222Openstack calendar20141222
Openstack calendar20141222samemoon
 
2011年10月7日
2011年10月7日2011年10月7日
2011年10月7日nukaemon
 
Scapy presentation Remake(訂正)
Scapy presentation Remake(訂正)Scapy presentation Remake(訂正)
Scapy presentation Remake(訂正)ashigirl ZareGoto
 
OpenIndiana vWire Demo (Japanese)
OpenIndiana vWire Demo (Japanese)OpenIndiana vWire Demo (Japanese)
OpenIndiana vWire Demo (Japanese)Shoji Haraguchi
 
20160827 第24回シェル芸勉強会LT Bash on Windows環境非破壊ハンズオン
20160827 第24回シェル芸勉強会LT Bash on Windows環境非破壊ハンズオン20160827 第24回シェル芸勉強会LT Bash on Windows環境非破壊ハンズオン
20160827 第24回シェル芸勉強会LT Bash on Windows環境非破壊ハンズオンkunst1080
 

What's hot (20)

zsh とわたし
zsh とわたし zsh とわたし
zsh とわたし
 
EC2でkeepalived+LVS(DSR)
EC2でkeepalived+LVS(DSR)EC2でkeepalived+LVS(DSR)
EC2でkeepalived+LVS(DSR)
 
Firefox OS + Raspberry Pi
Firefox OS + Raspberry PiFirefox OS + Raspberry Pi
Firefox OS + Raspberry Pi
 
Arch TCP/IP BOOTP
Arch TCP/IP BOOTPArch TCP/IP BOOTP
Arch TCP/IP BOOTP
 
さくらのクラウドでVyOS使ってみた
さくらのクラウドでVyOS使ってみたさくらのクラウドでVyOS使ってみた
さくらのクラウドでVyOS使ってみた
 
Open VZ
Open VZOpen VZ
Open VZ
 
Xen4.0 and vt-d Network Performance Benchmark
Xen4.0 and vt-d Network Performance BenchmarkXen4.0 and vt-d Network Performance Benchmark
Xen4.0 and vt-d Network Performance Benchmark
 
/etc/network/interfaces について
/etc/network/interfaces について/etc/network/interfaces について
/etc/network/interfaces について
 
ちょっと古いマシンにLinuxを
ちょっと古いマシンにLinuxをちょっと古いマシンにLinuxを
ちょっと古いマシンにLinuxを
 
httpd.conf line 1 to 7, 24
httpd.conf line 1 to 7, 24httpd.conf line 1 to 7, 24
httpd.conf line 1 to 7, 24
 
サーバー実装いろいろ
サーバー実装いろいろサーバー実装いろいろ
サーバー実装いろいろ
 
Openstack calendar20141222
Openstack calendar20141222Openstack calendar20141222
Openstack calendar20141222
 
about Tcpreplay
about Tcpreplayabout Tcpreplay
about Tcpreplay
 
2011年10月7日
2011年10月7日2011年10月7日
2011年10月7日
 
Hadoop on LXC
Hadoop on LXCHadoop on LXC
Hadoop on LXC
 
Open stackceilometer
Open stackceilometerOpen stackceilometer
Open stackceilometer
 
Scapy presentation
Scapy presentationScapy presentation
Scapy presentation
 
Scapy presentation Remake(訂正)
Scapy presentation Remake(訂正)Scapy presentation Remake(訂正)
Scapy presentation Remake(訂正)
 
OpenIndiana vWire Demo (Japanese)
OpenIndiana vWire Demo (Japanese)OpenIndiana vWire Demo (Japanese)
OpenIndiana vWire Demo (Japanese)
 
20160827 第24回シェル芸勉強会LT Bash on Windows環境非破壊ハンズオン
20160827 第24回シェル芸勉強会LT Bash on Windows環境非破壊ハンズオン20160827 第24回シェル芸勉強会LT Bash on Windows環境非破壊ハンズオン
20160827 第24回シェル芸勉強会LT Bash on Windows環境非破壊ハンズオン
 

Jailが起動しないので調査してみた