소개
Lost.PortForwarding는 NAT(네트워크 주소 변환) 장치 뒤에 있는 컴퓨터 간의 통신을 간소화하도록 설계된 C# 클래스 라이브러리입니다. UPNP(Universal Plug & Play) 및 PMP(Port Mapping Protocol)를 지원하는 NAT 장치에서 포트 포워딩을 쉽게 수행할 수 있게 해줍니다. 이 라이브러리는 피어투피어(P2P) 또는 프렌드투프렌드(F2F) 소프트웨어의 개발을 위해 외부 IP 주소를 가져오고 포트를 매핑하는 깔끔한 인터페이스를 제공합니다.
상세정보
NAT 장치 자동 발견
네트워크에 연결된 UPNP 또는 PMP를 지원하는 NAT 장치를 자동으로 검색합니다. 코드에서 discoverer.DiscoverDeviceAsync() 메서드를 호출하여 간단하게 장치를 찾을 수 있습니다.
외부 IP 주소 확인
발견된 NAT 장치를 통해 외부(공인) IP 주소를 가져올 수 있습니다. device.GetExternalIPAsync() 메서드를 사용하여 현재 네트워크의 외부 IP를 확인할 수 있습니다.
포트 매핑 생성
TCP 및 UDP 프로토콜에 대한 포트 포워딩 규칙을 생성합니다. 내부 포트와 외부 포트를 매핑하고, 매핑에 대한 설명을 추가하여 관리를 용이하게 합니다. device.CreatePortMapAsync() 메서드를 사용하여 포트 매핑을 설정합니다.
기본 사용법 및 예제
이 라이브러리는 NuGet 패키지로 제공됩니다. 프로젝트에 설치하려면 다음 명령을 사용할 수 있습니다:
Install-Package Lost.PortForwarding
외부 IP 주소 가져오기 예제
가장 간단한 시나리오로, 네트워크의 외부 IP 주소를 확인하는 예제입니다:
var discoverer = new NatDiscoverer();
var device = await discoverer.DiscoverDeviceAsync();
var ip = await device.GetExternalIPAsync();
Console.WriteLine(“The external IP Address is: {0} “, ip);
포트 매핑 생성 예제
UPNP 기반 NAT 장치를 발견하고 TCP 포트 1600을 1700으로 매핑하는 일반적인 시나리오입니다. 10초 이내에 장치가 발견되지 않으면 예외가 발생합니다:
var discoverer = new NatDiscoverer();
var cts = new CancellationTokenSource(10000);
var device = await discoverer.DiscoverDeviceAsync(PortMapper.Upnp, cts);
await device.CreatePortMapAsync(new Mapping(Protocol.Tcp, 1600, 1700, “The mapping name”));
이런 경우에 유용합니다
이 라이브러리는 NAT 환경에서 피어투피어(P2P) 통신이 필요한 개발자들에게 특히 유용합니다. 친구와 직접 게임을 호스팅하거나, 파일 공유 소프트웨어를 개발하거나, 원격 접근 솔루션을 구축할 때 NAT 장치로 인한 연결 문제를 해결할 수 있습니다. 또한, C# 또는 .NET 기반 네트워크 애플리케이션을 개발하는 과정에서 포트 포워딩 로직을 간편하게 통합할 수 있습니다.
제한 사항·확인 사항
이 라이브러리는 UPNP 또는 PMP를 지원하는 NAT 장치에서만 작동합니다. 모든 라우터가 이 프로토콜을 지원하지 않을 수 있습니다. 사용하는 네트워크 환경의 NAT 장치가 해당 프로토콜을 지원하는지 확인해야 합니다.
시스템 요구사항
C# 또는 .NET/Mono 개발 환경이 필요합니다. NuGet 패키지 매니저를 통해 설치할 수 있습니다.


