미크로틱 2WAN 사용후기

느낌   
   조회 7277   추천 0    

미크로틱  CCR1009-7G-1C-1S+  몇일 동안 삽질하고 고수님들에게 몇가지 질문을 하고자 글을 남겨 봅니다.

두가지 셋팅을 해봤는데요. 


1. 여기 2cpu의 강좌에 있는 내용입니다.

     http://2cpu.co.kr/lec/1136?&sfl=mb_id%2C1&stx=mikrotik

2. 인터넷 동영상에 나오는걸 따라 해봤습니다.

     https://www.youtube.com/watch?v=AZePBBbp_5w&t=300s


네트워크 구성은 이렇습니다.

ISP -( WAN1  1.1.10.5,  WAN2 1.1.20.4) - 미크로틱(192.168.1.1/24)  -  스위치 (192.168.1.2/24) - PC / Note book / NAS / Servers
                                                                                                                         - Hap AC(192.168.1.245/24)  

미크로틱 ether1 = WAN1, ether2 = WAN2,  LAN 구성은 브리지로 ether5과 ether6번을 묶었습니다.

===============================================================================================

1번 세팅

/interface bridge
add name=lan

/interface bridge port
add bridge=lan interface=ether5
add bridge=lan interface=ether6

/ip pool
add name=dhcp ranges=192.168.1.2-192.168.1.254  

/ip dhcp-server
add address-pool=dhcp disabled=no interface=lan lease-time=3d name=dhcp  

/ip address
add address=192.168.1.1/24 interface=lan

/ip dhcp-client
add add-default-route=no disabled=no interface=ether1 use-peer-dns=no use-peer-ntp=no
add add-default-route=no disabled=no interface=ether2 use-peer-dns=no use-peer-ntp=no

/ip dhcp-server network
add address=192.168.1.0/24 dns-server=168.126.63.1,168.126.63.2 gateway=192.168.1.1 netmask=24

/ip firewall mangle      
add action=mark-connection chain=input in-interface=ether1 new-connection-mark=ether1_conn
add action=mark-connection chain=input in-interface=ether2 new-connection-mark=ether2_conn
add action=mark-routing chain=output connection-mark=ether1_conn new-routing-mark=to_ether1
add action=mark-routing chain=output connection-mark=ether2_conn new-routing-mark=to_ether2
add action=mark-connection chain=prerouting dst-address-type=!local new-connection-mark=ether1_conn per-connection-classifier=src-address:2/0 src-address=192.168.1.2-192.168.1.254
add action=mark-connection chain=prerouting dst-address-type=!local new-connection-mark=ether2_conn per-connection-classifier=src-address:2/1 src-address=192.168.1.2-192.168.1.254
add action=mark-routing chain=prerouting connection-mark=ether1_conn new-routing-mark=to_ether1 src-address=192.168.1.2-192.168.1.254
add action=mark-routing chain=prerouting connection-mark=ether2_conn new-routing-mark=to_ether2 src-address=192.168.1.2-192.168.1.254

/ip firewall nat
add action=masquerade chain=srcnat src-address=192.168.1.2-192.168.1.254  
add action=masquerade chain=srcnat out-interface=ether1  
add action=masquerade chain=srcnat out-interface=ether2

/ip route
add check-gateway=ping distance=1 gateway=1.1.10.1%ether1 routing-mark=to_ether1 scope=255  
add check-gateway=ping distance=1 gateway=1.1.20.1%ether2 routing-mark=to_ether2 scope=255


2번 세팅

/interface bridge
add name=lan

/interface bridge port
add bridge=lan interface=ether6
add bridge=lan interface=ether5

/ip dhcp-client
add add-default-route=no dhcp-options=hostname,clientid disabled=no interface=ether1 use-peer-dns=no use-peer-ntp=no
add add-default-route=no dhcp-options=hostname,clientid disabled=no interface=ether2 use-peer-dns=no use-peer-ntp=no


/ip address
add address=192.168.1.1/24 interface=lan network=192.168.1.0

