Oh, I see, I missed this part from the OP:
I set my server to port 28960, not 28961 as targeted by your ipconfig rules. I removed the more restrictive rule I was using, re-added the rules from the OP with corrected dport, and everything works as intended. Thanks for the explanation!
Noob question: Are there reasons to run a COD2 server on a port other than the default 28960, besides to avoid conflicts with other apps running on the server? I can imagine running multiple COD2 dedicated servers from the same box, but is there anything else?
Edit: I did try using libcod2_1_3_nomysql.so (2013-Aug-30) from here, but no luck. (I did set sv_cracked correctly.) I'll try with the 2015-Jan-29 versions later, but I'm satisfied with my setup for now. Thanks again.