У меня две ВМ Centos.
IP-адреса следующие:
Apache и PHP находятся в VM_1, а MySQL - в VM_2. У обоих есть правила iptables. ВМ_2 нормально работает с правилами. Сейчас тестирую с ВМ_1.
Сперва я отключен VM_1 iptables и подключитесь к VM_2 MySQL (подключился успешно).
[root@foster ~]# service iptables stop
iptables: Applying firewall rules: [ OK ]
[root@foster ~]# mysql -h 10.99.0.12 -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 16
Server version: 5.6.21 MySQL Community Server (GPL)
...
Второй я включен VM_1 iptables и подключитесь к VM_2 MySQL (он также никогда не отвечает в часы и часы).
[root@foster ~]# service iptables start
iptables: Applying firewall rules: [ OK ]
[root@foster ~]# mysql -h 10.99.0.12 -u root -p
Enter password:
Что не так с моими правилами iptables? Вот мои правила iptables:
[root@foster ~]# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT icmp -- anywhere anywhere icmp echo-reply
ACCEPT icmp -- anywhere anywhere icmp echo-request
ACCEPT udp -- anywhere anywhere udp spt:domain
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh state N EW,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:http state NEW,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:https state NEW,ESTABLISHED
ACCEPT tcp -- 10.99.0.12 anywhere tcp dpt:mysql state NEW,ESTABLISHED
ACCEPT tcp -- localhost anywhere tcp dpt:mysql state NEW,ESTABLISHED
LOGGING all -- anywhere anywhere
Chain FORWARD (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere
ACCEPT icmp -- anywhere anywhere icmp echo-request
ACCEPT icmp -- anywhere anywhere icmp echo-reply
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT tcp -- anywhere anywhere tcp spt:ssh state E STABLISHED
ACCEPT tcp -- anywhere anywhere tcp spt:http state ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp spt:https state ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp spt:mysql state ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp spt:mysql state ESTABLISHED
Chain LOGGING (1 references)
target prot opt source destination
LOG all -- anywhere anywhere limit: avg 2/min bu rst 5 LOG level debug prefix `IPTables Dropped -:- '
DROP all -- anywhere anywhere
Проблема в том, что вы не разрешаете устанавливать новые соединения с MySQL, и вы инвертировали sport и dport:
Chain INPUT (policy DROP)
...
ACCEPT tcp -- 10.99.0.12 anywhere tcp dpt:mysql state NEW,ESTABLISHED
ACCEPT tcp -- localhost anywhere tcp dpt:mysql state NEW,ESTABLISHED
...
Chain OUTPUT (policy DROP)
...
ACCEPT tcp -- anywhere anywhere tcp spt:mysql state ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp spt:mysql state ESTABLISHED
...
Право iptables -L
вместо этого вывод должен быть:
Chain INPUT (policy DROP)
...
ACCEPT tcp -- 10.99.0.12 anywhere tcp spt:mysql state ESTABLISHED
ACCEPT tcp -- localhost anywhere tcp spt:mysql state ESTABLISHED
...
Chain OUTPUT (policy DROP)
...
ACCEPT tcp -- anywhere anywhere tcp dpt:mysql state NEW,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:mysql state NEW,ESTABLISHED
...