/ip firewall magle
add action=mark-connection chain=prerouting connection-state=new new-connection-mark=WAN1 nth=2,1 passthrough=yes src-address=192.168.1.0/24
add action=mark-connection chain=prerouting connection-state=new new-connection-mark=WAN2 nth=2,2 passthrough=yes src-address=192.168.1.0/24
add action=mark-routing chain=prerouting connection-mark=WAN1 new-routing-mark=WAN1 passthrough=yes src-address=192.168.1.0/24
add action=mark-routing chain=prerouting connection-mark=WAN2 new-routing-mark=WAN2 passthrough=yes src-address=192.168.1.0/24

/ip route
add distance=1 gateway=1.1.10.1 routing-mark=WAN1  
add distance=1 gateway=1.1.20.1 routing-mark=WAN2
add distance=1 gateway=1.1.10.1
add distance=2 gateway=1.1.20.1

/ip dns
set allow-remote-requests=yes servers=168.126.63.1,168.126.63.2

/ip pool
add name=dhcp ranges=192.168.1.2-192.168.1.254

/ip dhcp-server
add address-pool=dhcp disabled=no interface=lan name=dhcp

/ip dhcp-server network
add address=192.168.1.0/24 dns-server=168.126.63.1,168.126.63.2 gateway=192.168.1.1 netmask=24

/ip firewall nat
add action=masquerade chain=srcnat src-address=192.168.1.0/24


라우팅 테이블 비교

1번세팅과 2번 세팅을 각각 하고서 라우팅 테이블 입니다.

 (1번 세팅)


  (2번 세팅)


특이한게 2번 세팅에선 Routing Mark가 없는 1.1.20.1 게이트웨이가 언액티브 상태더군요. 이게 위에 1.1.10.1 게이트웨이를 disable시키면 

1.1.20.1게이트웨이 라우팅 테이블이 액티브 상태로 바뀌더군요. 잘은 모르겠지만 추측으로 하나가 죽으면 자동으로 액티브 상태가 바뀌는게 아닌가 합니다.




파일 다운로드

그다음은 파일을 다운로드 해봤습니다. 다운로드 하는 중에 winbox 설정을 바꾸어서 측정 해봤습니다.

(1번 세팅)



 (2번 세팅)


1번세팅에서는 거의 ether1에서만 다운로드 됩니다. 2번 세팅에서는 WAN1(ether1)과 WAN2(ether2) 속도는 차이가 있지만 둘다 다운로드가 됩니다.

그러나 Total 속도를 비교해보면 차이가 없내요 ㅋㅋㅋ 

2번 세팅에서 뭔가 로드밸런싱 하게 나오는거 같지만  2번세팅에서 다운로드 속도를 합하면 1번세팅이랑 비슷합니다.


클라이언트의  IP 주소 할당

1번세팅에서는 전부 ether1에서 받은 public IP 만 받아 옵니다.

2번세팅에서는 클라이언트 마다 public IP가(ether1와 ether2 의 IP) 다르게 나옵니다. 


==========================================================================================================

firewall의 filter설정과 NAT설정은 아직 해보지 않았지만 일단 여기까지 해보고 정리차원에서 글을 올려 봅니다.
여기서 NAT설정에서 IP 2개를 서버들에게 다르게 IP 주소를 NAT 할 수 있을거 같기도 합니다만 먼가 가물가물 하내요.

여기서 고수님들에게 질문이 있습니다.


질문1 

1번 세팅과 2번 세팅에서 다른게 magle rule과 ip route 설정만 다른데 어떻게 차이가 있는지 궁금합니다.


질문2

지금은  웹서버의 포트 포워딩을 아래와 같이 했습니다.

add action=masquerade chain=srcnat dst-address=192.168.1.10 dst-port=443 out-interface=lan protocol=tcp src-address=192.168.1.0/24
add action=masquerade chain=srcnat dst-address=192.168.1.10 dst-port=80 out-interface=lan protocol=tcp src-address=192.168.1.0/24
add action=dst-nat chain=dstnat dst-address=10.1.10.4 dst-port=443 protocol=tcp  to-addresses=192.168.1.10 to-ports=443
add action=dst-nat chain=dstnat dst-address=10.1.10.4 dst-port=80 protocol=tcp  to-addresses=192.168.1.10 to-ports=80

웹서버가 다음과 같이 2개가 있다고 하면  --> 192.168.1.10 (웹서버1), 192.168.1.11(웹서버2)

어떻게 하면 public IP 2개를 다르게 NAT 시켜 주면 될까요?

