<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.saruman.biz/saruwiki/index.php?action=history&amp;feed=atom&amp;title=Iceditch_configuration_example</id>
	<title>Iceditch configuration example - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.saruman.biz/saruwiki/index.php?action=history&amp;feed=atom&amp;title=Iceditch_configuration_example"/>
	<link rel="alternate" type="text/html" href="https://www.saruman.biz/saruwiki/index.php?title=Iceditch_configuration_example&amp;action=history"/>
	<updated>2026-05-02T21:45:45Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://www.saruman.biz/saruwiki/index.php?title=Iceditch_configuration_example&amp;diff=1566&amp;oldid=prev</id>
		<title>Saruman!: Iceditch example config</title>
		<link rel="alternate" type="text/html" href="https://www.saruman.biz/saruwiki/index.php?title=Iceditch_configuration_example&amp;diff=1566&amp;oldid=prev"/>
		<updated>2008-07-19T16:01:00Z</updated>

		<summary type="html">&lt;p&gt;Iceditch example config&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==File &amp;#039;&amp;#039;config.conf&amp;#039;&amp;#039;==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## PUT YOUR OWN ADDRESS HERE! if you want to receive errors by mail&lt;br /&gt;
MAILTO=&amp;quot;linuxwarning@saruman.biz&amp;quot;;&lt;br /&gt;
	&lt;br /&gt;
CMD=&amp;quot;/sbin/iptables&amp;quot;;&lt;br /&gt;
SYSLOG=&amp;quot;/usr/bin/logger&amp;quot;;&lt;br /&gt;
			&lt;br /&gt;
# if you want to use the Userspace Logging Daemon, change this&lt;br /&gt;
# from &amp;quot;LOG&amp;quot; to &amp;quot;ULOG&amp;quot;&lt;br /&gt;
FWLOG=&amp;quot;ULOG&amp;quot;;&lt;br /&gt;
# default &amp;quot;--log-prefix&amp;quot; or &amp;quot;--ulog-prefix&amp;quot;&lt;br /&gt;
FWLOGPREFIX=&amp;quot;--ulog-prefix&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
# topology&lt;br /&gt;
inetIF=&amp;#039;eth1&amp;#039;;&lt;br /&gt;
inetIP=&amp;#039;212.238.151.172&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
lanIF=&amp;#039;eth0&amp;#039;;&lt;br /&gt;
lanIP=&amp;#039;192.168.67.10&amp;#039;;&lt;br /&gt;
lanNET=&amp;#039;192.168.67.0/24&amp;#039;;&lt;br /&gt;
	&lt;br /&gt;
natIF=$inetIF;&lt;br /&gt;
natIP=$inetIP;&lt;br /&gt;
&lt;br /&gt;
# Define some subnets&lt;br /&gt;
FRESHFIELDNET=&amp;#039;192.168.67.144/28&amp;#039;   # Limited hosts: 144 t/m 159&lt;br /&gt;
JANNET=&amp;#039;192.168.67.160/27&amp;#039;          # Limited hosts: 160 t/m 191&lt;br /&gt;
SASNET=&amp;#039;192.168.67.192/26&amp;#039;          # Limited hosts: 192 t/m 254&lt;br /&gt;
&lt;br /&gt;
################################################################################&lt;br /&gt;
##  Here you can declare and/or read every variable you&amp;#039;ll need in the rules  ##&lt;br /&gt;
################################################################################&lt;br /&gt;
&lt;br /&gt;
# Fetch all IP&amp;#039;s that are totally blocked&lt;br /&gt;
lookup_param_list &amp;#039;blockedIP&amp;#039; &amp;quot;/etc/iceditch/params.conf&amp;quot;;&lt;br /&gt;
NumOfBlockedIPs=${r[0]};&lt;br /&gt;
if [ $NumOfBlockedIPs -gt 0 ]; then&lt;br /&gt;
	i=0;&lt;br /&gt;
	while [ $i -le $NumOfBlockedIPs ] ; do&lt;br /&gt;
		blockedIP[$i]=${r[$i]};&lt;br /&gt;
		let &amp;quot;i += 1&amp;quot;;&lt;br /&gt;
	done;&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Fetch all IPsec tunnel parameters&lt;br /&gt;
