udpnat
v0.3: Now with actual hash table
NAT متوافق مع P2P UDP فقط لنظام التشغيل Linux.
عادةً ما يتم إعداد NAT على نظام Linux باستخدام هذا الأمر:
iptables -t nat -A POSTROUTING -j MASQUERADE
وهذا يجعل مخروط NAT مقيدًا بالمنافذ وهو غير ملائم لثقب UDP الذي تستخدمه تطبيقات نظير إلى نظير.
هذا البرنامج عبارة عن NAT بسيط لمساحة المستخدم يقوم بفك تشفير حزم UDP المرسلة إلى واجهة TUN ويستخدم مآخذ التوصيل غير الأولية المعتادة للاتصالات الصادرة، إلى حد ما مثل SLiRP.
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
القيود:
يوجد إصدار x86_64 ثابت يستند إلى musl في إصدارات Github.
الترخيص: معهد ماساتشوستس للتكنولوجيا أو أباتشي 2.0.