ConoHa VPS 上の FreeBSD に IPv4 アドレスを追加したときの追加 NIC と Jail の対応
By takagiwa on Tuesday, December 22 2020, 21:46 - FreeBSD - Permalink
2021/Mar/14 追記あり。
ConoHa VPS で IPv4 アドレスを追加すると、追加分は新しい NIC に割り当てられる。
Linux はいいらしいけれど、FreeBSD ではそのままだと活かし方が分からなかったけど、動いたように見える。
OS は FreeBSD 12.2-RELEASE-p1 GENERIC。qjail は 5.4 。
最初は VIMAGE でつなごうとした。qjail の vnet オプションを使って jail を作ることで、外部 NIC と二つの jail を bridge がつないでくれているように見えた。けれど Jail と外部ネットワークがつながらなかった。有名な DNS の IPv4 アドレスに ping が通らない、pkg がアップデートできない、sshd をたてても外からのアクセスを受け付けない、というところ。
pf で何とかできるかと考えたけれど、勉強するのは面倒だなあと思っていて、最後にトライしようと思っていた。既に pf はファイアウォールや NAT に使っていたので、それ以上いじるのは避けたかった。
結局 FIB で何とかなったようにみえる。
参考にしたのは、FreeBSD Jails: Filesystems and FIBs
NIC は vtnet0 がデフォルト、vtnet1 が追加分。アドレスは XXX.XXX.XXX.XXX がデフォルト、YYY.YYY.YYY.10 と YYY.YYY.YYY.20 が追加分。 ゲートウェイはそれぞれ最下位 1 として表現。
/boot/loader.conf に
net.fibs="3"
として再起動。
# setfib 1 route add -net YYY.YYY.YYY.0/23 -iface vtnet1 add net YYY.YYY.YYY.0: gateway vtnet1 fib 1 #setfib 1 route add default YYY.YYY.YYY.1 add net default: gateway YYY.YYY.YYY.1 fib 1 # setfib 2 route add -net XXX.XXX.XXX.0/23 -iface vtnet0 add net XXX.XXX.XXX.0: gateway vtnet0 fib 2: route already in table # setfib 2 route add default XXX.XXX.XXX.1 add net default: gateway XXX.XXX.XXX.1 fib 2
途中、already in table とあるのは気になる。
ConoHa VPS では、追加された NIC に IPv6 の割り当てがないので、ひとまずその辺はパス。
qjail で jail を作る。fib 関係忘れてたので後からつけた
# qjail create -4 YYY.YYY.YYY.10 -n vtnet1 jail1 Successfully created jail1 # qjail create -4 YYY.YYY.YYY.20 -n vtnet1 jail2 Successfully created jail2 # qjail config -f 1 jail1 Successfully enabled exec.fib for jail1 qjail config -f 1 jail2 Successfully enabled exec.fib for jail2
これで外にもでられて、外からも入ることができた、はず。他の操作はメモしていない。
setfib route 操作は /etc/rc.local に4行書いて再起動して、特に問題も無かった。
2012/Mar/14 追記
また動かなくなっていたけれど、操作が不足していた。
ifconfig vtnet1 create fib 1 ifconfig vtnet0 create fib 2
この2行が無かった。rc.local の先頭にも追加した。