lookup_param_list &amp;#039;IPsecLocalLAN&amp;#039; &amp;quot;/etc/iceditch/params.conf&amp;quot;;&lt;br /&gt;
IPsecNumOfTunnels=${r[0]};&lt;br /&gt;
if [ $IPsecNumOfTunnels -gt 0 ]; then&lt;br /&gt;
	i=0;&lt;br /&gt;
	while [ $i -lt $IPsecNumOfTunnels ] ; do&lt;br /&gt;
		let &amp;quot;i += 1&amp;quot;; IPsecLocalLAN[$i]=${r[$i]};&lt;br /&gt;
		IPsecLocalLANIP[$i]=$lanIP;     # we don&amp;#039;t read these from the config&lt;br /&gt;
		IPsecLocalWANIP[$i]=$inetIP;    # file, since they&amp;#039;re always the same&lt;br /&gt;
	done;&lt;br /&gt;
	lookup_param_list &amp;#039;IPsecRemoteWANIP&amp;#039; &amp;quot;$PATHNAME/$PARMFILENAME&amp;quot;;&lt;br /&gt;
	i=0;&lt;br /&gt;
	while [ $i -lt $IPsecNumOfTunnels ] ; do&lt;br /&gt;
		let &amp;quot;i += 1&amp;quot;; IPsecRemoteWANIP[$i]=${r[$i]};&lt;br /&gt;
	done;&lt;br /&gt;
	lookup_param_list &amp;#039;IPsecRemoteLAN&amp;#039; &amp;quot;$PATHNAME/$PARMFILENAME&amp;quot;;&lt;br /&gt;
	i=0;&lt;br /&gt;
	while [ $i -lt $IPsecNumOfTunnels ] ; do&lt;br /&gt;
		let &amp;quot;i += 1&amp;quot;; IPsecRemoteLAN[$i]=${r[$i]};&lt;br /&gt;
	done;&lt;br /&gt;
fi;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==File &amp;#039;&amp;#039;params.conf&amp;#039;&amp;#039;==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
blockedIP = 62.27.41.69        = 20060529 - adware webserver&lt;br /&gt;
blockedIP = 195.56.146.210     = 20060805 - forum.joomla.hu&lt;br /&gt;
blockedIP = 82.201.220.60      = 20070918 - messes on udp500&lt;br /&gt;
blockedIP = 80.73.129.193      = 20080127 - lots of NewNotSyns&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
IPsecRemoteNET   = &amp;#039;Odeon.lan&amp;#039;         = descriptive name of the IPtunnel destination&lt;br /&gt;
IPsecLocalLanIP  = $lanIP              = the local IP address of the router&lt;br /&gt;
IPsecLocalLAN    = $lanNET             = the LAN segment we&amp;#039;re prepared to open&lt;br /&gt;
IPsecLocalWANIP  = $inetIP             = Our own external IP for this connection&lt;br /&gt;
IPsecRemoteLAN   = &amp;#039;192.168.70.0/24&amp;#039;   = the remote LAN segment we wanna reach&lt;br /&gt;
IPsecRemoteWANIP = &amp;#039;82.161.20.132&amp;#039;     = the public IP of the remote gateway&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==File &amp;#039;&amp;#039;rules.conf&amp;#039;&amp;#039;==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
######################################################################&lt;br /&gt;
###                                                                ###&lt;br /&gt;
### 1.1 PRE_ROUTING mangle                                         ###&lt;br /&gt;
###                                                                ###&lt;br /&gt;
### use case: mark incoming packets for (outgoing) traffic control ###&lt;br /&gt;
###                                                                ###&lt;br /&gt;
######################################################################&lt;br /&gt;
&lt;br /&gt;
    context &amp;quot;PREROUTING&amp;quot; &amp;quot;mangle&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # Mark incoming ESP packets with mark &amp;quot;1&amp;quot;&lt;br /&gt;
    let &amp;quot;i=0&amp;quot;;&lt;br /&gt;
    while [[ $i -lt $IPsecNumOfTunnels ]]; do&lt;br /&gt;
        let &amp;quot;i += 1&amp;quot;;&lt;br /&gt;
        mark 1 -p esp -s ${IPsecRemoteWANIP[$i]} -d ${IPsecLocalWANIP[$i]};&lt;br /&gt;
    done;&lt;br /&gt;
    &lt;br /&gt;
    # default policy: accept&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
