구성환경
OS : Linux CentOS7
DBMS : MariaDB 10.x

 

이번 포스팅은 CentOS에서 설치한 MariaDB를 외부에서 접속 하기위해 방화벽 세팅 방법에 대해서 포스팅 하겠습니다.

현재 열려 있는 포트확인
[root@localhost ~]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1097/rpcbind        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      26130/sshd          
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1521/cupsd          
tcp6       0      0 :::3306                 :::*                    LISTEN      74557/mysqld        
tcp6       0      0 :::111                  :::*                    LISTEN      1097/rpcbind        
tcp6       0      0 :::80                   :::*                    LISTEN      74627/httpd         
tcp6       0      0 :::22                   :::*                    LISTEN      26130/sshd          
tcp6       0      0 ::1:631                 :::*                    LISTEN      1521/cupsd

 

netstat를 통해 현재 리눅스에서 열려 있는 포트를 확인 합니다. netstat에서 -tnlp옵션을 주었는데요.

다음과 같은 의미를 가지고 있습니다.

  • t : TCP 프로토콜을 사용하는 포트
  • n : 10진수 숫자로 표기
  • l : 열린포트(Listening) 상태인 포트
  • p : 상세 정보 표기

만약 netstat가 실행 되지 않는다면, yum install net-tools로 설치 해주면 됩니다.


방화벽에 포트 설정

 

방화벽 관리를 위해서는 firewall-cmd 명령어를 사용하는데요. 간단하게 방화벽 관련 정보 조회, 추가, 삭제 등 방화벽 관리를 위한 명령어를 정리해 보았습니다. 이제 아래 정리해 놓은 명령어를 통해서 MariaDB(MySQL)포트인 3306포트를 등록 해주도록 하겠습니다.

 

# 기본 존(zone) 조회
[root@localhost ~]# firewall-cmd --get-default-zone

# 활성화된 존(zone) 조회
[root@localhost ~]# firewall-cmd --get-active-zones

#사용 가능한 모든 방화벽 포트 설정 조회
[root@localhost ~]# firewall-cmd --list-all

#public 존에 속한 사용 가능한 모든 방화벽 포트 설정 조회
[root@localhost ~]# firewall-cmd --zone=public --list-all

# 방화벽 포트 추가( 옵션 추가 )
# --zone=[존이름] : --zone 옵션이 없으면 Default Zone에 저장 다른 존에 저장하려면 옵션 입력
# --permanent : 방화벽 설정 내용 재부팅 후 적용
[root@localhost ~]# firewall-cmd --add-port=[포트번호]/[프로토콜]
또는
[root@localhost ~]# firewall-cmd --add-service=[서비스명]

# 방화벽 포트 삭제
# --zone=[존이름] : --zone 옵션이 없으면 Default Zone에 저장 다른 존에 저장하려면 옵션 입력
# --permanent : 방화벽 설정 내용 재부팅 후 적용
[root@localhost ~]# firewall-cmd --remove-port=[포트번호]/[프로토콜]
또는
[root@localhost ~]# firewall-cmd --remove-service=[서비스명]

# 방화벽 실행 여부 확인
[root@localhost ~]# firewall-cmd --state

# 방화벽 재시작
[root@localhost ~]# firewall-cmd --reload

 

방화벽에 3306 포트를 열어 주기 위해서 "firewall-cmd --add-port=[포트번호]/[프로토콜]" 또는 "firewall-cmd --add-service=[서비스명]" 사용 하면 되는데요. 저는 위에 설명 한것과 같이 "--zone"과 "--permanent" 옵션을 사용하여 포트를 추가 해 주겠습니다.

[root@localhost ~]# firewall-cmd --zone=public --permanent --add-port=3306/tcp
또는
[root@localhost ~]# firewall-cmd --zone=public --permanent --add-service=mysql
[root@localhost ~]# firewall-cmd --reload

 

"--permanent"옵셥을 주었기 때문에 "firewall-cmd --reload"를 사용하여 방화벽을 재시작 해주어야 설정한 내용이 적용 됩니다. "--permanent"사용하지 않는다면 방화벽 재시작 없이 바로 설정내용이 적용 됩니다.

"--zone"옵션을 사용하여 존(zone)은 public으로 설정 됩니다. "--zone"을 사용하지 않는다면 Default값으로 지정된 존(zone)으로 저장됩니다. Default Zone 확인은 "firewall-cmd --get-default-zone" 확인 할 수 있습니다.

이제 설정 내용이 잘 적용 되었는지 확인 해 보겠습니다. 확인 하기 위해서는 "firewall-cmd --list-all" 명령어를 통해 확인 가능합니다. 특정 존(zone)의 설정 내용을 확인 하기 위해서는 "firewall-cmd --zone=public --list-all"와 같이 "--zone=[존이름]"옵션을 사용해 줍니다.

[root@localhost ~]# firewall-cmd --list-all
또는
[root@localhost ~]# firewall-cmd --zone=public --list-all

 

firewall-cmd --zone=public --permanent --add-service=mysql 추가 결과
firewall-cmd --zone=public --permanent --add-port=3306/tcp 추가 결과

방화벽에 포트를 추가 했을때 위와 같이 "--add-port=3306/tcp"와 "--add-service=mysql" 결과 값이 조금은 다를 수 있습니다. service로 추가 할 것인지 이니면 포트로 직접 추가 할 것 인지 인데요. 이 부분은 상황에 따라 편하신 방법으로 하시면 됩니다. 이제 windows 환경에서 mariaDB에 접속 해 보도록 하겠습니다. 저는 DB 관리 툴 인 HeidiSQL을 사용하였는데요. 꼭 HeidiSQL이 아니더라도 DBeaver 등 다양한 무료 툴이 있으니 편하신 툴로 사용 하시면 됩니다.

 

DB 접속을 위해 호스트명/IP, 사용자, 암호, 포트 정보를 입력 해 줍니다. 그리고 열기를 클릭 해 줍니다.

MariaDB 접속 성공

MariaDB Server에 접속 성공 하게 된다면 위와 같은 결과를 볼 수 있습니다. 하지만 포트가 열려 있지 않거나 잘 못 열려 있다면 접속이 되지 않고 아래와 같은 결과가 나오는데요.

MariaDB 접속 실패

이럴 경우에는 위에 정리된 명령어로 포트 및 존(Zone)을 확인 하시고 다시 추가 및 방화벽 재시작을 해보시면 될 꺼 같습니다. 이상 포스팅을 마치겠습니다. 긴글 읽어 주셔서 감사합니다^^

+ Recent posts