#!/bin/sh
## File: rc.firewall.nat ## Set up iptables NAT rules.
IPTABLES="/usr/local/sbin/iptables" EXTERNAL1="eth0" EXTERNAL2="eth0" INTERNAL="eth1" DMZ_IF="eth2"
EXT_IP1="216.162.197.10/32" EXT_IP2="216.162.197.11/32"
$IPTABLES -F -t nat $IPTABLES -t nat -X
##################################################################################### ## Sentry.net EXTERNAL DNAT
$IPTABLES -t nat -N SENTRY_DNAT $IPTABLES -t nat -F SENTRY_DNAT
##-----------------------------------------------------------------------------## $IPTABLES -t nat -A SENTRY_DNAT -i $EXTERNAL1 -p tcp -s ! 192.168.0.0/16 -d $EXT_IP1 --dport 20 -j DNAT --to-destination 192.168.2.69:20 $IPTABLES -t nat -A SENTRY_DNAT -i $EXTERNAL1 -p tcp -s ! 192.168.0.0/16 -d $EXT_IP1 --dport 21 -j DNAT --to-destination 192.168.2.69:21 $IPTABLES -t nat -A SENTRY_DNAT -i $EXTERNAL1 -p tcp -s ! 192.168.0.0/16 -d $EXT_IP1 --dport 22 -j DNAT --to-destination 192.168.2.69:22 $IPTABLES -t nat -A SENTRY_DNAT -i $EXTERNAL1 -p tcp -s ! 192.168.0.0/16 -d $EXT_IP1 --dport 23 -j DNAT --to-destination 192.168.2.69:23 $IPTABLES -t nat -A SENTRY_DNAT -i $EXTERNAL1 -p tcp -s ! 192.168.0.0/16 -d $EXT_IP1 --dport 25 -j DNAT --to-destination 192.168.2.69:25 $IPTABLES -t nat -A SENTRY_DNAT -i $EXTERNAL1 -p tcp -s ! 192.168.0.0/16 -d $EXT_IP1 --dport 80 -j DNAT --to-destination 192.168.2.69:80 $IPTABLES -t nat -A SENTRY_DNAT -i $EXTERNAL1 -p tcp -s ! 192.168.0.0/16 -d $EXT_IP1 --dport 110 -j DNAT --to-destination 192.168.2.69:110 ##-----------------------------------------------------------------------------##
##################################################################################### ## Obsidian.net/org EXTERNAL DNAT
$IPTABLES -t nat -N OBS_DNAT $IPTABLES -t nat -F OBS_DNAT
##-----------------------------------------------------------------------------## $IPTABLES -t nat -A OBS_DNAT -i $EXTERNAL2 -p tcp -s ! 192.168.0.0/16 -d $EXT_IP2 --dport 20 -j DNAT --to-destination 192.168.2.42:20 $IPTABLES -t nat -A OBS_DNAT -i $EXTERNAL2 -p tcp -s ! 192.168.0.0/16 -d $EXT_IP2 --dport 21 -j DNAT --to-destination 192.168.2.42:21 $IPTABLES -t nat -A OBS_DNAT -i $EXTERNAL2 -p tcp -s ! 192.168.0.0/16 -d $EXT_IP2 --dport 22 -j DNAT --to-destination 192.168.2.42:22 $IPTABLES -t nat -A OBS_DNAT -i $EXTERNAL2 -p tcp -s ! 192.168.0.0/16 -d $EXT_IP2 --dport 23 -j DNAT --to-destination 192.168.2.42:23 $IPTABLES -t nat -A OBS_DNAT -i $EXTERNAL2 -p tcp -s ! 192.168.0.0/16 -d $EXT_IP2 --dport 25 -j DNAT --to-destination 192.168.2.42:25 $IPTABLES -t nat -A OBS_DNAT -i $EXTERNAL2 -p tcp -s ! 192.168.0.0/16 -d $EXT_IP2 --dport 80 -j DNAT --to-destination 192.168.2.42:80 $IPTABLES -t nat -A OBS_DNAT -i $EXTERNAL2 -p tcp -s ! 192.168.0.0/16 -d $EXT_IP2 --dport 110 -j DNAT --to-destination 192.168.2.42:110 ##-----------------------------------------------------------------------------##
#################################################################################### ## Sentry.net INTERNAL DNAT
$IPTABLES -t nat -N SENTRY_DNAT_INT $IPTABLES -t nat -F SENTRY_DNAT_INT
##-----------------------------------------------------------------------------## $IPTABLES -t nat -A SENTRY_DNAT_INT -i $INTERNAL -p tcp -s 192.168.1.0/24 -d $EXT_IP1 --dport 20 -j DNAT --to-destination 192.168.2.69:20 $IPTABLES -t nat -A SENTRY_DNAT_INT -i $INTERNAL -p tcp -s 192.168.1.0/24 -d $EXT_IP1 --dport 21 -j DNAT --to-destination 192.168.2.69:21 $IPTABLES -t nat -A SENTRY_DNAT_INT -i $INTERNAL -p tcp -s 192.168.1.0/24 -d $EXT_IP1 --dport 22 -j DNAT --to-destination 192.168.2.69:22 $IPTABLES -t nat -A SENTRY_DNAT_INT -i $INTERNAL -p tcp -s 192.168.1.0/24 -d $EXT_IP1 --dport 23 -j DNAT --to-destination 192.168.2.69:23 $IPTABLES -t nat -A SENTRY_DNAT_INT -i $INTERNAL -p tcp -s 192.168.1.0/24 -d $EXT_IP1 --dport 25 -j DNAT --to-destination 192.168.2.69:25 $IPTABLES -t nat -A SENTRY_DNAT_INT -i $INTERNAL -p tcp -s 192.168.1.0/24 -d $EXT_IP1 --dport 80 -j DNAT --to-destination 192.168.2.69:80 $IPTABLES -t nat -A SENTRY_DNAT_INT -i $INTERNAL -p tcp -s 192.168.1.0/24 -d $EXT_IP1 --dport 110 -j DNAT --to-destination 192.168.2.69:110 ##-----------------------------------------------------------------------------##
##################################################################################### ## Obsidian.net/org INTERNAL DNAT
$IPTABLES -t nat -N OBS_DNAT_INT $IPTABLES -t nat -F OBS_DNAT_INT
##-----------------------------------------------------------------------------## $IPTABLES -t nat -A OBS_DNAT_INT -i $INTERNAL -p tcp -s 192.168.1.0/24 -d $EXT_IP2 --dport 20 -j DNAT --to-destination 192.168.2.42:20 $IPTABLES -t nat -A OBS_DNAT_INT -i $INTERNAL -p tcp -s 192.168.1.0/24 -d $EXT_IP2 --dport 21 -j DNAT --to-destination 192.168.2.42:21 $IPTABLES -t nat -A OBS_DNAT_INT -i $INTERNAL -p tcp -s 192.168.1.0/24 -d $EXT_IP2 --dport 22 -j DNAT --to-destination 192.168.2.42:22 $IPTABLES -t nat -A OBS_DNAT_INT -i $INTERNAL -p tcp -s 192.168.1.0/24 -d $EXT_IP2 --dport 23 -j DNAT --to-destination 192.168.2.42:23 $IPTABLES -t nat -A OBS_DNAT_INT -i $INTERNAL -p tcp -s 192.168.1.0/24 -d $EXT_IP2 --dport 25 -j DNAT --to-destination 192.168.2.42:25 $IPTABLES -t nat -A OBS_DNAT_INT -i $INTERNAL -p tcp -s 192.168.1.0/24 -d $EXT_IP2 --dport 80 -j DNAT --to-destination 192.168.2.42:80 $IPTABLES -t nat -A OBS_DNAT_INT -i $INTERNAL -p tcp -s 192.168.1.0/24 -d $EXT_IP2 --dport 110 -j DNAT --to-destination 192.168.2.42:110 ##-----------------------------------------------------------------------------##
##################################################################################### ## DMZ_DNAT for Sentry.net
$IPTABLES -t nat -N SENTRY_DMZ_DNAT $IPTABLES -t nat -F SENTRY_DMZ_DNAT
##-----------------------------------------------------------------------------## $IPTABLES -t nat -A SENTRY_DMZ_DNAT -i $DMZ_IF -s 192.168.2.0/24 -d $EXT_IP1 -p tcp --dport 20 -j DNAT --to-destination 192.168.2.69:20 $IPTABLES -t nat -A SENTRY_DMZ_DNAT -i $DMZ_IF -s 192.168.2.0/24 -d $EXT_IP1 -p tcp --dport 21 -j DNAT --to-destination 192.168.2.69:21 $IPTABLES -t nat -A SENTRY_DMZ_DNAT -i $DMZ_IF -s 192.168.2.0/24 -d $EXT_IP1 -p tcp --dport 22 -j DNAT --to-destination 192.168.2.69:22 $IPTABLES -t nat -A SENTRY_DMZ_DNAT -i $DMZ_IF -s 192.168.2.0/24 -d $EXT_IP1 -p tcp --dport 23 -j DNAT --to-destination 192.168.2.69:23 $IPTABLES -t nat -A SENTRY_DMZ_DNAT -i $DMZ_IF -s 192.168.2.0/24 -d $EXT_IP1 -p tcp --dport 25 -j DNAT --to-destination 192.168.2.69:25 $IPTABLES -t nat -A SENTRY_DMZ_DNAT -i $DMZ_IF -s 192.168.2.0/24 -d $EXT_IP1 -p tcp --dport 80 -j DNAT --to-destination 192.168.2.69:80 $IPTABLES -t nat -A SENTRY_DMZ_DNAT -i $DMZ_IF -s 192.168.2.0/24 -d $EXT_IP1 -p tcp --dport 110 -j DNAT --to-destination 192.168.2.69:110 ##-----------------------------------------------------------------------------##
##################################################################################### ## DMZ_DNAT for Obsidian.net
$IPTABLES -t nat -N OBS_DMZ_DNAT $IPTABLES -t nat -F OBS_DMZ_DNAT
##-----------------------------------------------------------------------------## $IPTABLES -t nat -A OBS_DMZ_DNAT -i $DMZ_IF -s 192.168.2.0/24 -d $EXT_IP2 -p tcp --dport 20 -j DNAT --to-destination 192.168.2.42:20 $IPTABLES -t nat -A OBS_DMZ_DNAT -i $DMZ_IF -s 192.168.2.0/24 -d $EXT_IP2 -p tcp --dport 21 -j DNAT --to-destination 192.168.2.42:21 $IPTABLES -t nat -A OBS_DMZ_DNAT -i $DMZ_IF -s 192.168.2.69/32 -d $EXT_IP2 -p tcp --dport 22 -j DNAT --to-destination 192.168.2.42:22 $IPTABLES -t nat -A OBS_DMZ_DNAT -i $DMZ_IF -s 192.168.2.0/24 -d $EXT_IP2 -p tcp --dport 23 -j DNAT --to-destination 192.168.2.42:23 $IPTABLES -t nat -A OBS_DMZ_DNAT -i $DMZ_IF -s 192.168.2.0/24 -d $EXT_IP2 -p tcp --dport 25 -j DNAT --to-destination 192.168.2.42:25 $IPTABLES -t nat -A OBS_DMZ_DNAT -i $DMZ_IF -s 192.168.2.0/24 -d $EXT_IP2 -p tcp --dport 80 -j DNAT --to-destination 192.168.2.42:80 $IPTABLES -t nat -A OBS_DMZ_DNAT -i $DMZ_IF -s 192.168.2.0/24 -d $EXT_IP2 -p tcp --dport 110 -j DNAT --to-destination 192.168.2.42:110 ##-----------------------------------------------------------------------------##
##################################################################################### ## DNAT -- MAIN
$IPTABLES -t nat -A PREROUTING -i $INTERNAL -p tcp -s 192.168.1.0/24 -d $EXT_IP1 -j SENTRY_DNAT_INT $IPTABLES -t nat -A PREROUTING -i $INTERNAL -p tcp -s 192.168.1.0/24 -d $EXT_IP2 -j OBS_DNAT_INT
$IPTABLES -t nat -A PREROUTING -i $EXTERNAL1 -p tcp -s ! 192.168.1.0/24 -d $EXT_IP1 -j SENTRY_DNAT $IPTABLES -t nat -A PREROUTING -i $EXTERNAL2 -p tcp -s ! 192.168.1.0/24 -d $EXT_IP2 -j OBS_DNAT
$IPTABLES -t nat -A PREROUTING -i $DMZ_IF -p tcp -s 192.168.2.42/32 -d $EXT_IP1 -j SENTRY_DMZ_DNAT $IPTABLES -t nat -A PREROUTING -i $DMZ_IF -p tcp -s 192.168.2.69/32 -d $EXT_IP1 -j SENTRY_DMZ_DNAT
$IPTABLES -t nat -A PREROUTING -i $DMZ_IF -p tcp -s 192.168.2.42/32 -d $EXT_IP2 -j OBS_DMZ_DNAT $IPTABLES -t nat -A PREROUTING -i $DMZ_IF -p tcp -s 192.168.2.69/32 -d $EXT_IP2 -j OBS_DMZ_DNAT
#################################################################################### ## SNAT -- Source Network Address Translation ##
$IPTABLES -t nat -A POSTROUTING -s 192.168.1.0/24 -d ! 192.168.0.0/16 -o $EXTERNAL1 -j SNAT --to-source 216.162.197.10 $IPTABLES -t nat -A POSTROUTING -s 192.168.2.69/32 -d ! 192.168.0.0/16 -o $EXTERNAL1 -j SNAT --to-source 216.162.197.10 $IPTABLES -t nat -A POSTROUTING -s 192.168.2.42/32 -d ! 192.168.0.0/16 -o $EXTERNAL2 -j SNAT --to-source 216.162.197.11
##-----------------------------------------------------------------------------## ## SNAT DMZ to DMZ connections.
$IPTABLES -t nat -A POSTROUTING -s 192.168.2.69/32 -d 192.168.2.69/32 -o $DMZ_IF -p tcp -j SNAT --to-source 192.168.2.10
$IPTABLES -t nat -A POSTROUTING -s 192.168.2.42/32 -d 192.168.2.42/32 -o $DMZ_IF -p tcp -j SNAT --to-source 192.168.2.10
$IPTABLES -t nat -A POSTROUTING -s 192.168.2.42/32 -d 192.168.2.69/32 -o $DMZ_IF -p tcp -j SNAT --to-source 192.168.2.10
$IPTABLES -t nat -A POSTROUTING -s 192.168.2.69/32 -d 192.168.2.42/32 -o $DMZ_IF -p tcp -j SNAT --to-source 192.168.2.10 ##-----------------------------------------------------------------------------##
|