######################################################################&lt;br /&gt;
###                                                                ###&lt;br /&gt;
### 1.2 PRE_ROUTING nat                                            ###&lt;br /&gt;
###                                                                ###&lt;br /&gt;
### use cases:                                                     ###&lt;br /&gt;
### - DNAT (incoming connects to private ip&amp;#039;s, e.g. DMZ or svr)    ###&lt;br /&gt;
### - REDIRECT (machine port redirects / transparant proxy)        ###&lt;br /&gt;
###                                                                ###&lt;br /&gt;
######################################################################&lt;br /&gt;
&lt;br /&gt;
    context &amp;quot;PREROUTING&amp;quot; &amp;quot;nat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # let IPsec traffic bypass any SNATting&lt;br /&gt;
    let &amp;quot;i=0&amp;quot;&lt;br /&gt;
    while [[ $i -lt $IPsecNumOfTunnels ]]; do&lt;br /&gt;
        let &amp;quot;i += 1&amp;quot;&lt;br /&gt;
        accept -s ${IPsecRemoteLAN[$i]} -d ${IPsecLocalLAN[$i]}&lt;br /&gt;
    done&lt;br /&gt;
&lt;br /&gt;
    # also accept all traffic marked &amp;quot;1&amp;quot; which is&lt;br /&gt;
    # incoming ESP traffic from trusted remote IP&amp;#039;s&lt;br /&gt;
    # SHOULD already be handled by the default policy&lt;br /&gt;
    accept -m mark --mark 1&lt;br /&gt;
    &lt;br /&gt;
    # make Squid our transparent proxy&lt;br /&gt;
    dnat to ${lanIP}:3128 -p tcp -i $lanIF --dport 80&lt;br /&gt;
    &lt;br /&gt;
    # default policy: accept&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
######################################################################&lt;br /&gt;
###                                                                ###&lt;br /&gt;
### 2.1 FORWARD mangle                                             ###&lt;br /&gt;
###                                                                ###&lt;br /&gt;
### use case: none                                                 ###&lt;br /&gt;
###                                                                ###&lt;br /&gt;
######################################################################&lt;br /&gt;
&lt;br /&gt;
    context &amp;quot;FORWARD&amp;quot; &amp;quot;mangle&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    # default policy: accept&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
######################################################################&lt;br /&gt;
###                                                                ###&lt;br /&gt;
### 2.2 FORWARD filter                                             ###&lt;br /&gt;
###                                                                ###&lt;br /&gt;
### use case: filter traffic forwarded between networks            ###&lt;br /&gt;
###                                                                ###&lt;br /&gt;
### ATTENTION please: choose an appropriate forwarding policy      ###&lt;br /&gt;
### o no forwarding: 0 &amp;gt; ip_forward                                ###&lt;br /&gt;
### o untrusted forwarding: filter ports + egress ip               ###&lt;br /&gt;
### o trusted forwarding: filter only egress ip                    ###&lt;br /&gt;
###                                                                ###&lt;br /&gt;
######################################################################&lt;br /&gt;
&lt;br /&gt;
    context &amp;quot;FORWARD&amp;quot; &amp;quot;filter&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # upfront blocking of all banned IP&amp;#039;s&lt;br /&gt;
    let &amp;quot;j = 0&amp;quot;;&lt;br /&gt;
    while [[ $j -lt ${blockedIP[0]} ]]; do&lt;br /&gt;
        let &amp;quot;j += 1&amp;quot;;&lt;br /&gt;
        drop -s ${blockedIP[$j]};&lt;br /&gt;
        drop log msg Banned_IP_$j -d ${blockedIP[$j]};&lt;br /&gt;
    done&lt;br /&gt;
&lt;br /&gt;
    # drop some nasty P2P calls&lt;br /&gt;
    reject with host-prohib -p tcp --dport 13830&lt;br /&gt;
&lt;br /&gt;
    # Connection tracking for forwarding&lt;br /&gt;
    accept -m state --state ESTABLISHED,RELATED&lt;br /&gt;
    &lt;br /&gt;
    # drop new-not-syn&lt;br /&gt;
    drop log msg FORWARD_NewNotSYN -p tcp ! --syn -m state --state NEW&lt;br /&gt;
