1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

BastilleBSDでVNET

Last updated at Posted at 2021-06-18

複数のjailでtftpサーバを動かして外からアクセスしたいのですが、通常のIPv4とrdrでは1つのポートを一つのjailしか転送できません。

仕方が無いのでVNETを試して見ます。中身はもっと複雑ですが、大体の構成は以下のような感じです。

vnet.png

ドキュメントに書かれているように/etc/devfs.rulesに以下を書きます。この効用はよくわかりません。

[bastille_vnet=13]
add path 'bpf*' unhide

とりあえず、VNETなjailを作ります。

% sudo bastille create -V vnetjail 13.0-RELEASE 192.168.0.55/24 alc0

アドレスはalc0と同じネットワークで設定します。デフォルトルートが設定されないようなので、設定します。

% sudo bastille sysrc vnetjail defaultrouter="192.168.0.1"
% sudo bastille restart vnetjail

IPv4の時と同じようにinetdを動かしtftpを使えるようにしようとしましたが、うまく動きません。いろいろ試した結果pf.confのblock in allを外してpfで引っかからないようにして、IPv4で設定しているtftpポートのrdrをclearしたら動くようになりました。

rdrはclearすると一時的に消えますが、再起動すると元に戻ります。該当のjailを消すとrdrも消えますが、rdrだけ消す方法が分かりません。

IPv4とVNETは共存できるようなのですが、上のように微妙に干渉しています。またVNETのjailはIPアドレスが空で表示されたりしていて、0.8(20210115)ではVNETサポートは完全ではないのかもしれません。

VNETの設定は手動でやると結構複雑みたいですが、簡単にできるのは良い事だと思います。

IPv4で作ったjailをVNETに移すのはbastilleのsysrcとeditでできますが、ちょっと面倒です。

2024年2月にはいって突然IPv4なjailでgithubへのアクセスが不安定になり、別のホストでvnetだと大丈夫だったので設定変更しました。

editで以下を消して

  interface = bastille0;
  ip4.addr = 192.168.10.50;
  ip6 = disable;

以下を追加します。

  vnet;
  vnet.interface = e0b_bastille0;
  exec.prestart += "jib addm bastille0 re0";
  exec.poststop += "jib destroy bastille0";

sysrcで以下を設定します。

ifconfig_e0b_bastille0_name="vnet0"
ifconfig_vnet0="inet 192.168.0.56/24"
defaultrouter="192.168.0.1"

/usr/local/bastille/jailの下にrdr.confが残ってるとrestartしたときにerrorになるので消しました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?