메인 항목으로

Apple TV (BTV) 설정

Unifi OS 8.x로 오면서 igmpproxy라는 옵션이 제공 됩니다. 기본적으로 igmpproxy을 활성화하면 IPTV 시청이 가능해지나 현재 기능이 잘 동작하지 않아 TV는 나오지만 지속적으로 끊어지는 문제가 발생 됩니다. (채널 변경 시 5분마다 멈춤)

이런 문제점 때문에 일단 이 기능을 비활성화하고, igmpproxy 데몬을 이용한 방법을 설명합니다.

IPTV9.jpg

 
1. VLAN 생성

  • "Network > 설정 > 네트워크"에서 "새로운 가상 네트워크"를 누릅니다. 네트워크 이름을 지정하고 사용할 IP 대역 정보를 넣어줍니다. 밑부분 IGMP Snooping, 멀티테스크 DNS는 체크해 줍니다. (SKB TV를 위한 VLAN 대역대는 반드시 192.168.33.1 대역대로 설정해야 합니다.)

    IPTV1.jpg

2. 멀티캐스트 DNS 및 IGMP Snooping 설정 확인

  • VLAN ID (5)에 IPTV가 생성 됐음을 확인하고, 아래와 같이 설정을 합니다.

    IPTV2.jpg


3. 방화벽 규칙 설정 #1

"네트워크 > 보안 > 방화벽 규칙"으로 이동하여 항목 만들기를 눌러줍니다.

  • 유형 : 인너넷 인
  • 이름 : Allow IPTV Mulicast
  • 작업 : 수락
  • 프로토콜 : TCP 및 UDP
  • 소스 : "주소그룹" 옆 신규를 누른 후  프로필 이름을 "BTV"로 넣고 IPv4 주소.서브넷에 "192.168.0.0/16"를 넣고 만들기를 눌러줍니다. "주소그룹"에서 BTV를 선택 합니다.
  • 목적지 : "주소그룹" 옆 신규를 누른 후  프로필 이름을 "IGMP"로 넣고 IPv4 주소.서브넷에 "224.0.0.0/4"를 넣고 만들기를 눌러줍니다. "주소그룹"에서 IGMP를 선택 합니다.
  • 고급 : 일치상태는 전부 체크하고, IPSec은 "일치하지 않음"을 선택 후 "규칙 추가"를 눌러 줍니다.

    IPTV3.jpg

4. 방화벽 규칙 설정 #2

다시 "네트워크 > 보안 > 방화벽 규칙"으로 이동하여 항목 만들기를 눌러줍니다.

  • 유형 : 인터넷 로컬
  • 이름 : Allow IGMP Traffic
  • 작업 : 수락
  • 프로토콜 : "사전 정의 이전" 체크를 풀고, IGMP를 선택해 줍니다.
  • 소스 : 아무것도 건들지 않음
  • 목적지 : 아무것도 건들지 않음
  • 고급 : 일치상태는 전부 체크하고, IPSec은 "일치하지 않음"을 선택 후 "규칙 추가"를 눌러 줍니다.

    IPTV8.jpg


5. igmpproxy 설치

DM Pro에 ssh 접속을 해야 합니다. ssh 접속은 UniFi OS의 "Console Settings"에서 Advanced에 있는 SSH를 체크 후 비밀번호를 생성해 주면 접속할 수 있습니다.



1) 터미널 프로그램에서 호스트 192.168.1.1 (포트는 기본 22), id는 root, password는 위에서 입력한 값을 넣어 ssh 접속을 합니다.
2) igmpproxy를 설치해 줍니다.

cd /mnt
mkdir data
mkdir data/igmpproxy
cd /mnt/data/igmpproxy
curl -Lo igmpproxy https://raw.githubusercontent.com/peacey/udm-telus/main/igmpproxy
curl -Lo igmpproxy.conf https://raw.githubusercontent.com/peacey/udm-telus/main/igmpproxy.conf
chmod +x igmpproxy

3) 먼저 각 포트별 값 확인을 위해 아래 명령을 실행 합니다.

ifconfig
  • 여기서 brXX가 VLAN 식별자이고, ethXX는 LAN돠 WAN 포트 번호 입니다.
  • upstream과 downstream 포트를 찾아야 하는데 합니다.
  • upstream의 경우 RJ45 WAN이면 eh8이고 SFP WAN이면 eh9 입니다.
  • downstream의 경우 brXX 쪽에서 부여하신 IP 범위 값으로 해당 포트 값을 찾아 줍니다. 제 경우 192.168.33.1 이므로 br5가 해당 포트임을 확인 할 수 있습니다.

4) igmpproxy.conf를 수정해 줍니다. (손쉬운 수정을 위해 nano를 sudo apt install nano 명령어로 설치해 줍니다.)

nano /mnt/data/igmpproxy/igmpproxy.conf
  • nano를 설치하지 않을 시 vi로 수정하시면 됩니다. (사용 방법은 생략)
  • upstream 부분을 eh8로 수정 합니다.
  • downstream 부분을 br5로 수정합니다.
  • 작성 후 ctrl + x를 눌러 빠져나와 y를 눌러 저장해 줍니다.
  • 작성된 예제는 아래와 같습니다.
quickleave

# upstream = modem interface
phyint eth8 upstream ratelimit 0 threshold 1
        altnet 0.0.0.0/0;

# lan interface of iptv device
phyint br5 downstream ratelimit 0 threshold 1
        altnet 0.0.0.0/0;

# disable all unused interfaces
phyint lo disabled
phyint eth9 disabled
  • 작성한 문장이 잘 동작되는지 확인 합니다. 정상 작동을 확인하고 Ctrl + c로 종료 합니다.
./igmpproxy -ndv ./igmpproxy.conf

6. igmpproxy 데몬 실행 

./igmpproxy ./igmpproxy.conf


7. Apple TV 네트워크 VLAN 설정

  • "Network > 포트"에서 Apple TV를 찾아 들어갑니다.

IPTV6.jpg

  • 기본 VLAN/네트워크를 IPTV로 변경해 줍니다.

    IPTV7.jpg

  • Apple TV를 재기동하면 IPTV VLAN에서 DHCP IP를 받아 옵니다.

8. 자동 시작 스크립트

UDM Pro를 재부팅 시 igmproxy 자동 시작 스트립트는 아래와 같습니다.

먼저 UDM Boot Script를 설치해야 합니다.

curl -fsL "https://raw.githubusercontent.com/unifi-utilities/unifios-utilities/HEAD/on-boot-script/remote_install.sh" | /bin/sh

설치를 하고 "/data/on_boot.d"로 이동 후 자동시작 스크립트를 작성하시면 됩니다.

cd /data/on_boot.d
curl -Lo 99-run-igmpproxy.sh https://raw.githubusercontent.com/peacey/udm-telus/main/run-igmpproxy.sh 
chmod +x 99-run-igmpproxy.sh

auto_start.jpg