ホームサーバーにUFW、OpenVPN、Virtualboxがインストールされています。 IP範囲10.0.1.0でセットアップされた仮想マシンゲスト(vboxnet0)のホストオンリーネットワークと、OpenVPN接続のもう一方の端で構成された別のIP範囲10.0.0.0があります。
IP転送はホストで構成されているため、UFWが無効の場合、問題なく互いに通信できます。ただし、このホストはWebアクセス可能になり、アクセス制御が必要になるため、UFWを実行したいと思います。
この種のトラフィックを許可するようにUFWを構成するにはどうすればよいですか?
ufw allow allow in|out on vboxnet0|tun0
のさまざまな組み合わせを試しましたが、成功しませんでした。
私のUFWルールは次のとおりです。
root@gimli:~# ufw status
Status: active
To Action From
-- ------ ----
22 ALLOW Anywhere
Anywhere ALLOW 10.0.0.0/16
Anywhere on vboxnet0 ALLOW Anywhere
Anywhere on tun0 ALLOW Anywhere
Anywhere ALLOW OUT Anywhere on vboxnet0
Anywhere ALLOW OUT Anywhere on tun0
どんな助けも大歓迎です。
私はそれを考え出した。
/etc/default/ufw
を編集し、DEFAULT_FORWARD_POLICY
をACCEPTに設定します。
DEFAULT_FORWARD_POLICY="ACCEPT"
これが可能になりました-ufw manページから:
ホスト自体を宛先としないトラフィックのルールではなく、ファイアウォールを介してルーティング/転送するトラフィックのルールは、ルールの前にrouteキーワードを指定する必要があります(ルーティングルールはPF構文と大幅に異なり、代わりにnetfilter FORWARDチェーン規則を考慮します) 。例えば:
ufw route allow in on eth1 out on eth2
これにより、eth2にルーティングされ、eth1に着信するすべてのトラフィックがファイアウォールを通過できるようになります。
ufw route allow in on eth0 out on eth1 to 12.34.45.67 port 80 proto tcp
このルールは、eth0に着信するすべてのパケットが、eth1のファイアウォールを通過して12.34.45.67のtcpポート80に到達することを許可します。
ルーティングルールとポリシーに加えて、IP転送も設定する必要があります。これは、/ etc/ufw/sysctl.confで以下を設定することで実行できます。
net/ipv4/ip_forward=1 net/ipv6/conf/default/forwarding=1 net/ipv6/conf/all/forwarding=1
その後、ファイアウォールを再起動します。
ufw disable ufw enable
カーネル調整パラメータの設定はオペレーティングシステム固有であり、ufw sysctl設定は上書きされる可能性があることに注意してください。詳細については、sysctlのマニュアルページを参照してください。
/ etc/default/ufwでDEFAULT_FORWARD_POLICYをACCEPTに設定すると、ユーザーインターフェイスの設定に関係なく、ファイアウォールはすべてのパケットを転送します。
ユーザーインターフェイスは単純なイン/アウトフィルタリングのみを目的としています。転送するには、次のように/etc/ufw/before.rulesにiptablesルールを追加する必要があります。
-A ufw-before-forward -i eth1 -p tcp -d 192.168.1.11 --dport 22 -j ACCEPT
おそらく、すでに内部から外部への接続を許可するルールと、関連および確立されたtcpセッションからのパケットを許可する別のルールをすでに持っているでしょう。
私はiptablesのスペシャリストではありません。これを理解するのに非常に長い時間がかかりました(ip6tablesでも同様です)。たぶんこれはあなたの場合に必要なすべてではありません。
よろしくお願いします
このufwコマンドはうまく機能しました:Sudo ufw default allow FORWARD
変更が適用されていることを確認するには:Sudo service ufw restart