b7f2e906ac122bada8032ccfa1dcdf5162c34c59
[ikiwiki.git] / docs / docs / howtos / HowToPF6and4 / index.mdwn
1 A small LAN running services and having an IPv6 tunnel and a VoIP phone
2
3 This page is a work in progress. I'll be adding comments.
4 ##rc.conf
5         gif_interfaces="gif0"
6         ifconfig_em0="DHCP"
7         ifconfig_em1="inet 192.168.7.2 netmask 255.255.255.0"
8         ifconfig_em1_alias0="inet6 2001:470:deaf:beef::2 prefixlen 64"
9         #gifconfig_gif0="69.132.98.107 216.66.22.2"
10         gifconfig_gif0="75.176.126.216 216.66.22.2"
11         ifconfig_gif0="inet6 2001:470:dead:beef::2 2001:470:dead:beef::1 prefixlen 128"
12         #defaultrouter="192.168.7.1"
13         ipv6_enable=YES
14         ipv6_network_interfaces="gif0 em1"
15         ipv6_gateway_enable=YES
16         ipv6_defaultrouter="2001:470:dead:beef::1"
17         rtadvd_enable=YES
18         rtadvd_interfaces="em1"
19         pf=YES  # rcrun enable pf
20         isc_dhcpd=YES   # rcrun enable isc_dhcpd
21
22 The tunnel setup should be done with an rc.d script, since the IP address isn't known until dhcpcd gets it. I haven't written it yet.
23 ##pf.conf
24         ext_if="em0"
25         ext_if6="gif0"
26         int_if="em1"
27         int_if6="em1"
28         fwd_darner="{ 14159, 9030 }" # tahoe, tordir
29         fwd_chausie="{ ftp, http, smtp, ssh }"
30         fwd_leopard="{ rsync, ntp, 8333 }" # bitcoin
31         forwarded_ports="{ 110, 2222 }"
32         allow_all6="{ http ssh }"
33         darner="192.168.7.5"
34         darner6="2001:470:deaf:beef:d5aa:96ff:fede:aaeb"
35         chausie="192.168.7.4"
36         chausie6="2001:470:deaf:beef:bead:edff:feca:5c05"
37         leopard="192.168.7.10"
38         leopard6="2001:470:deaf:beef:2a3:a0ff:fefd:5c5f"
39         sipura="192.168.7.99"
40
41         table <bruteforce> persist
42
43         scrub in
44
45         #Phone conversation takes 10 kB/s each way
46         #Bandwidth out is 123 kB/s
47         altq on $int_if cbq bandwidth 984Kb queue { voip,dnsq,rest }
48         queue voip bandwidth 84Kb priority 3
49         queue dnsq bandwidth 32Kb priority 2
50         queue rest bandwidth 868Kb cbq(default,borrow)
51
52         nat on $ext_if inet from !($ext_if) -> ($ext_if:0)
53
54         rdr inet proto {tcp udp} from !($ext_if) to ($ext_if) port $fwd_darner -> $darner
55         rdr inet proto {tcp udp} from !($ext_if) to ($ext_if) port $fwd_chausie -> $chausie
56         rdr inet proto {tcp udp} from !($ext_if) to ($ext_if) port $fwd_leopard -> $leopard
57         rdr on $ext_if inet proto {tcp udp} from !($ext_if) to ($ext_if) port 110 -> $darner port 6561 # tor
58         rdr on $ext_if inet proto {tcp udp} from !($ext_if) to ($ext_if) port 2222 -> $darner port ssh
59         nat on $int_if inet proto {tcp udp} from $int_if:network to $darner port $fwd_darner -> $int_if
60         nat on $int_if inet proto {tcp udp} from $int_if:network to $chausie port $fwd_chausie -> $int_if
61         nat on $int_if inet proto {tcp udp} from $int_if:network to $leopard port $fwd_leopard -> $int_if
62         block quick from <bruteforce>
63
64         block in on $ext_if6
65         pass out on $ext_if6 keep state
66         #block in on $ext_if
67         #pass out on $ext_if keep state
68
69         pass quick on { lo $int_if  $int_if6 } keep state
70         antispoof for { lo $int_if $int_if6 $ext_if $ext_if6 }
71
72         pass in on $ext_if6 inet6 proto {tcp udp} to $darner6 port $fwd_darner keep state
73         pass in on $ext_if6 inet6 proto {tcp udp} to $chausie6 port $fwd_chausie keep state
74         pass in on $ext_if6 inet6 proto {tcp udp} to $leopard6 port $fwd_leopard keep state
75         pass in on $ext_if6 inet6 proto {tcp udp} to any port $allow_all6 keep state
76         pass in on $ext_if inet proto {tcp udp} to any port $fwd_darner keep state
77         pass in on $ext_if inet proto {tcp udp} to any port $fwd_chausie keep state
78         pass in on $ext_if inet proto {tcp udp} to any port $fwd_leopard keep state
79         pass in on $ext_if inet proto {tcp udp} to any port $forwarded_ports keep state
80         pass in on $int_if from $sipura to any queue voip keep state
81         pass in on $int_if proto {tcp udp} from any to any port 53 queue dnsq keep state
82
83 ##dhclient.conf
84         # option definitions common to all supported networks...
85         option domain-name "ixazon.lan";
86         option domain-name-servers leopard.ixazon.lan, chausie.ixazon.lan;
87
88         default-lease-time 600;
89         max-lease-time 7200;
90
91         subnet 192.168.7.0 netmask 255.255.255.0 {
92           range 192.168.7.100 192.168.7.255;
93           option routers 192.168.7.2;
94         }
95
96         host sipura {
97           hardware ethernet fa:de:db:ed:fa:ce;
98           fixed-address 192.168.7.99;
99         }