조금 긴 글이라  끝까지 읽으시기 귀찮으실텐데 감사합니다. ^^


느낌 2017-12
테스트 내용 추가 합니다.
NAT 설정을
add action=masquerade chain=srcnat src-address=192.168.1.0/24
add action=masquerade chain=srcnat dst-address=192.168.1.28 dst-port=443 out-interface=lan protocol=tcp src-address=192.168.1.0/24
add action=masquerade chain=srcnat dst-address=192.168.1.28 dst-port=80 out-interface=lan protocol=tcp src-address=192.168.1.0/24
add action=dst-nat chain=dstnat dst-address=x.x.x.x  dst-port=443 protocol=tcp to-addresses=192.168.1.28 to-ports=443
add action=dst-nat chain=dstnat dst-address=x.x.x.x  dst-port=80 protocol=tcp to-addresses=192.168.1.28 to-ports=80

외부에서 웹서버에 접속시  x.x.x.x 주소에 ether1, ether2에서  DHCP Client로 받은 주소는 둘 다 접속이 가능하내요.
문제는 Hair Pin인지 뭔지 하는 설정은  내부에서는 public ip로는 접속이 안되내요. 기존에 사용하던 1 WAN상태에서는  내부에서도  Public IP로도 접속이 되었었는데요
아미노펜 2017-12
미크로틱을 사용하진 않지만, 미크로틱 또한 iptables을 커스텀하여 장치의 정책을 적용하는걸로 알고있습니다.

1번과 2번은 확인하신것처럼 장치에 적용된 규칙은 새로운 커넥션에 대한 라운드 로빈의 적용 유무의 차입니다.
1번의 경우 ether1로 들어온 커넥션은 MARK 타겟과 mark 매치를 이용해서 ether1_conn로 지정하고 ether2는 ether2_conn을 커넥션에 부여합니다.
그리고 mark별로 다시 들어왔던 인터페이스로 OUT 하도록 처리하는 반면, 2번 설정은 각각의 새로운 커넥션별로 nth 매치를 이용해서 라운드 로빈을 수행합니다.

간단하게 첫 번째 커넥션은 WAN1로 두 번째 커넥션은 WAN2로 처리합니다. 또한  connection-state=new를 부여하게 되는데 상태값이 주어지지 않을 경우 단편된패킷이 계속해서 라운드 로빈으로 처리되게 때문에 new 상태를 주어 최소 한개의 커넥션은 동일한 경로를 유지하도록 합니다.
이러한 이유 등으로 1번은 WAN1을 통해서 연결이 이루어지기 때문에 단일 링크에서만 성능이 측정되었고 2번 설정은 두 개의 인터페이스를 통해서 측정된걸로 보입니다.

마크가 지정되지 않은 게이트웨이 액티브/디스에이블의 경우 라우팅이 마크로 지정된 경우에 대해서만 처리되기 때문에 이를 보완하고자 절체 방식으로 적용한것 같습니다. 첫 번째 new 커넥션이 규칙에 따라 WAN1로 마크가 되었다면 WAN1인터페이스로 나갈수있는 마크는 WAN1(MARK)인 경우만 가능하고 WAN2는 WAN2마크에 대해서만 가능합니다. 하지만 회선의 문제 등으로 WAN2로의 연결만 가능하다면 WAN1마크는 라우팅 될 수 없기 때문에 라우팅 될 수 있도록 마크가 지정되지 않은 게이트웨이를 추가한것같은데 어차피 내부 주소 모두에 대해서 마킹을 처리하였고 한개의 회선이 절체되면 나머지 단일 회선만 작동하기 때문에 굳이 distance를 1과 2로 구분할 필요가 있는지는 모르겠네요

2번은 1번 설정에서 연장을해서 적용하여야 할것으로 보입니다.

iptables 기준이라면 각각 들어온 인터페이스 별로 mark를 지정하고 목적지 주소 대신 mark1이라면 서버1로 DNAT, mark2라면 서버2로 DNAT 설정합니다.
이미 WAN1로 들어온 패킷이라면 ether1에 지정된 IP로 들어온것으로 간주되기 때문에 목적지를 지정하는것과 동일한 효과를 발휘합니다.
그리고 다시 들어온 인터페이스를 통해 클라이언트로 반환되어야 하기 때문에 mark1은 WAN1으로 라우팅, mark2는 WAN2로 라우팅(또는 인터페이스로도 지정가능)으로 구현이 가능하나 미크로틱을 사용하지 않았고 세부적인 설정은 다를수 있기 때문에 사용하시는 고수분의 답변을.....
     
