MySQL в локальной сети не работает, когда включены IPTables

У меня есть два Centos VM. IP-адрес на VM_1 является 10.99.0.10 а VM_2 это 10.99.0.12. Apache и PHP находятся в VM_1, а MySQL — в VM_2. Оба имеют правила IPTables. VM_2 работает нормально с правилами. Сейчас я тестирую от VM_1.

Сначала я отключил виртуальные IP-таблицы VM_1 и подключился к MySQL VM_2 (подключился успешно).

[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? Мои правила в Pastebin.

2

Решение

Проблема в способе, который вы включаете MySQL движение:

# Allow MySQL private Networking
sudo iptables -A INPUT -i eth1 -p tcp -s 10.99.0.12 --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -o eth1 -p tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT

Эти правила имеют две проблемы:

  1. Они позволяют исходящие MySQL трафик от VM_1 только если соединение было впервые инициировано с VM_2 (10.99.0.12).
  2. Они указывают порт 3306 как клиента (VM_1) порт, а не как сервер (VM_2) порт.

Более подходящий набор правил будет следующим:

# Allow MySQL private Networking
sudo iptables -A OUTPUT -o eth1 -p tcp --dport 3306 -m state --state NEW, ESTABLISHED -j ACCEPT
sudo iptables -A INPUT -i eth1 -p tcp -s 10.99.0.12 --sport 3306 -m state --state ESTABLISHED -j ACCEPT
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]