Skip to main content

2 posts tagged with "nat"

View All Tags

· 7 min read

VyOS는 소프트웨어 라우터, VPN, 방화벽 등의 기능을 제공하는 Vyatta의 community fork 버전으로 라우터, 방화벽 등을 소프트웨어로 구현해서 설정 가능한 network 전용 OS라고 보면 된다. 가벼운 서버나 PC 같은 장비에 VyOS를 올리면 공유기를 대체해서 사용하는 것도 가능하다. (물론 LAN port 확장을 위해 랜카드가 추가로 필요하겠지만) 리눅스 기반이기 때문에 ssh 접속부터 일반적인 command 사용이 가능하고 network 전용 OS 답게 기능 설정을 위한 별도의 command set도 제공된다.

어디까지나 MAAS 구축을 위해 필요에 의해서 진행한 내용이고 (MAAS 구축하기 참조) 사실 network 분리, NAT 구성은 여러가지 방법이 있을 수 있지만 공부 혹은 연습을 위한 것이라 비효율적으로 보일 수 있겠다는 생각도 든다.

 

1. vSwitch / Port group 추가를 통한 network 분리 준비

ESXi 기준으로 보면 단순히 하나의 vSwitch에 port group만 추가해서 설정해도 network 분리는 가능할 것 같다. 아래 그림처럼 기본으로 존재하는 vSwitch0에 기존에 사용하는 VM Network 이란 port group이 있는 상태에서 maas-cluster-switch라는 vSwitch를 추가했다. 다시 maas-cluster-switch에는 VM 연결을 위한 maas-network이라는 port group을 추가했는데 vSwitch0와 달리 물리 어댑터에 연결된 상태가 아니기 때문에 maas-network에 붙은 VM들은 기본적으로 외부 인터넷과의 통신이 불가능하다.

vswitch

단절된 maas-network이 외부 인터넷과의 통신을 가능하게 하기 위해 NAT (Network Address Translation) 가 필요하다.

 

2. 설치

VyOS 설치를 위해 VM을 하나 생성하고 VyOS user guide에 기술된 대로 진행하면 설치는 간단하게 끝낼 수 있다. (설치에 필요한 ISO image는 VyOS wiki main에 링크되어 있음) 단, 설치 전이나 후에 VyOS VM에 VM Network과 maas-network과 연결하는 NIC 2개를 붙여주어야 한다.

 

3. NAT 구성

사실 user guide에 다 기술되어 있는 내용이지만 부분별로 나누어서 봤을 때 우선 interface 기본 설정을 해야 한다. Configuration mode로 진입해서 아래의 command를 입력한다. (eth0가 VM Network에 연결된 interface이고 eth1이 maas-network에 연결된 interface인 경우를 가정)

[bash]

set interfaces ethernet eth0 address dhcp

set interfaces ethernet eth0 description 'PUBLIC'

 

set interfaces ethernet eth1 address '192.168.100.1/24'

set interfaces ethernet eth1 description 'PRIVATE'

[/bash]

eth0는 공유기의 DHCP가 할당한 ip를 사용하기 때문에 dhcp를 지정했고 eht1의 경우에는 VyOS에서 dhcp로 할당할 ip 대역(192.168.100.0/24를 사용할 예정)의 gateway가 될 것이기 때문에 위와 같이 지정했다.

다음으로 NAT 구성을 위해 아래의 command를 입력한다.

[bash]

set nat source rule 100 outbound-interface 'eth0'

set nat source rule 100 source address '192.168.100.0/24'

set nat source rule 100 translation address masquerade

[/bash]

매우 간단하다. 여기까지 진행된 후에 commit을 입력하면 수정내용이 반영되고 save 명령을 실행하면 영구 저장된다.

 

4. DHCP 구성

maas-network에 연결될 VM들이 ip를 할당받아야 하기 때문에 dhcp 구성이 필요하다. 역시 아래의 command로 간단하게 처리할 수 있다.

[bash]

set service dhcp-server disabled 'false'

set service dhcp-server shared-network-name LAN subnet 192.168.100.0/24 default-router '192.168.100.1'

set service dhcp-server shared-network-name LAN subnet 192.168.100.0/24 dns-server '192.168.100.1'

set service dhcp-server shared-network-name LAN subnet 192.168.100.0/24 domain-name 'internal-network'

set service dhcp-server shared-network-name LAN subnet 192.168.100.0/24 lease '86400'

set service dhcp-server shared-network-name LAN subnet 192.168.100.0/24 start '192.168.100.10' stop '192.168.100.254'

[/bash]

다음은 DNS forwarder 설정.

[bash]

set service dns forwarding cache-size '0'

set service dns forwarding listen-on 'eth1'

set service dns forwarding name-server '8.8.8.8'

set service dns forwarding name-server '8.8.4.4'

[/bash]

위 command 들은 dhcp를 활성화시킨 후 dns, lease time 등의 기본적인 설정을 진행한 것인데 필요하다면 lease time, dhcp 할당 범위 등을 적당히 조절해서 설정하면 되겠다. 역시 저장을 위해 commit, save 명령을 실행하고 exit 명령으로 configuration mode를 빠져나오면 완료. VyOS user guide에서는 방화벽 등의 추가 설정을 하도록 되어있으니 필요한 경우 별도로 진행하면 될 것 같다.

 

