私はウェブサーバーと(Mysql)データベースサーバーを持っています。どちらにも 2 つのインターフェースがあり、1 つはパブリック IP、もう 1 つは内部 IP です。
これら 2 つがデフォルトの MySQL ポート 3306 の内部 IP 経由でのみ通信するようにします。
データベース サーバーの iptables 構成は次のとおりです。
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x3F/0x00
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:!0x17/0x02 state NEW
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x3F/0x3F
ACCEPT tcp -- *My HQ* 0.0.0.0/0 tcp dpt:22
ACCEPT tcp -- *Internal IP webserver* 0.0.0.0/0 tcp dpt:3306
私のウェブサーバー上の iptables は次のとおりです。
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp -- *ip nagios server* 0.0.0.0/0 tcp dpt:5666
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x3F/0x00
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:!0x17/0x02 state NEW
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp flags:0x3F/0x3F
ACCEPT tcp -- *My HQ* 0.0.0.0/0 tcp dpt:22
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 state NEW,ESTABLISHED
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 state NEW,ESTABLISHED
ACCEPT tcp -- *My HQ* 0.0.0.0/0 tcp dpt:10081 state NEW,ESTABLISHED
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:36512 state NEW,ESTABLISHED
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- *Internal IP Database server* 0.0.0.0/0 tcp dpt:3306
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:36512 state NEW,ESTABLISHED
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:465 state NEW,ESTABLISHED
ACCEPT tcp -- *Internal IP Database Server* 0.0.0.0/0 tcp dpt:3306
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:3306
内部 IP にも MySQL をバインドしています。
しかし、次のような単純なことを試してみると、
mysql -h *internal ip db server* -u root -p
次のエラーが発生します:
ERROR 2003 (HY000): Can't connect to MySQL server on '*internal db server ip*' (110)
何か忘れていることがあるのでしょうか、それとも IPTABLES の設定に問題があるのでしょうか?
CentOS 7.2.1511 マシンと MySQL バージョン 5.7 を使用しています。
注: この iptables 設定には複数の問題がある可能性があります。これは学習のために実験しているだけだからです。