Hey peeps, here's a new script for multiple players with Starcraft 
battle.net behind a linux iptables firewall.

Tested with only 2 computers, so try it out and let me know.
#!/bin/bash
# Written by Myles Uyema; khisanth at uyema d0t net
#
# This is a script to allow Starcraft games to be hosted behind
# a Linux IPTables firewall.
# Tested with Starcraft and 2 machines behind the firewall.
# This may work for other Battle.Net RTS games as well... YMMV

# My Internet IP address
CABLEIP=12.93.33.58

# My PRIVATE LAN Network
# This script assumes Class C network
PRIVLAN=192.168.5

# Battle.Net port usually 6112
BNETPORT=6112

# Enter the last dotted quad IP address of each PC
# We're assuming all the PCs are in a Class C private LAN
# Also, if you have more than 7 PCs, why do you want to get on Battle.net?
# So if my IP address is 192.168.5.5, PC1=5
PC1=5
PC2=98
PC3=
PC4=
PC5=
PC6=
PC7=
PC8=

export CABLEIP PRIVLAN
export PC1 PC2 PC3 PC4 PC5 PC6 PC7 PC8

case "$1" in
   start)
      iptables -t nat -F SC-OUT || iptables -t nat -N SC-OUT
      iptables -t nat -F SC-IN || iptables -t nat -N SC-IN

      iptables -t nat -I POSTROUTING -p udp -s ${PRIVLAN}.0/24 --sport 
$BNETPORT -j SC-OUT

      for i in $PC1 $PC2 $PC3 $PC4 $PC5 $PC6 $PC7 $PC8
         do
            if [ $i -gt 0 ] ; then
               iptables -t nat -I SC-OUT -s ${PRIVLAN}.${i} -p udp -j SNAT --to 
${CABLEIP}:$((9000+$i))
               iptables -t nat -I PREROUTING -p udp --dport $((9000+$i)) -j 
SC-IN
               iptables -t nat -I SC-IN -d ${CABLEIP} -p udp --dport 
$((9000+$i)) -j DNAT --to ${PRIVLAN}.${i}:${BNETPORT}
            fi
         done
      ;;

   stop)
      iptables -t nat -F SC-OUT || exit 0
      iptables -t nat -F SC-IN || exit 0
      iptables -t nat -D POSTROUTING -p udp -s ${PRIVLAN}.0/24 --sport 
$BNETPORT -j SC-OUT

      for i in $PC1 $PC2 $PC3 $PC4 $PC5 $PC6 $PC7 $PC8
         do
            if [ $i -gt 0 ] ; then
               iptables -t nat -D PREROUTING -p udp --dport $((9000+$i)) -j 
SC-IN
            fi
         done
      iptables -t nat -X SC-OUT
      iptables -t nat -X SC-IN
      ;;

   *)
      echo "Usage: $0 {start|stop}"
      ;;
esac

Reply via email to