web-dev-qa-db-ja.com

NAT CentOSでは機能しません7(Firewalld)

CentOS 7をルーターにするようにnatを構成しました。これを行うために、firewalldを使用しました。しかし、残念ながら機能しません。問題の原因がわかりません。 Virtual Boxで同じ構成を試しましたが、正常に動作しています。本番サーバーで同じ構成を行った場合は、そうではありません。

Eth ip–静的IP

マスク-255.255.252.0

ゲートウェイ-ISPゲートウェイ

eth1

ip-192.168.1.30

マスク-255.255.255.0

1)有効なパケット転送

vi /etc/sysctl.conf

added “net.ipv4.ip_forward=1”

sysctl –p 

2)NAT Firewalldでの設定

i)イン​​ターフェース「eth1」を内部ゾーンに統合する

Firewall-cmd --change-interface=eth1 --zone=internal --permanent

•マスカレードはデフォルトで「オフ」でした

ii)インターフェース「eth0」を外部ゾーンに統合する

Firewall-cmd --change-interface=eth0 --zone=external --permanent

iii)「内部ゾーン」をデフォルトゾーンとして変更

Firewall-cmd --set-default-sone=internal --permanent

iv)「内部ゾーン」を通過するDNSを追加

Firewall-cmd --zone=internal --add-service=dns –-permanent

3)ファイアウォール構成を保存した

Firewall-cmd --reload

Firewall-cmd --complete-reload

4)iptablesでも試した

Iptables –t nat –A POSTROUTING –o eth0 –j MASQUERADE

Iptables –A FORWARD –i eth1 –j ACCEPT

Echo > 1 /proc/sysc/net/ipv4/ip_forward

Service iptables restart
2
Anbu

外部インターフェイスのマスカレードオプションを設定している構成では見当たりません。

firewall-cmd --zone=external --add-masquerade --permanent

悪名高いfirewalldで遊んだとき、これがうまくいきました

5
JuxVP

外部ゾーンではなく内部ゾーンにマスカレードを設定する必要があると思います。

確かにFirewalldはまだわかっていませんが、CentOS 7.3でIPTablesを実行している場合、次の構成を使用して、mysql接続用のポート3306の内部IPで8806への外部要求をNATすることができました。

[root@firewall-dnat ~]# cat /etc/sysconfig/iptables
# Generated by iptables-save v1.4.21 on Tue Mar 7 20:06:21 2017
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [343:41670]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m conntrack --ctstate NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-Host-prohibited
-A FORWARD -i eth1 -j ACCEPT
-A FORWARD -o eth1 -j ACCEPT
-A FORWARD -i eth0 -p tcp -m tcp --dport 8806 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-Host-prohibited
COMMIT
# Completed on Tue Mar 7 20:06:21 2017
# Generated by iptables-save v1.4.21 on Tue Mar 7 20:06:21 2017
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [1:76]
:POSTROUTING ACCEPT [1:76]
-A PREROUTING -i eth0 -p tcp -m tcp --dport 8806 -j DNAT --to-destination 10.208.135.106:3306
-A POSTROUTING -o eth1 -j MASQUERADE
COMMIT
# Completed on Tue Mar 7 20:06:21 2017

マスカレードがeth1(私の内部インターフェース)のアウトバウンドトラフィックに設定されていることに注意してください。

3サーバーラボの様子は次のとおりです。

[クライアント]-> eth0(パブリック)-> mysqlポート8806-> eth0(パブリック)[firewall-dnat] eth1(内部)-> mysqlport 3306-> eth1(内部)db1(mariadb)

お役に立てば幸いです。

0
Richard Forth