서문
이전에 이 블로그 글에서 가족과 함께 영상을 감상하는 방법에 대해 이야기했는데, 그중 하나는 다른 사람들이 추출한 IPTV 프로그램 주소(m3u 확장자)를 네트워크에서 찾아 iPlayTV에 넣으면 바로 재생할 수 있다는 점이었습니다. 하지만 이 프로그램 주소는 일정 시간이 지나면 더 이상 작동하지 않는데, 이는 중국연통(联通) IPTV 서버가 주기적으로 프로그램 재생 주소를 업데이트하기 때문입니다. Apple TV에 입력된 주소는 고정되어 있어 실시간으로 업데이트할 수 없으므로, 이 글에서는 이 문제를 해결하는 방법을 소개합니다.
**사용 전 필독:** 저는 베이징(北京) 지역의 중국연통(联通) 광대역을 사용하며, **광모뎀(光猫)은 브리지 모드로 설정하고, 라우터가 PPPoE를 담당하며, 소프트웨어 라우터 R4S는 서브 라우터**로 연결되어 있습니다. 이 튜토리얼은 해당 토폴로지 구성을 기준으로 설명합니다. 다른 네트워크 토폴로지(예: "광모뎀 브리지 + R4S를 메인 라우터로 PPPoE 연결" 또는 "광모뎀 PPPoE + R4S 서브 라우터")에서도 구현할 수 있지만, R4S 설정의 핵심 부분은 이 튜토리얼과 약간 다를 수 있습니다. 여러 자료를 참고하여 핵심 원리를 이해하고, 반드시 제 방법과 동일하게 할 필요는 없습니다.
마찬가지로, 광모뎀에서 직접 PPPoE를 사용하는 경우, 광모뎀에서 케이블을 하나 빼서 서브/메인 라우터에 연결하여 멀티캐스트를 유니캐스트로 변환할 수 있습니다. 또는 지원되는 기기에서 직접 멀티캐스트 주소를 사용하여 재생할 수도 있으므로 제 방법처럼 복잡할 필요는 없습니다. 이는 각 가정의 네트워크 토폴로지에 따라 달라집니다.
이 튜토리얼은 베이징 지역의 중국연통 IPTV에서만 테스트되었으며, 다른 지역에서는 차이가 있을 수 있습니다. 본문에서 지역과 강하게 연관된 내용을 발견하면 해당 지역에 맞게 내용을 수정하세요.
설정을 변경하기 전에 모든 라우터 및 기기의 설정을 미리 백업하여 문제가 발생할 경우 대비하세요.
제가 사용하는 소프트웨어 라우터는 R4S이며, 두 개의 네트워크 포트가 있습니다. 저와 같은 네트워크 토폴로지를 사용하는 경우, 소프트웨어 라우터에 최소 두 개 이상의 네트워크 포트가 있어야 합니다. 하나는 메인 라우터에 연결하고, 다른 하나는 광모뎀에 연결해야 하기 때문입니다.
저희 집의 광모뎀 네트워크 대역은 192.168.1.x이며, 메인 라우터 네트워크 대역은 192.168.5.x입니다. 광모뎀 주소는 192.168.1.1이고, R4S 주소는 192.168.5.2이며, 메인 라우터 LAN 포트 주소는 192.168.5.1, 라우터 WAN 포트 주소는 192.168.1.2입니다.
무료 사용 가능 여부 확인
현재 베이징 지역의 IPTV에는 인증 절차가 추가되지 않았지만, 제가 확인한 정보에 따르면 다른 지역의 일부 통신사는 IPTV에 암호화 인증을 적용하고 있습니다. 즉, 통신사에서 제공한 IPTV 셋톱박스의 MAC 주소로 연결해야(셋톱박스가 복호화 역할을 함) 셋톱박스를 사용하지 않고 소프트웨어 라우터를 통해 LAN 내 모든 기기에서 재생할 수 있습니다. 이를 구현하는 방법은 복잡하므로 이 튜토리얼에서는 해당 시나리오를 다루지 않습니다.
VLC 미리 다운로드
광모뎀을 브리지 모드로 설정하고 라우터가 PPPoE를 담당하는 방식으로 인터넷을 사용하면, 광모뎀에 연결된 상태에서는 인터넷을 사용할 수 없습니다. 따라서 테스트를 위해 미리 컴퓨터에 VLC 플레이어를 다운로드하세요. VLC 플레이어는 다음 주소에서 다운로드할 수 있습니다:
광모뎀 연결
컴퓨터를 유선으로 광모뎀의 IPTV 포트에 연결합니다(광모뎀에 IPTV 포트가 없다면, 광모뎀이 혼합 삽입을 지원한다는 의미로, 포트가 브로드밴드와 IPTV를 구분하지 않아 어떤 포트에 연결해도 상관없습니다). 그런 다음 VLC 소프트웨어에서:
-
File(파일) - Open Network(네트워크 열기)를 엽니다.
-
아래의 Open RTP/UDP Stream(RTP/UDP 스트림 열기)을 클릭합니다.
-
Protocol(프로토콜)은 RTP를 선택하고, Mode(모드)는 Multicast(멀티캐스트)를 선택합니다. IP Address(IP 주소)에는
239.3.1.241(또는rtp://239.3.1.241, 정확히 어느 것이었는지 기억나지 않습니다)를 입력하고, 포트에는8000을 입력합니다.
Open(열기)을 클릭한 후, 베이징 TV(北京卫视)를 볼 수 있다면 무료로 시청할 수 있다는 의미입니다.

여기의 `rtp://239.3.1.241:8000`는 베이징 위성 TV의 멀티캐스트 주소입니다. 이 주소는 나중에 변경될 수 있으며, 정확한 주소는 `https://raw.githubusercontent.com/qwerttvv/Beijing-IPTV/master/IPTV-Unicom.m3u` 여기에서 아무 rtp 경로 뒤의 IP 주소를 테스트해 볼 수 있습니다.
기본 개념 설명
이해하지 않으려면 다음 섹션으로 건너뛰세요.
IPTV
위키백과의 IPTV 설명에 따르면:
인터넷 프로토콜 텔레비전(영어: Internet Protocol Television, 약자: IPTV)은 브로드밴드 TV의 일종입니다. IPTV는 브로드밴드 네트워크를 매개로 TV 정보를 전송하는 시스템으로, 방송 프로그램을 브로드밴드의 인터넷 프로토콜(Internet Protocol, IP)을 통해 가입자에게 디지털 TV 서비스를 제공합니다. 네트워크 사용이 필요하기 때문에 IPTV 서비스 제공업체는 종종 인터넷 연결 및 IP 전화 관련 서비스를 함께 제공하며, 이를 "트리플 플레이" 또는 "삼합 서비스"(Triple Play)라고도 합니다. IPTV는 디지털 TV의 일종이므로 일반 TV는 해당 셋톱박스와 함께 채널을 수신해야 하며, 이에 따라 공급업체는 일반적으로 고객에게 주문형 비디오 서비스를 함께 제공합니다. 브로드밴드 네트워크와 인터넷 프로토콜을 통해 전송되지만, IPTV는 반드시 인터넷을 통해 전송되는 것은 아니며, 전송 품질을 위해 로컬 영역 네트워크를 통해 전송될 수 있습니다.
이를 통해 일반적으로 IPTV는 인터넷 서비스 제공업체가 제공하는 서비스이며, 이를 통해 TV를 시청할 수 있음을 알 수 있습니다.
멀티캐스트
IPTV를 구현하는 기술적 수단 중 하나로, 영어로는 'multicast’라고 하며, 다중 방송이라고도 번역됩니다. 구체적인 개념을 완전히 이해할 필요는 없지만, 유니캐스트에 비해 다음과 같은 장점이 있습니다:
-
인터넷 대역폭을 차지하지 않습니다.
-
IPTV 박스는 인증 역할을 하며, IPTV 사업자는 하나의 그룹에 브로드캐스트를 하기 때문에 서버 부하가 상대적으로 적습니다.
단점은 다음과 같습니다:
- 반드시 광모뎀의 IPTV 포트에 유선으로 연결해야 사용할 수 있습니다(일부 광모뎀은 IPTV 포트와 브로드밴드 포트를 구분하지 않는 혼합 삽입을 지원합니다). 따라서 IPTV 박스에 연결된 장치만 사용할 수 있으며, WiFi를 통해 가정 내 모든 장치에서 네트워크 TV를 시청할 수 없습니다.
유니캐스트
IPTV를 구현하는 또 다른 오래된 기술적 수단으로, 초기 IPTV 사용자가 많지 않을 때 이 방식을 사용했습니다. 멀티캐스트에 비해 상대방의 단점이 자신의 장점이 되며, 그 반대도 마찬가지입니다. 즉:
장점은 다음과 같습니다:
- 연결 후 로컬 네트워크에서 WiFi를 지원하여 모든 장치에서 재생할 수 있습니다.
단점은 다음과 같습니다:
-
서버와 1대1로 연결되며, 서버 부하가 크기 때문에 사용자가 많을 때 재생이 지연될 수 있습니다.
-
브로드밴드 대역폭을 차지하며, 인터넷 연결을 직접 사용하여 재생합니다(현재 라이브 스트리밍을 보는 것과 같습니다).
udpxy
udpxy 서버는 **UDP 스트림을 HTTP 스트림으로 변환하는 프록시 서버**로, IP 라이브 스트림을 HTTP 스트림으로 변환하여 다양한 단말기에서 쉽게 재생할 수 있도록 합니다.
멀티캐스트 주소를 직접 획득할 수 없는 경우, 멀티캐스트 주소를 유니캐스트 주소로 변환하는 데 사용됩니다. 예를 들어 멀티캐스트 주소가 a:b, d:e(a와 d는 IP 주소, b와 e는 포트)인 경우, 유니캐스트 주소로 변환하면 z/a/b, z/d/e와 같은 통일된 주소가 됩니다. 플레이어는 이 주소 z를 감지하면 됩니다.
m3u
**M3U**(MP3 URL의 약자)는 멀티미디어 재생 목록을 위한 파일 형식으로, 원래는 MP3와 같은 오디오 파일 재생을 위해 설계되었지만, 현재는 점점 더 많은 소프트웨어에서 비디오 파일 목록 재생 형식으로 사용되고 있습니다.
m3u 파일은 모든 멀티캐스트 재생 주소를 포함한 텍스트 파일입니다. Apple TV나 컴퓨터에서 이 파일 주소를 읽으면 해당 비디오 주소를 재생할 수 있습니다.
EPG
프로그램 정보를 포함합니다. 이전 단계에서 m3u 주소를 알게 되면, 그 안에는 각각의 IP 주소가 있습니다. 그렇다면 각 IP 주소가 어떤 채널인지 어떻게 알 수 있을까요? 이때 EPG가 필요합니다. EPG는 각 주소의 프로그램 정보, 심지어 채널의 간단한 소개까지 포함하고 있습니다. EPG는 일반적으로 비디오 신호와 함께 방송됩니다.
네트워크 토폴로지

실습 시작하기
시작하기 전에 앞서 설명한 대로 무료로 사용할 수 있는지 확인하세요.
소프트라우터 설정하기
udpxy와 luci-udpxy 설치하기
이 단계는 일반적인 작업입니다. UI를 통해 설치하는 것이 가장 편리하며, 아래 그림과 같습니다(설치 완료 후 바로 활성화하지 마세요. 마지막 단계에서 활성화합니다):

새 네트워크 인터페이스 생성/설정
이 단계는 소프트 라우터가 광모뎀으로부터 오는 데이터를 인식할 수 있도록 하는 것입니다.
네트워크-인터페이스에서 새 인터페이스를 생성하고, 이름을IPTV로 지정합니다:

화살표 부분에 주의하세요. 이미 새로 생성했기 때문에 괄호 안에 IPTV라는 문구가 있습니다. 처음 생성했을 때는 없었습니다. 여기서 eth1은 내 Lan 포트로, 메인 라우터에 연결되어 있고; eth0은 다른 인터페이스로, 광모뎀(IPTV 포트)에 연결되어 있습니다. 이 부분은 제가 수정한 적이 있는데, 기본적으로 eht0은 Lan 포트, eth1은 Wan 포트입니다. 중요하지 않으며, 이 단계는 Wan 포트를 IPTV 포트로 사용하는 것입니다.
- 「IPTV」 인터페이스의 게이트웨이 홉 및 방화벽 설정 구성:


- Wan 포트의 게이트웨이 홉 수 설정:

- LAN 포트 IGMP 스니핑 구성:

- 네트워크 방화벽 구성하기


udpxy 서비스 구성
- 그림과 같이 구성하면 되며, 여기서 eth0은 Wan 포트이므로 주의하세요:

마지막으로 [http://192.168.5.2:4022/status]([object Object])을 열어 udpxy 서비스가 성공적으로 시작되었는지 확인합니다:

이전에 VLC로 열었던 주소 rtp://239.3.1.241:8000를 `http://192.168.2.1:4022/rtp/239.3.1.241:8000``로 변경한 후 다시 열어보세요(아래의 Open RTP/UDP Stream을 클릭하지 말고 URL에서 직접 열기).

그런 다음 더블 클릭하여 재생하면 됩니다:

재생 소프트웨어 사용하기
저는 Apple TV 4K로 TV를 시청하는데, 여러 재생 소프트웨어를 시도해 봤습니다. 간단히 설명드리겠습니다:
-
iPlayTV는 재생이 안 되는데 이유를 모르겠습니다.
-
Fileball은 채널 위아래로 이동하는 건 문제없지만, 채널을 선택하면 바로 튕깁니다.
-
결국 IIVA와 같은 개발자의 앱인 「TV+」를 선택했습니다. 홍콩 스토어에서 38홍콩 달러에 구매했는데(구매 다음 날 무료로 풀려서 좀 당황스러웠습니다).
주소 자동 업데이트 구현 방법
연통(联通) IPTV의 프로그램 재생 주소는 일정 시간마다 한 번씩 변경됩니다. 때로는 포트가 바뀌고, 때로는 IP 주소가 바뀝니다. 이때 이 방법으로 재생하면 실패하게 되는데, 어떻게 해야 할까요?
인터넷에 친절한 분들이 있어서, 다음과 같은 복잡한 감청 작업을 통해:
IPTV 셋톱박스와 연통 서버 간의 통신 데이터를 얻어 그 주소를 확보했기 때문에, 우리는 이를 직접 사용하면 됩니다. 예를 들어:
하지만 여기서 중요한 점은, 집에서 사용하는 소프트라우터의 주소가 이 친절한 분의 주소와 동일해야 한다는 것입니다(192.168.123.1). 그리고 udpxy 포트를 23234로 변경한 후, 이 주소를 TV+에 바로 입력하면 됩니다:
그렇지 않으면, 해당 파일의 변경 사항을 직접 감지하고 업데이트해야 합니다.
여기서 저는 Vercel에 API 서비스를 10분 만에 배포했고, 동시에 Vercel의 Corn Jobs 서비스를 활성화하여 정기적으로 함수를 실행해 변경 사항을 감지할 수 있도록 했습니다. 코드는 다음과 같으며, 여러분도 직접 배포할 수 있습니다:
1 | |
Corn Jobs 서비스 구성:
1 | |
파일을 가져온 후 업데이트가 있으면 gist 파일이 자동으로 업데이트됩니다:
이렇게 하면, TV+에서 이 gist 주소를 하드코딩해두기만 하면, 네티즌이 이 주소를 업데이트할 때 자동으로 반영됩니다.

저는 인생의 중요한 선택의 기로에 섰을 때, 누군가 최선의 방법을 알려주어 소중한 시간을 헛되이 보내지 않기를 바라곤 합니다. 그런 마음으로 저는 자주 블로그를 쓰며, 광활한 인터넷의 이 작은 구석에 제게는 단 한 번뿐인 인생 경험을 기록하여 도움이 필요한 분들에게 도움이 되기를 바랍니다.