시작하며
외부에서 홈서버의 웹서비스를 연결하고 싶은데 어떻게 할까 고민을 좀 하는중.
다재다능한 미크로틱 라우터(?) 이놈을 어떻게든 부려먹을 기회!
단순한 NAT 포트포워딩(dst-nat) 으로 라우터 Internet facing 포트를 뒷단 홈서버로 연결할까도 했는데,
그냥 연결하면 좀 심심하잖아. (응 잉여로워)
그래서 생각한 구성은 이렇다. DST-NAT + WebProxy 를 써보는 거다.
WebProxy를 이용한 네트웍 아키텍처
Mikrotik 장비로 WebProxy를 사용
Mikrotik RouterOS에서 제공하는 DST-NAT + WebProxy 를 이용하기전에 생각해보니.
WebProxy 를 이용해서 얻을 수 있는 내가 생각한 장점만 대충 요약을 하자면 다음과 같다.
- WebCache 를 이용해 정적인 내용은 장비가 처리해 주어 웹서버의 부담이 줄어든다.
- 다만 나의 미크로틱 장비는 RB4011 이라 내장 디스크가 코딱지 만하다는것. ㅋㅋ
- 용량이 큰 USB 디스크를 연결할 수 있는 모델에서는 Cache를 이용하기 더 좋을 것이다.
- hostname 을 웹프록시에서 필터링하는 단계를 거친다.
- IP로 HTTP연결시 미크로틱이 이를 거부해주니까 웹서버의 부하가 줄어들 것이다.
- hostname 으로 각기 다른 웹서버로 분기를 할 수 있도록 해준다.
- WebProxy가 Mikrotik 내장 DNS를 통해 로드밸런서 역할을 하면서 이중화 구성이 가능해진다.
- 홈서버에 뭔 이중화냐구? 혹시 모르잖아! ㅎㅎㅎ 난 고가용성을 지향한다는것!
- 뒷단에 여차하면 다른 장비를 붙여버릴 수 도 있고.
등등등 있는 기능 굳이 안 써먹을 이유가 없잖은가.
시작해보자.
1. DST-NAT로 포트포워딩을 WebProxy 로 향하게 만들고.
> /ip firewall nat add chain=dstnat protocol=tcp dst-port=80 in-interface=ether1 action=dst-nat to-addresses=192.168.1.1 to-ports=8080 comment="Web Proxy port"
- NAT룰을 하나 추가 : /ip firewall nat add
- dstnat 체인으로 : chain=dstnat
- ether1 인터페이스를 통해 80 TCP 포트로 들어오는 연결을 : protocol=tcp dst-port=80 in-interface=ether1
- dst-nat 로 WebProxy(192.168.1.1:8080) 포트로 넣어요: action=dst-nat to-addresses=192.168.1.1 to-ports=8080
2. WebProxy를 설정한다. (난 캐쉬로 사용할 용량이 없음으로 캐쉬디스크 설정을 빼버렸다)
> /ip proxy set enable=yes port=8080 max-cache-size=none cache-on-disk=no
- WebProxy 를 활성화 하고 : /ip proxy set enable=yes
- 8080 포트로 : port=8080
- 캐쉬용량을 0로 하고 : max-cache-size=none
- 디스크에 캐쉬를 쓰지 말자고: cache-on-disk=no
3. WebProxy의 뒷단 역할을 할 DNS Hostname 과 Port를 설정한다.
(도메인 사놓은거 있으면 Mikrotik IP로 Public DNS설정해 놓아야함)
> /ip proxy access add local-port=8080 dst-port=80 dst-host=www.test.com action=allow
- WebProxy 로 엑세스할 구성을 추가: /ip proxy access
- WebProxy로 8080으로 들어오는 트래픽을: local-port=8080
- Mikrotik DNS에 Static으로 www.test.com 호스트네임에 80포트로 접근할때: dst-port=80 dst-host=www.test.com
- 접근을 허용한다 : action=allow
> /ip proxy access add local-port=8080 dst-port=80 action=deny
- 그외 다른 hostname 으로 들어오는 놈들은 모두 거부(Deny) 할꺼야.
- 순서적으로 Deny 가 가장 아래쪽에 오도록 해야 Deny가 역할을 제대로 할 것이다.
4. Static DNS설정으로 Round Robin방식으로 axgo.tistory.com 호스트를 로드 밸런싱하면 끝!
> /ip dns static add type=A ttl=30m name="axgo.tistory.com" address=192.168.1.200
> /ip dns static add type=A ttl=30m name="axgo.tistory.com" address=192.168.1.201
> /ip dns static add type=A ttl=30m name="axgo.tistory.com" address=192.168.1.202
마치며.
아직 WebProxy 를 통해 Sticky Session이나 커넥션 Hash 는 생각 안하련다. (아직은 뒷단 서버는 1대니까)
나중에 서버가 더 추가된다면 그때 WebProxy로 해결방법을 찾아봐야겠다.
'NetTools > Mikrotik' 카테고리의 다른 글
무료 Let's Encrypt SSL인증서를 미크로틱(Mikrotik)에 설치하자 (0) | 2023.11.03 |
---|