NAT、ファイアウォール、DNS、およびDHCP用の他のすべてのVMの前にProxmoxおよびOpenBSD VMをインストールしました。
私はフル機能のDNSとDHCPを持っています。私のDHCPは私のDNSレコードを正しく更新しています。他のVMがインターネットにアクセスできるため、私のNATも正常に動作します。
これで、動作するファイアウォールと着信NATルールが必要です。
たとえば、.NET経由で接続できるnginxという仮想マシンがありますnginx.local.lan
。
簡単に言えば、私がやりたいことは次のとおりです。
- ポート80と443を私
ngnix.local.lan
。 - nated(80および443からnginxまで)およびSSHを除くWANインターフェイス(em0)のすべてをブロックします。
- しかし、LANインターフェイス(em1)のすべても許可したいと思います。
これは私の現在のpf.conf
ファイルです。
set skip on lo
block return # block stateless traffic
pass # establish keep-state
# Define interfaces
ext_if=em0
int_if=em1
# Allow SSH connections
pass in on $ext_if inet proto tcp from any to ($ext_if) port 22
# Allow VMs to get out of the network
pass out on $ext_if inet from $int_if:network to any nat-to $ext_if
ベストアンサー1
私はついに私が前に言ったことすべてをする方法を見つけました。説明します。
存在する/etc/pf.conf
:
すべての着信トラフィックの拒否
(LANインターフェースを除く)
block in all
pass in quick on $int_if
最初の行はすべてをブロックし、2番目の行はLANインターフェイスからのすべての着信を許可します。quick
キーワードが何であるかを知りたい場合は、読んでください。これ。
それがうまくいくかどうか確信できますか? a を実行すると、pfctl -sr
次のような結果が出力されます。
block drop in all
pass in quick on em1 all flags S/SA
HTTP(S) トラフィックを仮想マシンにリダイレクトする
前述のように、有効なDNS、DHCP、DDNS設定を構成しました。つまり、DHCPリースを要求するnginx仮想マシンがある場合は、自動的にnginx.local.lan
ドメインエントリをリースされたIPに関連付けます。
これを知り、マクロを使って設定ファイルでエレガントにしようとしました。
nginx_vm_map=80 443
pass in quick on $ext_if proto tcp from any to any port {$nginx_vm_map} rdr-to nginx.local.lan
最初の行は、仮想マシンにリダイレクトするポートを定義し、ナットルール$nginx_vm_map
でこのマクロを使用して簡単に変更できるようにします。