web-dev-qa-db-ja.com

CentOS7.xをポートフォワーディングにするNATデバイス

CentOSをポートフォワーディングNAT iptablesを使用するマシンにしたい。これを試したのはこれが初めてで、少し助けが必要かもしれないと思う。

これは私が達成しようとしている構成です。ポート80でCentOSマシンを介してリモートデスクトップ接続を確立し、CentOSをポート80でサーバーに接続しようとしています。

192.168.0.120は、ポート80の192.168.0.100(CentOS)に接続することにより、192.168.30.37のポート80に接続する必要があるクライアントです。

  • CentOSens160は192.168.0.100/24です
  • CentOSens192は192.168.30.254/24です
  • CentOSens224は192.168.40.254/24です

私がこれまでに試したこと:

  1. 無効なSELINUX
  2. /etc/sysctl.confでIPv4転送を有効にしました

    /etc/sysctl.conf
    net.ipv4.ip_forward = 1
    
  3. / etc/systemconfig/iptablesは

    *filter
    :INPUT ACCEPT [0:0]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [12:944]
    -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A INPUT -p icmp -j ACCEPT
    -A INPUT -i lo -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
    -A INPUT -j REJECT --reject-with icmp-Host-prohibited
    -A FORWARD -i ens160 -o ens192 -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A FORWARD -i ens192 -o ens160 -j ACCEPT
    -A FORWARD -i ens160 -o ens224 -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A FORWARD -i ens224 -o ens160 -j ACCEPT
    -A FORWARD -j REJECT --reject-with icmp-Host-prohibited
    COMMIT
    *nat
    :PREROUTING ACCEPT [4:272]
    :INPUT ACCEPT [0:0]
    :OUTPUT ACCEPT [0:0]
    :POSTROUTING ACCEPT [0:0]
    -A PREROUTING -i ens160 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.30.37:80
    -A POSTROUTING -o ens160 -j MASQUERADE
    -A POSTROUTING -d 192.168.0.100/32 -j MASQUERADE
    COMMIT
    

それで、私のiptablesルールに何か問題がありますか?それとも私が見逃している可能性があるものはありますか?

2
Yuan Chen

とにかく、あなたはフォワードルールを逃しています

iptables -A FORWARD -i ens160 -o ens192 -p tcp -m tcp -d 192.168.30.37 -m state --state NEW -j ACCEPT

この前に、上記のルールを挿入する必要があります。

-A FORWARD -j REJECT --reject-with icmp-Host-prohibited
1
c4f4t0r

RedHat Entrprise Linux 7.0(CentOS 7.0の「上流」)では、iptablesとのやり取りは firewalld を介して行われます。 iptables構成を手動で変更することは可能ですが、相互作用の場合は意図した方法ではありません。

iptables構成を直接変更したい場合は、iptablesに関するドキュメントを参照してください。あなたは正しい道を進んでいますが、例えば、-iおよび-o引数は、入力インターフェースと出力インターフェース(eth0など)、ホスト名ではありません。 iptablesがどのように機能するかについて、いくつかの背景が必要なようです。

4
Evan Anderson