&lt;br /&gt;
    # let IPsec traffic through&lt;br /&gt;
    let &amp;quot;i=0&amp;quot;&lt;br /&gt;
    while [[ $i -lt $IPsecNumOfTunnels ]]; do&lt;br /&gt;
        let &amp;quot;i += 1&amp;quot;&lt;br /&gt;
        drop -s $FRESHFIELDNET -d ${IPsecRemoteLAN[$i]}   # Freshfieldnet has no business in the tunnels&lt;br /&gt;
        accept -s ${IPsecLocalLAN[$i]} -d ${IPsecRemoteLAN[$i]}&lt;br /&gt;
        accept -s ${IPsecRemoteLAN[$i]} -d ${IPsecLocalLAN[$i]}&lt;br /&gt;
    done&lt;br /&gt;
    &lt;br /&gt;
    # Allow Yodi&amp;#039;s mail (pop3.zonnet.nl + mail.descartes.nl + wissit.com/mail.wissit.nl)&lt;br /&gt;
    accept -p tcp -d 62.58.50.236 --dport 110&lt;br /&gt;
    accept -p tcp -d 213.196.12.29 --dport 110&lt;br /&gt;
    accept -p tcp -d 194.121.181.250 --dport 25&lt;br /&gt;
      &lt;br /&gt;
    # Allow MPPE-traffic from inside to outside&lt;br /&gt;
    accept -p 47&lt;br /&gt;
&lt;br /&gt;
    # Specifically block certain ports out to the Internet&lt;br /&gt;
    # Mainly mail, DNS and NTP&lt;br /&gt;
    drop -p tcp -m multiport --dport 25,53,110,123&lt;br /&gt;
    drop -p udp -m multiport --dport 53,123&lt;br /&gt;
    &lt;br /&gt;
    # Generic TCP traffic allowed out to the Internet: everything else&lt;br /&gt;
    # note: return traffic is handled by connection tracking&lt;br /&gt;
    accept -p tcp -s $lanNET&lt;br /&gt;
    accept -p udp -s $lanNET&lt;br /&gt;
    &lt;br /&gt;
    # Allowing full ICMP between inside and outside&lt;br /&gt;
    accept -p icmp -s $lanNET&lt;br /&gt;
&lt;br /&gt;
    # default policy: drop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
######################################################################&lt;br /&gt;
###                                                                ###&lt;br /&gt;
### 3.2 INPUT filter                                               ###&lt;br /&gt;
###                                                                ###&lt;br /&gt;
### use case: filter incoming traffic directed at machine host     ###&lt;br /&gt;
###                                                                ###&lt;br /&gt;
######################################################################&lt;br /&gt;
&lt;br /&gt;
    context &amp;quot;INPUT&amp;quot; &amp;quot;filter&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # upfront blocking of all banned IP&amp;#039;s&lt;br /&gt;
    let &amp;quot;j = 0&amp;quot;;&lt;br /&gt;
    while [[ $j -lt ${blockedIP[0]} ]]; do&lt;br /&gt;
        let &amp;quot;j += 1&amp;quot;;&lt;br /&gt;
        drop -s ${blockedIP[$j]}&lt;br /&gt;
    done&lt;br /&gt;
&lt;br /&gt;
    # Spoofed IP protect&lt;br /&gt;
    # a bit superfluous, since rp_filter (Source Address Verification) can&lt;br /&gt;
    # be turned on in /proc/sys...&lt;br /&gt;
    # drop log msg Local_IP_from_Inet_192 -i $inetIF -s 192.168.0.0/16&lt;br /&gt;
    # drop log msg Local_IP_from_Inet_10 -i $inetIF -s 10.0.0.0/8&lt;br /&gt;
    # drop log msg Local_IP_from_Inet_172 -i $inetIF -s 172.16.0.0/12&lt;br /&gt;
&lt;br /&gt;
    # drop some nasty P2P calls&lt;br /&gt;
    reject with host-prohib -p tcp --dport 13830&lt;br /&gt;
    &lt;br /&gt;
    # drop new-not-syn&lt;br /&gt;
    drop log msg INPUT_NewNotSYN -p tcp ! --syn -m state --state NEW&lt;br /&gt;
