インターネットからSSHを介して仮想マシンの1つにアクセスする必要があります。
ファイアウォールテーブルにNATルールを追加しましたが、機能しません。
firewall-cmd --add-rich-rule 'rule family="ipv4" destination address=$mypublicip forward-port port="4444" protocol="tcp" to-port="22" to-addr="$myprivateip"'
より詳細に調査した結果、iptablesを使用して次の2つの規則の組み合わせを追加できることがわかりました。
iptables -t nat -I PREROUTING -p tcp --dport 4444 -j DNAT --to $myprivateip:22
iptables -I FORWARD -o virbr0 -d $myprivateip -j ACCEPT
私はFirewall-cmdコマンドラインが好きなので、Firewall-cmdコマンドラインを使用して同じiptablesルールを追加し、次のコマンドを使用してこれを実行しました。
firewall-cmd --direct --permanent --add-rule ipv4 nat PREROUTING 0 -d $myip -p tcp --dport 4444 -j DNAT --to $myprivateip:22
firewall-cmd --direct --permanent --add-rule ipv4 filter FORWARD 0 -o virbr0 -d $myprivateip -j ACCEPT
ファイアウォールテーブルを確認した後、PREROUTING_directテーブルとFORWARD_directテーブルに最後の2つのルールがあることに気づきました。このルールは正しく機能せず、SSHアクセスを提供していません。
PREROUTING と PREROUTING_direct または FORWARD と FORWARD_direct テーブルの違いは何ですか? --directルールでのみ使用されるのと同じテーブルの場合、PREROUTINGテーブルとFORWARDテーブルのように動作しないのはなぜですか?