그래서 웹 서버와 (Mysql) 데이터베이스 서버가 있습니다. 둘 다 인터페이스 2개(공용 IP 1개, 내부 IP 1개)가 있습니다.
나는 두 사람이 기본 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
또한 MySQL을 내부 IP에 바인딩했습니다.
그러나 간단한 것을 시도하면 다음과 같습니다.
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 구성에는 여러 가지 문제가 있을 가능성이 높습니다. 왜냐하면 나는 단지 배우기 위해 이것을 시도하고 있기 때문입니다.