Stupid mistake.  PF already had state for it passing through the normal
NAT I guess.  The next day it worked fine when I tested it again.




On Thu, 8 Nov 2007 06:22:54 -0500
Bill <[EMAIL PROTECTED]> spake:

> 
> This in on OpenBSD 4.1...
> 
> My fw rules are working fine, well some issues with the cisco vpn
> client getting disconnected every few minutes, but that is another
> story.
> 
> I have added an Xbox360 to my network.  Part of the whole Microsoft
> experience is that it requires some open NAT thing.  I had an extra IP
> address so I want to map it, one to one to my XBOX.  From what I
> understood this is a perfect use for Binat.
> 
> So I added this rule:
> binat on $ext_if from 5.0.0.8 to any -> $ext_ip_153
> 
> But when I watch my traffic the xbox is not being routed out as being
> from 153.  It is going out through the normal NAT for everything.  I
> can see this with tcpdump on the firewall.
> 
> I thought with NAT the first matching rule was used... 
> 
> I tried it at the beginning and end of the NAT stuff.
> 
> Any thoughts on this?  Should I just go back and do normal redirection
> to accomplish this goal?
> 
> 
> Thanks for any advice on this whole thing...
> 
> Bill
> 
> 
> 
> 
> # MACRO SECTION ########################
> # These are basically just variables we use in the rules
> # by using a $ then the name.  Like:  $ext_if
> int_if = "sk0"
> ext_if = "sis0"
> openvpn_if = "tun0"
> wifi_if = "fxp0"
> 
> openvpn_ip_addresses = "{ 69.9.159.154, 5.0.3.1 }"
> openvpn_port_address = "443"
> openvpn_network = "5.0.99.0/24"
> 
> wifi_insecure_network = "5.0.2.0/24"
> wifi_secure_network = "5.0.3.0/24"
> 
> localnet = "5.0.0.0/8"
> ftp_proxy = "69.9.159.152"
> xbox360 = "5.0.0.8"
> 
> #### 152 is used for outbound traffic (web surfing, ftp, etc)
> ext_ip_152 = "69.9.159.152"
> 
> #### 153 is used for inbound public orienteed stuff (public email in, www)
> ext_ip_153 = "69.9.159.153"
> 
> #### 154 is used for explosivo orienteed stuff (openvpn, mail getting, 
> submission)
> ext_ip_154 = "69.9.159.154"
> 
> external_dns_servers = "{78.9.16.30, 78.9.16.29 }"
> 
> # Machines that are allowed to SSH to the FW
> admin_addresses = "{ 79.24.33.254, 78.99.159.145 }"
> cisco_vpn_hosts = "{ 79.24.33.226 }"
> 
> icmp_types = "{ echoreq, unreach }"
> allowed_udp_services = "{ domain, time }"
> 
> # IANA networks we should never see coming in, or going out
> martians = "{ 127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, \
>               10.0.0.0/8, 169.254.0.0/16, 192.0.2.0/24, \
>               0.0.0.0/8, 240.0.0.0/4 }"
> 
> set block-policy return
> set skip on lo0
> scrub in all
> scrub out all random-id
> 
> # This will be used to stop specific IP's as needed
> table <abusive_hosts> persist
> 
> table <spamd> persist file "/var/pf/spamd"
> table <spamd-mywhite> persist file "/var/pf/mywhitelist"
> table <spamd-white> persist file "/var/pf/whitelist"
> 
> # NAT rules ##########################################
> 
> nat-anchor "ftp-proxy/*"
> rdr-anchor "ftp-proxy/*"
> 
> # This is for the XBOX
> binat on $ext_if from 5.0.0.8 to any -> $ext_ip_153
> 
> rdr pass on $int_if proto tcp from any to any port ftp -> 127.0.0.1
> port 8021
> 
> # Redirect all outbound web traffic to squid proxy
> rdr pass on $int_if proto tcp from $localnet to any port 80 -> $int_if
> port 3128
> 
> # Redirect time server requests to firewall
> rdr pass on $int_if proto udp from $localnet to any port 123 -> $int_if
> port 123
> 
> rdr pass on $ext_if proto tcp from any to { 68.99.159.152,
> 68.99.159.153, 68.99.159.154 } port smtp -> 68.99.159.153 po rt 8025
> 
> #redirect ntp requests to the firewall
> rdr on $int_if proto udp from $localnet to any port ntp -> $int_if port
> ntp
> 
> 
> rdr on $int_if proto tcp from $localnet to ! $localnet port 25 ->
> 5.0.0.1
> #no nat on $int_if proto tcp from $int_if to $localnet
> 
> # All internal traffic can be sourced to the ext interface
> nat on $ext_if from $localnet to any -> $ext_ip_152
> 
> # All wifi_insecure traffic can be sourced to the ext interface
> nat on $ext_if from $wifi_insecure_network to any -> $ext_ip_152
> 
> 
> 
> # PF Rules ##########################################
> antispoof quick for ext_if
> antispoof quick for int_if
> 
> block in quick from <abusive_hosts>
> 
> block in log on $ext_if
> block in log on $int_if
> block in log on tun0
> block in log on vlan1
> block in log on vlan2
> block in log on vlan3
> 
> block out log all
> block in log all
> 
> anchor "ftp-proxy/*"
> 
> pass out proto tcp from $ftp_proxy to any port 21 keep state
> 
> # This rule drops addresses that should not be coming from the internet
> #  and prevents egress to those same addresses (IANA Private addr space)
> block drop in quick on $ext_if from $martians to any
> block drop out quick on $ext_if from any to $martians
> 
> 
> # Rule to allow ssh access to firewall from admin addresses
> pass quick log inet proto tcp from $admin_addresses to $ext_ip_154 port
> ssh pass quick inet proto tcp from $localnet to $int_if port ssh
> 
> pass quick proto {tcp,udp} from any to $xbox360
> pass quick proto {tcp,udp} from $xbox360 to any
> 
> 
> # Allow firewall to:
> # perform domain lookups
> pass out quick on $ext_if proto udp from any to any port domain
> pass out quick on $ext_if proto tcp from any to any port domain
> 
> # wifi_insecure_networks to outside
> pass in quick on vlan2 proto tcp from $wifi_insecure_network to !
> $localnet port {80,53} pass in quick on vlan2 proto udp from
> $wifi_insecure_network to $external_dns_servers
> 
> # perform ntp checks
> pass out quick on $ext_if proto udp from any to any port ntp keep state
> 
> pass in quick on $int_if proto udp from any to any port ntp keep state
> pass out quick on $int_if proto udp from any to any port ntp keep state
> 
> # Rules to allow squid to connect out
> pass in quick on $int_if proto tcp from any to $int_if port 3128
> pass out quick on $ext_if inet proto tcp from $ext_ip_152 to any port
> www
> 
> # Rules to allow outbound allowed traffic
> pass log inet proto {tcp,udp} from $localnet to any
> pass log inet proto {tcp,udp} from $ext_if to any
> 
> # Rules to allow outbound icpm, stop inbound at fw
> pass quick inet proto icmp all icmp-type $icmp_types keep state
> 
> # MAIL HANDLING
> # rule to allow outbound mail to be accepted
> pass log quick on $int_if proto tcp from $localnet to 5.0.0.1 port smtp
> pass out log quick on $ext_if proto tcp from any to any port smtp
> 
> 
> # Rules to support openvpn connection
> pass in log quick on $ext_if inet proto udp from any to
> $openvpn_ip_addresses port $openvpn_port_address pass in log quick on
> vlan3 inet proto udp from any to 5.0.3.1 port $openvpn_port_address
> pass in log quick on $openvpn_if pass out log quick on $int_if from
> $openvpn_network to $localnet pass in log quick on $int_if from any to
> $openvpn_network pass out log quick on $openvpn_if
> 
> # Experimental to support cisco vpn client outbound
> pass proto esp from any to any keep state
> pass proto igmp from any to any keep state allow-opts
> pass proto udp from any to any port isakmp keep state
> pass proto udp from any to any  port 214 keep state
> pass proto tcp from any to any port 1723 keep state
> pass proto esp from any to any keep state
> 
> 
> 
> _______________________________________________
> Openbsd-newbies mailing list
> [email protected]
> http://mailman.theapt.org/listinfo/openbsd-newbies
_______________________________________________
Openbsd-newbies mailing list
[email protected]
http://mailman.theapt.org/listinfo/openbsd-newbies

Reply via email to