/miniupnpd/netfilter/iptables_init_and_clean.sh

https://github.com/yeonsh/miniupnp · Shell · 37 lines · 30 code · 3 blank · 4 comment · 2 complexity · 58b609549392f251b7a8ca2bcdce29e7 MD5 · raw file

  1. #! /bin/sh
  2. # $Id: iptables_init_and_clean.sh,v 1.1 2011/05/13 09:58:47 nanard Exp $
  3. # Improved Miniupnpd iptables init script.
  4. # Checks for state of filter before doing anything..
  5. EXTIF=eth0
  6. IPTABLES=/sbin/iptables
  7. EXTIP="`LC_ALL=C /sbin/ifconfig $EXTIF | grep 'inet addr' | awk '{print $2}' | sed -e 's/.*://'`"
  8. NDIRTY="`LC_ALL=C /sbin/iptables -t nat -L -n | grep 'MINIUPNPD' | awk '{printf $1}'`"
  9. FDIRTY="`LC_ALL=C /sbin/iptables -t filter -L -n | grep 'MINIUPNPD' | awk '{printf $1}'`"
  10. echo "External IP = $EXTIP"
  11. if [[ $NDIRTY = "MINIUPNPDChain" ]]; then
  12. echo "Nat table dirty; Cleaning..."
  13. $IPTABLES -t nat -F MINIUPNPD
  14. elif [[ $NDIRTY = "Chain" ]]; then
  15. echo "Dirty NAT chain but no reference..? Fixsted."
  16. $IPTABLES -t nat -A PREROUTING -d $EXTIP -i $EXTIF -j MINIUPNPD
  17. $IPTABLES -t nat -F MINIUPNPD
  18. else
  19. echo "NAT table clean..initalizing.."
  20. $IPTABLES -t nat -N MINIUPNPD
  21. $IPTABLES -t nat -A PREROUTING -d $EXTIP -i $EXTIF -j MINIUPNPD
  22. fi
  23. if [[ $FDIRTY = "MINIUPNPDChain" ]]; then
  24. echo "Filter table dirty; Cleaning..."
  25. $IPTABLES -t filter -F MINIUPNPD
  26. elif [[ $FDIRTY = "Chain" ]]; then
  27. echo "Dirty filter chain but no reference..? Fixsted."
  28. $IPTABLES -t filter -I FORWARD 4 -i $EXTIF ! -o $EXTIF -j MINIUPNPD
  29. $IPTABLES -t filter -F MINIUPNPD
  30. else
  31. echo "Filter table clean..initalizing.."
  32. $IPTABLES -t filter -N MINIUPNPD
  33. $IPTABLES -t filter -I FORWARD 4 -i $EXTIF ! -o $EXTIF -j MINIUPNPD
  34. fi