On Sun, Oct 23, 2016 at 07:24:42PM +0200, Jan Danielsson wrote:
> Hello,
> 
>    I have a minimal npf installation on a host which works fine, but now
> I want to move my router to netbsd-7 with npf.  After some trial and
> error I realize I need some assistance.
> 
>    The basic layout is:
>    - re0 is the external connection to the ISP.  The IP is assigned
> using dhcpcd.
>    - wm0; 192.168.72.0/24 network
>    - wm1; 192.168.92.0/24 network
>    - wm2; 192.168.124.0/24 network
> 
>    What I want to accomplish is to allow incoming ssh on re0, but that's
> the only allowed incoming connection.  All the systems on the wm0, wm1
> and wm2 networks should be able to make NAT'ed external connections
> through re0.
> 
>    The configuration I have allows the wm{0,1,2} systems to access the
> router (nslookup, ping, ssh), but can not make external connections.
> 
> ---------------------------------------
> $ext_if = "re0"
> $ext_v4 = inet4(re0)
> 
> $int_if = "wm0"
> $media_if = "wm1"
> $wifi_if = "wm2"
> 
> $private_addr = { 10.0.0.0/8, 172.16.0.0/14, 192.168.0.0/16 }
> 
> map $ext_if dynamic 192.168.72.0/24 -> $ext_v4
> map $ext_if dynamic 192.168.92.0/24 -> $ext_v4
> map $ext_if dynamic 192.168.124.0/24 -> $ext_v4
> 
> procedure "log" {
>       log: npflog0
> }
> 
> 
> group "external" on $ext_if {
>       #ruleset "blacklistd"
> 
>       # Allow DHCP requests (even to reserved addresses).
>       pass out final proto udp from any port bootpc to any port bootps
>       pass in final proto udp from any port bootps to any port bootpc
>       pass in final proto udp from any port bootps to 255.255.255.255 port 
> bootpc
> 
>       # Allow DNS queries
>       pass stateful out final proto udp to any port domain
> 
>       # Block IANA-reserved addresses from entering or exiting
>       block in final from $private_addr apply "log"
>       block out final to $private_addr apply "log"
> 
>       pass stateful out final proto tcp all
>       pass stateful out final proto udp all
>       pass stateful out final proto icmp all
> 
>       # Prevent IP spoofing attacks on the firewall
>       block in final from 127.0.0.1 apply "log"
> 
>       # Services
>       pass in final proto tcp to any port ssh apply "log"
> 
>       # Only allow selected ICMP types
>       pass in final proto icmp icmp-type echo all apply "log"
>       pass in final proto icmp icmp-type timxceed all
>       pass in final proto icmp icmp-type unreach all
>       pass in final proto icmp icmp-type echoreply all
>       pass in final proto icmp icmp-type sourcequench all
>       pass in final proto icmp icmp-type paramprob all
>       pass in final proto ipv6-icmp all
> }
> 
> group "internal" on $int_if {
>       # Pass everything to internal networks,
>       pass final all apply "log"
> }
> 
> group "media" on $media_if {
>       # Pass everything to media networks,
>       pass final all apply "log"
> }
> 
> group "wifi" on $wifi_if {
>       # Pass everything to wifi networks,
>       pass final all apply "log"
> }
> 
> group default {
>       # Loopback interface should allows packets to traverse it.
>       pass final on lo0 all
> 
>       # Block everything by default.
>       block final all apply "log"
> }
> ---------------------------------------
> 
>    In addition to not being able to make outbound connections from the
> systems on the wm* interfaces, the router can not be ping:ed from
> Internet (using a laptop+mobile) (No logs are generated on npflog0 when
> I try to ping the router).
> 
>    ... help?

Did you start NPF before or after you obtained your upstream IP address?
I've found I have to bounce NPF every time my uplink changes. I used
dhcpcd-run-hooks(8) to make this automatic.

Reply via email to