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
外部インターフェイスのマスカレードオプションを設定している構成では見当たりません。
firewall-cmd --zone=external --add-masquerade --permanent
悪名高いfirewalld
で遊んだとき、これがうまくいきました
外部ゾーンではなく内部ゾーンにマスカレードを設定する必要があると思います。
確かに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)
お役に立てば幸いです。