NetBSD-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: pf -> npf
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.
Home |
Main Index |
Thread Index |
Old Index