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 에 위치하여 있습니다.
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