미크로틱으로 리버스 프록시(reverse proxy) 구현하기

미크로틱

개인적으로 리눅스를 참 어렵게 생각하는데 재작년 처음 서버를 구매하고 웹서비스를 올렸을때는 윈도우 기반 IIS로 시작했다.

하지만 PHP와 궁합이라던가 워드프레스나 텍스트큐브의 플러그인등이 아파치에 최적화 되어있고 결국 LAMP를 구성할 수 밖에 없는 상황이 연출되는데 아이피 하나로 여러개의 물리(가상)서버에 이런 저런 웹서비스들을 설치하고 도메인으로 구분해서 서비스 할수 있는 방법이 있을까 예전부터 참 고민이였다.

그러다 커뮤니티에서 미크로틱 이라는 라우터를 알게되고 이놈이 사이즈보다 강력한 녀석이라는걸 알게 되었는데 방화벽과 DNS의 설정으로 내가 원하던 리버스 프록시를 구현할수 있었다. 물론 이건 내가 혼자 발견? 한게 아니라 미크로틱 매뉴얼에 아주 친절하게 나와있다.

단지 미크로틱을 부담없이(능숙하게가 아니다) 설정하려면 꽤나 기간이 필요했지만…

쓸대없는 이야기가 좀 길어졌는데 리버스 프록시는 다시 말해 다수의 서버의 앞단에서 공인아이피로 접속한 클라이언트의 요청에 따라 해당 도메인의 서버에 내부아이피로 연결해 주는 역할을 한다.

그리고 덤으로 미크로틱은 웹서버의 캐시 역할도 같이 할수 있는데 솔직히 개인적으로 운영하는 서비스라 속도나 트래픽 면에서 큰 차이는 못느꼈지만 접속자 수가 많으면 트래픽이 절약될것이다.

mt_reverse_map

위에 설명한 얘기를 간략하게 그림으로 그려봤다.(비지오를 처음 써봐서 허접합니다. 이해해주세요)

이제 설정 방법을 보도록 하겠다.

mt_reverse_1

윈박스에 접속후 왼쪽의 IP > Web Proxy 를 클릭

mt_reverse_2

다음과 같은 창이 나오는데 스크린샷은 서비스 되고 있는 상태라 세팅되어 있는걸 풀수가 없어서 미리 세팅되어 있는 상태이다.

리버스 프록시의 원리는 domain:80번 포트의 요청을 웹 프록시 모듈에서 8080포트로 요청을 넘겨받아 설정되어 있는 access 리스트를 기반으로 DNS를 찾아 도메인을 내부 IP:80포트로 요청을 넘겨주는 역할이다.

웹 프록시에서 설정해 줄 부분은 엑세스 리스트와 넘겨받을 포트를 설정해 주면 된다. 캐싱 설정부분은 리버스 프록시와는 별개이므로 세팅에서 생략하겠다.

우선 Enable에 체크 해주고 Port에 리다이렉팅 될 포트를 적어준다. 아래부분의  Max. Client Connections와 Max.Server Connections 는 서버와 클라이언트의 접속수를 설정하는데 1440이 최대치이다.

그리고 오른쪽의 Access 버튼을 눌러 도메인을 설정해 준다.

mt_reverse_3

본인이 사용하는 도메인들인데 쓸대없이 참 많다. 왼쪽 상단의 + 버튼을 눌러 도메인을 추가해주자.

mt_reverse_4

test.mystor.net을 추가한다고 가정한 설정이다.

Dst.Port엔 웹서버의 포트를, Dst.Host에 해당 도메인을 입력하고 Action을 allow(기본값)로 설정한 뒤 OK를 눌러준다.

이런식으로 사용할 도메인을 입력하면 된다. 그리고 허용할 도메인 이외의 접근을 막을 설정이 필요한데 다시 + 버튼을 눌러 다음과 같이 추가해주자.

mt_reverse_5

Action : Deny 가 핵심인데 작성한 도메인 이외의 접근을 막겠다는 뜻이다.

아이피로 인한 접근이나 Access에서 설정되지 않은 도메인(예로 테스트용이라던가)을 웹서버쪽에서 로컬로 돌리지 않고도 웹 프록시에서 Deny 처리하면 외부에서 접근이 불가능 하다.

mt_reverse_6

중요한건 Deny Rule을 맨 마지막에 드래그 해서 가져다 놓자.

위에 있으면 Deny 아래에 설정되어 있는 도메인은 위에서 벌써 접근금지 처리해버리기 때문에 모두 접속 불가가 된다.

반대로 잠시 접속을 막고 싶을때는 Deny Rule을 맨 위에 놔두면 모든 접속이 차단된다.

그럼 웹 프록시 모듈의 설정은 이제 끝났고 다음은 DNS에서 내부 IP의 정보를 입력해 줄 차례다.

mt_reverse_7

IP 메뉴에서 DNS를 클릭하면 DNS settings 화면이 나오는데 오른쪽의 static 버튼을 누르면 다음과 같은 화면이 나온다.

mt_reverse_8

웹 프록시 설정때와 마찬가지로 +버튼을 눌러 도메인과 내부 아이피 주소를 입력해 주자.

TTL은 기본값으로 놔두면 된다. 혹시나 해서 하는 얘기지만 미크로틱의 DNS 설정은 DNS 서버와는 다르다.

미리 DNS 서버를 통해서 도메인과 공인아이피(유동아이피건 고정아이피건)가 설정이 되어 있어야 한다.

스크린샷과 같이 여러 도메인과 내부 서버의 아이피를 입력해 줬으면 마지막으로 방화벽에서 Redirect Rule을 작성해주면 된다.

mt_reverse_10

메뉴에서 IP > Firewall에 들어가서 NAT 탭을 누른다음 왼쪽상단의 +버튼을 눌러준다.

mt_reverse_12

General 탭에서 체인은 dstnat, 프로토콜은 tcp, Dst. Port는 80, 들어오는 인터페이스는 1번 포트가 지정된 이름으로 설정해 주면 된다.

본인의 설정은 브릿지로 되어있는데 미크로틱 앞단에 라우터가 있어 dhcp를 쓰지 않아 설정이 조금 다르다. 무시하면 된다.

mt_reverse_11

그리고 Action 탭에서 Action을 redirect로 선택하고 To. Ports는 8080를 입력하고 OK 버튼을 누르면 된다.

이제 설정은 전부 끝났으니 도메인으로 서버에 접속 해보면 된다.^^

번외편. 시놀로지 나스 2개 이상 같은 포트로 돌리기.

처음부터 스크린샷을 보면 포트 5555에 관련된 설정이 추가되어 있는데 이것은 시놀로지 나스를 두개 구동하고 DSM에 필요한 5000포트를 리다이렉트한 설정이다.

포트를 추가하고 Access 버튼을 눌러 5000번 포트도 80번과 함께 설정해주면 된다.

사실 설정해보면 정말 쉬운데 설명을 잘 못해서 더 해깔리게 만든건 아닌가 싶다….

첨언으로 HTTP 이외의 프로토콜은 위와 같은 설정으로 나눠 쓰는게 안된다. (FTP, HTTPS,RDP,DNS 등등등…)

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Fill out this field
Fill out this field
유효한 이메일 주소를 입력해주세요.