느낌 2017-12
말씀하신대로 1번 설정에서 연장해서 2번 설정을 적용해봤습니다. 물론 구글 신공으로 했습니다.(솔직히 아래의 내용이 정확히 무슨 뜻인지 모릅니다 그냥 어렴풋이 이런거 정도내요)

/ip firewall mangle
add action=accept chain=prerouting dst-address=1.1.10.0/24 in-interface=lan
add action=accept chain=prerouting dst-address=1.1.20.0/24 in-interface=lan
add action=mark-connection chain=prerouting connection-mark=no-mark in-interface=ether1 new-connection-mark=WAN1_conn passthrough=yes
add action=mark-connection chain=prerouting connection-mark=no-mark in-interface=ether2 new-connection-mark=WAN2_conn passthrough=yes
add action=mark-connection chain=prerouting connection-state=new new-connection-mark=WAN1_conn nth=2,1 passthrough=yes src-address=192.168.1.0/24
add action=mark-connection chain=prerouting connection-state=new new-connection-mark=WAN2_conn nth=2,2 passthrough=yes src-address=192.168.1.0/24
add action=mark-connection chain=prerouting connection-mark=no-mark dst-address-type=!local in-interface=lan new-connection-mark=WAN1_conn passthrough=yes \
    per-connection-classifier=both-addresses:2/0
add action=mark-connection chain=prerouting connection-mark=no-mark dst-address-type=!local in-interface=lan new-connection-mark=WAN2_conn passthrough=yes \
    per-connection-classifier=both-addresses:2/1
add action=mark-routing chain=prerouting connection-mark=WAN1_conn new-routing-mark=to_WAN1 passthrough=yes src-address=192.168.1.0/24
add action=mark-routing chain=prerouting connection-mark=WAN2_conn new-routing-mark=to_WAN2 passthrough=yes src-address=192.168.1.0/24
add action=mark-routing chain=prerouting connection-mark=WAN1_conn in-interface=lan new-routing-mark=to_WAN1 passthrough=yes
add action=mark-routing chain=prerouting connection-mark=WAN2_conn in-interface=lan new-routing-mark=to_WAN2 passthrough=yes
add action=mark-routing chain=output connection-mark=WAN1_conn new-routing-mark=to_WAN1 passthrough=yes
add action=mark-routing chain=output connection-mark=WAN2_conn new-routing-mark=to_WAN2 passthrough=yes

/ip route
add check-gateway=ping distance=1 gateway=1.1.10.1 routing-mark=to_WAN1
add check-gateway=ping distance=1 gateway=1.1.20.1 routing-mark=to_WAN2
add check-gateway=ping distance=1 gateway=1.1.10.1
add check-gateway=ping distance=1 gateway=1.1.20.1

/ip firewall nat
add action=masquerade chain=srcnat out-interface=ether1 
add action=masquerade chain=srcnat out-interface=ether2

일단 잘 됩니다. 다운로드 중에 회선 하나를 죽여도 나머지 하나의 회선으로 잘 되내요..

수정했습니다. Hairpin NAT도 잘되내요. ㅋ
컬 저의 구닥다리 강좌를 보시고..ㅎㅎ
뭐 지금이라고 별로 달라진건 없습니다만..




제목Page 9/40
2017-12   7278   느낌
2017-12   6284   Chrome
2017-12   6283   카네키켄
2017-12   6552   느낌
2017-12   7467   버프엔지니…
2017-12   8160   무늬S
2017-12   7592   버프엔지니…
2017-12   6618   리얼홀릭
2017-11   7786   휴가구름
2017-11   9547   limjongsek
2017-11   8133   리얼홀릭
2017-11   8127   김은호
2017-11   7608   김광준
2017-11   7966   리얼홀릭
2017-11   7977   성기사
2017-11   6823   버프엔지니…
2017-11   7265   개락
2017-11   7203   개락
2017-11   7372   MikroTik이진
2017-11   7024   ChiyosT