&lt;br /&gt;
    # Connection tracking for incoming traffic&lt;br /&gt;
    accept -m state --state ESTABLISHED,RELATED&lt;br /&gt;
    &lt;br /&gt;
    # Drop different attacks:&lt;br /&gt;
    # Xmas scan&lt;br /&gt;
    drop log msg Xmas_scan -i $inetIF -p tcp --tcp-flags ALL FIN,URG,PSH&lt;br /&gt;
    drop log msg Xmas_scan -i $inetIF -p tcp --tcp-flags ALL ALL&lt;br /&gt;
    # Stealth scan&lt;br /&gt;
    drop log msg Stealth_scan -i $inetIF -p tcp --tcp-flags SYN,ACK,FIN,RST RST&lt;br /&gt;
    drop log msg Stealth_scan -i $inetIF -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG&lt;br /&gt;
    drop log msg Stealth_scan -i $inetIF -p tcp --tcp-flags ALL NONE&lt;br /&gt;
    # SYN,RST scan&lt;br /&gt;
    drop log msg SYN/RST_scan -i $inetIF -p tcp --tcp-flags SYN,RST SYN,RST&lt;br /&gt;
    # SYN,FIN scan&lt;br /&gt;
    drop log msg SYN/FIN_scan -i $inetIF -p tcp --tcp-flags SYN,FIN SYN,FIN&lt;br /&gt;
&lt;br /&gt;
    # drop SSH connections if they&amp;#039;re spurious (more than 2 attempts per minute)&lt;br /&gt;
    nojump -p tcp --dport 22 -i $inetIF -m state --state NEW -m recent --name SSHERS --set&lt;br /&gt;
    drop -p tcp --dport 22 -i $inetIF -m state --state NEW -m recent --name SSHERS --update --seconds 60 --hitcount 3&lt;br /&gt;
    # accept SSH from all sides&lt;br /&gt;
    accept -p tcp --dport 22&lt;br /&gt;
&lt;br /&gt;
    # accept IKE traffic from everyone including NAT-T&lt;br /&gt;
    accept -p udp --sport 500 --dport 500&lt;br /&gt;
    accept -p udp --sport 4500 --dport 4500&lt;br /&gt;
    # accept ESP traffic from everyone&lt;br /&gt;
    # accept -p esp&lt;br /&gt;
&lt;br /&gt;
    # accept all traffic marked &amp;quot;1&amp;quot;, which is&lt;br /&gt;
    # incoming ESP traffic from trusted remote IP&amp;#039;s&lt;br /&gt;
    accept -m mark --mark 1&lt;br /&gt;
    &lt;br /&gt;
    # accept MPPTP to this machine from the Internet&lt;br /&gt;
    accept -p tcp --dport 1723&lt;br /&gt;
    # accept -i $inetIF -p 47&lt;br /&gt;
    accept -p 47&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
    # This might be needed for 2 simultaneous connections to a local PPTP server??&lt;br /&gt;
    #accept -i ppp0&lt;br /&gt;
    #accept -o ppp0&lt;br /&gt;
    #accept -i ppp1&lt;br /&gt;
    #accept -o ppp1&lt;br /&gt;