5. 결과

간단하게 VyOS에서 몇가지 설정만 하는 것으로 결과적으로 내가 원하는 이런 그림이 되었는데, VyOS가 192.168.100.0/24 대역을 DHCP로 만들어주고, 물리적으로는 단절된 해당 네트웍 대역이 외부로 나가기 위해 192.168.10.0/24 대역에 연결된 NIC을 NAT로 거치게 됨으로써 이제 외부 인터넷과의 통신이 가능해졌다.

maas-network

· 7 min read

U+ TV 사용시 불편한 점 하나가 그들의 공유기(나의 경우엔 LG-5000P)를 최상단에 위치시켜야 한다는 점이다.

일반적인 경우라면 문제가 없을 수 있지만 이미 공유기를 하나 사용중이었고 DDNS로 외부에서 접근하곤 했었는데 TV 하나 보자고 조치를 취해야 하는 상황이었다. 초기에는 설치된 상태를 바꿔 LG 공유기를 내 공유기 아래에 붙여 봤었는데 얼마 안가서 TV가 안나오기 시작했다. (지금은 어쩌면 변경할 경우 처음부터 아예 안되게 막혀있는지도 모른다) 고객센터에 전화해서 얘기도 몇번인가 했었는데 기술부서와 연결이 되서 대화해봐도 그들의 공유기가 최상위가 아니면 안된단다. DDNS가 꼭 필요한 것은 아니었지만 외부에서 내 공유기 네트웍에 연결하고 싶었다.

1. 초기 상태

home-nat그림처럼 LG-5000P가 집 내부 네트웍의 최상위에 있고 TV를 제외한 device들은 무선으로 IPTIME 공유기에 붙어있다. 인터넷 연결에는 별 문제가 없는 상황이지만 IPTIME 공유기가 DHCP로 내부 IP를 할당받아 동작하고 있기 때문에 외부에서 접근하지 못한다. 내 공유기를 서랍에 모셔두고 LG 공유기만 사용하면 되지 않느냐 할 수 있지만 LG-5000P는 무선 네트웍이 안된다. (무선이 되는 다른 모델을 받을 수도 있긴 하다) 그리고 포트포워딩 등의 설정을 옮기는 작업이 싫었다. 해본 사람들은 느끼겠지만 LG-5000P 관리화면에 접속하는 순간 그냥 브라우저를 닫고 싶어진다.

2. 일반적인 조치방법들

사용자가 많아져서인지 처음 사용하기 시작했던 2~3년 전보다 알아서 조치해서 사용하는 사례가 많이 보이는데 대충 이렇다.

(1) MAC address 복제

아마도 인증 등의 과정에 LG 공유기의 MAC이 이용되는게 아닌가 싶은데 개인 공유기의 MAC을 LG의 MAC으로 교체하면 LG 공유기는 서랍에 던져놔도 된다고 한다. (IPTIME 공유기의 경우 최근 firmware로 업데이트 해보면 IPTV 설정을 업체별로 할 수 있는 기능도 제공한다.) 이게 제대로만 된다면 가장 깔끔한 방법일 것 같은데 과거에는 TV 볼 때 끊김이 있거나 하는 문제상황들에 대한 글들을 본 기억이 있다.

(2) DMZ 사용

(1)과는 달리 공유기를 모두 사용하되 하단에 위치한 개인 공유기를 LG 공유기의 DMZ에 넣어두고 사용하는 방법이다.

3. Bridged

내 공유기 네트웍에 연결하지 못하는 것은 공유기 IP가 NAT로 동작하는 LG 공유기에서 할당된 내부 IP인 것이 원인이다. 그렇기 때문에 공유기 IP를 LG 공유기 위에서 받을 수 있기만 하면 된다. (LG 공유기도 상위에서 할당받은 외부에서 접근 가능한 IP가 설정되어 있고 개인 공유기를 최상단에 위치하는 것과 같은 효과) 그래서 LG 공유기를 Bridge mode로 변경해보기로 했다. 역시 손대기 싫었던 LG-5000P 관리화면에서 설정을 변경했고 대충 이런 모양으로 바뀌었다. (물리적인 변경은 없음)

home-bridgeTV와 내 공유기가 LG-5000P와 같은 네트웍 대역에서 동일한 위치로 올라왔고 각각 외부에서 접근가능한 IP를 할당받았고 IPTIME의 DDNS에서도 과거엔 등록된 호스트를 찾지 못하다가 정상상태가 되었다. 한 사용자가 외부 IP를 여러개 할당받는게 가능한지 의심스러웠는데 아직 큰 문제는 없는 것 같다.

4. 결론

물리적인 변경없이 NAT를 bridge로 변경하는 것만으로도 필요한 걸 얻을 수 있었다. 하지만 mode 변경 후 IPTIME 공유기가 새로운 IP 할당받는데 시간이 꽤 소요되는 현상이 있었고 이것 때문인지 가끔 TV나 인터넷 연결이 끊어지는 것 같은 느낌이 드는 경우가 있었다. 이런 현상이 지속되면 MAC address 복제하는 방법을 시도할 생각이다.

Update #1.

Bridge mode에서 인터넷, TV 모두 끊기는 현상이 지속되서 결국 MAC address 복제하는 방법을 사용했다.