udpnat
v0.3: Now with actual hash table
Linux용 P2P 친화적 UDP 전용 NAT.
일반적으로 NAT는 다음 명령을 사용하여 Linux 상자에 설정됩니다.
iptables -t nat -A POSTROUTING -j MASQUERADE
이는 P2P 애플리케이션에서 사용되는 UDP 홀 펀칭에 적합하지 않은 포트 제한 콘 NAT를 만듭니다.
이 프로그램은 TUN 인터페이스로 전송된 UDP 패킷을 디코딩하고 SLiRP와 유사한 나가는 연결을 위해 일반적인 비 원시 소켓을 사용하는 간단한 사용자 공간 NAT입니다.
host@user$ stun stun.counterpath.net
Primary: Independent Mapping, Port Dependent Filter, preserves ports, no hairpin
gateway@root# ip tuntap add dev udpnat mode tun user udpnat_user
gateway@root# ip link set udpnat up
gateway@root# echo 0 > /proc/sys/net/ipv4/conf/udpnat/rp_filter
gateway@root# echo 1 > /proc/sys/net/ipv4/conf/udpnat/forwarding
gateway@root# iptables -t mangle -I PREROUTING -i tun0 -p udp ! --dport 53 -j MARK --set-xmark 44
gateway@root# iptables -t mangle -I PREROUTING -i udpnat -p udp -j MARK --set-xmark 45
gateway@root# iptables -t nat -I POSTROUTING -m mark --mark 44 -j RETURN
gateway@root# iptables -t nat -I POSTROUTING -m mark --mark 45 -j RETURN
gateway@root# ip route add default dev udpnat table 44
gateway@root# ip rule add fwmark 44 table 44
gateway@udpnat_user$ ulimit -n 8192
gateway@udpnat_user$ udpnat /dev/net/tun udpnat 60
host@user$ stun stun.counterpath.net
Primary: Independent Mapping, Independent Filter, preserves ports, no hairpin
제한사항:
Github 릴리스에는 x86_64 정적 musl 기반 버전이 있습니다.
라이센스: MIT 또는 Apache 2.0.