&lt;br /&gt;
    # accepting ICMP traffic from the inside&lt;br /&gt;
    accept -i $lanIF -p icmp;&lt;br /&gt;
    # accepting ICMP traffic from the Internet side&lt;br /&gt;
    accept -i $inetIF -p icmp&lt;br /&gt;
    #accept -i $inetIF -p icmp --icmp-type echo-request;&lt;br /&gt;
    #accept -i $inetIF -p icmp --icmp-type ttl-exceeded;&lt;br /&gt;
    #accept -i $inetIF -p icmp --icmp-type destination-unreachable;&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
    # Generic TCP traffic from the LAN to this machine&lt;br /&gt;
    #   20 = FTP          135 = DCE Endpoint Resolution&lt;br /&gt;
    #   21 = FTP          137 = NetBIOS Name Service&lt;br /&gt;
    #   22 = SSH          138 = NetBIOS Datagram Service&lt;br /&gt;
    #   25 = SMTP         139 = NetBIOS Session Service&lt;br /&gt;
    #   53 = DNS&lt;br /&gt;
    #   80 = HTTP&lt;br /&gt;
    #  110 = POP3    &lt;br /&gt;
    accept -p tcp -i $lanIF -m multiport --dport 20,21,22,25,53,80,110,135,137,138,139&lt;br /&gt;
    #  143 = IMAP          993 = IMAP4 over TLS&lt;br /&gt;
    #  443 = HTTPS         995 = POP3 over TLS&lt;br /&gt;
    #  445 = CIFS         3128 = Squid access&lt;br /&gt;
    #  631 = CUPSadmin    3306 = MySQL port&lt;br /&gt;
    #  901 = SWAT&lt;br /&gt;
    accept -p tcp -i $lanIF -m multiport --dport 143,443,445,631,901,993,995,3128,3306&lt;br /&gt;
    &lt;br /&gt;
    # Generic TCP traffic from the Internet to this machine&lt;br /&gt;
    #   25 = SMTP          443 = HTTPS&lt;br /&gt;
    #   53 = DNS           993 = IMAP4 over TLS&lt;br /&gt;
    #   80 = HTTP          995 = POP3 over TLS&lt;br /&gt;
    #  110 = POP3&lt;br /&gt;
    #  143 = IMAP&lt;br /&gt;
    accept -p tcp -i $inetIF -m multiport --dport 25,53,80,110,143,443,993,995&lt;br /&gt;
    &lt;br /&gt;
    # Generic UDP traffic from the LAN to this machine&lt;br /&gt;
    #   53 = DNS           137 = NetBIOS Name Service&lt;br /&gt;
    #  123 = NTP           138 = NetBIOS Datagram Service&lt;br /&gt;
    #                      139 = NetBIOS Session Service&lt;br /&gt;
    accept -p udp -i $lanIF -m multiport --dport 53,123,137,138,139&lt;br /&gt;
    &lt;br /&gt;
    # Generic UDP traffic from the Internet to this machine&lt;br /&gt;
    #   53 = DNS           123 = NTP&lt;br /&gt;
    accept -p udp -i $inetIF -m multiport --dport 53,123&lt;br /&gt;
    accept -p udp -i $inetIF -m multiport --sport 53,123&lt;br /&gt;
    &lt;br /&gt;
    # default policy: drop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
######################################################################&lt;br /&gt;
###                                                                ###&lt;br /&gt;
### 4.1 OUTPUT mangle                                              ###&lt;br /&gt;
###                                                                ###&lt;br /&gt;
### use case: mark locally generated traffic for traffic control   ###&lt;br /&gt;
###                                                                ###&lt;br /&gt;
######################################################################&lt;br /&gt;
&lt;br /&gt;
    context &amp;quot;OUTPUT&amp;quot; &amp;quot;mangle&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    # Mark all outgoing ESP packets to trusted IP&amp;#039;s with mark &amp;quot;2&amp;quot;&lt;br /&gt;
    let &amp;quot;i=0&amp;quot;&lt;br /&gt;
    while [[ $i -lt $IPsecNumOfTunnels ]]; do&lt;br /&gt;
        let &amp;quot;i += 1&amp;quot;&lt;br /&gt;
        mark 2 -p esp -d ${IPsecRemoteWANIP[$i]}&lt;br /&gt;
    done&lt;br /&gt;
    &lt;br /&gt;
    # default policy: accept&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
######################################################################&lt;br /&gt;
###                                                                ###&lt;br /&gt;
### 4.2 OUTPUT nat                                                 ###&lt;br /&gt;
###                                                                ###&lt;br /&gt;
### use cases:                                                     ###&lt;br /&gt;
### - DNAT locally generated traffic (e.g. tunnel encapsulation)   ###&lt;br /&gt;
### - REDIRECT port redirects (???)                                ###&lt;br /&gt;
###                                                                ###&lt;br /&gt;
######################################################################&lt;br /&gt;
&lt;br /&gt;
    context &amp;quot;OUTPUT&amp;quot; &amp;quot;nat&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    # accept trusted outgoing ESP packages, which are marked &amp;quot;2&amp;quot;&lt;br /&gt;
    # only needed if we need to bypass some NAT rules&lt;br /&gt;
    # accept -m mark --mark 2&lt;br /&gt;
    &lt;br /&gt;
    # default policy: accept&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
######################################################################&lt;br /&gt;
###                                                                ###&lt;br /&gt;
### 4.3 OUTPUT filter                                              ###&lt;br /&gt;
###                                                                ###&lt;br /&gt;
### use case: filter locally generated traffic                     ###&lt;br /&gt;
###                                                                ###&lt;br /&gt;
######################################################################&lt;br /&gt;
&lt;br /&gt;
    context &amp;quot;OUTPUT&amp;quot; &amp;quot;filter&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    # upfront blocking of all banned IP&amp;#039;s&lt;br /&gt;
    let &amp;quot;j = 0&amp;quot;;&lt;br /&gt;
    while [[ $j -lt ${blockedIP[0]} ]]; do&lt;br /&gt;
        let &amp;quot;j += 1&amp;quot;&lt;br /&gt;
        drop log msg Banned_IP_$j -d ${blockedIP[$j]}&lt;br /&gt;
    done&lt;br /&gt;
