基本的な NAT サーバーをセットアップしようとしています。外部から NAT サーバーに送信されるすべてのトラフィックを別のマシンにリダイレクトし、そのマシンでこのトラフィックを解析する lipcap サービスを実行したいと考えています。
rc.conf の natd_flags 部分で -redirect_port と -redirect_address を試しましたが、何も機能しません...何か考えはありますか?
答え1
ユーザー空間を有効にするnatd
必要がありますipfw
。IPFW はパケットをキャッチし、natd
アドレスを変換するにリダイレクトします。ただし、最近では、ipfw に組み込まれたカーネル NAT を使用できます。
IPFWエンジンを有効にしましょう
# /etc/rc.conf
. . . . .
gateway_enable="YES"
firewall_enable="YES"
firewall_nat_enable="YES"
firewall_script="/etc/rc.ipfw"
. . . . .
カーネルリダイレクトを設定しましょう:
# /etc/rc.ipfw
. . . . .
oip="1.2.3.4" # Outer IP looking to the internet
tip="10.0.0.100 # Target host
ipfw nat 1 config redirect_addr ${tip} ${oip}
. . . . .
それだけです。
答え2
PF ファイアウォールには NAT とリダイレクトが組み込まれています。これを /etc/rc.conf に追加します。
gateway_enable="YES"
pf_enable="YES"
ファイアウォールを設定します。/etc/pf.conf に次の行を追加します。
ext_if=em0
ext_addr = N.N.N.N (your external IP)
int_if=em1
int_net=10.0.0.0/8
int_addr=10.0.0.1
libcap_host=10.0.0.2
nat on $ext_if from $int_net to any -> $ext_addr
rdr on $ext_if from any to $ext_addr -> $libcap_host
NAT ルールは期待どおりに動作し、インターネット ネットワークで生成されたすべてのトラフィックをゲートウェイの外部 IP 経由で世界中に送信します。rdr ルールは、すべての着信接続をターゲット ホストにルーティングします。