
Centos 7では、ファイアウォールベースのポート転送は利用できないようです。 192.168.0.148:905 を 192.168.56.102:22 に渡します。 192.168.0.148 -p 905でSSHを試みると、「接続が拒否されました」というメッセージが表示されます。
以下はいくつかの関連設定です。
[root@GraceDev3 log]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: br0
sources:
services: ssh dhcpv6-client https
ports: 3389/tcp 905/tcp 908/tcp
protocols:
masquerade: yes
forward-ports: port=905:proto=tcp:toport=22:toaddr=192.168.56.102
port=908:proto=tcp:toport=22:toaddr=192.168.56.105
source-ports:
icmp-blocks:
rich rules:
転送ポート:
[root@GraceDev3 log]# cat /proc/sys/net/ipv4/ip_forward
1
192.168.0.148 ポート 22 の tcpdump は、到着する SSH 要求を示します。 Firewalld ログには破棄されるパケットは表示されません。私は何を見逃していますか?他の人も同じ問題を抱えていることがわかりましたが、まだ解決策が見つかりませんでした。
答え1
K次のような説明は次のとおりです。
「NetworkManagerは、ファイアウォールにインターフェイス領域について通知します。NetworkManager、ファイアウォール設定ツール、またはファイアウォールcmdコマンドラインツールを使用してインターフェイスにゾーンを割り当てることができます。後者の2つのツールは、そのNetworkManager設定ファイルを簡単に編集します。ファイアウォールを使用している場合、-cmd または Firewall-config がインターフェイス領域を変更すると、要求は NetworkManager に転送され、firewalld では処理されません。
転送しようとしているコンピュータはハイパーバイザーであり、NetworkManagerが無効になっています。これによりゾーン構成が中断されるようです。問題を解決して報告するよう努めます。 (またはiptablesに切り替えるとわかりそうです!)
PS:可能なようですが、上記の内容が問題の原因であることを証明することはできません。 iptablesに切り替えると、ポート転送が機能する可能性があります。私の場合、ターゲットコンピュータへの直接インターネット接続もあります(ポート22インバウンドは許可されていません)。これは、リターンパケットが帰りの途中でNATを変更しないことを意味します。これは私にとってとても複雑なので、配信のためにnetfilterの代わりにsshを使用するように切り替えましたが、うまくいきました!