My idea is to maintain a table of RTP servers, if that is possible. RTP uses any unprivileged port (or a port above 1024) to send traffic on. Your rule would be a rule that would allow any of that unprivileged UDP traffic from only those hosts. It's not the perfect solution, but probably is the most viable one. As far as I know, there is no proxy application that can handle RTP, but you may want to investigate that further.
pass in log inet proto udp from <rtp_servers> to $int:network port > 1024 > Effectively, it uses RTP. > However, I'm not sure I don't quite understand your idea. How would > the table be updated with which ports to redirect? Or do you mean it > to be static with the port range currently in use? > > The port used seems to be random between 50000 and 60000 (something I > have not found a reference to in anything liked to RTP). Redirecting > them with a rule like "rdr pass on $extif proto udp from any to $extif > port 50000:60000 -> $mypc" should work, but this does not seem like > the proper solution. Or am I wrong? (= > > Isn't there a way to have this work so that, in future, MORE than one > PC can use RTP? This isn't a MUST right now, but I would prefer to > find some solution that would work in future. > > BTW James: Thank you very much, pointing out that XMPP's > video-conference implementation uses RTP helped me google A LOT more > info on the subject :) <quote who="Hugo Osvaldo Barrera"> > On Thu, Apr 8, 2010 at 10:21, James Shupe <professio...@jamesshupe.com> > wrote: >> Forgot to send to the list, twice! >> >> If it's RTP, >> (http://en.wikipedia.org/wiki/Real-time_Transport_Protocol), >> which some quick Googling indicates, your best bet may be to make a >> table >> of sending hosts with a pass ... inet proto udp ... from <table> to ? >> port >>>1024 rule. >> >> <quote who="Hugo Osvaldo Barrera"> >>> On Thu, Apr 8, 2010 at 00:54, James Shupe <professio...@jamesshupe.com> >>> wrote: >>>> Use "log (all)" and tcpdump to figure out exactly what is being >>>> blocked. >>>> >>>> On 4/7/10 10:40 PM, Hugo Osvaldo Barrera wrote: >>>>> I'm using OpenBSD 4.6 at home as an access point, firewall and home >>>>> server (with pf). >>>>> I've recently had some issues trying to use pidgin's [XMPP] video >>>>> support on one of my client computers, yet, if I connect it directly >>>>> to the internet it works fine; hence the problem is the firewall >>>>> configuration (as one of the pidgin devs pointed out it might have >>>>> been). >>>>> I THINK UDP packets are being dropped, but I must really say, this >>>>> problem is a bit above my level of understanding. >>>>> >>>>> I need to know how to make sure UDP packets don't get dropped on the >>>>> way to my PC, but i'm not really sure how. >>>>> >>>>> I think a simple "pass in proto udp" is a bit extremist (though it >>>>> would >>> work). >>>>> Any better suggestions? >>>>> >>>>> My current pf.conf file is: >>>>> >>>>> ----- >>>>> # $OpenBSD: pf.conf,v 1.44 2009/06/10 15:29:34 sobrado Exp $ >>>>> # >>>>> # See pf.conf(5) for syntax and examples; this sample ruleset uses >>>>> # require-order to permit mixing of NAT/RDR and filter rules. >>>>> # Remember to set net.inet.ip.forwarding=1 and/or >>> net.inet6.ip6.forwarding=1 >>>>> # in /etc/sysctl.conf if packets are to be forwarded between >>>>> interfaces. >>>>> >>>>> # Skip lo >>>>> set skip on lo >>>>> >>>>> ############# >>>>> # Variables # >>>>> ############# >>>>> extif = "re0" >>>>> intif = "ral0" >>>>> chaos = "172.16.1.7" >>>>> mamaquina = "172.16.1.12" >>>>> >>>>> tcp_services="{ 22, 113, 80, 443 }" >>>>> >>>>> icmp_types = "echoreq" >>>>> allproto = "{ tcp, udp, ipv6, icmp, esp, ipencap }" >>>>> privnets = "{ 127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8 >>>>> }" >>>>> >>>>> table <intnet> { 172.16.0.1/16 } >>>>> >>>>> # Options >>>>> set loginterface $extif >>>>> match in all scrub (no-df) >>>>> >>>>> ####### >>>>> # NAT # >>>>> ####### >>>>> nat on $extif from $intif:network -> ($extif) >>>>> # TODO Maybe move this down to service ports? Check first. >>>>> rdr pass log on $extif proto tcp from any to any port 1022 -> $chaos >>>>> port >>> 22 >>>>> >>>>> block in >>>>> pass out keep state >>>>> >>>>> antispoof quick for { lo $intif } >>>>> >>>>> block drop in on $extif from $privnets to any >>>>> block drop in on $extif from any to $privnets >>>>> >>>>> ################# >>>>> # SERVICE PORTS # >>>>> ################# >>>>> >>>>> # Open ports for local servicesAbro puerto de servicios locales >>>>> pass in on $extif inet proto tcp from any to ($extif) port >>>>> $tcp_services flags S/SA keep state >>>>> >>>>> ### OTHER PORTS AND OPENINGS >>>>> pass in on $extif from any to 172.16.1.7 >>>>> pass in on $extif from any to 172.16.2.4 >>>>> >>>>> pass in on $extif proto {tcp, udp} from any to any port 53 >>>>> >>>>> # ICMP Traffic >>>>> pass in inet proto icmp all icmp-type $icmp_types keep state >>>>> >>>>> # LAN - everything is allow in/out >>>>> pass in quick on $intif >>>>> pass out quick on $intif >>>>> >>>>> >>>>> ### Block remote connections to the X Server >>>>> block in on ! lo0 proto tcp to port 6000:6010 >>>>> ----- >>>>> >>>>> Thanks for your time guys! >>>>> >>>>> -- >>>>> Hugo Osvaldo Barrera >>>>> >>>>> >>>>> >>>> >>>> >>>> >>> >>> As I had supposed; pf is blocking the UDP packages: >>> >>> Apr 08 01:31:58.241781 rule 1/(match) block in on re0: >>> <the-other-IP>.59789 > <my-ip>.50688: udp 56 >>> Apr 08 01:31:58.363252 rule 1/(match) block in on re0: >>> <the-other-IP>.59792 > <my-ip>.52166: udp 56 >>> Apr 08 01:31:58.363991 rule 1/(match) block in on re0: >>> <the-other-IP>.59793 > <my-ip>.50688: udp 56 >>> >>> There are several more dozen lines like this one. >>> However, each one uses a different port, so how can I solve the >>> problem? I don't even see a predicting which ports I'd need to open >>> (they ARE random). >>> >>> >>> >>> >> >> >> -- >> Thank you, >> James M. Shupe >> GPG: 9C5C4417 >> >> > > Effectively, it uses RTP. > However, I'm not sure I don't quite understand your idea. How would > the table be updated with which ports to redirect? Or do you mean it > to be static with the port range currently in use? > > The port used seems to be random between 50000 and 60000 (something I > have not found a reference to in anything liked to RTP). Redirecting > them with a rule like "rdr pass on $extif proto udp from any to $extif > port 50000:60000 -> $mypc" should work, but this does not seem like > the proper solution. Or am I wrong? (= > > Isn't there a way to have this work so that, in future, MORE than one > PC can use RTP? This isn't a MUST right now, but I would prefer to > find some solution that would work in future. > > BTW James: Thank you very much, pointing out that XMPP's > video-conference implementation uses RTP helped me google A LOT more > info on the subject :) > > > > -- Thank you, James M. Shupe GPG: 9C5C4417