&lt;br /&gt;
    # accept trusted outgoing ESP packages, which are marked &amp;quot;2&amp;quot;&lt;br /&gt;
    accept -m mark --mark 2&lt;br /&gt;
&lt;br /&gt;
    # assume ALL traffic from the server to the LAN is safe&lt;br /&gt;
    accept -p tcp -o $lanIF&lt;br /&gt;
    accept -p udp -o $lanIF&lt;br /&gt;
&lt;br /&gt;
    # for convenience, let&amp;#039;s for now assume all traffic from&lt;br /&gt;
    # the server to the Internet is safe as well....&lt;br /&gt;
    accept -p tcp -o $inetIF&lt;br /&gt;
    accept -p udp -o $inetIF&lt;br /&gt;
    accept -p 47 &lt;br /&gt;
    accept -p icmp&lt;br /&gt;
&lt;br /&gt;
    accept log msg odeon_output -p tcp -d 192.168.70.0/24&lt;br /&gt;
    accept log msg odeon_output -p udp -d 192.168.70.0/24&lt;br /&gt;
&lt;br /&gt;
    # default policy: drop&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
######################################################################&lt;br /&gt;
###                                                                ###&lt;br /&gt;
### 5.1 POSTROUTING mangle                                         ###&lt;br /&gt;
###                                                                ###&lt;br /&gt;
### use case: set TOS on outgoing packets to guide other routers   ###&lt;br /&gt;
###                                                                ###&lt;br /&gt;
######################################################################&lt;br /&gt;
&lt;br /&gt;
    context &amp;quot;POSTROUTING&amp;quot; &amp;quot;mangle&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    classify 1:11 -s $JANNET -d ! $lanNET&lt;br /&gt;
    classify 2:11 -d $JANNET -s ! $lanNET&lt;br /&gt;
    classify 1:12 -s $FRESHFIELDNET -d ! $lanNET&lt;br /&gt;
    classify 2:12 -d $FRESHFIELDNET -s ! $lanNET&lt;br /&gt;
    classify 2:99 -s $lanNET -d $lanNET&lt;br /&gt;
    # default policy: accept&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
######################################################################&lt;br /&gt;
###                                                                ###&lt;br /&gt;
### 5.2 POSTROUTING nat                                            ###&lt;br /&gt;
###                                                                ###&lt;br /&gt;
### use cases                                                      ###&lt;br /&gt;
### - SNAT hide LAN ip range behind public ip façade               ###&lt;br /&gt;
### - MASQUERADE on dynamic ip dialup interface only               ###&lt;br /&gt;
###                                                                ###&lt;br /&gt;
######################################################################&lt;br /&gt;
&lt;br /&gt;
    context &amp;quot;POSTROUTING&amp;quot; &amp;quot;nat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # let trusted IPsec traffic bypass the NATting&lt;br /&gt;
    let &amp;quot;i=0&amp;quot;&lt;br /&gt;
    while [[ $i -lt $IPsecNumOfTunnels ]]; do&lt;br /&gt;
        let &amp;quot;i += 1&amp;quot;&lt;br /&gt;
        accept -s ${IPsecLocalLAN[$i]} -d ${IPsecRemoteLAN[$i]}&lt;br /&gt;
    done&lt;br /&gt;
    # and accept trusted outgoing ESP packages, which are marked &amp;quot;2&amp;quot;,&lt;br /&gt;
    # which also need to bypass the NATting&lt;br /&gt;
    accept -m mark --mark 2&lt;br /&gt;
&lt;br /&gt;
    # This machine is a NAT router, so sourcenat over the designated&lt;br /&gt;
    # NAT interface using the designated NAT IP address, EXCEPT for&lt;br /&gt;
    # traffic that originates from the machine itself&lt;br /&gt;
    snat to $natIP -o $natIF ! --src $natIP&lt;br /&gt;
&lt;br /&gt;
    # default policy: accept&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Saruman!</name></author>
	</entry>
</feed>