UniFi - config.gateway.json로 USG 환경설정 커스터마이제이션하기

download at 2017-09-09T02:13:08Z origin

Overview


이 문서는 config.gateway.json 파일을 생성하고 어떻게 사용하는지 서술합니다. 해당 파일은 USG의 고급 환경 설정에 사용합니다. 해당 파일은 프로비전을 수행해도 커스터마이징 한 내용을 바뀌지 않도록 합니다.

config.gateway.json로 USG 환경설정 커스터마이제이션하기


config.gateway.json 파일로 수정을 할 떄에는 컨트롤러 UI로 실행할 수 없는 커스터마이제이션을 수행할 수 있도록 합니다. USG 부팅시에 포매팅 에러가 발생하면 루프가 발생하기 떄문에 많은 노력이 필요합니다.

일부 사용자는 환경설정 파일 내용 전부를 덤프하여 위 이슈를 우회할 수도 있지만, 다른 이슈를 발생할 수도 있습니다. 컨트롤러 UI로 설정 값을 변경할 때에도 bootloop 을 발생할 수도 있습니다.

기본 값으로 해당 파일은 존재하지 않습니다. 이 옵션을 사용하기 위해서는 파일을 생성해야 합니다. config.gateway.json 파일은 컨트롤러의 <unifi_base>/data/sites/the_site 에 위치하여 있습니다.

info_i_25x25.png

Note

<unfi_base> 위치는 OS 마다 다릅니다. 이 문서 를 참조하십시오.

https://127.0.0.1:8443/manage/s/ceb1m27d/dashboard

모든 사이트마다 고유의 랜덤 스트링이 사이트에 할당됩니다. 위의 경우에서는 ceb1m27d 가 폴더 이름이며 <unifi_base>/data/sites/ 아래에 위치합니다. 그러므로 이 경우에서는 해당 랜덤 스트링 이름으로 폴더를 생성하고, 해당 디렉토링 아래에 config.gateway.json 파일을 생성합니다.

커스터마이징을 수정하기 이전에, 기존의 config.boot 파일이 존재하는지 체크하여 룰 넘버를 사용하고 있는지 확인합니다. 이 과정을 다양한 방법으로 수행할 수 있습니다. 이 문서에서는 SSH를 통해서 수행합니다.

cat /config/config.boot

이 예제에서는 DNS에 DNAT룰을 생성합니다. EdgeOS 포매팅을 사용하여 설정합니다:

configure
set service nat rule 1 type destination
set service nat rule 1 inbound-interface eth0
set service nat rule 1 protocol tcp\_udp
set service nat rule 1 source port 53
set service nat rule 1 inside-address address 10.0.0.1
set service nat rule 1 inside-address port 53
commit;save;exit*

위의 내용을 수행하면 config를 내보낼 수 있습니다 다음으로 수행합니다:

mca-ctrl -t dump-cfg

파일로 내보내는 것은 관련 없습니다. 파일로 내보내고 싶다면 다음으로 수행합니다:

mca-ctrl -t dump-cfg > config.txt

config 파일은 다음과 같이 수정할 수 있습니다:

"nat": {
  "rule": {
    "1": {
      "destination": {
        "port": "53"
      },
      "inbound-interface": "eth0",
      "inside-address": {
        "address": "10.0.0.1",
        "port": "53"
      },
      "protocol": "tcp_udp",
      "type": "destination"
    },

이제 커스텀 룰을 생성했지만, 전체적으로는 올바른 포맷이 아닙니다. 올바른 포맷으로 다음과 같이 생성합니다:

{
         "service": {
                "nat": {
                          "rule": {
                                 "1": {
                                         "destination": {
                                                 "port": "53"
                                         },
                                         "inbound-interface": "eth0",
                                         "inside-address": {
                                                 "address": "10.0.0.1",
                                                 "port": "53"
                                         },
                                         "protocol": "tcp_udp",
                                         "type": "destination"
                                 }
                         }
                   }
         }
  }

새로운 섹션을 추가하고 싶다면 VPN 대신 서비스를 사용합니다. 아래의 포맷을 따르며 , 로 구분하여 중괄호로 감싸서 다음 섹션을 추가할 수 있습니다. 즉 VPN이라는 다른 섹션을 추가하면 됩니다.

원하는 json validator 를 사용해서 json 포맷이 올바른지 확인해보는 것은 좋은 습관입니다.

이 방식은 config.gateway.json 파일을 생성하는 좋은 통찰을 얻을 수 있습니다. 다른 환경설정과 이러한 json 파일로 대체할 수 있습니다.

사용자 노트 & 팁


  • 우분투에서 .json 파일의 인스톨 되는 경로는 : /usr/lib/unifi/data/sites/[site name/default]/ 입니다.
  • json의 유효성을 검사하는 가장 쉬운 방법은 파이썬을 사용하는 방법입니다: python -m json.tool config.gateway.json