<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.alpinelinux.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dngray</id>
	<title>Alpine Linux - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.alpinelinux.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dngray"/>
	<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/wiki/Special:Contributions/Dngray"/>
	<updated>2026-04-25T20:07:25Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Linux_Router_with_VPN_on_a_Raspberry_Pi_(IPv6)&amp;diff=19844</id>
		<title>Linux Router with VPN on a Raspberry Pi (IPv6)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Linux_Router_with_VPN_on_a_Raspberry_Pi_(IPv6)&amp;diff=19844"/>
		<updated>2021-07-13T06:44:52Z</updated>

		<summary type="html">&lt;p&gt;Dngray: /* Make description more generic */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
I have split this off the main article [[Linux Router with VPN on a Raspberry Pi]] IPv6 implementation requires a few changes to the initial article to work. I haven&#039;t duplicated everything here however, just the stuff that relates to IPv6.&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
IPv6 introduces a number of new complexities into our network. If you&#039;ve completed previous IPv4 only guide [[Linux Router with VPN on a Raspberry Pi]] then read on.&lt;br /&gt;
&lt;br /&gt;
Your VPN provider may only offers you a single stack connection (no IPv6). You won&#039;t be able to implement IPv6 addressing on VLAN 3 to carry your IPv6 traffic out of the VPN. If your ISP gives you IPv6 addressing you may still implement addressing on VLAN2 to carry traffic directly to your ISP. In this example I do both.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t know much about IPv6 then these pages might be of interest to get you up to speed.&lt;br /&gt;
&lt;br /&gt;
* [http://tldp.org/HOWTO/Linux+IPv6-HOWTO Linux IPv6 HOWTO (en)] - in particular the &amp;quot;basics&amp;quot; and &amp;quot;address types&amp;quot;.&lt;br /&gt;
* [https://en.wikipedia.org/wiki/IPv6 IPv6]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/IPv6_address IPv6 Address]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Prefix_delegation Prefix delegation] we use this with dhcpcd when doing DHCPv6-PD to inform our ISP of our network devices.&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Neighbor_Discovery_Protocol Neighbor Discovery Protocol] we use this with radvd to distribute our routes.&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol_version_6 Internet Control Message Protocol version 6] ICMPv6 differs from ICMPv4 and is used for many critical parts of IPv6 infrastructure.&lt;br /&gt;
* [http://ipv6-test.com IPv6-test.com] Useful for diagnosing if IPv6 is working.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Network_Diagram_ipv4_ipv6_with_vlans.svg|900px|center|Network Diagram IPv4 and IPv6]]&lt;br /&gt;
&lt;br /&gt;
= Enabling IPv6 support =&lt;br /&gt;
&lt;br /&gt;
Assuming you&#039;re using the Alpine Linux kernel, IPv6 support is available separately as a module.&lt;br /&gt;
&lt;br /&gt;
{{cmd|modprobe ipv6}}&lt;br /&gt;
To add the module to our startup configuration.&lt;br /&gt;
{{cmd|echo &amp;quot;ipv6&amp;quot; &amp;gt;&amp;gt; /etc/modules}}&lt;br /&gt;
&lt;br /&gt;
== /etc/sysctl.d/local.conf ==&lt;br /&gt;
Modify the sysctl section to include IPv6 support:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Controls IP packet forwarding&lt;br /&gt;
net.ipv4.ip_forward = 1&lt;br /&gt;
&lt;br /&gt;
# Needed to use fwmark&lt;br /&gt;
net.ipv4.conf.all.rp_filter = 2&lt;br /&gt;
&lt;br /&gt;
# http://vk5tu.livejournal.com/37206.html&lt;br /&gt;
# What&#039;s this special value &amp;quot;2&amp;quot;? Originally the value was &amp;quot;1&amp;quot;, but this &lt;br /&gt;
# disabled autoconfiguration on all interfaces. That is, you couldn&#039;t appear &lt;br /&gt;
# to be a router on some interfaces and appear to be a host on other &lt;br /&gt;
# interfaces. But that&#039;s exactly the mental model of a ADSL router. &lt;br /&gt;
&lt;br /&gt;
# Controls IP packet forwarding&lt;br /&gt;
net.ipv6.conf.all.forwarding = 2&lt;br /&gt;
net.ipv6.conf.default.forwarding = 2&lt;br /&gt;
&lt;br /&gt;
# Accept Router Advertisments&lt;br /&gt;
net.ipv6.conf.all.accept_ra = 2&lt;br /&gt;
net.ipv6.conf.default.accept_ra = 2&lt;br /&gt;
&lt;br /&gt;
# We are a router so disable temporary addresses&lt;br /&gt;
net.ipv6.conf.all.use_tempaddr = 0&lt;br /&gt;
net.ipv6.conf.default.use_tempaddr = 0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/interfaces ==&lt;br /&gt;
Add an IPv6 interface for each VLAN. Note we don&#039;t need to add one for VLAN2 because dhcpcd will take care of that for us using our ISPs router advertisements. Also note the . (dot notation) represents a VLAN interface where as : (colon notation) used in the previous article represented an IP address aliased on an interface. &lt;br /&gt;
&lt;br /&gt;
The reason we need VLANs here is because each VLAN has it&#039;s own broadcast and we don&#039;t want our router advertisements to be putting routes and addresses on all the interfaces. It also helps us with a more secure design, but requires a managed switch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# VLAN 2 - DESTINED FOR ISP&lt;br /&gt;
auto eth0.2&lt;br /&gt;
iface eth0.2 inet static&lt;br /&gt;
    address 192.168.2.1&lt;br /&gt;
    netmask 255.255.255.0&lt;br /&gt;
    broadcast 192.168.2.255&lt;br /&gt;
    post-up /etc/network/fwmark_rules&lt;br /&gt;
&lt;br /&gt;
# VLAN 3 - DESTINED FOR VPN&lt;br /&gt;
auto eth0.3&lt;br /&gt;
iface eth0.3 inet static&lt;br /&gt;
    address 192.168.3.1&lt;br /&gt;
    netmask 255.255.255.0&lt;br /&gt;
    broadcast 192.168.3.255&lt;br /&gt;
&lt;br /&gt;
iface eth0.3 inet6 static&lt;br /&gt;
    address fde4:8dba:82e1:fff3::1&lt;br /&gt;
    netmask 64&lt;br /&gt;
    autoconf 0&lt;br /&gt;
    accept_ra 0&lt;br /&gt;
    privext 0&lt;br /&gt;
&lt;br /&gt;
# VLAN 4 - LAN ONLY&lt;br /&gt;
auto eth0.4&lt;br /&gt;
iface eth0.4 inet static&lt;br /&gt;
    address 192.168.4.1&lt;br /&gt;
    netmask 255.255.255.0&lt;br /&gt;
    broadcast 192.168.4.255&lt;br /&gt;
    post-up /etc/network/route_LAN&lt;br /&gt;
&lt;br /&gt;
iface eth0.4 inet6 static&lt;br /&gt;
    address fde4:8dba:82e1:fff4::1&lt;br /&gt;
    netmask 64&lt;br /&gt;
    autoconf 0&lt;br /&gt;
    accept_ra 0&lt;br /&gt;
    privext 0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Configuring PPP =&lt;br /&gt;
Next up we need to configure our router to be able to dial a PPP connection with our modem. &lt;br /&gt;
&lt;br /&gt;
See [[PPP]], you will want to make sure you set your WAN interface, in this example we used eth1.&lt;br /&gt;
&lt;br /&gt;
== Check system log ==&lt;br /&gt;
Restart ppp.&lt;br /&gt;
&lt;br /&gt;
{{cmd|poff yourISP}}&lt;br /&gt;
{{cmd|pon yourISP}}&lt;br /&gt;
&lt;br /&gt;
In /var/log/messages you should see something like&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;pppd[]: Plugin rp-pppoe.so loaded.&lt;br /&gt;
pppd[]: RP-PPPoE plugin version 3.8p compiled against pppd 2.4.7&lt;br /&gt;
pppd[]: pppd 2.4.7 started by root, uid 0&lt;br /&gt;
pppd[]: PPP session is 49969&lt;br /&gt;
pppd[]: Connected to 00:53:00:ff:ff:f0 via interface eth1&lt;br /&gt;
pppd[]: Using interface ppp0&lt;br /&gt;
pppd[]: Connect: ppp0 &amp;lt;--&amp;gt; eth1&lt;br /&gt;
pppd[]: CHAP authentication succeeded&lt;br /&gt;
pppd[]: CHAP authentication succeeded&lt;br /&gt;
pppd[]: peer from calling number 00:53:00:FF:FF:F0 authorized&lt;br /&gt;
pppd[]: local  LL address fe80::0db8:ffff:ffff:fff1&lt;br /&gt;
pppd[]: remote LL address fe80::0db8:ffff:ffff:fff0&lt;br /&gt;
pppd[]: local  IP address 192.0.2.1&lt;br /&gt;
pppd[]: remote IP address 192.0.2.0&lt;br /&gt;
pppd[]: primary   DNS address 192.0.2.10&lt;br /&gt;
pppd[]: secondary DNS address 192.0.2.20&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should be able to now ping things such as&lt;br /&gt;
&lt;br /&gt;
{{cmd|ping6 ipv6.google.com}}&lt;br /&gt;
&lt;br /&gt;
from your router.&lt;br /&gt;
&lt;br /&gt;
= Prefix Delegation =&lt;br /&gt;
&lt;br /&gt;
The next step will be to configure DHCPv6 Prefix Delegation with your ISP. Install dhcpcd. While many guides do use the wide-dhcpv6-client [http://bugs.alpinelinux.org/issues/564 it should be noted this is unmaintained] and not included in Alpine Linux.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t use the ISC&#039;s dhclient either as [https://bugs.gentoo.org/show_bug.cgi?id=432652 this does not support Prefix Delegations on PPP links] without a patch.&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add dhcpcd}}&lt;br /&gt;
&lt;br /&gt;
You can check out the manual for [http://roy.marples.name/man/html5/dhcpcd.conf.html dhcpcd.conf]. Installing dhcpcd-doc will allow you to read the man file. Eg:&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add dhcpcd-doc}}&lt;br /&gt;
&lt;br /&gt;
=== /etc/dhcpcd.conf ===&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add dhcpcd}}&lt;br /&gt;
&lt;br /&gt;
If the main repositories have dhcpcd below version 7.0.7 (at time of writing AlpineLinux 3.8 and below) you will need to use the latest version from edge as it fixes a bug with unique link local addresses on our VLANs [https://roy.marples.name/blog/dhcpcd-7-0-7-released dhcpcd ChangeLog] this [https://patchwork.alpinelinux.org/patch/4016/ patch] already applied in v7.0.7&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add dhcpcd@edge}}&lt;br /&gt;
&lt;br /&gt;
If you haven&#039;t you may need to add the edge repository for pinning [[Alpine Linux package management#Repository_pinning]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Enable extra debugging&lt;br /&gt;
#debug&lt;br /&gt;
#logfile /var/log/dhcpcd.log&lt;br /&gt;
&lt;br /&gt;
# Allow users of this group to interact with dhcpcd via the control&lt;br /&gt;
# socket.&lt;br /&gt;
#controlgroup wheel&lt;br /&gt;
&lt;br /&gt;
# Inform the DHCP server of our hostname for DDNS.&lt;br /&gt;
hostname gateway&lt;br /&gt;
&lt;br /&gt;
# Use the hardware address of the interface for the Client ID.&lt;br /&gt;
#clientid&lt;br /&gt;
# or&lt;br /&gt;
# Use the same DUID + IAID as set in DHCPv6 for DHCPv4 ClientID as&lt;br /&gt;
# per RFC4361. Some non-RFC compliant DHCP servers do not reply with&lt;br /&gt;
# this set. In this case, comment out duid and enable clientid above.&lt;br /&gt;
duid&lt;br /&gt;
&lt;br /&gt;
# Persist interface configuration when dhcpcd exits.&lt;br /&gt;
persistent&lt;br /&gt;
&lt;br /&gt;
# Rapid commit support.&lt;br /&gt;
# Safe to enable by default because it requires the equivalent option&lt;br /&gt;
# set on the server to actually work.&lt;br /&gt;
option rapid_commit&lt;br /&gt;
&lt;br /&gt;
# A list of options to request from the DHCP server.&lt;br /&gt;
option domain_name_servers, domain_name, domain_search, host_name&lt;br /&gt;
option classless_static_routes&lt;br /&gt;
&lt;br /&gt;
# Most distributions have NTP support.&lt;br /&gt;
option ntp_servers&lt;br /&gt;
&lt;br /&gt;
# Respect the network MTU.&lt;br /&gt;
# Some interface drivers reset when changing the MTU so disabled by&lt;br /&gt;
# default.&lt;br /&gt;
#option interface_mtu&lt;br /&gt;
&lt;br /&gt;
# A ServerID is required by RFC2131.&lt;br /&gt;
require dhcp_server_identifier&lt;br /&gt;
&lt;br /&gt;
# Generate Stable Private IPv6 Addresses instead of hardware based&lt;br /&gt;
# ones&lt;br /&gt;
slaac private&lt;br /&gt;
&lt;br /&gt;
# A hook script is provided to lookup the hostname if not set by the&lt;br /&gt;
# DHCP server, but it should not be run by default.&lt;br /&gt;
nohook lookup-hostname&lt;br /&gt;
&lt;br /&gt;
# IPv6 Only&lt;br /&gt;
ipv6only&lt;br /&gt;
&lt;br /&gt;
# Disable solicitations on all interfaces&lt;br /&gt;
noipv6rs&lt;br /&gt;
&lt;br /&gt;
# Wait for IP before forking to background&lt;br /&gt;
waitip 6&lt;br /&gt;
&lt;br /&gt;
# Don&#039;t touch DNS&lt;br /&gt;
nohook resolv.conf&lt;br /&gt;
&lt;br /&gt;
# Use the interface connected to WAN&lt;br /&gt;
interface ppp0&lt;br /&gt;
    ipv6rs # enable routing solicitation get the default IPv6 route&lt;br /&gt;
    iaid 1&lt;br /&gt;
    ia_pd 1/::/56 eth0.2/2/64&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add dhcpcd to the default run level:&lt;br /&gt;
&lt;br /&gt;
{{cmd|rc-update add dhcpcd default}}&lt;br /&gt;
&lt;br /&gt;
= Configuring firewall for IPv4 and IPv6 traffic =&lt;br /&gt;
&lt;br /&gt;
== iptables ==&lt;br /&gt;
Here are some rules for iptables that I am currently using, yours may look something similar.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#########################################################################&lt;br /&gt;
# Uses 192.168.1.0 VLAN1 Management Untagged - no route&lt;br /&gt;
#      192.168.2.0 VLAN2                     - route to ISP&lt;br /&gt;
#      192.168.3.0 VLAN3                     - route to VPN&lt;br /&gt;
#      192.168.4.0 VLAN4                     - no route&lt;br /&gt;
# &lt;br /&gt;
# Packets to/from 192.168.1.0/24 not in any VLAN ie tagged&lt;br /&gt;
# Packets to/from 192.168.2.0/24 are marked with 0x1 and routed to ISP&lt;br /&gt;
# Packets to/from 192.168.3.0/24 are marked with 0x2 and routed to VPN&lt;br /&gt;
# Packets to/from 192.168.4.0/24 are routed to LAN and not forwarded onto&lt;br /&gt;
#                                    the internet&lt;br /&gt;
#&lt;br /&gt;
# These destinations will always be marked with 0x1 from VLAN3:&lt;br /&gt;
#&lt;br /&gt;
# &amp;lt;ip_of_exception&amp;gt;       some exception&lt;br /&gt;
#########################################################################&lt;br /&gt;
&lt;br /&gt;
# &lt;br /&gt;
# Raw Table&lt;br /&gt;
#&lt;br /&gt;
*raw&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a log drop chain&lt;br /&gt;
:LOG_DROP_BOGON - [0:0]&lt;br /&gt;
:LOG_DROP_MSFT - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create output chains&lt;br /&gt;
:OUT_PPP0 - [0:0]&lt;br /&gt;
:OUT_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Allows traffic from VPN&#039;s DNS server&lt;br /&gt;
-A PREROUTING -s 172.16.32.1/32 -i tun0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Block specified bogons coming in from ISP and VPN&lt;br /&gt;
# (unlikely to happen as they filter them on their router)&lt;br /&gt;
-A PREROUTING -i ppp0 -m set --match-set bogon-bn-nonagg src -j LOG_DROP_BOGON&lt;br /&gt;
-A PREROUTING -i tun0 -m set --match-set bogon-bn-nonagg src -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Block MSFT known tracking IPs from https://github.com/Nummer/Destroy-Windows-10-Spying&lt;br /&gt;
-A PREROUTING -i ppp0 -m set --match-set dropped-msft-ip-ipv4  src -j LOG_DROP_MSFT&lt;br /&gt;
-A PREROUTING -i tun0 -m set --match-set dropped-msft-ip-ipv4  src -j LOG_DROP_MSFT&lt;br /&gt;
&lt;br /&gt;
# Allows my excepted ranges&lt;br /&gt;
-A PREROUTING -m set --match-set allowed-nets-ipv4 src,src -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allows traffic originating from router to remote address on VPN&lt;br /&gt;
-A OUT_TUN0 -d 172.16.32.1 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass output interface to corresponding chain&lt;br /&gt;
-A OUTPUT -o ppp0 -j OUT_PPP0&lt;br /&gt;
-A OUTPUT -o tun0 -j OUT_TUN0&lt;br /&gt;
&lt;br /&gt;
# Log drop chain&lt;br /&gt;
-A LOG_DROP_BOGON -j LOG --log-prefix &amp;quot;Dropped Bogon (ipv4) : &amp;quot; --log-level 6&lt;br /&gt;
-A LOG_DROP_BOGON -j DROP&lt;br /&gt;
-A LOG_DROP_MSFT -j LOG --log-prefix &amp;quot;Dropped MSFT (ipv4) : &amp;quot; --log-level 6&lt;br /&gt;
-A LOG_DROP_MSFT -j DROP&lt;br /&gt;
&lt;br /&gt;
# Block packets originating from the router destined to bogon ranges&lt;br /&gt;
-A OUT_PPP0 -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Blocks packets originating from the router destined to bogon ranges&lt;br /&gt;
-A OUT_TUN0 -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Block packets originating from the router destined to msft ranges&lt;br /&gt;
-A OUT_PPP0 -m set --match-set dropped-msft-ip-ipv4 dst -j LOG_DROP_MSFT&lt;br /&gt;
&lt;br /&gt;
# Blocks packets originating from the router destined to msft ranges&lt;br /&gt;
-A OUT_TUN0 -m set --match-set dropped-msft-ip-ipv4 dst -j LOG_DROP_MSFT&lt;br /&gt;
&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# NAT Table&lt;br /&gt;
# This is where translation of packets happens and &amp;quot;forwarding&amp;quot; of ports&lt;br /&gt;
# to specific hosts.&lt;br /&gt;
#&lt;br /&gt;
*nat&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Port forwarding for Bittorrent through VPN&lt;br /&gt;
-A PREROUTING -i tun0 -p tcp -m tcp --dport 20001 -j DNAT --to-destination 192.168.3.30&lt;br /&gt;
-A PREROUTING -i tun0 -p udp -m udp --dport 20001 -j DNAT --to-destination 192.168.3.30&lt;br /&gt;
&lt;br /&gt;
# Allows routing to our modem subnet so we can access the web interface&lt;br /&gt;
-A POSTROUTING -s 192.168.2.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
-A POSTROUTING -s 192.168.3.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows routing to Printer&lt;br /&gt;
-A POSTROUTING -s 192.168.2.0/24 -d 192.168.4.9/32 -o eth0 -j MASQUERADE&lt;br /&gt;
-A POSTROUTING -s 192.168.3.0/24 -d 192.168.4.9/32 -o eth0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the VPN tunnel&lt;br /&gt;
-A POSTROUTING -o tun0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the PPP tunnel&lt;br /&gt;
-A POSTROUTING -o ppp0 -j MASQUERADE&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Filter Table&lt;br /&gt;
# This is where we decide to ACCEPT, DROP or REJECT things&lt;br /&gt;
#&lt;br /&gt;
*filter&lt;br /&gt;
:INPUT DROP [0:0]&lt;br /&gt;
:FORWARD DROP [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for forwarding packets&lt;br /&gt;
:FWD_ETH1 - [0:0]&lt;br /&gt;
:FWD_PPP0 - [0:0]&lt;br /&gt;
:FWD_TUN0 - [0:0]&lt;br /&gt;
:FWD_V1_MGMT - [0:0]&lt;br /&gt;
:FWD_V2_ISP - [0:0]&lt;br /&gt;
:FWD_V3_VPN - [0:0]&lt;br /&gt;
:FWD_V4_LANONLY - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for input packets (for host itself)&lt;br /&gt;
:IN_ETH1 - [0:0]&lt;br /&gt;
:IN_PPP0 - [0:0]&lt;br /&gt;
:IN_TUN0 - [0:0]&lt;br /&gt;
:IN_V1_MGMT - [0:0]&lt;br /&gt;
:IN_V2_ISP - [0:0]&lt;br /&gt;
:IN_V3_VPN - [0:0]&lt;br /&gt;
:IN_V4_LANONLY - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a drop/reject chains&lt;br /&gt;
:LOG_DROP - [0:0]&lt;br /&gt;
:LOG_DROP_BOGON - [0:0]&lt;br /&gt;
:LOG_DROP_MSFT - [0:0]&lt;br /&gt;
:LOG_REJECT_LANONLY - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create an output chains&lt;br /&gt;
:OUT_PPP0 - [0:0]&lt;br /&gt;
:OUT_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Pass input packet to corresponding rule chain&lt;br /&gt;
-A INPUT -i lo -j ACCEPT&lt;br /&gt;
-A INPUT -i eth0 -j IN_V1_MGMT&lt;br /&gt;
-A INPUT -i eth0.2 -j IN_V2_ISP&lt;br /&gt;
-A INPUT -i eth0.3 -j IN_V3_VPN&lt;br /&gt;
-A INPUT -i eth0.4 -j IN_V4_LANONLY&lt;br /&gt;
-A INPUT -i eth1 -j IN_ETH1&lt;br /&gt;
-A INPUT -i ppp0 -j IN_PPP0&lt;br /&gt;
-A INPUT -i tun0 -j IN_TUN0&lt;br /&gt;
&lt;br /&gt;
# Track forwarded packets&lt;br /&gt;
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass forwarded packet to corresponding rule chain&lt;br /&gt;
-A FORWARD -i eth0 -j FWD_V1_MGMT&lt;br /&gt;
-A FORWARD -i eth0.2 -j FWD_V2_ISP&lt;br /&gt;
-A FORWARD -i eth0.3 -j FWD_V3_VPN&lt;br /&gt;
-A FORWARD -i eth0.4 -j FWD_V4_LANONLY&lt;br /&gt;
-A FORWARD -i eth1 -j FWD_ETH1&lt;br /&gt;
-A FORWARD -i ppp0 -j FWD_PPP0&lt;br /&gt;
-A FORWARD -i tun0 -j FWD_TUN0&lt;br /&gt;
-A OUTPUT -o ppp0 -j OUT_PPP0&lt;br /&gt;
-A OUTPUT -o tun0 -j OUT_TUN0&lt;br /&gt;
&lt;br /&gt;
# Forward HTTP packets from network to modem&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.2.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.3.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward Bittorrent Port&lt;br /&gt;
-A FWD_TUN0 -d 192.168.3.30/32 -p tcp -m tcp --dport 20001 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_TUN0 -d 192.168.3.30/32 -p udp -m udp --dport 20001 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward established packets to hosts in VLAN2/3 from Printer&lt;br /&gt;
-A FWD_V1_MGMT -s 192.168.4.9/32 -d 192.168.2.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_V1_MGMT -s 192.168.4.9/32 -d 192.168.3.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Refuse to forward bogons from VLAN1 (Untagged Management)&lt;br /&gt;
-A FWD_V1_MGMT -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Refuse to forward msft from VLAN1 (Untagged Management)&lt;br /&gt;
-A FWD_V1_MGMT -m set --match-set dropped-msft-ip-ipv4 dst -j LOG_DROP_MSFT&lt;br /&gt;
&lt;br /&gt;
# Forward traffic from VLAN2 to Modem&lt;br /&gt;
-A FWD_V2_ISP -d 192.168.0.1/32 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward traffic from VLAN2 to Printer&lt;br /&gt;
-A FWD_V2_ISP -d 192.168.4.9/32 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Drop bogons from VLAN2&lt;br /&gt;
-A FWD_V2_ISP -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Drop msft from VLAN2&lt;br /&gt;
-A FWD_V2_ISP -m set --match-set dropped-msft-ip-ipv4 dst -j LOG_DROP_MSFT&lt;br /&gt;
&lt;br /&gt;
# Allow rest from VLAN2&lt;br /&gt;
-A FWD_V2_ISP -s 192.168.2.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward traffic from VLAN3 to Modem&lt;br /&gt;
-A FWD_V3_VPN -d 192.168.0.1/32 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward traffic from VLAN3 to Printer&lt;br /&gt;
-A FWD_V3_VPN -d 192.168.4.9/32 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow rest from VLAN3&lt;br /&gt;
-A FWD_V3_VPN -s 192.168.3.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Drop bogons from VLAN3&lt;br /&gt;
-A FWD_V3_VPN -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Drop msft from VLAN3&lt;br /&gt;
-A FWD_V3_VPN -m set --match-set dropped-msft-ip-ipv4 dst -j LOG_DROP_MSFT&lt;br /&gt;
&lt;br /&gt;
# Forward some exception to ppp0 from VLAN3&lt;br /&gt;
-A FWD_V3_VPN -s 192.168.3.0/24 -d &amp;lt;ip_of_exception&amp;gt;/32 -o ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow in NTP from Router (this machine)&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow in HTTP from Router (this machine)&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked PPP0 connection&lt;br /&gt;
-A IN_PPP0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on PPP0&lt;br /&gt;
# -A IN_PPP0 -j LOG --log-prefix &amp;quot;DROP:INPUT (ipv4) &amp;quot; --log-level 6&lt;br /&gt;
-A IN_PPP0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked TUN0 connection&lt;br /&gt;
-A IN_TUN0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on TUN0&lt;br /&gt;
# -A IN_TUN0 -j LOG --log-prefix &amp;quot;DROP:INPUT (ipv4) &amp;quot; --log-level 6&lt;br /&gt;
-A IN_TUN0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Allow in established packets from Printer to hosts in VLAN2/3&lt;br /&gt;
-A IN_V1_MGMT -s 192.168.4.9/32 -d 192.168.2.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_V1_MGMT -s 192.168.4.9/32 -d 192.168.3.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# FreeRadius Clients (access point A &amp;amp; B)&lt;br /&gt;
-A IN_V1_MGMT -s 192.168.1.10/32 -p tcp -m tcp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_V1_MGMT -s 192.168.1.10/32 -p udp -m udp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_V1_MGMT -s 192.168.1.11/32 -p tcp -m tcp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_V1_MGMT -s 192.168.1.11/32 -p udp -m udp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Ubiquiti UAP Device Discovery Broadcast&lt;br /&gt;
-A IN_V1_MGMT -s 192.168.1.10/32 -p udp -m udp --dport 10001 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_V1_MGMT -s 192.168.1.11/32 -p udp -m udp --dport 10001 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_V1_MGMT -s 192.168.1.10/32 -p udp -m udp --dport 3478 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_V1_MGMT -s 192.168.1.11/32 -p udp -m udp --dport 3478 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow rest in from VLAN1&lt;br /&gt;
-A IN_V1_MGMT -s 192.168.1.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow ssh in from VLAN2&lt;br /&gt;
-A IN_V2_ISP -s 192.168.2.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow DNS in from VLAN2&lt;br /&gt;
-A IN_V2_ISP -s 192.168.2.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# ALLOW NTP in from VLAN2&lt;br /&gt;
-A IN_V2_ISP -s 192.168.2.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow rest from VLAN2&lt;br /&gt;
-A IN_V2_ISP -s 192.168.2.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow ssh in from VLAN3&lt;br /&gt;
-A IN_V3_VPN -s 192.168.3.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow DNS in from VLAN3&lt;br /&gt;
-A IN_V3_VPN -s 192.168.3.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow NTP in from VLAN3&lt;br /&gt;
-A IN_V3_VPN -s 192.168.3.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow rest from VLAN3&lt;br /&gt;
-A IN_V3_VPN -s 192.168.3.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow some exception direct from ppp0 to VLAN3&lt;br /&gt;
-A IN_V3_VPN -s 192.168.3.0/24 -d &amp;lt;ip_of_exception&amp;gt;/32 -o ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped bogons that never got forwarded&lt;br /&gt;
-A LOG_DROP_BOGON -j LOG --log-prefix &amp;quot;Dropped Bogon forward (ipv4) &amp;quot; --log-level 6&lt;br /&gt;
-A LOG_DROP_BOGON -j DROP&lt;br /&gt;
&lt;br /&gt;
# Log dropped msft tracking that never got forwarded&lt;br /&gt;
-A LOG_DROP_MSFT -j LOG --log-prefix &amp;quot;Dropped MSFT forward(ipv4) &amp;quot; --log-level 6&lt;br /&gt;
-A LOG_DROP_MSFT -j DROP&lt;br /&gt;
&lt;br /&gt;
# Log rejected packets&lt;br /&gt;
-A LOG_REJECT_LANONLY -j LOG --log-prefix &amp;quot;Rejected packet from LAN only&amp;quot; --log-level 6&lt;br /&gt;
-A LOG_REJECT_LANONLY -j REJECT --reject-with icmp-port-unreachable&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mangle Table&lt;br /&gt;
# This is the place where our markings happen, whether they be 0x1 or 0x2&lt;br /&gt;
#&lt;br /&gt;
*mangle&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:FORWARD ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Restore CONNMARK to the MARK (If one doesn&#039;t exist then no mark is set)&lt;br /&gt;
-A PREROUTING -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff&lt;br /&gt;
&lt;br /&gt;
# If packet MARK is 2, then it means there is already a connection mark and the&lt;br /&gt;
# original packet came in on VPN&lt;br /&gt;
-A PREROUTING -s 192.168.3.0/24 -m mark --mark 0x2&lt;br /&gt;
&lt;br /&gt;
# Check some exception are 0x1&lt;br /&gt;
-A PREROUTING -s 192.168.3.0/24 -d &amp;lt;ip_of_exception&amp;gt;/32 -m mark --mark 0x1&lt;br /&gt;
&lt;br /&gt;
# Mark packets coming from 192.168.3.0/24 are 0x2&lt;br /&gt;
-A PREROUTING -s 192.168.3.0/24 -j MARK --set-xmark 0x2/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# If packet MARK is 1, then it means there is already a connection mark and the&lt;br /&gt;
# original packet came in on ISP&lt;br /&gt;
-A PREROUTING -s 192.168.2.0/24 -m mark --mark 0x1&lt;br /&gt;
&lt;br /&gt;
# Mark packets 192.168.2.0/24 are 0x1&lt;br /&gt;
-A PREROUTING -s 192.168.2.0/24 -j MARK --set-xmark 0x1/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Mark some exception as 0x1&lt;br /&gt;
-A PREROUTING -s 192.168.3.0/24 -d &amp;lt;ip_of_exception&amp;gt;/32 -j MARK --set-xmark 0x1/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Strip mark if packet is destined for modem&lt;br /&gt;
-A PREROUTING -d 192.168.0.1/32 -j MARK --set-xmark 0x0/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Strip mark if packet is destined for printer&lt;br /&gt;
-A PREROUTING -d 192.168.4.9/32 -j MARK --set-xmark 0x0/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Save MARK to CONNMARK (remember iproute can&#039;t see CONNMARKs)&lt;br /&gt;
-A PREROUTING -j CONNMARK --save-mark --nfmask 0xffffffff --ctmask 0xffffffff&lt;br /&gt;
COMMIT&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ip6tables ==&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need to modify your prefix in one of the rules.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#########################################################################&lt;br /&gt;
# Uses 2001:0db8:1234:ffff::1/64 VLAN2 - route to ISP&lt;br /&gt;
#      fde4:8dba:82e1:fff3::1/64  VLAN3 - route to VPN&lt;br /&gt;
#########################################################################&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Raw Table&lt;br /&gt;
#&lt;br /&gt;
*raw&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a log drop chain&lt;br /&gt;
:LOG_DROP_BOGON - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create output chains&lt;br /&gt;
:OUT_PPP0 - [0:0]&lt;br /&gt;
:OUT_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Allows my excepted ranges&lt;br /&gt;
-A PREROUTING -m set --match-set allowed-nets-ipv6 src,src -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass output interface to corresponding chain&lt;br /&gt;
-A OUTPUT -o ppp0 -j OUT_PPP0&lt;br /&gt;
-A OUTPUT -o tun0 -j OUT_TUN0&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# NAT Table&lt;br /&gt;
# This is where translation of packets happens and &amp;quot;forwarding&amp;quot; of ports&lt;br /&gt;
# to specific hosts.&lt;br /&gt;
#&lt;br /&gt;
*nat&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the VPN tunnel for IPv6&lt;br /&gt;
-A POSTROUTING -o tun0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mangle Table&lt;br /&gt;
#&lt;br /&gt;
*mangle&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:FORWARD ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Drop unusually large ping packets&lt;br /&gt;
-A PREROUTING -p ipv6-icmp -m icmp6 --icmpv6-type 128 -m length --length 170:65535 -j DROP&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Filter Table&lt;br /&gt;
# This is where we decide to ACCEPT, DROP or REJECT things&lt;br /&gt;
#&lt;br /&gt;
*filter&lt;br /&gt;
:INPUT DROP [0:0]&lt;br /&gt;
:FORWARD DROP [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for forwarding packets&lt;br /&gt;
:FWD_ETH1 - [0:0]&lt;br /&gt;
:FWD_PPP0 - [0:0]&lt;br /&gt;
:FWD_TUN0 - [0:0]&lt;br /&gt;
:FWD_V1_MGMT - [0:0]&lt;br /&gt;
:FWD_V2_ISP - [0:0]&lt;br /&gt;
:FWD_V3_VPN - [0:0]&lt;br /&gt;
:FWD_V4_LANONLY - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for input packets (for host itself)&lt;br /&gt;
:IN_ETH1 - [0:0]&lt;br /&gt;
:IN_PPP0 - [0:0]&lt;br /&gt;
:IN_TUN0 - [0:0]&lt;br /&gt;
:IN_V1_MGMT - [0:0]&lt;br /&gt;
:IN_V2_ISP - [0:0]&lt;br /&gt;
:IN_V3_VPN - [0:0]&lt;br /&gt;
:IN_V4_LANONLY - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a drop/reject chains&lt;br /&gt;
:LOG_DROP - [0:0]&lt;br /&gt;
:LOG_DROP_BOGON - [0:0]&lt;br /&gt;
:LOG_REJECT_LANONLY - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create an output chains&lt;br /&gt;
:OUT_PPP0 - [0:0]&lt;br /&gt;
:OUT_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Pass input packet to corresponding rule chain&lt;br /&gt;
-A INPUT -i lo -j ACCEPT&lt;br /&gt;
-A INPUT -i eth0 -j IN_V1_MGMT&lt;br /&gt;
-A INPUT -i eth0.2 -j IN_V2_ISP&lt;br /&gt;
-A INPUT -i eth0.3 -j IN_V3_VPN&lt;br /&gt;
-A INPUT -i eth0.4 -j IN_V4_LANONLY&lt;br /&gt;
-A INPUT -i eth1 -j IN_ETH1&lt;br /&gt;
-A INPUT -i ppp0 -j IN_PPP0&lt;br /&gt;
-A INPUT -i tun0 -j IN_TUN0&lt;br /&gt;
&lt;br /&gt;
# Track forwarded packets&lt;br /&gt;
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass forwarded packet to corresponding rule chain&lt;br /&gt;
-A FORWARD -i eth0 -j FWD_V1_MGMT&lt;br /&gt;
-A FORWARD -i eth0.2 -j FWD_V2_ISP&lt;br /&gt;
-A FORWARD -i eth0.3 -j FWD_V3_VPN&lt;br /&gt;
-A FORWARD -i eth0.4 -j FWD_V4_LANONLY&lt;br /&gt;
-A FORWARD -i eth1 -j FWD_ETH1&lt;br /&gt;
-A FORWARD -i ppp0 -j FWD_PPP0&lt;br /&gt;
-A FORWARD -i tun0 -j FWD_TUN0&lt;br /&gt;
&lt;br /&gt;
# Rate limit ICMPv6 PING&lt;br /&gt;
-A FORWARD -p ipv6-icmp -m icmp6 --icmpv6-type 128 -m limit --limit 30/min -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass output interface to corresponding chain&lt;br /&gt;
-A OUTPUT -o ppp0 -j OUT_PPP0&lt;br /&gt;
-A OUTPUT -o tun0 -j OUT_TUN0&lt;br /&gt;
&lt;br /&gt;
# Forward VLAN2 to ISP&lt;br /&gt;
-A FWD_V2_ISP -s 2001:0db8:1234:ffff::/64 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward VLAN3 to VPN&lt;br /&gt;
-A FWD_V3_VPN -o tun0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked PPP0 connection&lt;br /&gt;
-A IN_PPP0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on PPP0&lt;br /&gt;
-A IN_PPP0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Allow and rate limit ICMP&lt;br /&gt;
-A IN_PPP0 -p ipv6-icmp -m icmp6 --icmpv6-type 2 -j ACCEPT&lt;br /&gt;
-A IN_PPP0 -p ipv6-icmp -m limit --limit 30/sec -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow DHCPv6 PD on Link Local from ISP&lt;br /&gt;
-A IN_PPP0 -s fe80::/10 -p udp -m udp --sport 547 --dport 546 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on PPP0&lt;br /&gt;
-A IN_PPP0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked TUN0 connection&lt;br /&gt;
-A IN_TUN0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets on VPN&lt;br /&gt;
-A IN_TUN0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Allow tracked connections in from ppp0 to VLAN2&lt;br /&gt;
-A IN_V2_ISP -s 2001:0db8:1234:ffff::/64 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow ICMP in from VLAN2&lt;br /&gt;
-A IN_V2_ISP -p ipv6-icmp -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow tracked connections in from tun0 to VLAN3&lt;br /&gt;
-A IN_V3_VPN -s fde4:8dba:82e1:fff3::/64 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow ICMP in from VLAN3&lt;br /&gt;
-A IN_V3_VPN -p ipv6-icmp -j ACCEPT&lt;br /&gt;
COMMIT&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add ip6tables to the default run level:&lt;br /&gt;
&lt;br /&gt;
{{cmd|rc-update add ip6tables default}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== nftables ==&lt;br /&gt;
&lt;br /&gt;
Optionally one might decide to use nftables instead of old legacy iptables. nftables has a few improvements such as a cleaner rule syntax, ipv4 and ipv6 is all in one table, and the ability to use [https://wiki.nftables.org/wiki-nftables/index.php/Scripting#Defining_variables variables], [https://wiki.nftables.org/wiki-nftables/index.php/Sets sets], [https://wiki.nftables.org/wiki-nftables/index.php/Dictionaries dictionaries] and [https://wiki.nftables.org/wiki-nftables/index.php/Maps maps]. This also means you no longer need to worry about using [[Linux Router with VPN on a Raspberry Pi#Installing_ipset | ipset]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/usr/sbin/nft -f&lt;br /&gt;
&lt;br /&gt;
flush ruleset&lt;br /&gt;
&lt;br /&gt;
###################################################################################&lt;br /&gt;
#&lt;br /&gt;
#| Address                            | Route To        | Interface | VLAN | Mark |&lt;br /&gt;
#|------------------------------------|-----------------|-----------|------|------|&lt;br /&gt;
#| 192.168.0.0/24                     | Modem           | eth1      | 1    |      |&lt;br /&gt;
#| 192.168.1.0/24                     | Nowhere         | eth0      | 1    |      |&lt;br /&gt;
#| 192.168.2.0/24                     | ISP             | eth0.2    | 2    | 0x1  |&lt;br /&gt;
#| 2001:0db8:1234:ffff::/64           | ISP             | eth0.2    | 2    | 0x1  |&lt;br /&gt;
#| 192.168.3.0/24                     | VPN             | eth0.3    | 3    | 0x2  |&lt;br /&gt;
#| fde4:8dba:82e1:fff3::/64           | VPN             | eth0.3    | 3    | 0x2  |&lt;br /&gt;
#| 192.168.4.0/24                     | Nowhere         | eth0.4    | 4    |      |&lt;br /&gt;
#| &amp;lt;ip_of_exception&amp;gt;                  | Exception (ISP) | eth0.2    | 4    | 0x1  |&lt;br /&gt;
#&lt;br /&gt;
###################################################################################&lt;br /&gt;
&lt;br /&gt;
define net_v0_ip4 = 192.168.0.0/24&lt;br /&gt;
define net_v1_ip4 = 192.168.1.0/24&lt;br /&gt;
define net_v2_ip4 = 192.168.2.0/24&lt;br /&gt;
define net_v3_ip4 = 192.168.3.0/24&lt;br /&gt;
define network_v4_ip4 = 192.168.4.0/24&lt;br /&gt;
define mailserver = &amp;lt;ip_of_exception&amp;gt;&lt;br /&gt;
define modem = 192.168.0.2&lt;br /&gt;
define router = 192.168.1.1&lt;br /&gt;
define printer = 192.168.4.9&lt;br /&gt;
define workstation = 192.168.3.30&lt;br /&gt;
define wifi_aps = { 192.168.1.10, 192.168.1.11 }&lt;br /&gt;
define net_ula_v1_ip6 = fde4:8dba:82e1:fff1::/64&lt;br /&gt;
define net_gua_v2_ip6 = 2001:0db8:1234:ffff::/64&lt;br /&gt;
define net_ula_v3_ip6 = fde4:8dba:82e1:fff3::/64&lt;br /&gt;
define net_ula_v4_ip6 = fde4:8dba:82e1:fff4::/64&lt;br /&gt;
define vpn_gateway = 172.16.32.1&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mangle Table (IPv4)&lt;br /&gt;
# Markings happen: whether they be 0x1 or 0x2&lt;br /&gt;
#&lt;br /&gt;
table ip mangle {&lt;br /&gt;
	chain PREROUTING {&lt;br /&gt;
		type filter hook prerouting priority mangle; policy accept;&lt;br /&gt;
&lt;br /&gt;
		# Restore CONNMARK to the MARK (If one doesn&#039;t exist then no mark is set)&lt;br /&gt;
		mark set ct mark&lt;br /&gt;
&lt;br /&gt;
		# If packet MARK is 2, then it means there is already a&lt;br /&gt;
		# connection mark and theoriginal packet came in on VPN&lt;br /&gt;
		ip saddr $net_v3_ip4 mark 0x00000002&lt;br /&gt;
&lt;br /&gt;
		# Check mail server are 0x1&lt;br /&gt;
		ip saddr $net_v3_ip4 ip daddr $mailserver mark 0x00000001&lt;br /&gt;
&lt;br /&gt;
		# Mark packets coming from VLAN3 as 0x2&lt;br /&gt;
		ip saddr $net_v3_ip4 mark set 0x00000002&lt;br /&gt;
&lt;br /&gt;
		# If packet MARK is 1, then it means there is already a&lt;br /&gt;
		# connection mark and the original packet came in on ISP&lt;br /&gt;
		ip saddr $net_v2_ip4 mark 0x00000001&lt;br /&gt;
&lt;br /&gt;
		# Mark packets coming from VLAN2 as 0x1&lt;br /&gt;
		ip saddr $net_v2_ip4 mark set 0x00000001&lt;br /&gt;
&lt;br /&gt;
		# Mark mail server as 0x1&lt;br /&gt;
		ip saddr $net_v3_ip4 ip daddr $mailserver mark set 0x00000001&lt;br /&gt;
&lt;br /&gt;
		# Strip mark if packet is destined for modem&lt;br /&gt;
		ip daddr $modem mark set 0x00000000&lt;br /&gt;
&lt;br /&gt;
		# Strip mark if packet is destined for printer&lt;br /&gt;
		ip daddr $printer mark set 0x00000000&lt;br /&gt;
&lt;br /&gt;
		# Save MARK to CONNMARK (remember iproute can&#039;t see CONNMARKs)&lt;br /&gt;
		ct mark set mark&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Filter Table (IPv4)&lt;br /&gt;
# Filtering things coming IN and OUT of the router&lt;br /&gt;
#&lt;br /&gt;
table ip filter {&lt;br /&gt;
	# Create rule chain per input interface for input packets (for host itself)&lt;br /&gt;
	chain INPUT {&lt;br /&gt;
		type filter hook input priority filter; policy drop;&lt;br /&gt;
		iifname &amp;quot;lo&amp;quot; accept&lt;br /&gt;
		iifname &amp;quot;eth0&amp;quot; jump IN_V1_MGMT&lt;br /&gt;
		iifname &amp;quot;eth0.2&amp;quot; jump IN_V2_ISP&lt;br /&gt;
		iifname &amp;quot;eth0.3&amp;quot; jump IN_V3_VPN&lt;br /&gt;
		iifname &amp;quot;eth1&amp;quot; jump IN_ETH1&lt;br /&gt;
		iifname &amp;quot;tun0&amp;quot; jump IN_TUN0&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	# Create rule chain per input interface for forwarding packets&lt;br /&gt;
	chain FORWARD {&lt;br /&gt;
		type filter hook forward priority filter; policy drop;&lt;br /&gt;
		ct state established,related accept&lt;br /&gt;
		iifname &amp;quot;eth0&amp;quot; jump FWD_V1_MGMT&lt;br /&gt;
		iifname &amp;quot;eth0.2&amp;quot; jump FWD_V2_ISP&lt;br /&gt;
		iifname &amp;quot;eth0.3&amp;quot; jump FWD_V3_VPN&lt;br /&gt;
		iifname &amp;quot;eth1&amp;quot; jump FWD_ETH1&lt;br /&gt;
		iifname &amp;quot;tun0&amp;quot; jump FWD_TUN0&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain FWD_ETH1 {&lt;br /&gt;
		ip saddr $modem ip daddr $net_v2_ip4 tcp sport http ct state established,new accept&lt;br /&gt;
		ip saddr $modem ip daddr $net_v3_ip4 tcp sport http ct state established,new accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain FWD_TUN0 {&lt;br /&gt;
		# Forward bittorrent&lt;br /&gt;
		ip daddr $workstation tcp dport 20001 ct state established,new accept&lt;br /&gt;
		ip daddr $workstation udp dport 20001 ct state established,new accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain FWD_V1_MGMT {&lt;br /&gt;
		# Forward established packets to hosts in VLAN2/3 from printer&lt;br /&gt;
		ip saddr $printer ip daddr $net_v2_ip4 ct state established,new accept&lt;br /&gt;
		ip saddr $printer ip daddr $net_v3_ip4 ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Forward established packets to hosts in VLAN2/3 from modem&lt;br /&gt;
		ip saddr $modem ip daddr $net_v3_ip4 tcp sport http ct state established,new accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain FWD_V2_ISP {&lt;br /&gt;
		# Forward traffic from VLAN2 to Modem&lt;br /&gt;
		ip daddr $modem tcp dport http accept&lt;br /&gt;
&lt;br /&gt;
		# Forward traffic from VLAN2 to printer&lt;br /&gt;
		ip daddr $printer accept&lt;br /&gt;
&lt;br /&gt;
		# Allow rest from VLAN2&lt;br /&gt;
		ip saddr $net_v2_ip4 accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain FWD_V3_VPN {&lt;br /&gt;
		# Forward traffic from VLAN3 to Modem&lt;br /&gt;
		ip daddr $modem tcp dport http accept&lt;br /&gt;
&lt;br /&gt;
		# Forward traffic from VLAN3 to printer&lt;br /&gt;
		ip daddr $printer accept&lt;br /&gt;
&lt;br /&gt;
		# Allow rest from VLAN3&lt;br /&gt;
		ip saddr $net_v3_ip4 accept&lt;br /&gt;
&lt;br /&gt;
		# Allow mailserver direct from VLAN3 out&lt;br /&gt;
		oifname &amp;quot;eth1&amp;quot; ip saddr $net_v3_ip4 ip daddr $mailserver accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain IN_ETH1 {&lt;br /&gt;
		# Accept incoming tracked connection from eth1&lt;br /&gt;
		ip saddr $router ip daddr $modem tcp sport http ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow incoming NTP in from VLAN1&lt;br /&gt;
		ip saddr $net_v0_ip4 udp dport ntp ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Log dropped packets coming in on eth1&lt;br /&gt;
		ct state established,related accept&lt;br /&gt;
		jump LOG_DROP&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain IN_TUN0 {&lt;br /&gt;
		# Log dropped packets coming in on tun0&lt;br /&gt;
		ct state established,related accept&lt;br /&gt;
		jump LOG_DROP&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain IN_V1_MGMT {&lt;br /&gt;
		# Allow in established packets from printer to VLAN2 and VLAN3&lt;br /&gt;
		ip saddr $printer ip daddr $net_v2_ip4 ct state established,new accept&lt;br /&gt;
		ip saddr $printer ip daddr $net_v3_ip4 ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow NTP in from VLAN1&lt;br /&gt;
		ip saddr $net_v1_ip4 udp dport ntp ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# FreeRadius Clients&lt;br /&gt;
		ip saddr $wifi_aps tcp dport radius ct state established,new accept&lt;br /&gt;
		ip saddr $wifi_aps udp dport radius ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Ubiquiti UAP Device Discovery Broadcast&lt;br /&gt;
		ip saddr $wifi_aps udp dport 10001 ct state established,new accept&lt;br /&gt;
		ip saddr $wifi_aps udp dport 3478 ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow rest in from VLAN1&lt;br /&gt;
		ip saddr $net_v1_ip4 ct state established,new accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain IN_V2_ISP {&lt;br /&gt;
		# Allow ssh in from VLAN2&lt;br /&gt;
		ip saddr $net_v2_ip4 tcp dport ssh ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow DNS in from VLAN2&lt;br /&gt;
		ip saddr $net_v2_ip4 udp dport domain ct state new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow NTP in from VLAN2&lt;br /&gt;
		ip saddr $net_v2_ip4 udp dport ntp ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow rest from VLAN2&lt;br /&gt;
		ip saddr $net_v2_ip4 ct state established,new accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain IN_V3_VPN {&lt;br /&gt;
		# Allow ssh in from VLAN3&lt;br /&gt;
		ip saddr $net_v3_ip4 tcp dport ssh ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow DNS in from VLAN3&lt;br /&gt;
		ip saddr $net_v3_ip4 udp dport domain ct state new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow NTP in from VLAN3&lt;br /&gt;
		ip saddr $net_v3_ip4 udp dport ntp ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow rest from VLAN3&lt;br /&gt;
		ip saddr $net_v3_ip4 ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow mailserver direct from eth1 from VLAN3&lt;br /&gt;
		oifname &amp;quot;eth1&amp;quot; ip saddr $net_v3_ip4 ip daddr $mailserver accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain LOG_DROP {&lt;br /&gt;
		log prefix &amp;quot;Dropped v4: &amp;quot; drop&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# NAT Table (IPv4)&lt;br /&gt;
# Translation of packets happens to our single external address&lt;br /&gt;
# Forwarding of ports through our public interfaces&lt;br /&gt;
#&lt;br /&gt;
table ip nat {&lt;br /&gt;
	chain PREROUTING {&lt;br /&gt;
		type nat hook prerouting priority dstnat; policy accept;&lt;br /&gt;
		# Port forwarding for Bittorrent on workstation through VPN&lt;br /&gt;
		iifname &amp;quot;tun0&amp;quot; tcp dport 20001 dnat to $workstation&lt;br /&gt;
		iifname &amp;quot;tun0&amp;quot; udp dport 20001 dnat to $workstation&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain POSTROUTING {&lt;br /&gt;
		type nat hook postrouting priority srcnat; policy accept;&lt;br /&gt;
&lt;br /&gt;
		# Allows routing to our modem subnet so we can access the web interface&lt;br /&gt;
		oifname &amp;quot;eth0&amp;quot; ip saddr $net_v2_ip4 ip daddr $modem tcp dport http masquerade&lt;br /&gt;
		oifname &amp;quot;eth0&amp;quot; ip saddr $net_v3_ip4 ip daddr $modem tcp dport http masquerade&lt;br /&gt;
&lt;br /&gt;
		# Allows routing to printer&lt;br /&gt;
		oifname &amp;quot;eth0&amp;quot; ip saddr $net_v2_ip4 ip daddr $printer masquerade&lt;br /&gt;
		oifname &amp;quot;eth0&amp;quot; ip saddr $net_v3_ip4 ip daddr $printer masquerade&lt;br /&gt;
&lt;br /&gt;
		# Masquerade behind NAT&lt;br /&gt;
		oifname &amp;quot;tun0&amp;quot; masquerade&lt;br /&gt;
		oifname &amp;quot;eth1&amp;quot; masquerade&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Filter Table (IPv6)&lt;br /&gt;
# Filtering things coming IN and OUT of the router&lt;br /&gt;
#&lt;br /&gt;
table ip6 filter {&lt;br /&gt;
	chain INPUT {&lt;br /&gt;
		# Create rule chain per input interface for input packets (for host itself)&lt;br /&gt;
		type filter hook input priority filter; policy drop;&lt;br /&gt;
		iifname &amp;quot;lo&amp;quot; accept&lt;br /&gt;
		iifname &amp;quot;eth0.2&amp;quot; jump IN_V2_ISP&lt;br /&gt;
		iifname &amp;quot;eth0.3&amp;quot; jump IN_V3_VPN&lt;br /&gt;
		iifname &amp;quot;eth1&amp;quot; jump IN_ETH1&lt;br /&gt;
		iifname &amp;quot;tun0&amp;quot; jump IN_TUN0&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain FORWARD {&lt;br /&gt;
		# Track forwarded packets&lt;br /&gt;
		type filter hook forward priority filter; policy drop;&lt;br /&gt;
		ct state established,related accept&lt;br /&gt;
&lt;br /&gt;
		# Create rule chain per input interface for forwarding packets&lt;br /&gt;
		iifname &amp;quot;eth0.2&amp;quot; jump FWD_V2_ISP&lt;br /&gt;
		iifname &amp;quot;eth0.3&amp;quot; jump FWD_V3_VPN&lt;br /&gt;
		# iifname &amp;quot;tun0&amp;quot; jump FWD_TUN0&lt;br /&gt;
&lt;br /&gt;
		# Rate limit ICMPv6 PING&lt;br /&gt;
		icmpv6 type echo-request limit rate 30/minute accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain OUTPUT {&lt;br /&gt;
		type filter hook output priority filter; policy accept;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	# chain FWD_TUN0 {&lt;br /&gt;
	# We could forward ports IPv6 ports through the VPN here&lt;br /&gt;
	# }&lt;br /&gt;
&lt;br /&gt;
	chain FWD_V2_ISP {&lt;br /&gt;
		# Forward VLAN2 to ISP&lt;br /&gt;
		ip6 saddr $net_gua_v2_ip6 accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain FWD_V3_VPN {&lt;br /&gt;
		# Forward VLAN3 to VPN&lt;br /&gt;
		ip6 saddr $net_ula_v3_ip6 accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain IN_ETH1 {&lt;br /&gt;
		# Accept incoming tracked ETH1 connection&lt;br /&gt;
		ct state established,related accept&lt;br /&gt;
&lt;br /&gt;
		# Allow and rate limit ICMP&lt;br /&gt;
		icmpv6 type packet-too-big accept&lt;br /&gt;
		meta l4proto ipv6-icmp limit rate 30/second accept&lt;br /&gt;
&lt;br /&gt;
		# Allow DHCPv6 PD on Link Local from ISP&lt;br /&gt;
		ip6 saddr fe80::/10 udp sport dhcpv6-server udp dport dhcpv6-client ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow Router advetisements/solict form ISP&lt;br /&gt;
		ip6 saddr fe80::/10 icmpv6 type nd-router-advert accept&lt;br /&gt;
		ip6 saddr fe80::/10 icmpv6 type nd-neighbor-solicit accept&lt;br /&gt;
		ip6 saddr fe80::/10 icmpv6 type nd-neighbor-advert accept&lt;br /&gt;
&lt;br /&gt;
		# Log dropped packets coming in on ETH1&lt;br /&gt;
		jump LOG_DROP&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain IN_TUN0 {&lt;br /&gt;
		# Accept incoming tracked TUN0 connection&lt;br /&gt;
		ct state established,related accept&lt;br /&gt;
&lt;br /&gt;
		# Allow and rate limit ICMP&lt;br /&gt;
		icmpv6 type packet-too-big accept&lt;br /&gt;
		meta l4proto ipv6-icmp limit rate 30/second accept&lt;br /&gt;
&lt;br /&gt;
		# Log dropped packets on VPN&lt;br /&gt;
		jump LOG_DROP&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain IN_V2_ISP {&lt;br /&gt;
		# Allow tracked connections in from ETH1 to VLAN2&lt;br /&gt;
		ip6 saddr $net_gua_v2_ip6 ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow ICMP in from VLAN2&lt;br /&gt;
		meta l4proto ipv6-icmp accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain IN_V3_VPN {&lt;br /&gt;
		# Allow tracked connections in from tun0 to VLAN3&lt;br /&gt;
		ip6 saddr $net_ula_v3_ip6 ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow ICMP in from VLAN3&lt;br /&gt;
		meta l4proto ipv6-icmp accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain LOG_DROP {&lt;br /&gt;
		log prefix &amp;quot;Dropped v6: &amp;quot; drop&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mangle Table (IPv6)&lt;br /&gt;
#&lt;br /&gt;
table ip6 mangle {&lt;br /&gt;
	chain PREROUTING {&lt;br /&gt;
		type filter hook prerouting priority mangle; policy accept;&lt;br /&gt;
&lt;br /&gt;
		# Drop unusually large ping packets&lt;br /&gt;
		icmpv6 type echo-request meta length 170-65535 drop&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# NAT Table (IPv6)&lt;br /&gt;
# Translation of packets happens to our single external address&lt;br /&gt;
# only used for the VPN as our ISP give us a /56 range to split up&lt;br /&gt;
#&lt;br /&gt;
table ip6 nat {&lt;br /&gt;
	chain POSTROUTING {&lt;br /&gt;
		type nat hook postrouting priority srcnat; policy accept;&lt;br /&gt;
		oifname &amp;quot;tun0&amp;quot; masquerade&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Raw Table - IPv4/IPv6&lt;br /&gt;
#&lt;br /&gt;
table inet raw {&lt;br /&gt;
 	set bogon-bn-nonagg-set {&lt;br /&gt;
		type ipv4_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { 0.0.0.0/8, 10.0.0.0/8,&lt;br /&gt;
			     100.64.0.0/10, 127.0.0.0/8,&lt;br /&gt;
			     169.254.0.0/16, 172.16.0.0/12,&lt;br /&gt;
			     192.0.0.0/24, 192.0.2.0/24,&lt;br /&gt;
			     192.168.0.0/16, 198.18.0.0/15,&lt;br /&gt;
			     198.51.100.0/24, 203.0.113.0/24,&lt;br /&gt;
			     224.0.0.0/4, 240.0.0.0-255.255.255.255 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	set lo-allowed-net-ip4-set {&lt;br /&gt;
		type ipv4_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { 127.0.0.0/8 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	set eth0-allowed-net-ip4-set {&lt;br /&gt;
		type ipv4_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { $net_v1_ip4 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	set eth0.2-allowed-net-ip4-set {&lt;br /&gt;
		type ipv4_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { 192.168.2.0/24, 192.168.3.0/24,&lt;br /&gt;
			     192.168.4.0/24 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	set eth0.3-allowed-net-ip4-set {&lt;br /&gt;
		type ipv4_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { 192.168.2.0/24, 192.168.3.0/24,&lt;br /&gt;
			     192.168.4.0/24 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	set eth0.4-allowed-net-ip4-set {&lt;br /&gt;
		type ipv4_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { 192.168.2.0/24, 192.168.3.0/24,&lt;br /&gt;
			     192.168.4.0/24 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	set eth1-allowed-net-ip4-set {&lt;br /&gt;
		type ipv4_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { 192.168.0.0/30, 255.255.255.255 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	set tun0-allowed-net-ip4-set {&lt;br /&gt;
		type ipv4_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { 172.16.32.0/20, 172.16.48.0/20 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	set lo-allowed-net-ip6-set {&lt;br /&gt;
		type ipv6_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { ::1/128 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	set eth0-allowed-net-ip6-set {&lt;br /&gt;
		type ipv6_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { fde4:8dba:82e1:fff1::/64,&lt;br /&gt;
			     fe80::/10 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	set eth0.2-allowed-net-ip6-set {&lt;br /&gt;
		type ipv6_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { 2001:0db8:1234:ffff::/64,&lt;br /&gt;
			     fe80::/10 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	set eth0.3-allowed-net-ip6-set {&lt;br /&gt;
		type ipv6_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { fde4:8dba:82e1:fff3::/64,&lt;br /&gt;
			     fe80::/10 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	set eth0.4-allowed-net-ip6-set {&lt;br /&gt;
		type ipv6_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { fde4:8dba:82e1:fff4::/64,&lt;br /&gt;
			     fe80::/10 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain PREROUTING {&lt;br /&gt;
		type filter hook prerouting priority raw; policy accept;&lt;br /&gt;
&lt;br /&gt;
		# Allows traffic from NNTP/DNS vpn gateway&lt;br /&gt;
		iifname &amp;quot;tun0&amp;quot; ip saddr $vpn_gateway accept;&lt;br /&gt;
&lt;br /&gt;
		# Allows traffic originating from router to vpn gateway&lt;br /&gt;
		ip daddr $vpn_gateway accept&lt;br /&gt;
&lt;br /&gt;
		# Allows traffic originating from router to modem&lt;br /&gt;
		ip daddr $modem accept&lt;br /&gt;
&lt;br /&gt;
		# Block specified bogons coming in from ISP and VPN&lt;br /&gt;
		# (unlikely to happen as they filter them on their router)&lt;br /&gt;
		#iifname &amp;quot;eth1&amp;quot; ip saddr @bogon-bn-nonagg-set jump LOG_DROP_BOGON_PR;&lt;br /&gt;
		#iifname &amp;quot;tun0&amp;quot; ip saddr @bogon-bn-nonagg-set jump LOG_DROP_BOGON_PR;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain OUTPUT {&lt;br /&gt;
		type filter hook output priority raw; policy accept;&lt;br /&gt;
&lt;br /&gt;
		# Allows my excepted ranges&lt;br /&gt;
		iifname vmap { lo : jump lo-allowed-net, eth0 : jump eth0-allowed-net,&lt;br /&gt;
		    eth0.2 : jump eth0.2-allowed-net, eth0.3 : jump eth0.3-allowed-net,&lt;br /&gt;
		    eth0.4 : jump eth0.4-allowed-net, eth1 : jump eth1-allowed-net,&lt;br /&gt;
		    tun0 : jump tun0-allowed-net };&lt;br /&gt;
&lt;br /&gt;
		oifname vmap { lo : jump lo-allowed-net, eth0 : jump eth0-allowed-net,&lt;br /&gt;
		    eth0.2 : jump eth0.2-allowed-net, eth0.3 : jump eth0.3-allowed-net,&lt;br /&gt;
		    eth0.4 : jump eth0.4-allowed-net, eth1 : jump eth1-allowed-net,&lt;br /&gt;
		    tun0 : jump tun0-allowed-net };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
		# Drop any remaining bogons that try to leave the router&lt;br /&gt;
		oifname &amp;quot;eth1&amp;quot; ip daddr @bogon-bn-nonagg-set jump LOG_DROP_BOGON_IN;&lt;br /&gt;
		oifname &amp;quot;tun0&amp;quot; ip daddr @bogon-bn-nonagg-set jump LOG_DROP_BOGON_IN;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain lo-allowed-net {&lt;br /&gt;
		ip saddr @lo-allowed-net-ip4-set accept&lt;br /&gt;
		ip6 saddr @lo-allowed-net-ip6-set accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain eth0-allowed-net {&lt;br /&gt;
		ip saddr @eth0-allowed-net-ip4-set accept&lt;br /&gt;
		ip6 saddr @eth0-allowed-net-ip6-set accept&lt;br /&gt;
		#log prefix &amp;quot;Allowed packet allow net 0: &amp;quot; level info&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain eth0.2-allowed-net {&lt;br /&gt;
		ip saddr @eth0.2-allowed-net-ip4-set accept&lt;br /&gt;
		ip6 saddr @eth0.2-allowed-net-ip6-set accept&lt;br /&gt;
		#log prefix &amp;quot;Allowed packet allow net 2: &amp;quot; level info&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain eth0.3-allowed-net {&lt;br /&gt;
		ip saddr @eth0.3-allowed-net-ip4-set accept&lt;br /&gt;
		ip6 saddr @eth0.3-allowed-net-ip6-set accept&lt;br /&gt;
		#log prefix &amp;quot;Allowed packet allow net 3: &amp;quot; level info&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain eth0.4-allowed-net {&lt;br /&gt;
		ip saddr @eth0.4-allowed-net-ip4-set accept&lt;br /&gt;
		ip6 saddr @eth0.4-allowed-net-ip6-set accept&lt;br /&gt;
		#log prefix &amp;quot;Allowed packet allow net 4: &amp;quot; level info&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain eth1-allowed-net {&lt;br /&gt;
		ip saddr @eth1-allowed-net-ip4-set accept&lt;br /&gt;
		#log prefix &amp;quot;Allowed packet allow eth1: &amp;quot; level info&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
    chain tun0-allowed-net {&lt;br /&gt;
		ip saddr @tun0-allowed-net-ip4-set accept&lt;br /&gt;
		#log prefix &amp;quot;Allowed packet allow tun0: &amp;quot; level info&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain LOG_DROP_BOGON_IN {&lt;br /&gt;
		log prefix &amp;quot;Dropped Bogon outgoing &amp;quot; drop&lt;br /&gt;
	}&lt;br /&gt;
	chain LOG_DROP_BOGON_OUT {&lt;br /&gt;
		log prefix &amp;quot;Dropped Bogon incoming &amp;quot; drop&lt;br /&gt;
	}&lt;br /&gt;
	chain LOG_DROP_BOGON_PR {&lt;br /&gt;
		log prefix &amp;quot;Dropped Bogon prerouting &amp;quot; drop&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add nftables to the default run level:&lt;br /&gt;
&lt;br /&gt;
{{cmd|rc-update add nftables default}}&lt;br /&gt;
&lt;br /&gt;
= Router Advertisements =&lt;br /&gt;
&lt;br /&gt;
Now we need to configure radvd to give router advertisements to out VLANs for addressing and routing.&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add radvd}}&lt;br /&gt;
&lt;br /&gt;
Once radvd is installed, you may configure it:&lt;br /&gt;
&lt;br /&gt;
== /etc/radvd.conf ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;interface eth0.2 {&lt;br /&gt;
&lt;br /&gt;
  # We are sending advertisements (route)&lt;br /&gt;
  AdvSendAdvert on;&lt;br /&gt;
&lt;br /&gt;
  # When set, host use the administered (stateful) protocol&lt;br /&gt;
  # for address autoconfiguration. The use of this flag is&lt;br /&gt;
  # described in RFC 4862&lt;br /&gt;
  AdvManagedFlag on;&lt;br /&gt;
&lt;br /&gt;
  # When set, host use the administered (stateful) protocol&lt;br /&gt;
  # for address autoconfiguration. For other (non-address)&lt;br /&gt;
  # information.&lt;br /&gt;
  # The use of this flag is described in RFC 4862&lt;br /&gt;
  AdvOtherConfigFlag on;&lt;br /&gt;
&lt;br /&gt;
  # Suggested Maximum Transmission setting for using the&lt;br /&gt;
  # Hurricane Electric Tunnel Broker.&lt;br /&gt;
  # AdvLinkMTU 1480;&lt;br /&gt;
&lt;br /&gt;
  # We have native Dual Stack IPv6 so we can use the regular MTU&lt;br /&gt;
  # http://blogs.cisco.com/enterprise/ipv6-mtu-gotchas-and-other-icmp-issues&lt;br /&gt;
  AdvLinkMTU 1500;&lt;br /&gt;
  &lt;br /&gt;
  prefix ::/64 {&lt;br /&gt;
    AdvOnLink on;&lt;br /&gt;
    AdvAutonomous on; ## SLAAC based on EUI&lt;br /&gt;
    AdvRouterAddr on;&lt;br /&gt;
  };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
interface eth0.3 {&lt;br /&gt;
&lt;br /&gt;
  AdvSendAdvert on;&lt;br /&gt;
  AdvManagedFlag on;&lt;br /&gt;
  AdvOtherConfigFlag on;&lt;br /&gt;
  AdvLinkMTU 1500;&lt;br /&gt;
&lt;br /&gt;
  # Helps the route not get lost when on WiFi with packet loss&lt;br /&gt;
  MaxRtrAdvInterval 30;&lt;br /&gt;
  AdvDefaultLifetime 9000;&lt;br /&gt;
&lt;br /&gt;
  prefix fde4:8dba:82e1:fff3::/64 {&lt;br /&gt;
    AdvOnLink on;&lt;br /&gt;
    AdvAutonomous on; ## SLAAC based on EUI&lt;br /&gt;
  };&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add radvd to the default run level:&lt;br /&gt;
&lt;br /&gt;
{{cmd|rc-update add radvd default}}&lt;br /&gt;
&lt;br /&gt;
= DHCP =&lt;br /&gt;
You may decide you want more control over your network address assignment. I like to have certain hosts get certain addresses when they connect on a particular VLAN, note v2 and v3. You can do this with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;authoritative;&lt;br /&gt;
ddns-update-style interim;&lt;br /&gt;
&lt;br /&gt;
subnet 192.168.1.0 netmask 255.255.255.0 {&lt;br /&gt;
    range 192.168.1.21 192.168.1.240;&lt;br /&gt;
    option subnet-mask 255.255.255.0;&lt;br /&gt;
    option broadcast-address 192.168.1.255;&lt;br /&gt;
    option routers 192.168.1.1;&lt;br /&gt;
    option ntp-servers 192.168.1.1;&lt;br /&gt;
    option domain-name-servers 192.168.1.1;&lt;br /&gt;
    allow unknown-clients;&lt;br /&gt;
&lt;br /&gt;
        host wifi_ap {&lt;br /&gt;
            hardware ethernet &amp;lt;mac_addess&amp;gt;;&lt;br /&gt;
            fixed-address 192.168.1.11;&lt;br /&gt;
            option subnet-mask 255.255.255.0;&lt;br /&gt;
            option routers 192.168.1.1;&lt;br /&gt;
            option host-name &amp;quot;&amp;lt;hostname&amp;gt;&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
subnet 192.168.2.0 netmask 255.255.255.0 {&lt;br /&gt;
    range 192.168.2.40 192.168.2.240;&lt;br /&gt;
    option subnet-mask 255.255.255.0;&lt;br /&gt;
    option broadcast-address 192.168.2.255;&lt;br /&gt;
    option routers 192.168.2.1;&lt;br /&gt;
    option ntp-servers 192.168.2.1;&lt;br /&gt;
    option domain-name-servers 192.168.2.1;&lt;br /&gt;
    allow unknown-clients;&lt;br /&gt;
&lt;br /&gt;
        host host-v2 {&lt;br /&gt;
            hardware ethernet &amp;lt;mac_address&amp;gt;;&lt;br /&gt;
            fixed-address 192.168.2.30;&lt;br /&gt;
            option subnet-mask 255.255.255.0;&lt;br /&gt;
            option broadcast-address 192.168.2.255;&lt;br /&gt;
            option routers 192.168.2.1;&lt;br /&gt;
            option host-name &amp;quot;&amp;lt;hostname&amp;gt;&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
subnet 192.168.3.0 netmask 255.255.255.0 {&lt;br /&gt;
    range 192.168.3.20 192.168.3.240;&lt;br /&gt;
    option subnet-mask 255.255.255.0;&lt;br /&gt;
    option broadcast-address 192.168.3.255;&lt;br /&gt;
    option routers 192.168.3.1;&lt;br /&gt;
    option ntp-servers 192.168.3.1;&lt;br /&gt;
    option domain-name-servers 192.168.3.1;&lt;br /&gt;
    ignore unknown-clients;&lt;br /&gt;
&lt;br /&gt;
        host host-v3 {&lt;br /&gt;
            hardware ethernet &amp;lt;mac_address&amp;gt;;&lt;br /&gt;
            fixed-address 192.168.3.30;&lt;br /&gt;
            option subnet-mask 255.255.255.0;&lt;br /&gt;
            option broadcast-address 192.168.3.255;&lt;br /&gt;
            option routers 192.168.3.1;&lt;br /&gt;
            option host-name &amp;quot;&amp;lt;hostname&amp;gt;&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
subnet 192.168.4.0 netmask 255.255.255.0 {&lt;br /&gt;
    range 192.168.4.40 192.168.4.240;&lt;br /&gt;
    option subnet-mask 255.255.255.0;&lt;br /&gt;
    option broadcast-address 192.168.4.255;&lt;br /&gt;
    option routers 192.168.4.1;&lt;br /&gt;
    option ntp-servers 192.168.4.1;&lt;br /&gt;
    option domain-name-servers 192.168.4.1;&lt;br /&gt;
&lt;br /&gt;
    host printer {&lt;br /&gt;
            hardware ethernet &amp;lt;PRINTER_MAC_ADDRESS&amp;gt;;&lt;br /&gt;
            fixed-address 192.168.4.9;&lt;br /&gt;
            option subnet-mask 255.255.255.0;&lt;br /&gt;
            option broadcast-address 192.168.4.255;&lt;br /&gt;
            option routers 192.168.4.1;&lt;br /&gt;
            option host-name &amp;quot;My_Printer&amp;quot;;&lt;br /&gt;
        }   ignore unknown-clients;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For IPv6 I don&#039;t use DHCPv6 because Android doesn&#039;t support it. I just let SLAAC assign addresses.&lt;br /&gt;
&lt;br /&gt;
= VPN Tunnel VLAN3 =&lt;br /&gt;
&lt;br /&gt;
Install the necessary packages:&lt;br /&gt;
{{cmd|apk add openvpn iproute2 iputils}}&lt;br /&gt;
&lt;br /&gt;
== /etc/modules ==&lt;br /&gt;
You&#039;ll want to add the tun module&lt;br /&gt;
&amp;lt;pre&amp;gt;tun&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/iproute2/rt_tables ==&lt;br /&gt;
Add the two routing tables to the bottom of rt_tables. It should look something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;#&lt;br /&gt;
# reserved values&lt;br /&gt;
#&lt;br /&gt;
255	local&lt;br /&gt;
254	main&lt;br /&gt;
253	default&lt;br /&gt;
0	unspec&lt;br /&gt;
#&lt;br /&gt;
# local&lt;br /&gt;
#&lt;br /&gt;
#1	inr.ruhep&lt;br /&gt;
1 ISP&lt;br /&gt;
2 VPN&lt;br /&gt;
3 LAN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/fwmark_rules ==&lt;br /&gt;
In this file we want to put the fwmark rules and set the correct priorities.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Normal packets to go direct out WAN&lt;br /&gt;
/sbin/ip rule add fwmark 1 table ISP prio 100&lt;br /&gt;
/sbin/ip -6 rule add fwmark 1 table ISP prio 100&lt;br /&gt;
&lt;br /&gt;
# Put packets destined into VPN when VPN is up&lt;br /&gt;
/sbin/ip rule add fwmark 2 table VPN prio 200&lt;br /&gt;
/sbin/ip -6 rule add fwmark 2 table VPN prio 200&lt;br /&gt;
&lt;br /&gt;
# Prevent packets from being routed out when VPN is down.&lt;br /&gt;
# This prevents packets from falling back to the main table&lt;br /&gt;
# that has a priority of 32766&lt;br /&gt;
/sbin/ip rule add prohibit fwmark 2 prio 300&lt;br /&gt;
/sbin/ip -6 rule add prohibit fwmark 2 prio 300&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/route_LAN ==&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script adds the LAN routes.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Add routes from ISP to LAN&lt;br /&gt;
/sbin/ip route add 192.168.2.0/24 dev eth0.2 table LAN&lt;br /&gt;
&lt;br /&gt;
# Add route from VPN to LAN&lt;br /&gt;
/sbin/ip route add 192.168.3.0/24 dev eth0.3 table LAN&lt;br /&gt;
&lt;br /&gt;
# Add route from LAN to it&#039;s own table&lt;br /&gt;
/sbin/ip route add 192.168.4.0/24 dev eth0.4 table LAN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/ppp/ip-up ==&lt;br /&gt;
Next up we want to create the routes that should be run when PPP comes online. There are special hooks we can use in ip-up and ip-down to refer to the IP address, [https://ppp.samba.org/pppd.html#sect13 ppp man file - Scripts] You can also read about them in your man file if you have ppp-doc installed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by pppd when there&#039;s a successful ppp connection.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Flush out any old rules that might be there&lt;br /&gt;
/sbin/ip route flush table ISP&lt;br /&gt;
&lt;br /&gt;
# Add route to table from subnets on LAN&lt;br /&gt;
/sbin/ip route add 192.168.2.0/24 dev eth0.2 table ISP&lt;br /&gt;
/sbin/ip route add 192.168.3.0/24 dev eth0.3 table ISP&lt;br /&gt;
&lt;br /&gt;
# Add route from IP given by ISP to the table&lt;br /&gt;
/sbin/ip rule add from ${IPREMOTE} table ISP prio 100&lt;br /&gt;
&lt;br /&gt;
# Add a default route&lt;br /&gt;
/sbin/ip route add table ISP default via ${IPREMOTE} dev ${IFNAME}&lt;br /&gt;
&lt;br /&gt;
# Add route to LAN subnet&lt;br /&gt;
/sbin/ip route add 192.168.4.0/24 dev eth0.4 table ISP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/ppp/ip-down ==&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by pppd after the connection has ended.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Delete the rules when we take the interface down&lt;br /&gt;
/sbin/ip rule del from ${IPREMOTE} table ISP prio 100&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/openvpn/route-up-fwmark.sh ==&lt;br /&gt;
OpenVPN needs similar routing scripts and it also has it&#039;s own special hooks that allow you to specify particular values. A full list is here [https://openvpn.net/index.php/open-source/documentation/manuals/65-openvpn-20x-manpage.html#lbAS OpenVPN man file - Environmental Variables]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by OpenVPN when there&#039;s a successful VPN connection.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Flush out any old rules that might be there&lt;br /&gt;
/sbin/ip route flush table VPN&lt;br /&gt;
&lt;br /&gt;
# Add route to table from 192.168.3.0/24 subnet on LAN&lt;br /&gt;
/sbin/ip route add 192.168.3.0/24 dev eth0.3 table VPN&lt;br /&gt;
/sbin/ip -6 route add fde4:8dba:82e1:fff3::/64 dev eth0.3 table VPN&lt;br /&gt;
&lt;br /&gt;
# Add route from VPN interface IP to the VPN table&lt;br /&gt;
/sbin/ip rule add from ${ifconfig_local} table VPN prio 200&lt;br /&gt;
/sbin/ip -6 rule add from fde4:8dba:82e1:fff3::/64 table VPN prio 200&lt;br /&gt;
&lt;br /&gt;
# Add a default route&lt;br /&gt;
/sbin/ip route add default via ${ifconfig_local} dev ${dev} table VPN&lt;br /&gt;
/sbin/ip -6 route add default dev tun0 table VPN &lt;br /&gt;
&lt;br /&gt;
# Add route to LAN only subnet&lt;br /&gt;
/sbin/ip route add 192.168.4.0/24 dev eth0.4 table VPN&lt;br /&gt;
&lt;br /&gt;
# Add route to IP on VPN for traffic originating from the router&lt;br /&gt;
/sbin/ip route add 172.16.32.1 dev tun0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/openvpn/route-down-fwmark.sh ==&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by OpenVPN after the connection has ended&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Delete the rules when we take the interface down&lt;br /&gt;
/sbin/ip rule del from ${ifconfig_local} table VPN prio 200&lt;br /&gt;
/sbin/ip -6 rule del from fde4:8dba:82e1:fff3::/64 table VPN prio 200&lt;br /&gt;
&lt;br /&gt;
# Delete route to IP on VPN for traffic originating from the router&lt;br /&gt;
/sbin/ip route del 172.16.32.1 dev tun0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OpenVPN Routing ==&lt;br /&gt;
Usually when you connect with OpenVPN the remote VPN server will push routes down to your system. We don&#039;t want this as we still want to be able to access the internet without the VPN. We have also created our own routes that we want to use earlier in this guide.&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need to add this to the bottom of your OpenVPN configuration file:&lt;br /&gt;
&amp;lt;pre&amp;gt;# Prevents default gateway from being set on the default routing table&lt;br /&gt;
route-noexec&lt;br /&gt;
&lt;br /&gt;
# Allows route-up script to be executed&lt;br /&gt;
script-security 2&lt;br /&gt;
&lt;br /&gt;
# Calls custom shell script after connection to add necessary routes&lt;br /&gt;
route-up /etc/openvpn/route-up-fwmark.sh&lt;br /&gt;
route-pre-down /etc/openvpn/route-pre-down-fwmark.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
My VPNs are arranged like this in /etc/openvpn:&lt;br /&gt;
&lt;br /&gt;
OpenVPN configuration file for that server:&lt;br /&gt;
&amp;lt;pre&amp;gt;countrycode.serverNumber.openvpn.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenVPN certs for that server:&lt;br /&gt;
&amp;lt;pre&amp;gt;countrycode.serverNumber.openvpn/countrycode.serverNumber.openvpn.crt&lt;br /&gt;
countrycode.serverNumber.openvpn/countrycode.serverNumber.openvpn.key&lt;br /&gt;
countrycode.serverNumber.openvpn/myKey.crt&lt;br /&gt;
countrycode.serverNumber.openvpn/myKey.key&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So I use this helpful script to automate the process of changing between servers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
vpn_server_filename=$1&lt;br /&gt;
&lt;br /&gt;
rm /etc/openvpn/openvpn.conf&lt;br /&gt;
ln -s $vpn_server_filename /etc/openvpn/openvpn.conf&lt;br /&gt;
chown -R openvpn:openvpn /etc/openvpn&lt;br /&gt;
chmod -R a=-rwx,u=+rX /etc/openvpn&lt;br /&gt;
chmod u=x /etc/openvpn/*.sh*&lt;br /&gt;
&lt;br /&gt;
if grep -Fxq &amp;quot;#CustomStuffHere&amp;quot; openvpn.conf&lt;br /&gt;
then&lt;br /&gt;
    echo &amp;quot;Not adding custom routes, this server has been used previously&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Adding custom route rules&amp;quot;&lt;br /&gt;
cat &amp;lt;&amp;lt;EOF &amp;gt;&amp;gt; /etc/openvpn/openvpn.conf&lt;br /&gt;
&lt;br /&gt;
#CustomStuffHere&lt;br /&gt;
# Prevents default gateway from being set on the default routing table&lt;br /&gt;
route-noexec&lt;br /&gt;
&lt;br /&gt;
# Allows route-up script to be executed&lt;br /&gt;
script-security 2&lt;br /&gt;
&lt;br /&gt;
# Calls custom shell script after connection to add necessary routes&lt;br /&gt;
route-up /etc/openvpn/route-up-fwmark.sh&lt;br /&gt;
route-pre-down /etc/openvpn/route-pre-down-fwmark.sh&lt;br /&gt;
&lt;br /&gt;
# Logging of OpenVPN to file&lt;br /&gt;
#log /etc/openvpn/openvpn.log&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
fi&lt;br /&gt;
echo &amp;quot;Remember to set BitTorrent port forward in your VPN control panel&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That way I can simply change between servers by running:&lt;br /&gt;
{{cmd|changevpn.sh countrycode.serverNumber.openvpn}}&lt;br /&gt;
&lt;br /&gt;
and then restart openvpn. I am also reminded to put the port forward through on the VPN control panel so my BitTorrent client is connectable:&lt;br /&gt;
&lt;br /&gt;
{{cmd|service openvpn restart}}&lt;br /&gt;
&lt;br /&gt;
Finally add openvpn to the default run level&lt;br /&gt;
{{cmd|rc-update add openvpn default}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[category: Raspberry]]&lt;br /&gt;
[[category: VPN]]&lt;/div&gt;</summary>
		<author><name>Dngray</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=FreeRadius_EAP-TLS_configuration&amp;diff=19597</id>
		<title>FreeRadius EAP-TLS configuration</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=FreeRadius_EAP-TLS_configuration&amp;diff=19597"/>
		<updated>2021-06-14T11:36:07Z</updated>

		<summary type="html">&lt;p&gt;Dngray: Mention domain_suffix_match as a part of WPA3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
A more secure way than using pre-shared keys (WPA2) is to use [https://en.wikipedia.org/wiki/Extensible_Authentication_Protocol#EAP-TLS EAP-TLS] and use separate certificates for each device. In the previous tutorial [[Linux Router with VPN on a Raspberry Pi]] I mentioned I&#039;d be doing this with a &lt;br /&gt;
([http://wiki.openwrt.org/toh/ubiquiti/unifi Ubiquiti UniFi AP]). I have tested this with two phones running CyanogenMod 11 (Android 4.4.4).&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
&lt;br /&gt;
Install FreeRadius:&lt;br /&gt;
{{cmd|apk add freeradius freeradius-eap}}&lt;br /&gt;
&lt;br /&gt;
= Certificates =&lt;br /&gt;
You will want to create your certificates. The easiest way to do that is to use the scripts provided by FreeRadius. The scripts allow you to easily create a CA (certificate authority), Server certificate, and  Client certificates. Remember to increase the expiry time from 60 days if that doesn&#039;t suit you and fill in the other information in the .cnf files like the README says.&lt;br /&gt;
&lt;br /&gt;
The readme for that script is in /etc/raddb/certs/README or can be found [https://github.com/FreeRADIUS/freeradius-server/tree/v3.0.x/raddb/certs here].&lt;br /&gt;
&lt;br /&gt;
= Certificate Revocation List =&lt;br /&gt;
The CRL is not created by the script, you have to do that one manually.&lt;br /&gt;
&lt;br /&gt;
I created a file called crl.cnf:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[ ca ]&lt;br /&gt;
default_ca		= CA_default&lt;br /&gt;
&lt;br /&gt;
[ CA_default ]&lt;br /&gt;
dir			= ./&lt;br /&gt;
certs			= $dir&lt;br /&gt;
crl_dir			= $dir/crl&lt;br /&gt;
database		= $dir/index.txt&lt;br /&gt;
new_certs_dir		= $dir&lt;br /&gt;
certificate		= $dir/ca.pem&lt;br /&gt;
serial			= $dir/serial&lt;br /&gt;
crl			= $dir/crl.pem&lt;br /&gt;
private_key		= $dir/ca.key&lt;br /&gt;
RANDFILE		= $dir/.rand&lt;br /&gt;
name_opt		= ca_default&lt;br /&gt;
cert_opt		= ca_default&lt;br /&gt;
default_days		= 730&lt;br /&gt;
default_crl_days	= 730&lt;br /&gt;
default_md		= sha256&lt;br /&gt;
preserve		= no&lt;br /&gt;
policy			= policy_match&lt;br /&gt;
crlDistributionPoints	= URI:http://www.example.com/example_ca.crl&lt;br /&gt;
&lt;br /&gt;
[ policy_match ]&lt;br /&gt;
countryName		= match&lt;br /&gt;
stateOrProvinceName	= match&lt;br /&gt;
organizationName	= match&lt;br /&gt;
organizationalUnitName	= optional&lt;br /&gt;
commonName		= supplied&lt;br /&gt;
emailAddress		= optional&lt;br /&gt;
&lt;br /&gt;
[ policy_anything ]&lt;br /&gt;
countryName		= optional&lt;br /&gt;
stateOrProvinceName	= optional&lt;br /&gt;
localityName		= optional&lt;br /&gt;
organizationName	= optional&lt;br /&gt;
organizationalUnitName	= optional&lt;br /&gt;
commonName		= supplied&lt;br /&gt;
emailAddress		= optional&lt;br /&gt;
&lt;br /&gt;
[ req ]&lt;br /&gt;
prompt			= no&lt;br /&gt;
distinguished_name	= cacrl&lt;br /&gt;
default_bits		= 2048&lt;br /&gt;
input_password		= &amp;lt;password1&amp;gt;&lt;br /&gt;
output_password		= &amp;lt;password2&amp;gt;&lt;br /&gt;
x509_extensions		= v3_ca&lt;br /&gt;
&lt;br /&gt;
[certificate_authority]&lt;br /&gt;
countryName		= &amp;lt;COUNTRY_CODE&amp;gt;&lt;br /&gt;
stateOrProvinceName	= Radius&lt;br /&gt;
localityName		= &amp;lt;REGION&amp;gt;&lt;br /&gt;
organizationName	= FreeRadius&lt;br /&gt;
emailAddress		= freeradius@localhost &lt;br /&gt;
commonName		= &amp;quot;FreeRadius Certificate Authority&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[v3_ca]&lt;br /&gt;
subjectKeyIdentifier	= hash&lt;br /&gt;
authorityKeyIdentifier	= keyid:always,issuer:always&lt;br /&gt;
basicConstraints	= CA:true&lt;br /&gt;
crlDistributionPoints	= URI:http://www.example.com/example_ca.crl&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Create the revocation list:&lt;br /&gt;
{{cmd|openssl ca -gencrl -keyfile ca.key -cert ca.pem -out crl.pem -config crl.cnf}}&lt;br /&gt;
&lt;br /&gt;
Finally, create new file which will hold both CA and revoked certificates:&lt;br /&gt;
{{cmd|cat ca.pem crl.pem &amp;gt; cacrl.pem}}&lt;br /&gt;
&lt;br /&gt;
= Create the Diffie-Hellman nonce file =&lt;br /&gt;
{{cmd|openssl dhparam -check -text -5 1024 -out /etc/raddb/certs/dh}}&lt;br /&gt;
&lt;br /&gt;
Or you can use a larger one, eg (this can take a while if you&#039;re unlucky!).&lt;br /&gt;
&lt;br /&gt;
{{cmd|openssl dhparam -check -text -5 4096 -out /etc/raddb/certs/dh}}&lt;br /&gt;
&lt;br /&gt;
= Server config =&lt;br /&gt;
&lt;br /&gt;
The [https://www.wi-fi.org/download.php?file=/sites/default/files/private/WPA3_Specification_v3.0.pdf WPA3 specification] (p12), has a few changes to EAP. Even if you&#039;re not using WPA3 it still effects your EAP RADIUS authentication, particularly for clients such as Android 11+. Further discussion was [https://reddit.com/comments/l4fdzp here].&lt;br /&gt;
&lt;br /&gt;
{{Box|WPA 3.1 Page 12|&lt;br /&gt;
&lt;br /&gt;
5.1.2 The STA is configured with EAP credentials that explicitly specify a CA root certificate that matches the root certificate in the received Server Certificate message and, if the EAP credentials also include a domain name&lt;br /&gt;
(FQDN or suffix-only), it matches the domain name (SubjectAltName dNSName if present, otherwise SubjectName CN) of the certificate [2] in the received Server Certificate message.&lt;br /&gt;
&lt;br /&gt;
5.1.3 The STA is configured with EAP credentials that include a domain name (FQDN or suffix-only) that matches the domain name (SubjectAltName dNSName if present, otherwise SubjectName CN) of the certificate [2] in the received Server Certificate message, and the root certificate of that certificate is present in the STA&#039;s trust root store.}}&lt;br /&gt;
&lt;br /&gt;
Without these changes you&#039;ll see errors in logcat like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;EAP: Status notification: remote certificate verification (param=self signed certificate in certificate chain)&lt;br /&gt;
SSL: SSL3 alert: write (local SSL3 detected an error):fatal:unknown CA&lt;br /&gt;
EAP: Status notification: local TLS alert (param=unknown CA)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/raddb/server.cnf ==&lt;br /&gt;
&amp;lt;pre&amp;gt;[ v3_req ]&lt;br /&gt;
basicConstraints = CA:FALSE&lt;br /&gt;
keyUsage = nonRepudiation, digitalSignature, keyEncipherment&lt;br /&gt;
subjectAltName = @alt_names&lt;br /&gt;
&lt;br /&gt;
#  This should be a host name of the RADIUS server.&lt;br /&gt;
#  Note that the host name is exchanged in EAP *before*&lt;br /&gt;
#  the user machine has network access.  So the host name&lt;br /&gt;
#  here doesn&#039;t really have to match anything in DNS.&lt;br /&gt;
+ [alt_names]&lt;br /&gt;
+ DNS.1 = radius.example.com&lt;br /&gt;
+&lt;br /&gt;
+ # NAIRealm from RFC 7585&lt;br /&gt;
+ otherName.0 = 1.3.6.1.5.5.7.8.8;FORMAT:UTF8,UTF8:*.example.com&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you&#039;d need to put &amp;quot;radius.example.com&amp;quot; in the &amp;quot;Domain&amp;quot; box when you add the WiFi Network. It&#039;s also known as &amp;quot;domain_suffix_match&amp;quot; in wpa_supplicant.conf or NetworkManager configuration files.&lt;br /&gt;
&lt;br /&gt;
== /etc/raddb/certs/xpextensions ==&lt;br /&gt;
&lt;br /&gt;
Then you need to update xpextensions before making your configs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;+ [ xpserver_ext]&lt;br /&gt;
+ extendedKeyUsage = 1.3.6.1.5.5.7.3.1&lt;br /&gt;
+ crlDistributionPoints = URI:http://www.example.com/example_ca.crl&lt;br /&gt;
&lt;br /&gt;
+ subjectAltName = @alt_names&lt;br /&gt;
&lt;br /&gt;
and then at the bottom:&lt;br /&gt;
&lt;br /&gt;
+ [alt_names]&lt;br /&gt;
+ DNS.1 = radius.example.com&lt;br /&gt;
&lt;br /&gt;
+ # NAIRealm from RFC 7585&lt;br /&gt;
+ otherName.0 = 1.3.6.1.5.5.7.8.8;FORMAT:UTF8,UTF8:*.example.com&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Configuration =&lt;br /&gt;
== /etc/raddb/clients.conf ==&lt;br /&gt;
&lt;br /&gt;
First we&#039;re going to add a client, this is your WiFi AP:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;client home {&lt;br /&gt;
    ipaddr = 192.168.1.10&lt;br /&gt;
    proto = *&lt;br /&gt;
    secret = &amp;lt;PASSWORD USED BY YOUR AP TO AUTHENTICATE WITH THIS RADIUS SERVER&amp;gt;&lt;br /&gt;
    shortname = &amp;lt;YOUR_SSID&amp;gt;&lt;br /&gt;
    require_message_authenticator = no&lt;br /&gt;
    nas_type = other&lt;br /&gt;
&lt;br /&gt;
    limit {&lt;br /&gt;
        max_connections = 16&lt;br /&gt;
        lifetime = 0&lt;br /&gt;
        idle_timeout = 30&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/raddb/mods-enabled/eap ==&lt;br /&gt;
Next we configure eap. Note the + and - represent lines removed and added, don&#039;t include them in your config!&lt;br /&gt;
&lt;br /&gt;
You&#039;re going to want to make these changes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;- default_eap_type = md5&lt;br /&gt;
+ default_eap_type = tls&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;-   private_key_password = whatever&lt;br /&gt;
+   private_key_password = &amp;lt;Password you set output_password in server.cnf&amp;gt;&lt;br /&gt;
    private_key_file = ${certdir}/server.pem&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;-   ca_file = ${cadir}/ca.pem&lt;br /&gt;
+   ca_file = ${cadir}/cacrl.pem&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;-   random_file = /dev/urandom&lt;br /&gt;
+   random_file = /dev/random&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;- # check_crl = yes                 &lt;br /&gt;
+   check_crl = yes&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reduce cipher list from DEFAULT to HIGH, or even a specific list:&lt;br /&gt;
&amp;lt;pre&amp;gt;-   cipher_list = &amp;quot;DEFAULT&amp;quot;&lt;br /&gt;
+   cipher_list = &amp;quot;HIGH&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or a shorter list if you decide (might cause some device compatibility issues)&lt;br /&gt;
&amp;lt;pre&amp;gt;+   cipher_list = &amp;quot;ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-CAMELLIA256-SHA:DHE-RSA-CAMELLIA128-SHA&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change ecdh curve to something stronger:&lt;br /&gt;
&amp;lt;pre&amp;gt;-   ecdh_curve = &amp;quot;prime256v1&amp;quot;&lt;br /&gt;
+   ecdh_curve = &amp;quot;secp384r1&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also increase the curve to a higher bit (521), but this may cause compatibility problems.&lt;br /&gt;
&amp;lt;pre&amp;gt;+   ecdh_curve = &amp;quot;secp521r1&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These all worked with Android 4.4.4, but if you have older stuff you may need to set the list to HIGH or DEFAULT.&lt;br /&gt;
&lt;br /&gt;
Couple of other things to change:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;-     #name = &amp;quot;EAP module&amp;quot;&lt;br /&gt;
+     name = &amp;quot;EAP-TLS&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;-     #persist_dir = &amp;quot;${logdir}/tlscache&amp;quot;&lt;br /&gt;
+     persist_dir = &amp;quot;${logdir}/tlscache&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/raddb/sites-enabled/default ==&lt;br /&gt;
Change the listening port to what suits you&lt;br /&gt;
&amp;lt;pre&amp;gt;- ipaddr = *&lt;br /&gt;
+ ipv4addr = 192.168.1.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Disable chap&lt;br /&gt;
&amp;lt;pre&amp;gt;#  The chap module will set &#039;Auth-Type := CHAP&#039; if we are&lt;br /&gt;
#  handling a CHAP request and Auth-Type has not already been set&lt;br /&gt;
- chap&lt;br /&gt;
+ # chap&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Disable mschap&lt;br /&gt;
&amp;lt;pre&amp;gt;#  the MS-CHAP-Challenge attribute, and add &#039;Auth-Type := MS-CHAP&#039;&lt;br /&gt;
#  to the request, which will cause the server to then use&lt;br /&gt;
#  the mschap module for authentication.&lt;br /&gt;
- mschap&lt;br /&gt;
+ # mschap&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Disable pap&lt;br /&gt;
&amp;lt;pre&amp;gt;#  This module should be listed last, so that the other modules&lt;br /&gt;
#  get a chance to set Auth-Type for themselves.&lt;br /&gt;
&lt;br /&gt;
- pap&lt;br /&gt;
+ #pap&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Disable the auth types we&#039;re not using&lt;br /&gt;
&amp;lt;pre&amp;gt;- Auth-Type PAP {&lt;br /&gt;
-   pap&lt;br /&gt;
- }&lt;br /&gt;
+ #Auth-Type PAP {&lt;br /&gt;
+ # pap&lt;br /&gt;
+ #}&lt;br /&gt;
&lt;br /&gt;
- Auth-Type CHAP {&lt;br /&gt;
-   chap&lt;br /&gt;
- }&lt;br /&gt;
+ #Auth-Type CHAP {&lt;br /&gt;
+ # chap&lt;br /&gt;
+ #}&lt;br /&gt;
&lt;br /&gt;
- Auth-Type MS-CHAP {&lt;br /&gt;
-   mschap&lt;br /&gt;
- }&lt;br /&gt;
+ #Auth-Type MS-CHAP {&lt;br /&gt;
+ # mschap&lt;br /&gt;
+ #}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enable eap&lt;br /&gt;
&amp;lt;pre&amp;gt;-#  eap&lt;br /&gt;
+ eap&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/raddb/sites-available/tls ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;tls {&lt;br /&gt;
-   private_key_password = whatever&lt;br /&gt;
+   private_key_password = &amp;lt;Password you set input_password in server.cnf&amp;gt;&lt;br /&gt;
    private_key_file = ${certdir}/server.pem&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= IPtables rules =&lt;br /&gt;
Next up you&#039;re going to want some iptables rules.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#Accept incoming connections from client FreeRadius&lt;br /&gt;
iptables -A IN_ETH0 -p tcp -s 192.168.1.10/24 --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
iptables -A IN_ETH0 -p udp -s 192.168.1.10/24 --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I also noticed with the Ubiquiti devices you need to allow this for AP adoption to work:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#Ubiquiti UAP Device Discovery Broadcast&lt;br /&gt;
iptables -A IN_ETH0 -p udp -s 192.168.1.10/24 --dport 10001 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that these rules depend on the chains originally created here [[Linux Router with VPN on a Raspberry Pi#Basic IPtables firewall with routing]].&lt;br /&gt;
&lt;br /&gt;
= Configure AP =&lt;br /&gt;
You&#039;re going to want to configure your access point to talk to your new Radius server.&lt;br /&gt;
&lt;br /&gt;
Using the secret and shortname from clients.conf enter them into your access point administration panel.&lt;br /&gt;
&lt;br /&gt;
Start Radius &lt;br /&gt;
{{cmd|service radiusd start}}&lt;br /&gt;
&lt;br /&gt;
Add to default run level.&lt;br /&gt;
{{cmd|rc-update add radiusd default}}&lt;br /&gt;
&lt;br /&gt;
You can debug it with radiusd -X from the console, or check /var/log/radius/radius.log if that didn&#039;t work.&lt;br /&gt;
&lt;br /&gt;
= Configure a device =&lt;br /&gt;
On Android I go into &amp;quot;Settings &amp;gt; Security &amp;gt; Install from Storage&amp;quot; and select ca.pem&lt;br /&gt;
&lt;br /&gt;
I then do &amp;quot;Settings &amp;gt; Security &amp;gt; Install from Storage&amp;quot; and select client.p12&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After putting in the correct passwords it should work. On Android you may see a warning such as &amp;quot;Network May Be Monitored by an Unknown Third Party&amp;quot;. You can fix this by moving the CA from /data/misc/keychain/cacerts-added to /system/etc/security/cacerts make sure the user and group are root and that the permissions are set to 644, ie readable by everyone, only root has permissions to write to the files. Keep it in /sdcard/ so you can move it back if you re-flash the phone with a newer ROM.&lt;br /&gt;
&lt;br /&gt;
= Revoke a certificate =&lt;br /&gt;
If in the future you want to revoke the certificates of a particular user you can do this by:&lt;br /&gt;
&lt;br /&gt;
{{cmd|openssl ca -revoke user@example.com.pem  -keyfile ca.key -cert ca.pem -config ca.cnf}}&lt;br /&gt;
&amp;lt;enter output_password from ca.cnf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, take a moment and open index.txt and you should see &amp;quot;R&amp;quot; next to cert index number. If you ever need to make this cert valid again, you would edit line with &amp;quot;R&amp;quot; to match other certs format.&lt;br /&gt;
&lt;br /&gt;
Now you need to create crl list again, just like it was done at the beginning of tutorial:&lt;br /&gt;
&lt;br /&gt;
{{cmd|openssl ca -gencrl -keyfile ca.key -cert ca.pem -out crl.pem -config crl.cnf}}&lt;br /&gt;
&amp;lt;enter output_password from ca.cnf&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{cmd|cat ca.pem crl.pem &amp;gt; cacrl.pem}}&lt;br /&gt;
&lt;br /&gt;
You need to restart FreeRadius after revoking certificates.&lt;br /&gt;
{{cmd|service radiusd restart}}&lt;br /&gt;
&lt;br /&gt;
You can verify that a certificate is revoked with:&lt;br /&gt;
{{cmd|openssl crl -in /etc/raddb/certs/cacrl.pem -text}}&lt;br /&gt;
&lt;br /&gt;
If no certificates are revoked you&#039;ll see:&lt;br /&gt;
&amp;lt;pre&amp;gt;No Revoked Certificates.&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If one or more certificates are revoked you&#039;ll see:&lt;br /&gt;
&amp;lt;pre&amp;gt;Revoked Certificates:&lt;br /&gt;
    Serial Number: &amp;lt;number of your cert&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
* https://forums.freebsd.org/threads/howto-wpa2-enterprise-with-freeradius.28467&lt;br /&gt;
* https://samhobbs.co.uk/2013/12/remove-network-may-be-monitored-by-an-unknown-third-party-in-android-4-4-kitkat&lt;br /&gt;
&lt;br /&gt;
[[Category:Server]]&lt;/div&gt;</summary>
		<author><name>Dngray</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Linux_Router_with_VPN_on_a_Raspberry_Pi&amp;diff=19351</id>
		<title>Linux Router with VPN on a Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Linux_Router_with_VPN_on_a_Raspberry_Pi&amp;diff=19351"/>
		<updated>2021-05-14T04:07:30Z</updated>

		<summary type="html">&lt;p&gt;Dngray: /* Remove redundant section */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
= Rationale =&lt;br /&gt;
&lt;br /&gt;
This guide demonstrates how to set up a Linux router with a VPN tunnel. You will need a second ethernet adapter. If you are using a Raspberry Pi like I did, then you can use something like this [http://store.apple.com/us/product/MC704LL/A/apple-usb-ethernet-adapter Apple USB Ethernet Adapter] as it contains a ASIX AX88772 which has good Linux support.&lt;br /&gt;
&lt;br /&gt;
You may choose to also buy an [http://www.element14.com/community/docs/DOC-68907/l/shim-rtc-realtime-clock-accessory-board-for-raspberry-pi RTC clock]. If you don&#039;t have an RTC clock, the time is lost when your Pi is shut down. When it is rebooted, the time will be set back to Thursday, 1 January 1970. As this is earlier than the creation time of your VPN certificates OpenVPN will refuse to start, which may mean you cannot do DNS lookups over VPN.&lt;br /&gt;
&lt;br /&gt;
For wireless, a separate access point was purchased ([http://wiki.openwrt.org/toh/ubiquiti/unifi Ubiquiti UniFi AP]) because it contains a Atheros AR9287 which is supported by [https://wireless.wiki.kernel.org/en/users/drivers/ath9k ath9k].&lt;br /&gt;
&lt;br /&gt;
I only chose a Raspberry Pi due to the fact it was inexpensive. My WAN link is pathetic so I was not concerned with getting high PPS ([https://en.wikipedia.org/wiki/Throughput Packets Per Second]). You could choose to use an old x86/amd64 system instead. If I had better internet I&#039;d probably go with an offering from [https://soekris.com Soekris] such as the [https://soekris.com/products/net6501-1.html net6501] as it would have a much lower power consumption than a generic x86_64 desktop processor.&lt;br /&gt;
&lt;br /&gt;
If you want to route speeds above 100 Mbit/s you&#039;ll want to make use of hardware encryption like [https://en.wikipedia.org/wiki/AES_instruction_set AES-NI]. The [https://soekris.com Soekris] offerings have the option of an additional hardware encryption module ([https://soekris.com/products/vpn-1411.html vpn1411]). Another option is to use a [https://en.wikipedia.org/wiki/Mini-ITX Mini ITX motherboard], with a managed switch. I chose the [https://www.ubnt.com/edgemax/edgeswitch Ubiquiti ES-16-150W].&lt;br /&gt;
&lt;br /&gt;
If you wish to use IPv6 you should consider looking at [[Linux Router with VPN on a Raspberry Pi (IPv6)]] as the implementation does differ slightly to this tutorial.&lt;br /&gt;
&lt;br /&gt;
The network in this tutorial looks like this: &lt;br /&gt;
&lt;br /&gt;
[[File:Network diagram ipv4 basic.svg|900px|center|Network Diagram Single IPv4]]&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
This guide assumes you&#039;re using Alpine Linux from a micro SD card in ramdisk mode. It assumes you&#039;ve read the basics of how to use [[Alpine local backup]].  The [[Raspberry Pi]] article contains information on how to install Alpine Linux on a Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
= Modem in full bridge mode =&lt;br /&gt;
This particular page uses an example where you have a modem that uses PPPoE. You will need to modify parts which do not apply to you. &lt;br /&gt;
&lt;br /&gt;
In this example I have a modem which has been configured in full bridge mode. PPP sessions are initiated on the router.&lt;br /&gt;
&lt;br /&gt;
The modem I am using is a [http://www.cisco.com/c/en/us/products/routers/877-integrated-services-router-isr/index.html Cisco 877 Integrated Services Router]. It has no web interface and is controlled over SSH. More information can be found [[Configuring a Cisco 877 in full bridge mode]].&lt;br /&gt;
&lt;br /&gt;
= Network =&lt;br /&gt;
&lt;br /&gt;
== /etc/hostname ==&lt;br /&gt;
Set this to your hostname eg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;HOST_NAME&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/hosts ==&lt;br /&gt;
Set your host and hostname&lt;br /&gt;
&amp;lt;pre&amp;gt;127.0.0.1	&amp;lt;HOST_NAME&amp;gt; &amp;lt;HOST_NAME&amp;gt;.&amp;lt;DOMAIN_NAME&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::1		&amp;lt;HOST_NAME&amp;gt; ipv6-gateway ipv6-loopback&lt;br /&gt;
ff00::0		ipv6-localnet&lt;br /&gt;
ff00::0		ipv6-mcastprefix&lt;br /&gt;
ff02::1		ipv6-allnodes&lt;br /&gt;
ff02::2		ipv6-allrouters&lt;br /&gt;
ff02::3		ipv6-allhosts&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/interfaces ==&lt;br /&gt;
Configure your network interfaces. Change &amp;quot;yourISP&amp;quot; to the file name of the file in /etc/ppp/peers/yourISP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#&lt;br /&gt;
# Network Interfaces&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Loopback interfaces&lt;br /&gt;
auto lo&lt;br /&gt;
iface lo inet loopback&lt;br /&gt;
  address 127.0.0.1&lt;br /&gt;
  netmask 255.0.0.0&lt;br /&gt;
&lt;br /&gt;
# Internal Interface - facing LAN&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
  address 192.168.1.1&lt;br /&gt;
  netmask 255.255.255.0&lt;br /&gt;
  broadcast 192.168.1.255&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PPP ===&lt;br /&gt;
Next up we need to configure our router to be able to dial a PPP connection with our modem.&lt;br /&gt;
&lt;br /&gt;
If your ISP uses [https://en.wikipedia.org/wiki/Point-to-Point_Protocol PPP] you may need to configure it. See [[PPP]].&lt;br /&gt;
&lt;br /&gt;
You will want to make sure you set your WAN interface, in this example we used eth1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# External Interface - facing Modem&lt;br /&gt;
allow-hotplug eth1&lt;br /&gt;
auto eth1&lt;br /&gt;
iface eth1 inet static&lt;br /&gt;
  address 192.168.0.2&lt;br /&gt;
  netmask 255.255.255.252&lt;br /&gt;
  broadcast 192.168.0.3&lt;br /&gt;
  pre-up /sbin/ip link set eth1 up&lt;br /&gt;
  up ifup ppp0=yourISP&lt;br /&gt;
  down ifdown ppp0=yourISP&lt;br /&gt;
  post-down /sbin/ip link set eth1 up&lt;br /&gt;
&lt;br /&gt;
# Link to ISP&lt;br /&gt;
iface yourISP inet ppp&lt;br /&gt;
  provider yourISP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IPoE ===&lt;br /&gt;
Alternatively it&#039;s quite common for ISPs to use [https://en.wikipedia.org/wiki/IPoE IPoE]. IPoE is much simpler and only runs DHCP on the external interface. It should look something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# External interface to ISP&lt;br /&gt;
allow-hotplug eth1&lt;br /&gt;
auto eth1&lt;br /&gt;
iface eth1 inet dhcp&lt;br /&gt;
&lt;br /&gt;
iface eth1 inet static&lt;br /&gt;
    address 192.168.0.2&lt;br /&gt;
    netmask 255.255.255.252&lt;br /&gt;
    broadcast 192.168.0.3&lt;br /&gt;
&lt;br /&gt;
iface eth1 inet6 manual&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== DHCP from ISP ====&lt;br /&gt;
&lt;br /&gt;
Above we set DHCP and we set a static IP. The purpose of this is so we can still forward packets through to the modem to be able to access the web interface or ssh.&lt;br /&gt;
&lt;br /&gt;
We do still need DHCP to get an IP address form our ISP though. I like to use dhcpcd instead of udhcp (the default in Alpine Linux), because it allows for [https://en.wikipedia.org/wiki/Prefix_delegation Prefix Delegation], which is used in IPv6 networks.&lt;br /&gt;
&lt;br /&gt;
My /etc/dhcpcd.conf looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Enable extra debugging&lt;br /&gt;
# debug&lt;br /&gt;
# logfile /var/log/dhcpcd.log&lt;br /&gt;
&lt;br /&gt;
# Allow users of this group to interact with dhcpcd via the control&lt;br /&gt;
# socket.&lt;br /&gt;
#controlgroup wheel&lt;br /&gt;
&lt;br /&gt;
# Inform the DHCP server of our hostname for DDNS.&lt;br /&gt;
hostname gateway&lt;br /&gt;
&lt;br /&gt;
# Use the hardware address of the interface for the Client ID.&lt;br /&gt;
# clientid&lt;br /&gt;
# or&lt;br /&gt;
# Use the same DUID + IAID as set in DHCPv6 for DHCPv4 ClientID as&lt;br /&gt;
# per RFC4361. Some non-RFC compliant DHCP servers do not reply with&lt;br /&gt;
# this set. In this case, comment out duid and enable clientid above.&lt;br /&gt;
duid&lt;br /&gt;
&lt;br /&gt;
# Persist interface configuration when dhcpcd exits.&lt;br /&gt;
persistent&lt;br /&gt;
&lt;br /&gt;
# Rapid commit support.&lt;br /&gt;
# Safe to enable by default because it requires the equivalent option&lt;br /&gt;
# set on the server to actually work.&lt;br /&gt;
option rapid_commit&lt;br /&gt;
&lt;br /&gt;
# A list of options to request from the DHCP server.&lt;br /&gt;
option domain_name_servers, domain_name, domain_search, host_name&lt;br /&gt;
option classless_static_routes&lt;br /&gt;
&lt;br /&gt;
# Most distributions have NTP support.&lt;br /&gt;
option ntp_servers&lt;br /&gt;
&lt;br /&gt;
# Respect the network MTU.&lt;br /&gt;
# Some interface drivers reset when changing the MTU so disabled by&lt;br /&gt;
# default.&lt;br /&gt;
#option interface_mtu 1586&lt;br /&gt;
&lt;br /&gt;
# A ServerID is required by RFC2131.&lt;br /&gt;
require dhcp_server_identifier&lt;br /&gt;
&lt;br /&gt;
# Generate Stable Private IPv6 Addresses instead of hardware based&lt;br /&gt;
# ones&lt;br /&gt;
slaac private&lt;br /&gt;
&lt;br /&gt;
# A hook script is provided to lookup the hostname if not set by the&lt;br /&gt;
# DHCP server, but it should not be run by default.&lt;br /&gt;
nohook lookup-hostname&lt;br /&gt;
&lt;br /&gt;
# Disable solicitations on all interfaces&lt;br /&gt;
noipv6rs&lt;br /&gt;
&lt;br /&gt;
# Wait for IP before forking to background&lt;br /&gt;
waitip 6&lt;br /&gt;
&lt;br /&gt;
# Don&#039;t touch DNS&lt;br /&gt;
nohook resolv.conf&lt;br /&gt;
&lt;br /&gt;
allowinterfaces eth1 eth0.2&lt;br /&gt;
# Use the interface connected to WAN&lt;br /&gt;
interface eth1&lt;br /&gt;
    waitip 4&lt;br /&gt;
    noipv4ll&lt;br /&gt;
    ipv6rs # enable routing solicitation get the default IPv6 route&lt;br /&gt;
    iaid 1&lt;br /&gt;
    ia_pd 1/::/56 eth0.2/2/64&lt;br /&gt;
    timeout 30&lt;br /&gt;
&lt;br /&gt;
interface eth0.2&lt;br /&gt;
    ipv6only&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Basic IPtables firewall with routing ==&lt;br /&gt;
This demonstrates how to set up basic routing with a permissive outgoing firewall. Incoming packets are blocked. The rest is commented in the rule set.&lt;br /&gt;
&lt;br /&gt;
First install iptables:&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add iptables ip6tables}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#########################################################################&lt;br /&gt;
# Basic iptables IPv4 routing rule set&lt;br /&gt;
#&lt;br /&gt;
# 192.168.1.0/24 routed directly to PPP0 via NAT&lt;br /&gt;
# &lt;br /&gt;
#########################################################################&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mangle Table&lt;br /&gt;
# We leave this empty for the moment.&lt;br /&gt;
#&lt;br /&gt;
*mangle&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:FORWARD ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Filter Table&lt;br /&gt;
# This is where we decide to ACCEPT, DROP or REJECT things&lt;br /&gt;
#&lt;br /&gt;
*filter&lt;br /&gt;
:INPUT DROP [0:0]&lt;br /&gt;
:FORWARD DROP [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
*filter&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for forwarding packets&lt;br /&gt;
:FWD_ETH0 - [0:0]&lt;br /&gt;
:FWD_ETH1 - [0:0]&lt;br /&gt;
:FWD_PPP0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for input packets (for host itself)&lt;br /&gt;
:IN_ETH0 - [0:0]&lt;br /&gt;
:IN_ETH1 - [0:0]&lt;br /&gt;
:IN_PPP0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a log drop chain&lt;br /&gt;
:LOG_DROP - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Pass input packet to corresponding rule chain&lt;br /&gt;
-A INPUT -i lo -j ACCEPT&lt;br /&gt;
-A INPUT -i eth0 -j IN_ETH0&lt;br /&gt;
-A INPUT -i eth1 -j IN_ETH1&lt;br /&gt;
-A INPUT -i ppp0 -j IN_PPP0&lt;br /&gt;
&lt;br /&gt;
# Pass forwarded packet to corresponding rule chain&lt;br /&gt;
-A FORWARD -i eth0 -j FWD_ETH0&lt;br /&gt;
-A FORWARD -i eth1 -j FWD_ETH1&lt;br /&gt;
-A FORWARD -i ppp0 -j FWD_PPP0&lt;br /&gt;
&lt;br /&gt;
# Forward LAN traffic out&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward SSH packets from network to modem&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.0/30 -d 192.168.1.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward HTTP to modem&#039;s webserver&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.0/30 -d 192.168.1.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to ISP&lt;br /&gt;
-A FWD_PPP0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# DNS to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# FreeRadius Client (eg a UniFi AP)&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# NTP to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept traffic&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# HTTP to modem&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked PPP0 connection&lt;br /&gt;
-A IN_PPP0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# NAT Table&lt;br /&gt;
# This is where translation of packets happens and &amp;quot;forwarding&amp;quot; of ports&lt;br /&gt;
# to specific hosts.&lt;br /&gt;
#&lt;br /&gt;
*nat&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Port forwarding for Bittorrent&lt;br /&gt;
-A PREROUTING -i ppp0 -p tcp -m tcp --dport 6881:6889 -j DNAT --to-destination 192.168.1.20&lt;br /&gt;
-A PREROUTING -i ppp0 -p udp -m udp --dport 6881:6889 -j DNAT --to-destination 192.168.1.20&lt;br /&gt;
&lt;br /&gt;
# Allows routing to our modem subnet so we can access the web interface or SSH&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 22 -j MASQUERADE&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the PPP tunnel&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE&lt;br /&gt;
COMMIT&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I&#039;d also highly suggest reading these resources if you are new to iptables: &lt;br /&gt;
&lt;br /&gt;
* [https://www.frozentux.net/category/linux/iptables Frozen Tux Iptables-tutorial]&lt;br /&gt;
* [http://inai.de/links/iptables/ Words of wisdom for #netfilter]&lt;br /&gt;
* [http://sfvlug.editthis.info/wiki/Things_You_Should_Know_About_Netfilter Things You Should Know About Netfilter]&lt;br /&gt;
* [http://inai.de/documents/Perfect_Ruleset.pdf Towards the perfect ruleset]&lt;br /&gt;
&lt;br /&gt;
== /etc/sysctl.d/local.conf ==&lt;br /&gt;
&amp;lt;pre&amp;gt;# Controls IP packet forwarding&lt;br /&gt;
net.ipv4.ip_forward = 1&lt;br /&gt;
&lt;br /&gt;
# Needed to use fwmark, only required if you want to set up the VPN subnet later in this article&lt;br /&gt;
net.ipv4.conf.all.rp_filter = 2&lt;br /&gt;
&lt;br /&gt;
# Disable IPv6&lt;br /&gt;
net.ipv6.conf.all.disable_ipv6 = 1&lt;br /&gt;
net.ipv6.conf.lo.disable_ipv6 = 1&lt;br /&gt;
net.ipv6.conf.default.disable_ipv6 = 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note IPv6 is disabled here if you want that see the other tutorial [[Linux Router with VPN on a Raspberry Pi (IPv6)]]. You may also wish to look at [https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt ip-sysctl.txt] to read about the other keys.&lt;br /&gt;
&lt;br /&gt;
= DHCP =&lt;br /&gt;
{{cmd|apk add dhcp}}&lt;br /&gt;
&lt;br /&gt;
== /etc/conf.d/dhcpd ==&lt;br /&gt;
Specify the configuration file location, interface to run on and that you want DHCPD to run in IPv4 mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# /etc/conf.d/dhcpd: config file for /etc/init.d/dhcpd&lt;br /&gt;
&lt;br /&gt;
# If you require more than one instance of dhcpd you can create symbolic&lt;br /&gt;
# links to dhcpd service like so&lt;br /&gt;
#   cd /etc/init.d&lt;br /&gt;
#   ln -s dhcpd dhcpd.foo&lt;br /&gt;
#   cd ../conf.d&lt;br /&gt;
#   cp dhcpd dhcpd.foo&lt;br /&gt;
# Now you can edit dhcpd.foo and specify a different configuration file.&lt;br /&gt;
# You&#039;ll also need to specify a pidfile in that dhcpd.conf file.&lt;br /&gt;
# See the pid-file-name option in the dhcpd.conf man page for details.&lt;br /&gt;
&lt;br /&gt;
# If you wish to run dhcpd in a chroot, uncomment the following line&lt;br /&gt;
# DHCPD_CHROOT=&amp;quot;/var/lib/dhcp/chroot&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# All file paths below are relative to the chroot.&lt;br /&gt;
# You can specify a different chroot directory but MAKE SURE it&#039;s empty.&lt;br /&gt;
&lt;br /&gt;
# Specify a configuration file - the default is /etc/dhcp/dhcpd.conf&lt;br /&gt;
DHCPD_CONF=&amp;quot;/etc/dhcp/dhcpd.conf&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Configure which interface or interfaces to for dhcpd to listen on.&lt;br /&gt;
# List all interfaces space separated. If this is not specified then&lt;br /&gt;
# we listen on all interfaces.&lt;br /&gt;
DHCPD_IFACE=&amp;quot;eth0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Insert any other dhcpd options - see the man page for a full list.&lt;br /&gt;
DHCPD_OPTS=&amp;quot;-4&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/dhcp/dhcpd.conf ==&lt;br /&gt;
Configure your DHCP configuration server. For my DHCP server I&#039;m going to have three subnets. Each has a specific purpose. You may choose to have any number of subnets like below. The broadcast-address would be different if you used VLANs. However in this case we are not.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;authoritative;&lt;br /&gt;
ddns-update-style interim;&lt;br /&gt;
&lt;br /&gt;
shared-network home {&lt;br /&gt;
  subnet 192.168.1.0 netmask 255.255.255.0 {&lt;br /&gt;
    range 192.168.1.10 192.168.1.240;&lt;br /&gt;
    option subnet-mask 255.255.255.0;&lt;br /&gt;
    option broadcast-address 192.168.1.255;&lt;br /&gt;
    option routers 192.168.1.1;&lt;br /&gt;
    option ntp-servers 192.168.1.1;&lt;br /&gt;
    option domain-name-servers 192.168.1.1;&lt;br /&gt;
    allow unknown-clients;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  subnet 192.168.2.0 netmask 255.255.255.0 {&lt;br /&gt;
    range 192.168.2.10 192.168.2.240;&lt;br /&gt;
    option subnet-mask 255.255.255.0;&lt;br /&gt;
    option broadcast-address 192.168.2.255;&lt;br /&gt;
    option routers 192.168.2.1;&lt;br /&gt;
    option ntp-servers 192.168.2.1;&lt;br /&gt;
    option domain-name-servers 192.168.1.1;&lt;br /&gt;
    ignore unknown-clients;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  subnet 192.168.3.0 netmask 255.255.255.0 {&lt;br /&gt;
    range 192.168.3.10 192.168.3.240;&lt;br /&gt;
    option subnet-mask 255.255.255.0;&lt;br /&gt;
    option broadcast-address 192.168.3.255;&lt;br /&gt;
    option routers 192.168.3.1;&lt;br /&gt;
    option ntp-servers 192.168.3.1;&lt;br /&gt;
    option domain-name-servers 192.168.1.1;&lt;br /&gt;
    ignore unknown-clients;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
host Gaming_Computer {&lt;br /&gt;
  hardware ethernet 00:53:00:FF:FF:11;&lt;br /&gt;
  fixed-address 192.168.1.20;&lt;br /&gt;
  option subnet-mask 255.255.255.0;&lt;br /&gt;
  option broadcast-address 192.168.1.255;&lt;br /&gt;
  option routers 192.168.1.1;&lt;br /&gt;
  option host-name &amp;quot;gaming_computer&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
host Linux_Workstation {&lt;br /&gt;
  hardware ethernet 00:53:00:FF:FF:22;&lt;br /&gt;
  fixed-address 192.168.2.21;&lt;br /&gt;
  option subnet-mask 255.255.255.0;&lt;br /&gt;
  option broadcast-address 192.168.2.255;&lt;br /&gt;
  option routers 192.168.2.1;&lt;br /&gt;
  option host-name &amp;quot;linux_workstation&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
host printer {&lt;br /&gt;
  hardware ethernet 00:53:00:FF:FF:33;&lt;br /&gt;
  fixed-address 192.168.3.9;&lt;br /&gt;
  option subnet-mask 255.255.255.0;&lt;br /&gt;
  option broadcast-address 192.168.3.255;&lt;br /&gt;
  option routers 192.168.3.1;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure to add this to the default run level once configured:&lt;br /&gt;
{{cmd|rc-update add dhcpd default}}&lt;br /&gt;
&lt;br /&gt;
= Synchronizing the clock =&lt;br /&gt;
&lt;br /&gt;
You can choose to use BusyBox&#039;s ntpd or you can choose a more fully fledged option like [http://www.openntpd.org OpenNTPD] or [https://chrony.tuxfamily.org Chrony]&lt;br /&gt;
&lt;br /&gt;
== Busybox /etc/conf.d/ntpd ==&lt;br /&gt;
Allow clients to synchronize their clocks with the router.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# By default ntpd runs as a client. Add -l to run as a server on port 123.&lt;br /&gt;
NTPD_OPTS=&amp;quot;-l -N -p &amp;lt;REMOTE TIME SERVER&amp;gt;&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure to add this to the default run level once configured:&lt;br /&gt;
{{cmd|rc-update add ntpd default}}&lt;br /&gt;
&lt;br /&gt;
Or if you prefer to synchronize with multiple servers...&lt;br /&gt;
&lt;br /&gt;
== Chrony /etc/chrony.conf ==&lt;br /&gt;
{{cmd|apk add chrony}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;logdir /var/log/chrony&lt;br /&gt;
log measurements statistics tracking&lt;br /&gt;
&lt;br /&gt;
allow 192.168.0.0/30&lt;br /&gt;
allow 192.168.1.0/24&lt;br /&gt;
allow 192.168.2.0/24&lt;br /&gt;
allow 192.168.3.0/24&lt;br /&gt;
allow 192.168.4.0/24&lt;br /&gt;
broadcast 30 192.168.0.3&lt;br /&gt;
broadcast 30 192.168.1.255&lt;br /&gt;
broadcast 30 192.168.2.255&lt;br /&gt;
broadcast 30 192.168.3.255&lt;br /&gt;
broadcast 30 192.168.4.255&lt;br /&gt;
&lt;br /&gt;
server 0.pool.ntp.org iburst&lt;br /&gt;
server 1.pool.ntp.org iburst&lt;br /&gt;
server 2.pool.ntp.org iburst&lt;br /&gt;
server 3.pool.ntp.org iburst&lt;br /&gt;
&lt;br /&gt;
initstepslew 10 pool.ntp.org&lt;br /&gt;
driftfile /var/lib/chrony/chrony.drift&lt;br /&gt;
hwclockfile /etc/adjtime&lt;br /&gt;
rtcdevice /dev/rtc0&lt;br /&gt;
rtcsync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OpenNTPD /etc/ntpd.conf ==&lt;br /&gt;
&lt;br /&gt;
Install OpenNTPD&lt;br /&gt;
{{cmd|apk add openntpd}}&lt;br /&gt;
&lt;br /&gt;
Add to default run level.&lt;br /&gt;
{{cmd|rc-update add openntpd default}}&lt;br /&gt;
&lt;br /&gt;
=== /etc/ntpd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;# sample ntpd configuration file, see ntpd.conf(5)&lt;br /&gt;
&lt;br /&gt;
# Addresses to listen on (ntpd does not listen by default)&lt;br /&gt;
listen on 192.168.1.1&lt;br /&gt;
listen on 192.168.2.1&lt;br /&gt;
&lt;br /&gt;
# sync to a single server&lt;br /&gt;
#server ntp.example.org&lt;br /&gt;
&lt;br /&gt;
# use a random selection of NTP Pool Time Servers&lt;br /&gt;
# see http://support.ntp.org/bin/view/Servers/NTPPoolServers&lt;br /&gt;
server 0.pool.ntp.org&lt;br /&gt;
server 1.pool.ntp.org&lt;br /&gt;
server 2.pool.ntp.org&lt;br /&gt;
server 3.pool.ntp.org&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== tlsdate ==&lt;br /&gt;
The time can also be extracted from a https handshake. If the certificate is self-signed you will need to use skip-verification:&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add tlsdate}}&lt;br /&gt;
{{cmd|tlsdate -V --skip-verification -p 80 -H example.com}}&lt;br /&gt;
&lt;br /&gt;
== timezone ==&lt;br /&gt;
You might also want to set a timezone, see [[Setting the timezone]].&lt;br /&gt;
&lt;br /&gt;
= Saving Time =&lt;br /&gt;
There are two ways to do this. If you didn&#039;t buy an RTC clock see [[Saving time with Software Clock]]. If you did like the PiFace Real Time Clock see [[Saving time with Hardware Clock]]&lt;br /&gt;
&lt;br /&gt;
= Unbound DNS forwarder with dnscrypt =&lt;br /&gt;
We want to be able to do our lookups using [https://dnscrypt.info/ dnscrypt] without installing DNSCrypt on every client on the network. DNSCrypt can use it&#039;s [https://dnscrypt.info/protocol own protocol] or [https://en.wikipedia.org/wiki/DNS_over_HTTPS DNS over HTTPS].&lt;br /&gt;
&lt;br /&gt;
The router will also run a DNS forwarder and request unknown domains over DNSCrypt for our clients. Borrowed from the ArchLinux wiki article on [https://wiki.archlinux.org/index.php/dnscrypt-proxy dnscrypt-proxy].&lt;br /&gt;
&lt;br /&gt;
== Unbound ==&lt;br /&gt;
First install {{cmd|apk add unbound}}&lt;br /&gt;
&lt;br /&gt;
=== /etc/unbound/unbound.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;server:&lt;br /&gt;
    # Use this to include other text into the file.&lt;br /&gt;
    include: &amp;quot;/etc/unbound/filter.conf&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # verbosity number, 0 is least verbose. 1 is default.&lt;br /&gt;
    verbosity: 1&lt;br /&gt;
&lt;br /&gt;
    # specify the interfaces to answer queries from by ip-address.&lt;br /&gt;
    # The default is to listen to localhost (127.0.0.1 and ::1).&lt;br /&gt;
    # specify 0.0.0.0 and ::0 to bind to all available interfaces.&lt;br /&gt;
    # specify every interface[@port] on a new &#039;interface:&#039; labelled line.&lt;br /&gt;
    # The listen interfaces are not changed on reload, only on restart.&lt;br /&gt;
    interface: 192.168.2.1&lt;br /&gt;
    interface: 192.168.3.1&lt;br /&gt;
&lt;br /&gt;
    # Enable IPv4, &amp;quot;yes&amp;quot; or &amp;quot;no&amp;quot;.&lt;br /&gt;
    do-ip4: yes&lt;br /&gt;
&lt;br /&gt;
    # Enable IPv6, &amp;quot;yes&amp;quot; or &amp;quot;no&amp;quot;.&lt;br /&gt;
    do-ip6: yes&lt;br /&gt;
&lt;br /&gt;
    # Enable UDP, &amp;quot;yes&amp;quot; or &amp;quot;no&amp;quot;.&lt;br /&gt;
    do-udp: yes&lt;br /&gt;
&lt;br /&gt;
    # Enable TCP, &amp;quot;yes&amp;quot; or &amp;quot;no&amp;quot;.&lt;br /&gt;
    do-tcp: yes&lt;br /&gt;
&lt;br /&gt;
    # control which clients are allowed to make (recursive) queries&lt;br /&gt;
    # to this server. Specify classless netblocks with /size and action.&lt;br /&gt;
    # By default everything is refused, except for localhost.&lt;br /&gt;
    # Choose deny (drop message), refuse (polite error reply),&lt;br /&gt;
    # allow (recursive ok), allow_setrd (recursive ok, rd bit is forced on),&lt;br /&gt;
    # allow_snoop (recursive and nonrecursive ok)&lt;br /&gt;
    # deny_non_local (drop queries unless can be answered from local-data)&lt;br /&gt;
    # refuse_non_local (like deny_non_local but polite error reply).&lt;br /&gt;
    # access-control: 0.0.0.0/0 refuse&lt;br /&gt;
    # access-control: 127.0.0.0/8 allow&lt;br /&gt;
    # access-control: ::0/0 refuse&lt;br /&gt;
    # access-control: ::1 allow&lt;br /&gt;
    # access-control: ::ffff:127.0.0.1 allow&lt;br /&gt;
    access-control: 192.168.1.0/24 allow&lt;br /&gt;
    access-control: 192.168.2.0/24 allow&lt;br /&gt;
    access-control: 192.168.3.0/24 allow&lt;br /&gt;
&lt;br /&gt;
    # the log file, &amp;quot;&amp;quot; means log to stderr.&lt;br /&gt;
    # Use of this option sets use-syslog to &amp;quot;no&amp;quot;.&lt;br /&gt;
    logfile: &amp;quot;/var/log/unbound/unbound.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # Log to syslog(3) if yes. The log facility LOG_DAEMON is used to&lt;br /&gt;
    # log to. If yes, it overrides the logfile.&lt;br /&gt;
    use-syslog: no&lt;br /&gt;
&lt;br /&gt;
    # print one line with time, IP, name, type, class for every query.&lt;br /&gt;
    # log-queries: no&lt;br /&gt;
&lt;br /&gt;
    # print one line per reply, with time, IP, name, type, class, rcode,&lt;br /&gt;
    # timetoresolve, fromcache and responsesize.&lt;br /&gt;
    # log-replies: no&lt;br /&gt;
&lt;br /&gt;
    # enable to not answer id.server and hostname.bind queries.&lt;br /&gt;
    hide-identity: yes&lt;br /&gt;
&lt;br /&gt;
    # enable to not answer version.server and version.bind queries.&lt;br /&gt;
    # hide-version: yes&lt;br /&gt;
&lt;br /&gt;
    # enable to not answer trustanchor.unbound queries.&lt;br /&gt;
    hide-trustanchor: yes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # Harden against very small EDNS buffer sizes.&lt;br /&gt;
    harden-short-bufsize: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden against unseemly large queries.&lt;br /&gt;
    harden-large-queries: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden against out of zone rrsets, to avoid spoofing attempts.&lt;br /&gt;
    harden-glue: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden against receiving dnssec-stripped data. If you turn it&lt;br /&gt;
    # off, failing to validate dnskey data for a trustanchor will&lt;br /&gt;
    # trigger insecure mode for that zone (like without a trustanchor).&lt;br /&gt;
    # Default on, which insists on dnssec data for trust-anchored zones.&lt;br /&gt;
    harden-dnssec-stripped: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden against queries that fall under dnssec-signed nxdomain names.&lt;br /&gt;
    harden-below-nxdomain: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden the referral path by performing additional queries for&lt;br /&gt;
    # infrastructure data.  Validates the replies (if possible).&lt;br /&gt;
    # Default off, because the lookups burden the server.  Experimental&lt;br /&gt;
    # implementation of draft-wijngaards-dnsext-resolver-side-mitigation.&lt;br /&gt;
    # harden-referral-path: no&lt;br /&gt;
&lt;br /&gt;
    # Harden against algorithm downgrade when multiple algorithms are&lt;br /&gt;
    # advertised in the DS record.  If no, allows the weakest algorithm&lt;br /&gt;
    # to validate the zone.&lt;br /&gt;
    harden-algo-downgrade: yes&lt;br /&gt;
&lt;br /&gt;
    # Use 0x20-encoded random bits in the query to foil spoof attempts.&lt;br /&gt;
    # This feature is an experimental implementation of draft dns-0x20.&lt;br /&gt;
    use-caps-for-id: yes&lt;br /&gt;
&lt;br /&gt;
    # Allow the domain (and its subdomains) to contain private addresses.&lt;br /&gt;
    # local-data statements are allowed to contain private addresses too.&lt;br /&gt;
    private-domain: &amp;quot;&amp;lt;HOSTNAME&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # if yes, the above default do-not-query-address entries are present.&lt;br /&gt;
    # if no, localhost can be queried (for testing and debugging).&lt;br /&gt;
    do-not-query-localhost: no&lt;br /&gt;
&lt;br /&gt;
    # File with trusted keys, kept uptodate using RFC5011 probes,&lt;br /&gt;
    # initial file like trust-anchor-file, then it stores metadata.&lt;br /&gt;
    # Use several entries, one per domain name, to track multiple zones.&lt;br /&gt;
    #&lt;br /&gt;
    # If you want to perform DNSSEC validation, run unbound-anchor before&lt;br /&gt;
    # you start unbound (i.e. in the system boot scripts).  And enable:&lt;br /&gt;
    # Please note usage of unbound-anchor root anchor is at your own risk&lt;br /&gt;
    # and under the terms of our LICENSE (see that file in the source).&lt;br /&gt;
    # auto-trust-anchor-file: &amp;quot;@UNBOUND_ROOTKEY_FILE@&amp;quot;&lt;br /&gt;
    auto-trust-anchor-file: &amp;quot;/etc/unbound/root.key&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # If unbound is running service for the local host then it is useful&lt;br /&gt;
    # to perform lan-wide lookups to the upstream, and unblock the&lt;br /&gt;
    # long list of local-zones above.  If this unbound is a dns server&lt;br /&gt;
    # for a network of computers, disabled is better and stops information&lt;br /&gt;
    # leakage of local lan information.&lt;br /&gt;
    unblock-lan-zones: no&lt;br /&gt;
&lt;br /&gt;
    # If you configure local-data without specifying local-zone, by&lt;br /&gt;
    # default a transparent local-zone is created for the data.&lt;br /&gt;
    #&lt;br /&gt;
    # You can add locally served data with&lt;br /&gt;
    # local-zone: &amp;quot;local.&amp;quot; static&lt;br /&gt;
    # local-data: &amp;quot;mycomputer.local. IN A 192.0.2.51&amp;quot;&lt;br /&gt;
    # local-data: &#039;mytext.local TXT &amp;quot;content of text record&amp;quot;&#039;&lt;br /&gt;
&lt;br /&gt;
    # request upstream over TLS (with plain DNS inside the TLS stream).&lt;br /&gt;
    # Default is no.  Can be turned on and off with unbound-control.&lt;br /&gt;
    # tls-upstream: no&lt;br /&gt;
&lt;br /&gt;
    # Forward zones&lt;br /&gt;
    # Create entries like below, to make all queries for &#039;example.com&#039; and&lt;br /&gt;
    # &#039;example.org&#039; go to the given list of servers. These servers have to handle&lt;br /&gt;
    # recursion to other nameservers. List zero or more nameservers by hostname&lt;br /&gt;
    # or by ipaddress. Use an entry with name &amp;quot;.&amp;quot; to forward all queries.&lt;br /&gt;
    # If you enable forward-first, it attempts without the forward if it fails.&lt;br /&gt;
    # forward-zone:&lt;br /&gt;
    #    name: &amp;quot;example.com&amp;quot;&lt;br /&gt;
    #    forward-addr: 192.0.2.68&lt;br /&gt;
    #    forward-addr: 192.0.2.73@5355  # forward to port 5355.&lt;br /&gt;
    #    forward-first: no&lt;br /&gt;
    #    forward-tls-upstream: no&lt;br /&gt;
    #    forward-no-cache: no&lt;br /&gt;
    # forward-zone:&lt;br /&gt;
    #    name: &amp;quot;example.org&amp;quot;&lt;br /&gt;
    #    forward-host: fwd.example.com&lt;br /&gt;
&lt;br /&gt;
forward-zone:&lt;br /&gt;
    name: &amp;quot;.&amp;quot;&lt;br /&gt;
    forward-addr: 172.16.32.1@53&lt;br /&gt;
    forward-addr: ::1@53000&lt;br /&gt;
    forward-addr: 127.0.0.1@53000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Additional DNS level filtering ==&lt;br /&gt;
&lt;br /&gt;
This script takes in a list of domains and produces a filter file. We are directing all lookups to &amp;quot;0.0.0.1&amp;quot; which is an invalid IP and should fail immediately, unlike localhost.&lt;br /&gt;
&lt;br /&gt;
{{Note| If you&#039;re filtering telemetry from Windows based PCs you should either use a [https://docs.microsoft.com/en-us/windows/privacy/manage-connections-from-windows-operating-system-components-to-microsoft-services group policy] or [https://www.oo-software.com/en/shutup10 ShutUp10]}}&lt;br /&gt;
&lt;br /&gt;
=== /etc/unbound/unbound.conf ===&lt;br /&gt;
In your main unbound configuration add&lt;br /&gt;
&amp;lt;pre&amp;gt;include: /etc/unbound/filter.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Script to prepare/sort domains for Unbound  ===&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
##################################################&lt;br /&gt;
# Script taken from http://npr.me.uk/unbound.html&lt;br /&gt;
# Note you need GNU sed&lt;br /&gt;
##################################################&lt;br /&gt;
&lt;br /&gt;
# Remove &amp;quot;#&amp;quot; comments&lt;br /&gt;
# Remove space and tab&lt;br /&gt;
# Remove blank lines&lt;br /&gt;
# Remove localhost and broadcasthost lines&lt;br /&gt;
# Keep just the hosts&lt;br /&gt;
# Remove leading and trailing space and tab (again)&lt;br /&gt;
# Make everything lower case&lt;br /&gt;
&lt;br /&gt;
sed -e &amp;quot;s/#.*//&amp;quot; \&lt;br /&gt;
    -e &amp;quot;s/[ \x09]*$//&amp;quot;\&lt;br /&gt;
    -e &amp;quot;/^$/ d&amp;quot; \&lt;br /&gt;
    -e &amp;quot;/^.*local.*/ d&amp;quot; \&lt;br /&gt;
    -e &amp;quot;/^.*broadcasthost.*/ d&amp;quot; \&lt;br /&gt;
    -e &amp;quot;s/\(^.*\) \([a-zA-Z0-9\.\-]*\)/\2/&amp;quot; \&lt;br /&gt;
    -e &amp;quot;s/^[ \x09]*//;s/[ \x09]*$//&amp;quot; $1 \&lt;br /&gt;
    -e &amp;quot;s/\(.*\)/\L\1/&amp;quot; hosts.txt &amp;gt; temp1.txt&lt;br /&gt;
&lt;br /&gt;
# Remove any duplicate hosts&lt;br /&gt;
&lt;br /&gt;
sort temp1.txt | uniq &amp;gt;temp2.txt&lt;br /&gt;
&lt;br /&gt;
# Remove any hosts starting with &amp;quot;.&amp;quot;&lt;br /&gt;
# Create the two required lines for each host.&lt;br /&gt;
&lt;br /&gt;
sed -e &amp;quot;/^\..*/ d&amp;quot; \&lt;br /&gt;
    -e &amp;quot;s/\(^.*\)/local-zone: \x22\1\x22 redirect\nlocal-data: \x22\1 A 0.0.0.1\x22/&amp;quot; \&lt;br /&gt;
       temp2.txt &amp;gt; filter.conf&lt;br /&gt;
&lt;br /&gt;
# Clean up&lt;br /&gt;
rm temp1.txt&lt;br /&gt;
rm temp2.txt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DNSCrypt ==&lt;br /&gt;
You can test that you&#039;re not getting DNS leaks by using [https://www.dnsleaktest.com dnsleak.com] or this one from [https://www.grc.com/dns/dns.htm GRC]. Providers like CloudFlare and Google (1.1.1.1, 8.8.8.8) use [https://en.wikipedia.org/wiki/Anycast anycast] which should be pointing to a server located to where your VPN exits.&lt;br /&gt;
&lt;br /&gt;
=== /etc/dnscrypt-proxy/dnscrypt-proxy.toml ===&lt;br /&gt;
Using the sample dnscrypt config is fine, you will need to make these changes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;listen_addresses = [&#039;127.0.0.1:53000&#039;, &#039;[::1]:53000&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Add policy route for dnscrypt over VPN ==&lt;br /&gt;
&lt;br /&gt;
Add a [https://en.wikipedia.org/wiki/Policy-based_routing policy based route] based on the uid of the dnscrypt user. On Alpine Linux dnscrypt-proxy runs as a specific user so check /etc/passwd&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;dnscrypt:x:103:104:dnscrypt:/var/empty:/sbin/nologin&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example the dnscrypt user has the uid 103.&lt;br /&gt;
&lt;br /&gt;
{{Warning|Make sure you check the uid of your dnscrypt user and don&#039;t just copy the one here!}}&lt;br /&gt;
&lt;br /&gt;
Add this to [https://wiki.alpinelinux.org/wiki/Linux_Router_with_VPN_on_a_Raspberry_Pi#.2Fetc.2Fnetwork.2Ffwmark_rules fwmark_rules] eg:&lt;br /&gt;
&lt;br /&gt;
=== /etc/network/fwmark_rules ===&lt;br /&gt;
&amp;lt;pre&amp;gt;# Route DNSCrypt user through the VPN table&lt;br /&gt;
/sbin/ip rule add uidrange 103-103 table VPN prio 200&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{cmd|rc-update add unbound default}}&lt;br /&gt;
{{cmd|rc-update add dnscrypt-proxy default}}&lt;br /&gt;
&lt;br /&gt;
= Random number generation =&lt;br /&gt;
There are two ways to assist with random number generation [[Entropy and randomness]]. This can be particularly useful if you&#039;re generating your own Diffie-Hellman nonce file, used in the [[FreeRadius EAP-TLS configuration]] section. Or for that matter any process which requires lots of random number generation such as generating certificates or public private keys.&lt;br /&gt;
&lt;br /&gt;
== Haveged ==&lt;br /&gt;
[http://www.issihosts.com/haveged Haveged] is a great way to improve random number generation speed. It uses the unpredictable random number generator based upon an adaptation of the [http://www.irisa.fr/caps/projects/hipsor/ HAVEGE] algorithm.&lt;br /&gt;
&lt;br /&gt;
Install haveged:&lt;br /&gt;
{{cmd|apk add haveged}}&lt;br /&gt;
&lt;br /&gt;
Start haveged service:&lt;br /&gt;
{{cmd|service haveged start}}&lt;br /&gt;
&lt;br /&gt;
Add service to boot&lt;br /&gt;
{{cmd|rc-update add haveged default}}&lt;br /&gt;
&lt;br /&gt;
Start rngd service:&lt;br /&gt;
{{cmd|service haveged start}}&lt;br /&gt;
&lt;br /&gt;
Add service to boot:&lt;br /&gt;
{{cmd|rc-update add haveged default}}&lt;br /&gt;
&lt;br /&gt;
== rng-tools with bcm2708-rng ==&lt;br /&gt;
&lt;br /&gt;
=== Pre Alpine Linux 3.8 (which includes rngd 5) ===&lt;br /&gt;
All Raspberry Pis come with the bcm2708-rng random number generator on board. If you are doing this project on a Raspberry Pi then you may choose to use this also.&lt;br /&gt;
&lt;br /&gt;
Add the kernel module to /etc/modules:&lt;br /&gt;
{{cmd|echo &amp;quot;bcm2708-rng&amp;quot; &amp;gt; /etc/modules}}&lt;br /&gt;
&lt;br /&gt;
Insert module:&lt;br /&gt;
{{cmd|modprobe bcm2708-rng}}&lt;br /&gt;
&lt;br /&gt;
Install rng-tools:&lt;br /&gt;
{{cmd|apk add rng-tools}}&lt;br /&gt;
&lt;br /&gt;
Set the random device (/dev/random) and rng device (/dev/hwrng) in /etc/conf.d/rngd&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;RNGD_OPTS=&amp;quot;--no-drng=1 --no-tpm=1 -o /dev/random -r /dev/hwrng&amp;quot;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== Post Alpine Linux 3.8 (which includes rngd 6) ===&lt;br /&gt;
&lt;br /&gt;
With AlpineLinux 3.8 you don&#039;t have to insert the module as it is already built in the kernel.&lt;br /&gt;
&lt;br /&gt;
Additionally the syntax has changed for rngd so for /etc/conf.d/rngd you&#039;ll need&lt;br /&gt;
&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;RNGD_OPTS=&amp;quot;-x1 -o /dev/random -r /dev/hwrng&amp;quot;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Start rngd service:&lt;br /&gt;
{{cmd|service rngd start}}&lt;br /&gt;
&lt;br /&gt;
Add service to boot:&lt;br /&gt;
{{cmd|rc-update add rngd default}}&lt;br /&gt;
&lt;br /&gt;
You can test it with:&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;cat /dev/hwrng | rngtest -c 1000&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
You should see something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rngtest 5&lt;br /&gt;
Copyright (c) 2004 by Henrique de Moraes Holschuh&lt;br /&gt;
This is free software; see the source for copying conditions.  There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&lt;br /&gt;
&lt;br /&gt;
rngtest: starting FIPS tests...&lt;br /&gt;
rngtest: bits received from input: 20000032&lt;br /&gt;
rngtest: FIPS 140-2 successes: 1000&lt;br /&gt;
rngtest: FIPS 140-2 failures: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Monobit: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Poker: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Runs: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Long run: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Continuous run: 0&lt;br /&gt;
rngtest: input channel speed: (min=117.709; avg=808.831; max=3255208.333)Kibits/s&lt;br /&gt;
rngtest: FIPS tests speed: (min=17.199; avg=22.207; max=22.653)Mibits/s&lt;br /&gt;
rngtest: Program run time: 25178079 microseconds&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s possible you might have a some failures. That&#039;s okay, two runs I did previously had a failure each.&lt;br /&gt;
&lt;br /&gt;
= WiFi 802.1x EAP and FreeRadius =&lt;br /&gt;
A more secure way than using pre-shared keys (WPA2) is to use [https://en.wikipedia.org/wiki/Extensible_Authentication_Protocol#EAP-TLS EAP-TLS] and use separate certificates for each device. See [[FreeRadius EAP-TLS configuration]]&lt;br /&gt;
&lt;br /&gt;
= VPN Tunnel on specific subnet =&lt;br /&gt;
As mentioned earlier in this article it might be useful to have a VPN subnet and a non-VPN subnet. Typically gaming consoles or computers might want low-latency connections. For this exercise we use fwmark.&lt;br /&gt;
&lt;br /&gt;
We expand the network to look like this:&lt;br /&gt;
&lt;br /&gt;
[[File:Network diagram ipv4 tunnel.svg|900px|center|Network Diagram with IPv4 tunnel]]&lt;br /&gt;
&lt;br /&gt;
Install the necessary packages:&lt;br /&gt;
{{cmd|apk add openvpn iproute2 iputils}}&lt;br /&gt;
&lt;br /&gt;
== /etc/modules ==&lt;br /&gt;
You&#039;ll want to add the tun module&lt;br /&gt;
&amp;lt;pre&amp;gt;tun&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/iproute2/rt_tables ==&lt;br /&gt;
Add the two routing tables to the bottom of rt_tables. It should look something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;#&lt;br /&gt;
# reserved values&lt;br /&gt;
#&lt;br /&gt;
255	local&lt;br /&gt;
254	main&lt;br /&gt;
253	default&lt;br /&gt;
0	unspec&lt;br /&gt;
#&lt;br /&gt;
# local&lt;br /&gt;
#&lt;br /&gt;
#1	inr.ruhep&lt;br /&gt;
1 ISP&lt;br /&gt;
2 VPN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/interfaces ==&lt;br /&gt;
Next up add the virtual interface (really just a IP address to eth0) eth0:2, just under eth0 will do.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Route to VPN subnet&lt;br /&gt;
auto eth0:2&lt;br /&gt;
iface eth0:2 inet static&lt;br /&gt;
  address 192.168.2.1&lt;br /&gt;
  netmask 255.255.255.0&lt;br /&gt;
  broadcast 192.168.2.255&lt;br /&gt;
  post-up /etc/network/fwmark_rules&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/sysctl.d/local.conf ==&lt;br /&gt;
If you want to use fwmark rules you need to change this setting. It causes the router to still do source validation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Needed to use fwmark&lt;br /&gt;
net.ipv4.conf.all.rp_filter = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fwmark won&#039;t work if you have this set to 1.&lt;br /&gt;
&lt;br /&gt;
== /etc/network/fwmark_rules ==&lt;br /&gt;
In this file we want to put the fwmark rules and set the correct priorities.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Normal packets to go direct out WAN&lt;br /&gt;
/sbin/ip rule add fwmark 1 table ISP prio 100&lt;br /&gt;
&lt;br /&gt;
# Put packets destined into VPN when VPN is up&lt;br /&gt;
/sbin/ip rule add fwmark 2 table VPN prio 200&lt;br /&gt;
&lt;br /&gt;
# Prevent packets from being routed out when VPN is down.&lt;br /&gt;
# This prevents packets from falling back to the main table&lt;br /&gt;
# that has a priority of 32766&lt;br /&gt;
/sbin/ip rule add prohibit fwmark 2 prio 300&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/ppp/ip-up ==&lt;br /&gt;
Next up we want to create the routes that should be run when PPP comes online. There are special hooks we can use in ip-up and ip-down to refer to the IP address, [https://ppp.samba.org/pppd.html#sect13 ppp man file - Scripts ] You can also read about them in your man file if you have ppp-doc installed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by pppd when there&#039;s a successful ppp connection.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Flush out any old rules that might be there&lt;br /&gt;
/sbin/ip route flush table ISP&lt;br /&gt;
&lt;br /&gt;
# Add route to table from subnets on LAN&lt;br /&gt;
/sbin/ip route add 192.168.1.0/24 dev eth0 table ISP&lt;br /&gt;
/sbin/ip route add 192.168.2.0/24 dev eth0 table ISP&lt;br /&gt;
&lt;br /&gt;
# Add route from IP given by ISP to the table&lt;br /&gt;
/sbin/ip rule add from ${IPREMOTE} table ISP prio 100&lt;br /&gt;
&lt;br /&gt;
# Add a default route&lt;br /&gt;
/sbin/ip route add table ISP default via ${IPREMOTE} dev ${IFNAME}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/ppp/ip-down ==&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by pppd after the connection has ended.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Delete the rules when we take the interface down&lt;br /&gt;
/sbin/ip rule del from ${IPREMOTE} table ISP prio 100&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/openvpn/route-up-fwmark.sh ==&lt;br /&gt;
OpenVPN needs similar routing scripts and it also has it&#039;s own special hooks that allow you to specify particular values. A full list is here [https://openvpn.net/index.php/open-source/documentation/manuals/65-openvpn-20x-manpage.html#lbAS OpenVPN man file - Environmental Variables]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by OpenVPN when there&#039;s a successful VPN connection.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Flush out any old rules that might be there&lt;br /&gt;
/sbin/ip route flush table VPN&lt;br /&gt;
&lt;br /&gt;
# Add route to table from 192.168.2.0/24 subnet on LAN&lt;br /&gt;
/sbin/ip route add 192.168.2.0/24 dev eth0 table VPN&lt;br /&gt;
&lt;br /&gt;
# Add route from VPN interface IP to the VPN table&lt;br /&gt;
/sbin/ip rule add from ${ifconfig_local} table VPN prio 200&lt;br /&gt;
&lt;br /&gt;
# Add a default route&lt;br /&gt;
/sbin/ip route add default via ${ifconfig_local} dev ${dev} table VPN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/openvpn/route-pre-down-fwmark.sh ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by OpenVPN after the connection has ended&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Delete the rules when we take the interface down&lt;br /&gt;
/sbin/ip rule del from ${ifconfig_local} table VPN prio 200&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What I did find was when starting and stopping the OpenVPN service if you used:&lt;br /&gt;
&lt;br /&gt;
{{cmd|service openvpn stop}}&lt;br /&gt;
&lt;br /&gt;
The rules in route-pre-down-fwmark.sh were not executed.&lt;br /&gt;
&lt;br /&gt;
However:&lt;br /&gt;
&lt;br /&gt;
{{cmd|/etc/init.d/openvpn stop}}&lt;br /&gt;
&lt;br /&gt;
seemed to work correctly.&lt;br /&gt;
&lt;br /&gt;
== Advanced IPtables rules that allow us to route into our two routing tables ==&lt;br /&gt;
This is an expansion of the previous set of rules. It sets up NAT masquerading for the 192.168.2.0 to go through the VPN using marked packets.&lt;br /&gt;
&lt;br /&gt;
I used these guides to write complete this: &lt;br /&gt;
&lt;br /&gt;
* [http://nerdboys.com/2006/05/05/conning-the-mark-multiwan-connections-using-iptables-mark-connmark-and-iproute2 Conning the Mark: Multiwan connections using IPTables, MARK, CONNMARK and iproute2 ]&lt;br /&gt;
* [http://nerdboys.com/2006/05/08/multiwan-connections-addendum Multiwan connections addendum]&lt;br /&gt;
* [http://inai.de/images/nf-packet-flow.png Netfilter packet flow]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#########################################################################&lt;br /&gt;
# Advanced routing rule set&lt;br /&gt;
# Uses 192.168.1.0 via ISP&lt;br /&gt;
#      192.168.2.0 via VPN&lt;br /&gt;
#&lt;br /&gt;
# Packets to/from 192.168.1.0/24 are marked with 0x1 and routed to ISP&lt;br /&gt;
# Packets to/from 192.168.2.0/24 are marked with 0x2 and routed to VPN&lt;br /&gt;
#&lt;br /&gt;
#########################################################################&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# NAT Table&lt;br /&gt;
# This is where translation of packets happens and &amp;quot;forwarding&amp;quot; of ports&lt;br /&gt;
# to specific hosts.&lt;br /&gt;
#&lt;br /&gt;
*nat&lt;br /&gt;
&lt;br /&gt;
# Set default policies for table&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Port forwarding for Bittorrent&lt;br /&gt;
-A PREROUTING -i tun0 -p tcp -m tcp --dport 6881:6889 -j DNAT --to-destination 192.168.2.20&lt;br /&gt;
-A PREROUTING -i tun0 -p udp -m udp --dport 6881:6889 -j DNAT --to-destination 192.168.2.20&lt;br /&gt;
&lt;br /&gt;
# Allows routing to our modem subnet so we can access the web interface&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
-A POSTROUTING -s 192.168.2.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the VPN tunnel&lt;br /&gt;
-A POSTROUTING -o tun0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the PPP tunnel&lt;br /&gt;
-A POSTROUTING -o ppp0 -j MASQUERADE&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Filter Table&lt;br /&gt;
# This is where we decide to ACCEPT, DROP or REJECT things&lt;br /&gt;
#&lt;br /&gt;
*filter&lt;br /&gt;
:INPUT DROP [0:0]&lt;br /&gt;
:FORWARD DROP [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for forwarding packets&lt;br /&gt;
:FWD_ETH0 - [0:0]&lt;br /&gt;
:FWD_ETH1 - [0:0]&lt;br /&gt;
:FWD_PPP0 - [0:0]&lt;br /&gt;
:FWD_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for input packets (for host itself)&lt;br /&gt;
:IN_ETH0 - [0:0]&lt;br /&gt;
:IN_ETH1 - [0:0]&lt;br /&gt;
:IN_PPP0 - [0:0]&lt;br /&gt;
:IN_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a log drop chain&lt;br /&gt;
:LOG_DROP - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a reject chain&lt;br /&gt;
:LOG_REJECT - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Pass input packet to corresponding rule chain&lt;br /&gt;
-A INPUT -i lo -j ACCEPT&lt;br /&gt;
-A INPUT -i eth0 -j IN_ETH0&lt;br /&gt;
-A INPUT -i eth1 -j IN_ETH1&lt;br /&gt;
-A INPUT -i ppp0 -j IN_PPP0&lt;br /&gt;
-A INPUT -i tun0 -j IN_TUN0&lt;br /&gt;
&lt;br /&gt;
# Track forwarded packets&lt;br /&gt;
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass forwarded packet to corresponding rule chain&lt;br /&gt;
-A FORWARD -i eth0 -j FWD_ETH0&lt;br /&gt;
-A FORWARD -i eth1 -j FWD_ETH1&lt;br /&gt;
-A FORWARD -i ppp0 -j FWD_PPP0&lt;br /&gt;
-A FORWARD -i tun0 -j FWD_TUN0&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to ISP&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to VPN&lt;br /&gt;
-A FWD_ETH0 -s 192.168.2.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow excepted server to be FORWARD to ppp0&lt;br /&gt;
#-A FWD_ETH0 -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -o ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward SSH packets from network to modem&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.1.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.2.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward HTTP packets from network to modem&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.1.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.2.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward Bittorrent Port to workstation&lt;br /&gt;
-A FWD_TUN0 -d 192.168.2.20/32 -p tcp -m tcp --dport 6881:6889 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_TUN0 -d 192.168.2.20/32 -p udp -m udp --dport 6881:6889 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# DNS to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# FreeRadius Client (eg a UniFi AP)&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Ubiquiti UAP Device Discovery Broadcast&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 10001 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# NTP to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept traffic to router on both subnets&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow excepted server to be INPUT to eth0 from LAN&lt;br /&gt;
#-A IN_ETH0 -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -o ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# HTTP To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked PPP0 connection&lt;br /&gt;
-A IN_PPP0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on PPP0&lt;br /&gt;
-A IN_PPP0 -j LOG --log-prefix &amp;quot;DROP:INPUT &amp;quot; --log-level 6&lt;br /&gt;
-A IN_PPP0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked TUN0 connection&lt;br /&gt;
-A IN_TUN0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on TUN0&lt;br /&gt;
-A IN_TUN0 -j LOG --log-prefix &amp;quot;DROP:INPUT &amp;quot; --log-level 6&lt;br /&gt;
-A IN_TUN0 -j LOG_DROP&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mangle Table&lt;br /&gt;
# This is the place where our markings happen, whether they be 0x1 or 0x2&lt;br /&gt;
#&lt;br /&gt;
*mangle&lt;br /&gt;
&lt;br /&gt;
# Set default policies for table&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:FORWARD ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Restore CONNMARK to the MARK (If one doesn&#039;t exist then no mark is set)&lt;br /&gt;
-A PREROUTING -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff&lt;br /&gt;
&lt;br /&gt;
# If packet MARK is 2, then it means there is already a connection mark and the&lt;br /&gt;
# original packet came in on VPN&lt;br /&gt;
-A PREROUTING -s 192.168.2.0/24 -m mark --mark 0x2 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Check exception (this is a server which when accessed on a 192.168.2.0/24 address will go out the ISP table) are 0x1&lt;br /&gt;
#-A PREROUTING -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -m mark --mark 0x1 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Mark packets coming from 192.168.2.0/24 are 0x2&lt;br /&gt;
-A PREROUTING -s 192.168.2.0/24 -j MARK --set-xmark 0x2/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# If packet MARK is 1, then it means there is already a connection mark and the&lt;br /&gt;
# original packet came in on ISP&lt;br /&gt;
-A PREROUTING -s 192.168.1.0/24 -m mark --mark 0x1 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Mark packets 192.168.1.0/24 are 0x1&lt;br /&gt;
-A PREROUTING -s 192.168.1.0/24 -j MARK --set-xmark 0x1/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Mark exception (this is a server which when accessed on a 192.168.2.0/24 address will go out the ISP table) as 0x1&lt;br /&gt;
#-A PREROUTING -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -j MARK --set-xmark 0x1/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Set mark to 0 - This is for the modem. Otherwise it will mark with 0x1 or 0x2&lt;br /&gt;
-A PREROUTING -d 192.168.0.1/32 -j MARK --set-xmark 0x0/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Save MARK to CONNMARK (remember iproute can&#039;t see CONNMARKs)&lt;br /&gt;
-A PREROUTING -j CONNMARK --save-mark --nfmask 0xffffffff --ctmask 0xffffffff&lt;br /&gt;
COMMIT&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may want to delete certain rules here that do not apply to you, eg the FreeRadius rules. That is covered later in this article.&lt;br /&gt;
&lt;br /&gt;
== OpenVPN Routing ==&lt;br /&gt;
Usually when you connect with OpenVPN the remote VPN server will push routes down to your system. We don&#039;t want this as we still want to be able to access the internet without the VPN. We have also created our own routes that we want to use earlier in this guide.&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need to add this to the bottom of your OpenVPN configuration file:&lt;br /&gt;
&amp;lt;pre&amp;gt;# Prevents default gateway from being set on the default routing table&lt;br /&gt;
route-noexec&lt;br /&gt;
&lt;br /&gt;
# Allows route-up script to be executed&lt;br /&gt;
script-security 2&lt;br /&gt;
&lt;br /&gt;
# Calls custom shell script after connection to add necessary routes&lt;br /&gt;
route-up /etc/openvpn/route-up-fwmark.sh&lt;br /&gt;
route-pre-down /etc/openvpn/route-pre-down-fwmark.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
My VPNs are arranged like this in /etc/openvpn:&lt;br /&gt;
&lt;br /&gt;
OpenVPN configuration file for that server:&lt;br /&gt;
&amp;lt;pre&amp;gt;countrycode.serverNumber.openvpn.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenVPN certs for that server:&lt;br /&gt;
&amp;lt;pre&amp;gt;countrycode.serverNumber.openvpn/countrycode.serverNumber.openvpn.crt&lt;br /&gt;
countrycode.serverNumber.openvpn/countrycode.serverNumber.openvpn.key&lt;br /&gt;
countrycode.serverNumber.openvpn/myKey.crt&lt;br /&gt;
countrycode.serverNumber.openvpn/myKey.key&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So I use this helpful script to automate the process of changing between servers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
vpn_server_filename=$1&lt;br /&gt;
&lt;br /&gt;
rm /etc/openvpn/openvpn.conf&lt;br /&gt;
ln -s $vpn_server_filename /etc/openvpn/openvpn.conf&lt;br /&gt;
chown -R openvpn:openvpn /etc/openvpn&lt;br /&gt;
chmod -R a=-rwx,u=+rX /etc/openvpn&lt;br /&gt;
chmod u=x /etc/openvpn/*.sh*&lt;br /&gt;
&lt;br /&gt;
if grep -Fxq &amp;quot;#CustomStuffHere&amp;quot; openvpn.conf&lt;br /&gt;
then&lt;br /&gt;
    echo &amp;quot;Not adding custom routes, this server has been used previously&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Adding custom route rules&amp;quot;&lt;br /&gt;
cat &amp;lt;&amp;lt;EOF &amp;gt;&amp;gt; /etc/openvpn/openvpn.conf&lt;br /&gt;
&lt;br /&gt;
#CustomStuffHere&lt;br /&gt;
# Prevents default gateway from being set on the default routing table&lt;br /&gt;
route-noexec&lt;br /&gt;
&lt;br /&gt;
# Allows route-up script to be executed&lt;br /&gt;
script-security 2&lt;br /&gt;
&lt;br /&gt;
# Calls custom shell script after connection to add necessary routes&lt;br /&gt;
route-up /etc/openvpn/route-up-fwmark.sh&lt;br /&gt;
route-pre-down /etc/openvpn/route-pre-down-fwmark.sh&lt;br /&gt;
&lt;br /&gt;
# Logging of OpenVPN to file&lt;br /&gt;
#log /etc/openvpn/openvpn.log&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
fi&lt;br /&gt;
echo &amp;quot;Remember to set BitTorrent port forward in VPN control panel&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That way I can simply change between servers by running:&lt;br /&gt;
{{cmd|changevpn.sh countrycode.serverNumber.openvpn}}&lt;br /&gt;
&lt;br /&gt;
and then restart openvpn. I am also reminded to put the port forward through on the VPN control panel so my BitTorrent client is connectable:&lt;br /&gt;
&lt;br /&gt;
{{cmd|service openvpn restart}}&lt;br /&gt;
&lt;br /&gt;
Finally add openvpn to the default run level&lt;br /&gt;
{{cmd|rc-update add openvpn default}}&lt;br /&gt;
&lt;br /&gt;
= Creating a LAN only Subnet =&lt;br /&gt;
In this section, we&#039;ll be creating a LAN only subnet. This subnet will be 192.168.3.0/24. The idea of this subnet is nodes in it cannot have their packets forwarded to the Internet, however they can be accessed via the other LAN subnets 192.168.1.0/24 and 192.168.2.0/24. This approach doesn&#039;t use VLANs although that would be recommended if you had a managed switch. The idea of this subnet is for things like WiFi access points, IP Phones which contact a local Asterisk server and of course printers.&lt;br /&gt;
&lt;br /&gt;
At the end of this section we will have something like:&lt;br /&gt;
&lt;br /&gt;
[[File:Network diagram ipv4 tunnel LANONLY ROUTE.svg|900px|center|Network Diagram LAN ONLY Route with IPv4]]&lt;br /&gt;
&lt;br /&gt;
== /etc/iproute2/rt_tables ==&lt;br /&gt;
First up we&#039;ll add a third routing table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;3 LAN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/interfaces ==&lt;br /&gt;
Add a an extra virtual interface (really just a IP address to eth0).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# LAN Only&lt;br /&gt;
auto eth0:3&lt;br /&gt;
iface eth0:3 inet static&lt;br /&gt;
  address 192.168.3.1&lt;br /&gt;
  netmask 255.255.255.0&lt;br /&gt;
  broadcast 192.168.3.255&lt;br /&gt;
  post-up /etc/network/route_LAN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/route_LAN ==&lt;br /&gt;
This file will have our route added to it&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Add routes from ISP to LAN&lt;br /&gt;
/sbin/ip route add 192.168.1.0/24 dev eth0 table LAN&lt;br /&gt;
&lt;br /&gt;
# Add route from VPN to LAN&lt;br /&gt;
/sbin/ip route add 192.168.2.0/24 dev eth0 table LAN&lt;br /&gt;
&lt;br /&gt;
# Add route from LAN to it&#039;s own table&lt;br /&gt;
/sbin/ip route add 192.168.3.0/24 dev eth0 table LAN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/ppp/ip-up ==&lt;br /&gt;
Append a route from the LAN subnet to the ISP table&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Add route to LAN subnet&lt;br /&gt;
/sbin/ip route add 192.168.3.0/24 dev eth0 table ISP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/openvpn/route-up-fwmark.sh ==&lt;br /&gt;
Append a route from the LAN subnet to the VPN table&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Add route to LAN only subnet&lt;br /&gt;
/sbin/ip route add 192.168.3.0/24 dev eth0 table VPN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/ntpd.conf ==&lt;br /&gt;
Add a listen address for ntp (OpenNTPD).&lt;br /&gt;
&lt;br /&gt;
You should now have:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Addresses to listen on (ntpd does not listen by default)&lt;br /&gt;
listen on 192.168.1.1&lt;br /&gt;
listen on 192.168.2.1&lt;br /&gt;
listen on 192.168.3.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Devices needing the correct time will need to use this NTP server because they will not be able to get it from the Internet.&lt;br /&gt;
&lt;br /&gt;
== Blocking bogons ==&lt;br /&gt;
Our LAN now has 4 subnets in total that are possible:&lt;br /&gt;
&lt;br /&gt;
* 192.168.0.0/30 (connection between modem and router)&lt;br /&gt;
* 192.168.1.0/24 (ISP table, directly routed out WAN)&lt;br /&gt;
* 192.168.2.0/24 (VPN table, routed out VPN)&lt;br /&gt;
* 192.168.3.0/24 (Null routed subnet for LAN only hosts)&lt;br /&gt;
* 172.16.32.0/20 (VPN provider&#039;s network, so we can access things on the VPN&#039;s network).&lt;br /&gt;
&lt;br /&gt;
Everything else should be rejected. No packets should ever be forwarded on 192.168.5.2 or 10.0.0.5 for example.&lt;br /&gt;
&lt;br /&gt;
=== Installing ipset ===&lt;br /&gt;
Install ipset:&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add ipset}}&lt;br /&gt;
&lt;br /&gt;
Add it to start up:&lt;br /&gt;
{{cmd|rc-update add ipset default}}&lt;br /&gt;
&lt;br /&gt;
Now we need to load the lists of addresses into ipset [http://blog.ls20.com/securing-your-server-using-ipset-and-dynamic-blocklists Securing Your Server using IPset and Dynamic Blocklists] mentions a [https://gist.github.com/hwdsl2/6dce75072274abfd2781 script] which was particularly useful. This script could be run on a cron job if you wanted to regularly update it and for the full bogon list you should as they change when that address space has been allocated.&lt;br /&gt;
&lt;br /&gt;
For the purpose of this we will be using just the [https://files.pfsense.org/lists/bogon-bn-nonagg.txt bogon-bn-nonagg.txt] list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;0.0.0.0/8&lt;br /&gt;
10.0.0.0/8&lt;br /&gt;
100.64.0.0/10&lt;br /&gt;
127.0.0.0/8&lt;br /&gt;
169.254.0.0/16&lt;br /&gt;
172.16.0.0/12&lt;br /&gt;
192.0.0.0/24&lt;br /&gt;
192.0.2.0/24&lt;br /&gt;
192.168.0.0/16&lt;br /&gt;
198.18.0.0/15&lt;br /&gt;
198.51.100.0/24&lt;br /&gt;
203.0.113.0/24&lt;br /&gt;
224.0.0.0/4&lt;br /&gt;
240.0.0.0/4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is unlikely to change as it&#039;s the IPV4 [https://en.wikipedia.org/wiki/Reserved_IP_addresses Reserved IP addresses] space. The script: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#! /bin/bash&lt;br /&gt;
&lt;br /&gt;
# /usr/local/sbin/fullbogons-ipv4&lt;br /&gt;
# BoneKracker&lt;br /&gt;
# Rev. 11 October 2012&lt;br /&gt;
# Tested with ipset 6.13&lt;br /&gt;
&lt;br /&gt;
# Purpose: Periodically update an ipset used in a running firewall to block&lt;br /&gt;
# bogons. Bogons are addresses that nobody should be using on the public&lt;br /&gt;
# Internet because they are either private, not to be assigned, or have&lt;br /&gt;
# not yet been assigned.&lt;br /&gt;
#&lt;br /&gt;
# Notes: Call this from crontab. Feed updated every 4 hours.&lt;br /&gt;
&lt;br /&gt;
# target=&amp;quot;http://www.team-cymru.org/Services/Bogons/fullbogons-ipv4.txt&amp;quot;&lt;br /&gt;
# Use alternative URL from pfSense, due to 404 error with URL above&lt;br /&gt;
target=&amp;quot;https://files.pfsense.org/lists/bogon-bn-nonagg.txt&amp;quot;&lt;br /&gt;
ipset_params=&amp;quot;hash:net&amp;quot;&lt;br /&gt;
&lt;br /&gt;
filename=$(basename ${target})&lt;br /&gt;
firewall_ipset=${filename%.*}           # ipset will be filename minus ext&lt;br /&gt;
data_dir=&amp;quot;/var/tmp/${firewall_ipset}&amp;quot;   # data directory will be same&lt;br /&gt;
data_file=&amp;quot;${data_dir}/${filename}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# if data directory does not exist, create it&lt;br /&gt;
mkdir -pm 0750 ${data_dir}&lt;br /&gt;
&lt;br /&gt;
# function to get modification time of the file in log-friendly format&lt;br /&gt;
get_timestamp() {&lt;br /&gt;
    date -r $1 +%m/%d&#039; &#039;%R&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# file modification time on server is preserved during wget download&lt;br /&gt;
[ -w ${data_file} ] &amp;amp;&amp;amp; old_timestamp=$(get_timestamp ${data_file})&lt;br /&gt;
&lt;br /&gt;
# fetch file only if newer than the version we already have&lt;br /&gt;
wget -qNP ${data_dir} ${target}&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$?&amp;quot; -ne &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
    logger -p cron.err &amp;quot;IPSet: ${firewall_ipset} wget failed.&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
timestamp=$(get_timestamp ${data_file})&lt;br /&gt;
&lt;br /&gt;
# compare timestamps because wget returns success even if no newer file&lt;br /&gt;
if [ &amp;quot;${timestamp}&amp;quot; != &amp;quot;${old_timestamp}&amp;quot; ]; then&lt;br /&gt;
&lt;br /&gt;
    temp_ipset=&amp;quot;${firewall_ipset}_temp&amp;quot;&lt;br /&gt;
    ipset create ${temp_ipset} ${ipset_params}&lt;br /&gt;
&lt;br /&gt;
    #sed -i &#039;/^#/d&#039; ${data_file}            # strip comments&lt;br /&gt;
    sed -ri &#039;/^[#&amp;lt; \t]|^$/d&#039; ${data_file}   # occasionally the file has been xhtml&lt;br /&gt;
&lt;br /&gt;
    while read network; do&lt;br /&gt;
        ipset add ${temp_ipset} ${network}&lt;br /&gt;
    done &amp;lt; ${data_file}&lt;br /&gt;
&lt;br /&gt;
    # if ipset does not exist, create it&lt;br /&gt;
    ipset create -exist ${firewall_ipset} ${ipset_params}&lt;br /&gt;
&lt;br /&gt;
    # swap the temp ipset for the live one&lt;br /&gt;
    ipset swap ${temp_ipset} ${firewall_ipset}&lt;br /&gt;
    ipset destroy ${temp_ipset}&lt;br /&gt;
&lt;br /&gt;
    # log the file modification time for use in minimizing lag in cron schedule&lt;br /&gt;
    logger -p cron.notice &amp;quot;IPSet: ${firewall_ipset} updated (as of: ${timestamp}).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
fi&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you should see the list loaded into memory when you do:&lt;br /&gt;
&lt;br /&gt;
{{cmd|ipset list}}&lt;br /&gt;
&lt;br /&gt;
We want to save it so our router can refer to it next time it starts up so for that:&lt;br /&gt;
&lt;br /&gt;
{{cmd|/etc/init.d/ipset save}}&lt;br /&gt;
&lt;br /&gt;
=== Adding our allowed networks ===&lt;br /&gt;
&lt;br /&gt;
==== IPv4 ====&lt;br /&gt;
{{cmd|ipset create allowed-nets-ipv4 hash:net,iface family inet}}&lt;br /&gt;
&lt;br /&gt;
Then you can add each of your allowed networks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ipset add allowed-nets-ipv4 192.168.0.0/30,eth1&lt;br /&gt;
ipset add allowed-nets-ipv4 192.168.1.0/24,eth0&lt;br /&gt;
ipset add allowed-nets-ipv4 192.168.2.0/24,eth0&lt;br /&gt;
ipset add allowed-nets-ipv4 192.168.3.0/24,eth0&lt;br /&gt;
ipset add allowed-nets-ipv4 127.0.0.0/8,lo&lt;br /&gt;
ipset add allowed-nets-ipv4 172.16.32.0/20,tun0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IPv6 ====&lt;br /&gt;
For IPv6 if you&#039;ve got any [https://en.wikipedia.org/wiki/Unique_local_address Unique local address] ranges you may choose to add them:&lt;br /&gt;
&lt;br /&gt;
{{cmd|ipset create allowed-nets-ipv6 hash:net,iface family inet6}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ipset add allowed-nets-ipv6 fde4:8dba:82e1::/48,tun0&lt;br /&gt;
ipset add allowed-nets-ipv6 fde4:8dba:82e1:ffff::/64,eth0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finally save the sets with this command so they can be loaded next boot:&lt;br /&gt;
&lt;br /&gt;
{{cmd|/etc/init.d/ipset save}}&lt;br /&gt;
&lt;br /&gt;
== Restricting our LAN subnet with iptables, and blocking the bogons ==&lt;br /&gt;
Finally we can apply our iptables rules, to filter both 192.168.3.0/24 and make sure that subnets like 192.168.5.0/24 are not forwarded or accessible by our router. You will need to review these rules, and remove the ones that do not apply to you.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to change your RADIUS rules if you moved your WiFi APs into the 192.168.3.0/24 subnet. You&#039;ll also need to edit /etc/raddb/clients.conf&lt;br /&gt;
&lt;br /&gt;
I used a new table here called &amp;quot;raw&amp;quot;. This table is more primitive than the filter table. It cannot have FORWARD rules or INPUT rules. Therefore you will still need a FORWARD rule in your filter table to block bogons originating from your LAN.&lt;br /&gt;
&lt;br /&gt;
The only kind of rules we may use here are PREROUTING and OUTPUT. The OUTPUT rules will only filter traffic originating from our router&#039;s local processes, such as if we ran the ping command to a bogon range on the router&#039;s command prompt.&lt;br /&gt;
&lt;br /&gt;
Traffic passes over the raw table, before connecting marking as indicated by this packet flow map: [http://inai.de/images/nf-packet-flow.png Netfilter packet flow graph] this means we don&#039;t have to strip the mark off the bogon range in the mangle table anymore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#########################################################################&lt;br /&gt;
# Advanced routing rule set&lt;br /&gt;
# Uses 192.168.1.0 via ISP&lt;br /&gt;
#      192.168.2.0 via VPN&lt;br /&gt;
#      192.168.3.0 via LAN&lt;br /&gt;
#&lt;br /&gt;
# Packets to/from 192.168.1.0/24 are marked with 0x1 and routed to ISP&lt;br /&gt;
# Packets to/from 192.168.2.0/24 are marked with 0x2 and routed to VPN&lt;br /&gt;
# Packets to/from 192.168.3.0/24 are routed to LAN and not forwarded onto&lt;br /&gt;
#                                    the internet&lt;br /&gt;
#&lt;br /&gt;
#########################################################################&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Raw Table&lt;br /&gt;
# This table is the place where we drop all illegal packets from networks that&lt;br /&gt;
# do not exist&lt;br /&gt;
#&lt;br /&gt;
*raw&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a log drop chain&lt;br /&gt;
:LOG_DROP_BOGON - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create an output chain&lt;br /&gt;
:OUT_PPP0 - [0:0]&lt;br /&gt;
:OUT_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Allows traffic from VPN tunnel&lt;br /&gt;
-A PREROUTING -s 172.16.32.0/20 -i tun0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allows traffic to VPN tunnel&lt;br /&gt;
-A PREROUTING -d 172.16.32.0/20 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Block specified bogons coming in from ISP and VPN&lt;br /&gt;
# (unlikely to happen as they filter them on their router)&lt;br /&gt;
-A PREROUTING -i ppp0 -m set --match-set bogon-bn-nonagg src -j LOG_DROP_BOGON&lt;br /&gt;
-A PREROUTING -i tun0 -m set --match-set bogon-bn-nonagg src -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Allows my excepted ranges.&lt;br /&gt;
-A PREROUTING -m set --match-set allowed-nets-ipv4 src,src -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass output interface to corresponding chain&lt;br /&gt;
-A OUTPUT -o ppp0 -j OUT_PPP0&lt;br /&gt;
-A OUTPUT -o tun0 -j OUT_TUN0&lt;br /&gt;
&lt;br /&gt;
# Log drop chain&lt;br /&gt;
-A LOG_DROP_BOGON -j LOG --log-prefix &amp;quot;Dropped Bogon (ipv4) : &amp;quot; --log-level 6&lt;br /&gt;
-A LOG_DROP_BOGON -j DROP&lt;br /&gt;
&lt;br /&gt;
# Block packets originating from the router destined to bogon ranges&lt;br /&gt;
-A OUT_PPP0 -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Blocks packets originating from the router destined to bogon ranges&lt;br /&gt;
-A OUT_TUN0 -d 172.16.32.0/20 -j ACCEPT&lt;br /&gt;
-A OUT_TUN0 -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# NAT Table&lt;br /&gt;
# This is where translation of packets happens and &amp;quot;forwarding&amp;quot; of ports&lt;br /&gt;
# to specific hosts.&lt;br /&gt;
#&lt;br /&gt;
*nat&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Port forwarding for Bittorrent&lt;br /&gt;
-A PREROUTING -i tun0 -p tcp -m tcp --dport 6881:6889 -j DNAT --to-destination 192.168.2.20&lt;br /&gt;
-A PREROUTING -i tun0 -p udp -m udp --dport 6881:6889 -j DNAT --to-destination 192.168.2.20&lt;br /&gt;
&lt;br /&gt;
# Allows routing to our modem subnet so we can access the web interface&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
-A POSTROUTING -s 192.168.2.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the VPN tunnel&lt;br /&gt;
-A POSTROUTING -o tun0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the PPP tunnel&lt;br /&gt;
-A POSTROUTING -o ppp0 -j MASQUERADE&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Filter Table&lt;br /&gt;
# This is where we decide to ACCEPT, DROP or REJECT things&lt;br /&gt;
#&lt;br /&gt;
*filter&lt;br /&gt;
:INPUT DROP [0:0]&lt;br /&gt;
:FORWARD DROP [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for forwarding packets&lt;br /&gt;
:FWD_ETH0 - [0:0]&lt;br /&gt;
:FWD_ETH1 - [0:0]&lt;br /&gt;
:FWD_PPP0 - [0:0]&lt;br /&gt;
:FWD_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for input packets (for host itself)&lt;br /&gt;
:IN_ETH0 - [0:0]&lt;br /&gt;
:IN_ETH1 - [0:0]&lt;br /&gt;
:IN_PPP0 - [0:0]&lt;br /&gt;
:IN_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a drop chain&lt;br /&gt;
:LOG_DROP - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a log drop chain&lt;br /&gt;
:LOG_DROP_BOGON - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a reject chain&lt;br /&gt;
:LOG_REJECT_LANONLY - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create an output chain&lt;br /&gt;
:OUT_PPP0 - [0:0]&lt;br /&gt;
:OUT_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Pass input packet to corresponding rule chain&lt;br /&gt;
-A INPUT -i lo -j ACCEPT&lt;br /&gt;
-A INPUT -i eth0 -j IN_ETH0&lt;br /&gt;
-A INPUT -i eth1 -j IN_ETH1&lt;br /&gt;
-A INPUT -i ppp0 -j IN_PPP0&lt;br /&gt;
-A INPUT -i tun0 -j IN_TUN0&lt;br /&gt;
&lt;br /&gt;
# Track forwarded packets&lt;br /&gt;
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass forwarded packet to corresponding rule chain&lt;br /&gt;
-A FORWARD -i eth0 -j FWD_ETH0&lt;br /&gt;
-A FORWARD -i eth1 -j FWD_ETH1&lt;br /&gt;
-A FORWARD -i ppp0 -j FWD_PPP0&lt;br /&gt;
-A FORWARD -i tun0 -j FWD_TUN0&lt;br /&gt;
&lt;br /&gt;
# Pass output interface to corresponding chain&lt;br /&gt;
-A OUTPUT -o ppp0 -j OUT_PPP0&lt;br /&gt;
-A OUTPUT -o tun0 -j OUT_TUN0&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to Modem&lt;br /&gt;
-A FWD_ETH0 -d 192.168.0.1/32 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow routing to remote address on VPN&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -d 172.16.32.1/32 -o tun0 -j ACCEPT&lt;br /&gt;
-A FWD_ETH0 -s 192.168.2.0/24 -d 172.16.32.1/32 -o tun0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow forwarding from LAN hosts to LAN ONLY subnet&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -d 192.168.3.0/24 -j ACCEPT&lt;br /&gt;
-A FWD_ETH0 -s 192.168.2.0/24 -d 192.168.3.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow LAN ONLY subnet to contact other LAN hosts&lt;br /&gt;
-A FWD_ETH0 -s 192.168.3.0/24 -d 192.168.1.0/24 -j ACCEPT&lt;br /&gt;
-A FWD_ETH0 -s 192.168.3.0/24 -d 192.168.2.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Refuse to forward bogons to the internet!&lt;br /&gt;
-A FWD_ETH0 -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to ISP&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to VPN&lt;br /&gt;
-A FWD_ETH0 -s 192.168.2.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Prevent 192.168.3.0/24 from accessing internet&lt;br /&gt;
-A FWD_ETH0 -s 192.168.3.0/24 -j LOG_REJECT_LANONLY&lt;br /&gt;
&lt;br /&gt;
# Allow excepted server to be FORWARD to ppp0&lt;br /&gt;
#-A FWD_ETH0 -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -o ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward SSH packets from network to modem&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.1.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.2.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward HTTP packets from network to mode&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.1.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.2.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward Bittorrent Port to workstation&lt;br /&gt;
-A FWD_TUN0 -d 192.168.2.20/32 -p tcp -m tcp --dport 6881:6889 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_TUN0 -d 192.168.2.20/32 -p udp -m udp --dport 6881:6889 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# DNS to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# FreeRadius Client (eg a UniFi AP)&lt;br /&gt;
-A IN_ETH0 -s 192.168.3.10/32 -p tcp -m tcp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.3.10/32 -p udp -m udp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Ubiquiti UAP Device Discovery Broadcast&lt;br /&gt;
-A IN_ETH0 -s 192.168.3.10/32 -p udp -m udp --dport 10001 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# NTP to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.3.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept traffic to router on both subnets&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow excepted server to be INPUT to eth0 from LAN&lt;br /&gt;
#-A IN_ETH0 -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -o ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# HTTP To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked PPP0 connection&lt;br /&gt;
-A IN_PPP0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on PPP0&lt;br /&gt;
-A IN_PPP0 -j LOG --log-prefix &amp;quot;DROP:INPUT (ipv4) &amp;quot; --log-level 6&lt;br /&gt;
-A IN_PPP0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked TUN0 connection&lt;br /&gt;
-A IN_TUN0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on TUN0&lt;br /&gt;
-A IN_TUN0 -j LOG --log-prefix &amp;quot;DROP:INPUT (ipv4) &amp;quot; --log-level 6&lt;br /&gt;
-A IN_TUN0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Log dropped bogons that never got forwarded&lt;br /&gt;
-A LOG_DROP_BOGON -j LOG --log-prefix &amp;quot;Dropped Bogon forward (ipv4) &amp;quot; --log-level 6&lt;br /&gt;
-A LOG_DROP_BOGON -j DROP&lt;br /&gt;
&lt;br /&gt;
# Log rejected packets&lt;br /&gt;
-A LOG_REJECT_LANONLY -j LOG --log-prefix &amp;quot;Rejected packet from LAN only range : &amp;quot; --log-level 6&lt;br /&gt;
-A LOG_REJECT_LANONLY -j REJECT --reject-with icmp-port-unreachable&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mangle Table&lt;br /&gt;
# This is the place where our markings happen, whether they be 0x1 or 0x2&lt;br /&gt;
#&lt;br /&gt;
*mangle&lt;br /&gt;
&lt;br /&gt;
# Set default policies for table&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:FORWARD ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Restore CONNMARK to the MARK (If one doesn&#039;t exist then no mark is set)&lt;br /&gt;
-A PREROUTING -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff&lt;br /&gt;
&lt;br /&gt;
# If packet MARK is 2, then it means there is already a connection mark and the&lt;br /&gt;
# original packet came in on VPN&lt;br /&gt;
-A PREROUTING -s 192.168.2.0/24 -m mark --mark 0x2 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Check exception (this is a server which when accessed on a 192.168.2.0/24 address will go out the ISP table) are 0x1&lt;br /&gt;
#-A PREROUTING -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -m mark --mark 0x1 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Mark packets coming from 192.168.2.0/24 are 0x2&lt;br /&gt;
-A PREROUTING -s 192.168.2.0/24 -j MARK --set-xmark 0x2/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# If packet MARK is 1, then it means there is already a connection mark and the&lt;br /&gt;
# original packet came in on ISP&lt;br /&gt;
-A PREROUTING -s 192.168.1.0/24 -m mark --mark 0x1 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Mark packets 192.168.1.0/24 are 0x1&lt;br /&gt;
-A PREROUTING -s 192.168.1.0/24 -j MARK --set-xmark 0x1/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Mark exception (this is a server which when accessed on a 192.168.2.0/24 address will go out the ISP table) as 0x1&lt;br /&gt;
#-A PREROUTING -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -j MARK --set-xmark 0x1/0xffffff&lt;br /&gt;
&lt;br /&gt;
# Strip mark if packet is destined for modem&lt;br /&gt;
-A PREROUTING -d 192.168.0.1/32 -j MARK --set-xmark 0x0/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Save MARK to CONNMARK (remember iproute can&#039;t see CONNMARKs)&lt;br /&gt;
-A PREROUTING -j CONNMARK --save-mark --nfmask 0xffffffff --ctmask 0xffffffff&lt;br /&gt;
COMMIT&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Other Tips =&lt;br /&gt;
&lt;br /&gt;
== Diagnosing firewall problems ==&lt;br /&gt;
&lt;br /&gt;
=== netcat, netcat6 ===&lt;br /&gt;
Netcat can be useful for testing if a port is open or closed or filtered.&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add netcat-openbsd}}&lt;br /&gt;
&lt;br /&gt;
After installing netcat we can use it like this:&lt;br /&gt;
&lt;br /&gt;
Say we wanted to test for IPv6, UDP, Port 547 we would do this on the router:&lt;br /&gt;
&lt;br /&gt;
{{cmd|nc -6 -u -l 547}}&lt;br /&gt;
&lt;br /&gt;
and then this on the client to connect to it:&lt;br /&gt;
&lt;br /&gt;
{{cmd|nc -u -v -6 2001:0db8:1234:0001::1 547}}&lt;br /&gt;
&lt;br /&gt;
=== tcpdump ===&lt;br /&gt;
&lt;br /&gt;
tcpdump can also be useful for dumping the contents of packets coming in on an interface:&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add tcpdump}}&lt;br /&gt;
&lt;br /&gt;
Then we can run it. This example captures all DNS traffic originating from 192.168.2.20.&lt;br /&gt;
&lt;br /&gt;
{{cmd|tcpdump -i eth0 udp and src 192.168.2.20 and port 53}}&lt;br /&gt;
&lt;br /&gt;
You can write the file out with the -w option, and view it in Wireshark locally on your computer. You can increase the verbosity with the -v option. Using -vv will be even more verbose. -vvv will show even more.&lt;br /&gt;
&lt;br /&gt;
== lbu cache ==&lt;br /&gt;
Configure lbu cache so that you don&#039;t need to download packages when you restart your router eg [[Local APK cache]]&lt;br /&gt;
&lt;br /&gt;
This is particularly important as some of the images do not contain ppp-pppoe. This might mean you&#039;re unable to get an internet connection to download the other packages on boot.&lt;br /&gt;
&lt;br /&gt;
== lbu encryption /etc/lbu/lbu.conf ==&lt;br /&gt;
In /etc/lbu/lbu.conf you might want to enable encryption to protect your VPN keys.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# what cipher to use with -e option&lt;br /&gt;
DEFAULT_CIPHER=aes-256-cbc&lt;br /&gt;
&lt;br /&gt;
# Uncomment the row below to encrypt config by default&lt;br /&gt;
ENCRYPTION=$DEFAULT_CIPHER&lt;br /&gt;
&lt;br /&gt;
# Uncomment below to avoid &amp;lt;media&amp;gt; option to &#039;lbu commit&#039;&lt;br /&gt;
# Can also be set to &#039;floppy&#039;&lt;br /&gt;
LBU_MEDIA=mmcblk0p1&lt;br /&gt;
&lt;br /&gt;
# Set the LBU_BACKUPDIR variable in case you prefer to save the apkovls&lt;br /&gt;
# in a normal directory instead of mounting an external media.&lt;br /&gt;
# LBU_BACKUPDIR=/root/config-backups&lt;br /&gt;
&lt;br /&gt;
# Uncomment below to let lbu make up to 3 backups&lt;br /&gt;
# BACKUP_LIMIT=3&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remember to set a root password, by default Alpine Linux&#039;s root account is passwordless.&lt;br /&gt;
{{cmd|passwd root}}&lt;br /&gt;
&lt;br /&gt;
== Backup apkprov ==&lt;br /&gt;
It&#039;s a good idea to back up your apk provision file. You can pull it off your router to your local workstation with:&lt;br /&gt;
&lt;br /&gt;
{{cmd|scp -r root@192.168.2.1:/media/mmcblk0p1/&amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz.aes-256-cbc ./}}&lt;br /&gt;
&lt;br /&gt;
And decrypt it with:&lt;br /&gt;
{{cmd|openssl enc -d -aes-256-cbc -in &amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz.aes-256-cbc -out &amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz}}&lt;br /&gt;
&lt;br /&gt;
It can be encrypted with:&lt;br /&gt;
{{cmd|openssl aes-256-cbc -salt -in &amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz -out &amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz.aes-256-cbc}}&lt;br /&gt;
&lt;br /&gt;
== Harden SSH ==&lt;br /&gt;
&lt;br /&gt;
=== Generate a SSH key ===&lt;br /&gt;
{{cmd|ssh-keygen -t rsa -b 4096}}&lt;br /&gt;
&lt;br /&gt;
You will want to put the contents of id_rsa.pub in /etc/ssh/authorized_keys&lt;br /&gt;
&lt;br /&gt;
You can put multiple public keys on multiple lines if more than one person has access to the router.&lt;br /&gt;
&lt;br /&gt;
=== /etc/ssh/sshd_config ===&lt;br /&gt;
A couple of good options to set in here can be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ListenAddress 192.168.1.1&lt;br /&gt;
ListenAddress 192.168.2.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
While this isn&#039;t usually a good idea, a router doesn&#039;t need more than one user.&lt;br /&gt;
&amp;lt;pre&amp;gt;PermitRootLogin yes&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The most important options:&lt;br /&gt;
&amp;lt;pre&amp;gt;RSAAuthentication yes&lt;br /&gt;
PubkeyAuthentication yes&lt;br /&gt;
AuthorizedKeysFile  /etc/ssh/authorized_keys&lt;br /&gt;
PasswordAuthentication no&lt;br /&gt;
PermitEmptyPasswords no&lt;br /&gt;
AllowTcpForwarding no&lt;br /&gt;
X11Forwarding no&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== /etc/conf.d/sshd ===&lt;br /&gt;
You will want to add &amp;lt;pre&amp;gt;rc_need=&amp;quot;net&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This instructs OpenRC to make sure the network is up before starting ssh.&lt;br /&gt;
&lt;br /&gt;
Finally add sshd to the default run level&lt;br /&gt;
{{cmd|rc-update add sshd default}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at [https://stribika.github.io/2015/01/04/secure-secure-shell.html Secure Secure Shell] and tighten OpenSSH&#039;s cryptography options.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
* https://wiki.gentoo.org/wiki/Home_Router&lt;br /&gt;
* https://help.ubuntu.com/community/ADSLPPPoE&lt;br /&gt;
* https://wiki.archlinux.org/index.php/Router&lt;br /&gt;
* https://wiki.gentoo.org/wiki/IPv6_router_guide&lt;br /&gt;
* [https://vk5tu.livejournal.com/37206.html IPv6 at home, under the hood with Debian Wheezy and Internode]&lt;br /&gt;
* [http://vk5tu.livejournal.com/43059.html Raspberry Pi random number generator]&lt;br /&gt;
* [https://www.raspberrypi.org/forums/viewtopic.php?f=56&amp;amp;t=60569 rng-tools post by ktb]&lt;br /&gt;
&lt;br /&gt;
[[category: VPN]]&lt;br /&gt;
[[category: Raspberry]]&lt;/div&gt;</summary>
		<author><name>Dngray</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Linux_Router_with_VPN_on_a_Raspberry_Pi&amp;diff=19350</id>
		<title>Linux Router with VPN on a Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Linux_Router_with_VPN_on_a_Raspberry_Pi&amp;diff=19350"/>
		<updated>2021-05-14T03:14:52Z</updated>

		<summary type="html">&lt;p&gt;Dngray: /* Use group policy to filter telemetry */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
= Rationale =&lt;br /&gt;
&lt;br /&gt;
This guide demonstrates how to set up a Linux router with a VPN tunnel. You will need a second ethernet adapter. If you are using a Raspberry Pi like I did, then you can use something like this [http://store.apple.com/us/product/MC704LL/A/apple-usb-ethernet-adapter Apple USB Ethernet Adapter] as it contains a ASIX AX88772 which has good Linux support.&lt;br /&gt;
&lt;br /&gt;
You may choose to also buy an [http://www.element14.com/community/docs/DOC-68907/l/shim-rtc-realtime-clock-accessory-board-for-raspberry-pi RTC clock]. If you don&#039;t have an RTC clock, the time is lost when your Pi is shut down. When it is rebooted, the time will be set back to Thursday, 1 January 1970. As this is earlier than the creation time of your VPN certificates OpenVPN will refuse to start, which may mean you cannot do DNS lookups over VPN.&lt;br /&gt;
&lt;br /&gt;
For wireless, a separate access point was purchased ([http://wiki.openwrt.org/toh/ubiquiti/unifi Ubiquiti UniFi AP]) because it contains a Atheros AR9287 which is supported by [https://wireless.wiki.kernel.org/en/users/drivers/ath9k ath9k].&lt;br /&gt;
&lt;br /&gt;
I only chose a Raspberry Pi due to the fact it was inexpensive. My WAN link is pathetic so I was not concerned with getting high PPS ([https://en.wikipedia.org/wiki/Throughput Packets Per Second]). You could choose to use an old x86/amd64 system instead. If I had better internet I&#039;d probably go with an offering from [https://soekris.com Soekris] such as the [https://soekris.com/products/net6501-1.html net6501] as it would have a much lower power consumption than a generic x86_64 desktop processor.&lt;br /&gt;
&lt;br /&gt;
If you want to route speeds above 100 Mbit/s you&#039;ll want to make use of hardware encryption like [https://en.wikipedia.org/wiki/AES_instruction_set AES-NI]. The [https://soekris.com Soekris] offerings have the option of an additional hardware encryption module ([https://soekris.com/products/vpn-1411.html vpn1411]). Another option is to use a [https://en.wikipedia.org/wiki/Mini-ITX Mini ITX motherboard], with a managed switch. I chose the [https://www.ubnt.com/edgemax/edgeswitch Ubiquiti ES-16-150W].&lt;br /&gt;
&lt;br /&gt;
If you wish to use IPv6 you should consider looking at [[Linux Router with VPN on a Raspberry Pi (IPv6)]] as the implementation does differ slightly to this tutorial.&lt;br /&gt;
&lt;br /&gt;
The network in this tutorial looks like this: &lt;br /&gt;
&lt;br /&gt;
[[File:Network diagram ipv4 basic.svg|900px|center|Network Diagram Single IPv4]]&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
This guide assumes you&#039;re using Alpine Linux from a micro SD card in ramdisk mode. It assumes you&#039;ve read the basics of how to use [[Alpine local backup]].  The [[Raspberry Pi]] article contains information on how to install Alpine Linux on a Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
= Modem in full bridge mode =&lt;br /&gt;
This particular page uses an example where you have a modem that uses PPPoE. You will need to modify parts which do not apply to you. &lt;br /&gt;
&lt;br /&gt;
In this example I have a modem which has been configured in full bridge mode. PPP sessions are initiated on the router.&lt;br /&gt;
&lt;br /&gt;
The modem I am using is a [http://www.cisco.com/c/en/us/products/routers/877-integrated-services-router-isr/index.html Cisco 877 Integrated Services Router]. It has no web interface and is controlled over SSH. More information can be found [[Configuring a Cisco 877 in full bridge mode]].&lt;br /&gt;
&lt;br /&gt;
= Network =&lt;br /&gt;
&lt;br /&gt;
== /etc/hostname ==&lt;br /&gt;
Set this to your hostname eg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;HOST_NAME&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/hosts ==&lt;br /&gt;
Set your host and hostname&lt;br /&gt;
&amp;lt;pre&amp;gt;127.0.0.1	&amp;lt;HOST_NAME&amp;gt; &amp;lt;HOST_NAME&amp;gt;.&amp;lt;DOMAIN_NAME&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::1		&amp;lt;HOST_NAME&amp;gt; ipv6-gateway ipv6-loopback&lt;br /&gt;
ff00::0		ipv6-localnet&lt;br /&gt;
ff00::0		ipv6-mcastprefix&lt;br /&gt;
ff02::1		ipv6-allnodes&lt;br /&gt;
ff02::2		ipv6-allrouters&lt;br /&gt;
ff02::3		ipv6-allhosts&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/interfaces ==&lt;br /&gt;
Configure your network interfaces. Change &amp;quot;yourISP&amp;quot; to the file name of the file in /etc/ppp/peers/yourISP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#&lt;br /&gt;
# Network Interfaces&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Loopback interfaces&lt;br /&gt;
auto lo&lt;br /&gt;
iface lo inet loopback&lt;br /&gt;
  address 127.0.0.1&lt;br /&gt;
  netmask 255.0.0.0&lt;br /&gt;
&lt;br /&gt;
# Internal Interface - facing LAN&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
  address 192.168.1.1&lt;br /&gt;
  netmask 255.255.255.0&lt;br /&gt;
  broadcast 192.168.1.255&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PPP ===&lt;br /&gt;
Next up we need to configure our router to be able to dial a PPP connection with our modem.&lt;br /&gt;
&lt;br /&gt;
If your ISP uses [https://en.wikipedia.org/wiki/Point-to-Point_Protocol PPP] you may need to configure it. See [[PPP]].&lt;br /&gt;
&lt;br /&gt;
You will want to make sure you set your WAN interface, in this example we used eth1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# External Interface - facing Modem&lt;br /&gt;
allow-hotplug eth1&lt;br /&gt;
auto eth1&lt;br /&gt;
iface eth1 inet static&lt;br /&gt;
  address 192.168.0.2&lt;br /&gt;
  netmask 255.255.255.252&lt;br /&gt;
  broadcast 192.168.0.3&lt;br /&gt;
  pre-up /sbin/ip link set eth1 up&lt;br /&gt;
  up ifup ppp0=yourISP&lt;br /&gt;
  down ifdown ppp0=yourISP&lt;br /&gt;
  post-down /sbin/ip link set eth1 up&lt;br /&gt;
&lt;br /&gt;
# Link to ISP&lt;br /&gt;
iface yourISP inet ppp&lt;br /&gt;
  provider yourISP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IPoE ===&lt;br /&gt;
Alternatively it&#039;s quite common for ISPs to use [https://en.wikipedia.org/wiki/IPoE IPoE]. IPoE is much simpler and only runs DHCP on the external interface. It should look something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# External interface to ISP&lt;br /&gt;
allow-hotplug eth1&lt;br /&gt;
auto eth1&lt;br /&gt;
iface eth1 inet dhcp&lt;br /&gt;
&lt;br /&gt;
iface eth1 inet static&lt;br /&gt;
    address 192.168.0.2&lt;br /&gt;
    netmask 255.255.255.252&lt;br /&gt;
    broadcast 192.168.0.3&lt;br /&gt;
&lt;br /&gt;
iface eth1 inet6 manual&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== DHCP from ISP ====&lt;br /&gt;
&lt;br /&gt;
Above we set DHCP and we set a static IP. The purpose of this is so we can still forward packets through to the modem to be able to access the web interface or ssh.&lt;br /&gt;
&lt;br /&gt;
We do still need DHCP to get an IP address form our ISP though. I like to use dhcpcd instead of udhcp (the default in Alpine Linux), because it allows for [https://en.wikipedia.org/wiki/Prefix_delegation Prefix Delegation], which is used in IPv6 networks.&lt;br /&gt;
&lt;br /&gt;
My /etc/dhcpcd.conf looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Enable extra debugging&lt;br /&gt;
# debug&lt;br /&gt;
# logfile /var/log/dhcpcd.log&lt;br /&gt;
&lt;br /&gt;
# Allow users of this group to interact with dhcpcd via the control&lt;br /&gt;
# socket.&lt;br /&gt;
#controlgroup wheel&lt;br /&gt;
&lt;br /&gt;
# Inform the DHCP server of our hostname for DDNS.&lt;br /&gt;
hostname gateway&lt;br /&gt;
&lt;br /&gt;
# Use the hardware address of the interface for the Client ID.&lt;br /&gt;
# clientid&lt;br /&gt;
# or&lt;br /&gt;
# Use the same DUID + IAID as set in DHCPv6 for DHCPv4 ClientID as&lt;br /&gt;
# per RFC4361. Some non-RFC compliant DHCP servers do not reply with&lt;br /&gt;
# this set. In this case, comment out duid and enable clientid above.&lt;br /&gt;
duid&lt;br /&gt;
&lt;br /&gt;
# Persist interface configuration when dhcpcd exits.&lt;br /&gt;
persistent&lt;br /&gt;
&lt;br /&gt;
# Rapid commit support.&lt;br /&gt;
# Safe to enable by default because it requires the equivalent option&lt;br /&gt;
# set on the server to actually work.&lt;br /&gt;
option rapid_commit&lt;br /&gt;
&lt;br /&gt;
# A list of options to request from the DHCP server.&lt;br /&gt;
option domain_name_servers, domain_name, domain_search, host_name&lt;br /&gt;
option classless_static_routes&lt;br /&gt;
&lt;br /&gt;
# Most distributions have NTP support.&lt;br /&gt;
option ntp_servers&lt;br /&gt;
&lt;br /&gt;
# Respect the network MTU.&lt;br /&gt;
# Some interface drivers reset when changing the MTU so disabled by&lt;br /&gt;
# default.&lt;br /&gt;
#option interface_mtu 1586&lt;br /&gt;
&lt;br /&gt;
# A ServerID is required by RFC2131.&lt;br /&gt;
require dhcp_server_identifier&lt;br /&gt;
&lt;br /&gt;
# Generate Stable Private IPv6 Addresses instead of hardware based&lt;br /&gt;
# ones&lt;br /&gt;
slaac private&lt;br /&gt;
&lt;br /&gt;
# A hook script is provided to lookup the hostname if not set by the&lt;br /&gt;
# DHCP server, but it should not be run by default.&lt;br /&gt;
nohook lookup-hostname&lt;br /&gt;
&lt;br /&gt;
# Disable solicitations on all interfaces&lt;br /&gt;
noipv6rs&lt;br /&gt;
&lt;br /&gt;
# Wait for IP before forking to background&lt;br /&gt;
waitip 6&lt;br /&gt;
&lt;br /&gt;
# Don&#039;t touch DNS&lt;br /&gt;
nohook resolv.conf&lt;br /&gt;
&lt;br /&gt;
allowinterfaces eth1 eth0.2&lt;br /&gt;
# Use the interface connected to WAN&lt;br /&gt;
interface eth1&lt;br /&gt;
    waitip 4&lt;br /&gt;
    noipv4ll&lt;br /&gt;
    ipv6rs # enable routing solicitation get the default IPv6 route&lt;br /&gt;
    iaid 1&lt;br /&gt;
    ia_pd 1/::/56 eth0.2/2/64&lt;br /&gt;
    timeout 30&lt;br /&gt;
&lt;br /&gt;
interface eth0.2&lt;br /&gt;
    ipv6only&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Basic IPtables firewall with routing ==&lt;br /&gt;
This demonstrates how to set up basic routing with a permissive outgoing firewall. Incoming packets are blocked. The rest is commented in the rule set.&lt;br /&gt;
&lt;br /&gt;
First install iptables:&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add iptables ip6tables}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#########################################################################&lt;br /&gt;
# Basic iptables IPv4 routing rule set&lt;br /&gt;
#&lt;br /&gt;
# 192.168.1.0/24 routed directly to PPP0 via NAT&lt;br /&gt;
# &lt;br /&gt;
#########################################################################&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mangle Table&lt;br /&gt;
# We leave this empty for the moment.&lt;br /&gt;
#&lt;br /&gt;
*mangle&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:FORWARD ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Filter Table&lt;br /&gt;
# This is where we decide to ACCEPT, DROP or REJECT things&lt;br /&gt;
#&lt;br /&gt;
*filter&lt;br /&gt;
:INPUT DROP [0:0]&lt;br /&gt;
:FORWARD DROP [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
*filter&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for forwarding packets&lt;br /&gt;
:FWD_ETH0 - [0:0]&lt;br /&gt;
:FWD_ETH1 - [0:0]&lt;br /&gt;
:FWD_PPP0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for input packets (for host itself)&lt;br /&gt;
:IN_ETH0 - [0:0]&lt;br /&gt;
:IN_ETH1 - [0:0]&lt;br /&gt;
:IN_PPP0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a log drop chain&lt;br /&gt;
:LOG_DROP - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Pass input packet to corresponding rule chain&lt;br /&gt;
-A INPUT -i lo -j ACCEPT&lt;br /&gt;
-A INPUT -i eth0 -j IN_ETH0&lt;br /&gt;
-A INPUT -i eth1 -j IN_ETH1&lt;br /&gt;
-A INPUT -i ppp0 -j IN_PPP0&lt;br /&gt;
&lt;br /&gt;
# Pass forwarded packet to corresponding rule chain&lt;br /&gt;
-A FORWARD -i eth0 -j FWD_ETH0&lt;br /&gt;
-A FORWARD -i eth1 -j FWD_ETH1&lt;br /&gt;
-A FORWARD -i ppp0 -j FWD_PPP0&lt;br /&gt;
&lt;br /&gt;
# Forward LAN traffic out&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward SSH packets from network to modem&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.0/30 -d 192.168.1.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward HTTP to modem&#039;s webserver&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.0/30 -d 192.168.1.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to ISP&lt;br /&gt;
-A FWD_PPP0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# DNS to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# FreeRadius Client (eg a UniFi AP)&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# NTP to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept traffic&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# HTTP to modem&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked PPP0 connection&lt;br /&gt;
-A IN_PPP0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# NAT Table&lt;br /&gt;
# This is where translation of packets happens and &amp;quot;forwarding&amp;quot; of ports&lt;br /&gt;
# to specific hosts.&lt;br /&gt;
#&lt;br /&gt;
*nat&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Port forwarding for Bittorrent&lt;br /&gt;
-A PREROUTING -i ppp0 -p tcp -m tcp --dport 6881:6889 -j DNAT --to-destination 192.168.1.20&lt;br /&gt;
-A PREROUTING -i ppp0 -p udp -m udp --dport 6881:6889 -j DNAT --to-destination 192.168.1.20&lt;br /&gt;
&lt;br /&gt;
# Allows routing to our modem subnet so we can access the web interface or SSH&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 22 -j MASQUERADE&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the PPP tunnel&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE&lt;br /&gt;
COMMIT&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I&#039;d also highly suggest reading these resources if you are new to iptables: &lt;br /&gt;
&lt;br /&gt;
* [https://www.frozentux.net/category/linux/iptables Frozen Tux Iptables-tutorial]&lt;br /&gt;
* [http://inai.de/links/iptables/ Words of wisdom for #netfilter]&lt;br /&gt;
* [http://sfvlug.editthis.info/wiki/Things_You_Should_Know_About_Netfilter Things You Should Know About Netfilter]&lt;br /&gt;
* [http://inai.de/documents/Perfect_Ruleset.pdf Towards the perfect ruleset]&lt;br /&gt;
&lt;br /&gt;
== /etc/sysctl.d/local.conf ==&lt;br /&gt;
&amp;lt;pre&amp;gt;# Controls IP packet forwarding&lt;br /&gt;
net.ipv4.ip_forward = 1&lt;br /&gt;
&lt;br /&gt;
# Needed to use fwmark, only required if you want to set up the VPN subnet later in this article&lt;br /&gt;
net.ipv4.conf.all.rp_filter = 2&lt;br /&gt;
&lt;br /&gt;
# Disable IPv6&lt;br /&gt;
net.ipv6.conf.all.disable_ipv6 = 1&lt;br /&gt;
net.ipv6.conf.lo.disable_ipv6 = 1&lt;br /&gt;
net.ipv6.conf.default.disable_ipv6 = 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note IPv6 is disabled here if you want that see the other tutorial [[Linux Router with VPN on a Raspberry Pi (IPv6)]]. You may also wish to look at [https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt ip-sysctl.txt] to read about the other keys.&lt;br /&gt;
&lt;br /&gt;
= DHCP =&lt;br /&gt;
{{cmd|apk add dhcp}}&lt;br /&gt;
&lt;br /&gt;
== /etc/conf.d/dhcpd ==&lt;br /&gt;
Specify the configuration file location, interface to run on and that you want DHCPD to run in IPv4 mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# /etc/conf.d/dhcpd: config file for /etc/init.d/dhcpd&lt;br /&gt;
&lt;br /&gt;
# If you require more than one instance of dhcpd you can create symbolic&lt;br /&gt;
# links to dhcpd service like so&lt;br /&gt;
#   cd /etc/init.d&lt;br /&gt;
#   ln -s dhcpd dhcpd.foo&lt;br /&gt;
#   cd ../conf.d&lt;br /&gt;
#   cp dhcpd dhcpd.foo&lt;br /&gt;
# Now you can edit dhcpd.foo and specify a different configuration file.&lt;br /&gt;
# You&#039;ll also need to specify a pidfile in that dhcpd.conf file.&lt;br /&gt;
# See the pid-file-name option in the dhcpd.conf man page for details.&lt;br /&gt;
&lt;br /&gt;
# If you wish to run dhcpd in a chroot, uncomment the following line&lt;br /&gt;
# DHCPD_CHROOT=&amp;quot;/var/lib/dhcp/chroot&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# All file paths below are relative to the chroot.&lt;br /&gt;
# You can specify a different chroot directory but MAKE SURE it&#039;s empty.&lt;br /&gt;
&lt;br /&gt;
# Specify a configuration file - the default is /etc/dhcp/dhcpd.conf&lt;br /&gt;
DHCPD_CONF=&amp;quot;/etc/dhcp/dhcpd.conf&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Configure which interface or interfaces to for dhcpd to listen on.&lt;br /&gt;
# List all interfaces space separated. If this is not specified then&lt;br /&gt;
# we listen on all interfaces.&lt;br /&gt;
DHCPD_IFACE=&amp;quot;eth0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Insert any other dhcpd options - see the man page for a full list.&lt;br /&gt;
DHCPD_OPTS=&amp;quot;-4&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/dhcp/dhcpd.conf ==&lt;br /&gt;
Configure your DHCP configuration server. For my DHCP server I&#039;m going to have three subnets. Each has a specific purpose. You may choose to have any number of subnets like below. The broadcast-address would be different if you used VLANs. However in this case we are not.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;authoritative;&lt;br /&gt;
ddns-update-style interim;&lt;br /&gt;
&lt;br /&gt;
shared-network home {&lt;br /&gt;
  subnet 192.168.1.0 netmask 255.255.255.0 {&lt;br /&gt;
    range 192.168.1.10 192.168.1.240;&lt;br /&gt;
    option subnet-mask 255.255.255.0;&lt;br /&gt;
    option broadcast-address 192.168.1.255;&lt;br /&gt;
    option routers 192.168.1.1;&lt;br /&gt;
    option ntp-servers 192.168.1.1;&lt;br /&gt;
    option domain-name-servers 192.168.1.1;&lt;br /&gt;
    allow unknown-clients;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  subnet 192.168.2.0 netmask 255.255.255.0 {&lt;br /&gt;
    range 192.168.2.10 192.168.2.240;&lt;br /&gt;
    option subnet-mask 255.255.255.0;&lt;br /&gt;
    option broadcast-address 192.168.2.255;&lt;br /&gt;
    option routers 192.168.2.1;&lt;br /&gt;
    option ntp-servers 192.168.2.1;&lt;br /&gt;
    option domain-name-servers 192.168.1.1;&lt;br /&gt;
    ignore unknown-clients;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  subnet 192.168.3.0 netmask 255.255.255.0 {&lt;br /&gt;
    range 192.168.3.10 192.168.3.240;&lt;br /&gt;
    option subnet-mask 255.255.255.0;&lt;br /&gt;
    option broadcast-address 192.168.3.255;&lt;br /&gt;
    option routers 192.168.3.1;&lt;br /&gt;
    option ntp-servers 192.168.3.1;&lt;br /&gt;
    option domain-name-servers 192.168.1.1;&lt;br /&gt;
    ignore unknown-clients;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
host Gaming_Computer {&lt;br /&gt;
  hardware ethernet 00:53:00:FF:FF:11;&lt;br /&gt;
  fixed-address 192.168.1.20;&lt;br /&gt;
  option subnet-mask 255.255.255.0;&lt;br /&gt;
  option broadcast-address 192.168.1.255;&lt;br /&gt;
  option routers 192.168.1.1;&lt;br /&gt;
  option host-name &amp;quot;gaming_computer&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
host Linux_Workstation {&lt;br /&gt;
  hardware ethernet 00:53:00:FF:FF:22;&lt;br /&gt;
  fixed-address 192.168.2.21;&lt;br /&gt;
  option subnet-mask 255.255.255.0;&lt;br /&gt;
  option broadcast-address 192.168.2.255;&lt;br /&gt;
  option routers 192.168.2.1;&lt;br /&gt;
  option host-name &amp;quot;linux_workstation&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
host printer {&lt;br /&gt;
  hardware ethernet 00:53:00:FF:FF:33;&lt;br /&gt;
  fixed-address 192.168.3.9;&lt;br /&gt;
  option subnet-mask 255.255.255.0;&lt;br /&gt;
  option broadcast-address 192.168.3.255;&lt;br /&gt;
  option routers 192.168.3.1;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure to add this to the default run level once configured:&lt;br /&gt;
{{cmd|rc-update add dhcpd default}}&lt;br /&gt;
&lt;br /&gt;
= Synchronizing the clock =&lt;br /&gt;
&lt;br /&gt;
You can choose to use BusyBox&#039;s ntpd or you can choose a more fully fledged option like [http://www.openntpd.org OpenNTPD] or [https://chrony.tuxfamily.org Chrony]&lt;br /&gt;
&lt;br /&gt;
== Busybox /etc/conf.d/ntpd ==&lt;br /&gt;
Allow clients to synchronize their clocks with the router.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# By default ntpd runs as a client. Add -l to run as a server on port 123.&lt;br /&gt;
NTPD_OPTS=&amp;quot;-l -N -p &amp;lt;REMOTE TIME SERVER&amp;gt;&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure to add this to the default run level once configured:&lt;br /&gt;
{{cmd|rc-update add ntpd default}}&lt;br /&gt;
&lt;br /&gt;
Or if you prefer to synchronize with multiple servers...&lt;br /&gt;
&lt;br /&gt;
== Chrony /etc/chrony.conf ==&lt;br /&gt;
{{cmd|apk add chrony}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;logdir /var/log/chrony&lt;br /&gt;
log measurements statistics tracking&lt;br /&gt;
&lt;br /&gt;
allow 192.168.0.0/30&lt;br /&gt;
allow 192.168.1.0/24&lt;br /&gt;
allow 192.168.2.0/24&lt;br /&gt;
allow 192.168.3.0/24&lt;br /&gt;
allow 192.168.4.0/24&lt;br /&gt;
broadcast 30 192.168.0.3&lt;br /&gt;
broadcast 30 192.168.1.255&lt;br /&gt;
broadcast 30 192.168.2.255&lt;br /&gt;
broadcast 30 192.168.3.255&lt;br /&gt;
broadcast 30 192.168.4.255&lt;br /&gt;
&lt;br /&gt;
server 0.pool.ntp.org iburst&lt;br /&gt;
server 1.pool.ntp.org iburst&lt;br /&gt;
server 2.pool.ntp.org iburst&lt;br /&gt;
server 3.pool.ntp.org iburst&lt;br /&gt;
&lt;br /&gt;
initstepslew 10 pool.ntp.org&lt;br /&gt;
driftfile /var/lib/chrony/chrony.drift&lt;br /&gt;
hwclockfile /etc/adjtime&lt;br /&gt;
rtcdevice /dev/rtc0&lt;br /&gt;
rtcsync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OpenNTPD /etc/ntpd.conf ==&lt;br /&gt;
&lt;br /&gt;
Install OpenNTPD&lt;br /&gt;
{{cmd|apk add openntpd}}&lt;br /&gt;
&lt;br /&gt;
Add to default run level.&lt;br /&gt;
{{cmd|rc-update add openntpd default}}&lt;br /&gt;
&lt;br /&gt;
=== /etc/ntpd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;# sample ntpd configuration file, see ntpd.conf(5)&lt;br /&gt;
&lt;br /&gt;
# Addresses to listen on (ntpd does not listen by default)&lt;br /&gt;
listen on 192.168.1.1&lt;br /&gt;
listen on 192.168.2.1&lt;br /&gt;
&lt;br /&gt;
# sync to a single server&lt;br /&gt;
#server ntp.example.org&lt;br /&gt;
&lt;br /&gt;
# use a random selection of NTP Pool Time Servers&lt;br /&gt;
# see http://support.ntp.org/bin/view/Servers/NTPPoolServers&lt;br /&gt;
server 0.pool.ntp.org&lt;br /&gt;
server 1.pool.ntp.org&lt;br /&gt;
server 2.pool.ntp.org&lt;br /&gt;
server 3.pool.ntp.org&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== tlsdate ==&lt;br /&gt;
The time can also be extracted from a https handshake. If the certificate is self-signed you will need to use skip-verification:&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add tlsdate}}&lt;br /&gt;
{{cmd|tlsdate -V --skip-verification -p 80 -H example.com}}&lt;br /&gt;
&lt;br /&gt;
== timezone ==&lt;br /&gt;
You might also want to set a timezone, see [[Setting the timezone]].&lt;br /&gt;
&lt;br /&gt;
= Saving Time =&lt;br /&gt;
There are two ways to do this. If you didn&#039;t buy an RTC clock see [[Saving time with Software Clock]]. If you did like the PiFace Real Time Clock see [[Saving time with Hardware Clock]]&lt;br /&gt;
&lt;br /&gt;
= Unbound DNS forwarder with dnscrypt =&lt;br /&gt;
We want to be able to do our lookups using [https://dnscrypt.info/ dnscrypt] without installing DNSCrypt on every client on the network. DNSCrypt can use it&#039;s [https://dnscrypt.info/protocol own protocol] or [https://en.wikipedia.org/wiki/DNS_over_HTTPS DNS over HTTPS].&lt;br /&gt;
&lt;br /&gt;
The router will also run a DNS forwarder and request unknown domains over DNSCrypt for our clients. Borrowed from the ArchLinux wiki article on [https://wiki.archlinux.org/index.php/dnscrypt-proxy dnscrypt-proxy].&lt;br /&gt;
&lt;br /&gt;
== Unbound ==&lt;br /&gt;
First install {{cmd|apk add unbound}}&lt;br /&gt;
&lt;br /&gt;
=== /etc/unbound/unbound.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;server:&lt;br /&gt;
    # Use this to include other text into the file.&lt;br /&gt;
    include: &amp;quot;/etc/unbound/filter.conf&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # verbosity number, 0 is least verbose. 1 is default.&lt;br /&gt;
    verbosity: 1&lt;br /&gt;
&lt;br /&gt;
    # specify the interfaces to answer queries from by ip-address.&lt;br /&gt;
    # The default is to listen to localhost (127.0.0.1 and ::1).&lt;br /&gt;
    # specify 0.0.0.0 and ::0 to bind to all available interfaces.&lt;br /&gt;
    # specify every interface[@port] on a new &#039;interface:&#039; labelled line.&lt;br /&gt;
    # The listen interfaces are not changed on reload, only on restart.&lt;br /&gt;
    interface: 192.168.2.1&lt;br /&gt;
    interface: 192.168.3.1&lt;br /&gt;
&lt;br /&gt;
    # Enable IPv4, &amp;quot;yes&amp;quot; or &amp;quot;no&amp;quot;.&lt;br /&gt;
    do-ip4: yes&lt;br /&gt;
&lt;br /&gt;
    # Enable IPv6, &amp;quot;yes&amp;quot; or &amp;quot;no&amp;quot;.&lt;br /&gt;
    do-ip6: yes&lt;br /&gt;
&lt;br /&gt;
    # Enable UDP, &amp;quot;yes&amp;quot; or &amp;quot;no&amp;quot;.&lt;br /&gt;
    do-udp: yes&lt;br /&gt;
&lt;br /&gt;
    # Enable TCP, &amp;quot;yes&amp;quot; or &amp;quot;no&amp;quot;.&lt;br /&gt;
    do-tcp: yes&lt;br /&gt;
&lt;br /&gt;
    # control which clients are allowed to make (recursive) queries&lt;br /&gt;
    # to this server. Specify classless netblocks with /size and action.&lt;br /&gt;
    # By default everything is refused, except for localhost.&lt;br /&gt;
    # Choose deny (drop message), refuse (polite error reply),&lt;br /&gt;
    # allow (recursive ok), allow_setrd (recursive ok, rd bit is forced on),&lt;br /&gt;
    # allow_snoop (recursive and nonrecursive ok)&lt;br /&gt;
    # deny_non_local (drop queries unless can be answered from local-data)&lt;br /&gt;
    # refuse_non_local (like deny_non_local but polite error reply).&lt;br /&gt;
    # access-control: 0.0.0.0/0 refuse&lt;br /&gt;
    # access-control: 127.0.0.0/8 allow&lt;br /&gt;
    # access-control: ::0/0 refuse&lt;br /&gt;
    # access-control: ::1 allow&lt;br /&gt;
    # access-control: ::ffff:127.0.0.1 allow&lt;br /&gt;
    access-control: 192.168.1.0/24 allow&lt;br /&gt;
    access-control: 192.168.2.0/24 allow&lt;br /&gt;
    access-control: 192.168.3.0/24 allow&lt;br /&gt;
&lt;br /&gt;
    # the log file, &amp;quot;&amp;quot; means log to stderr.&lt;br /&gt;
    # Use of this option sets use-syslog to &amp;quot;no&amp;quot;.&lt;br /&gt;
    logfile: &amp;quot;/var/log/unbound/unbound.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # Log to syslog(3) if yes. The log facility LOG_DAEMON is used to&lt;br /&gt;
    # log to. If yes, it overrides the logfile.&lt;br /&gt;
    use-syslog: no&lt;br /&gt;
&lt;br /&gt;
    # print one line with time, IP, name, type, class for every query.&lt;br /&gt;
    # log-queries: no&lt;br /&gt;
&lt;br /&gt;
    # print one line per reply, with time, IP, name, type, class, rcode,&lt;br /&gt;
    # timetoresolve, fromcache and responsesize.&lt;br /&gt;
    # log-replies: no&lt;br /&gt;
&lt;br /&gt;
    # enable to not answer id.server and hostname.bind queries.&lt;br /&gt;
    hide-identity: yes&lt;br /&gt;
&lt;br /&gt;
    # enable to not answer version.server and version.bind queries.&lt;br /&gt;
    # hide-version: yes&lt;br /&gt;
&lt;br /&gt;
    # enable to not answer trustanchor.unbound queries.&lt;br /&gt;
    hide-trustanchor: yes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # Harden against very small EDNS buffer sizes.&lt;br /&gt;
    harden-short-bufsize: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden against unseemly large queries.&lt;br /&gt;
    harden-large-queries: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden against out of zone rrsets, to avoid spoofing attempts.&lt;br /&gt;
    harden-glue: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden against receiving dnssec-stripped data. If you turn it&lt;br /&gt;
    # off, failing to validate dnskey data for a trustanchor will&lt;br /&gt;
    # trigger insecure mode for that zone (like without a trustanchor).&lt;br /&gt;
    # Default on, which insists on dnssec data for trust-anchored zones.&lt;br /&gt;
    harden-dnssec-stripped: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden against queries that fall under dnssec-signed nxdomain names.&lt;br /&gt;
    harden-below-nxdomain: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden the referral path by performing additional queries for&lt;br /&gt;
    # infrastructure data.  Validates the replies (if possible).&lt;br /&gt;
    # Default off, because the lookups burden the server.  Experimental&lt;br /&gt;
    # implementation of draft-wijngaards-dnsext-resolver-side-mitigation.&lt;br /&gt;
    # harden-referral-path: no&lt;br /&gt;
&lt;br /&gt;
    # Harden against algorithm downgrade when multiple algorithms are&lt;br /&gt;
    # advertised in the DS record.  If no, allows the weakest algorithm&lt;br /&gt;
    # to validate the zone.&lt;br /&gt;
    harden-algo-downgrade: yes&lt;br /&gt;
&lt;br /&gt;
    # Use 0x20-encoded random bits in the query to foil spoof attempts.&lt;br /&gt;
    # This feature is an experimental implementation of draft dns-0x20.&lt;br /&gt;
    use-caps-for-id: yes&lt;br /&gt;
&lt;br /&gt;
    # Allow the domain (and its subdomains) to contain private addresses.&lt;br /&gt;
    # local-data statements are allowed to contain private addresses too.&lt;br /&gt;
    private-domain: &amp;quot;&amp;lt;HOSTNAME&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # if yes, the above default do-not-query-address entries are present.&lt;br /&gt;
    # if no, localhost can be queried (for testing and debugging).&lt;br /&gt;
    do-not-query-localhost: no&lt;br /&gt;
&lt;br /&gt;
    # File with trusted keys, kept uptodate using RFC5011 probes,&lt;br /&gt;
    # initial file like trust-anchor-file, then it stores metadata.&lt;br /&gt;
    # Use several entries, one per domain name, to track multiple zones.&lt;br /&gt;
    #&lt;br /&gt;
    # If you want to perform DNSSEC validation, run unbound-anchor before&lt;br /&gt;
    # you start unbound (i.e. in the system boot scripts).  And enable:&lt;br /&gt;
    # Please note usage of unbound-anchor root anchor is at your own risk&lt;br /&gt;
    # and under the terms of our LICENSE (see that file in the source).&lt;br /&gt;
    # auto-trust-anchor-file: &amp;quot;@UNBOUND_ROOTKEY_FILE@&amp;quot;&lt;br /&gt;
    auto-trust-anchor-file: &amp;quot;/etc/unbound/root.key&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # If unbound is running service for the local host then it is useful&lt;br /&gt;
    # to perform lan-wide lookups to the upstream, and unblock the&lt;br /&gt;
    # long list of local-zones above.  If this unbound is a dns server&lt;br /&gt;
    # for a network of computers, disabled is better and stops information&lt;br /&gt;
    # leakage of local lan information.&lt;br /&gt;
    unblock-lan-zones: no&lt;br /&gt;
&lt;br /&gt;
    # If you configure local-data without specifying local-zone, by&lt;br /&gt;
    # default a transparent local-zone is created for the data.&lt;br /&gt;
    #&lt;br /&gt;
    # You can add locally served data with&lt;br /&gt;
    # local-zone: &amp;quot;local.&amp;quot; static&lt;br /&gt;
    # local-data: &amp;quot;mycomputer.local. IN A 192.0.2.51&amp;quot;&lt;br /&gt;
    # local-data: &#039;mytext.local TXT &amp;quot;content of text record&amp;quot;&#039;&lt;br /&gt;
&lt;br /&gt;
    # request upstream over TLS (with plain DNS inside the TLS stream).&lt;br /&gt;
    # Default is no.  Can be turned on and off with unbound-control.&lt;br /&gt;
    # tls-upstream: no&lt;br /&gt;
&lt;br /&gt;
    # Forward zones&lt;br /&gt;
    # Create entries like below, to make all queries for &#039;example.com&#039; and&lt;br /&gt;
    # &#039;example.org&#039; go to the given list of servers. These servers have to handle&lt;br /&gt;
    # recursion to other nameservers. List zero or more nameservers by hostname&lt;br /&gt;
    # or by ipaddress. Use an entry with name &amp;quot;.&amp;quot; to forward all queries.&lt;br /&gt;
    # If you enable forward-first, it attempts without the forward if it fails.&lt;br /&gt;
    # forward-zone:&lt;br /&gt;
    #    name: &amp;quot;example.com&amp;quot;&lt;br /&gt;
    #    forward-addr: 192.0.2.68&lt;br /&gt;
    #    forward-addr: 192.0.2.73@5355  # forward to port 5355.&lt;br /&gt;
    #    forward-first: no&lt;br /&gt;
    #    forward-tls-upstream: no&lt;br /&gt;
    #    forward-no-cache: no&lt;br /&gt;
    # forward-zone:&lt;br /&gt;
    #    name: &amp;quot;example.org&amp;quot;&lt;br /&gt;
    #    forward-host: fwd.example.com&lt;br /&gt;
&lt;br /&gt;
forward-zone:&lt;br /&gt;
    name: &amp;quot;.&amp;quot;&lt;br /&gt;
    forward-addr: 172.16.32.1@53&lt;br /&gt;
    forward-addr: ::1@53000&lt;br /&gt;
    forward-addr: 127.0.0.1@53000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Additional DNS level filtering ==&lt;br /&gt;
&lt;br /&gt;
This script takes in a list of domains and produces a filter file. We are directing all lookups to &amp;quot;0.0.0.1&amp;quot; which is an invalid IP and should fail immediately, unlike localhost.&lt;br /&gt;
&lt;br /&gt;
{{Note| If you&#039;re filtering telemetry from Windows based PCs you should either use a [https://docs.microsoft.com/en-us/windows/privacy/manage-connections-from-windows-operating-system-components-to-microsoft-services group policy] or [https://www.oo-software.com/en/shutup10 ShutUp10]}}&lt;br /&gt;
&lt;br /&gt;
=== /etc/unbound/unbound.conf ===&lt;br /&gt;
In your main unbound configuration add&lt;br /&gt;
&amp;lt;pre&amp;gt;include: /etc/unbound/filter.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Script to prepare/sort domains for Unbound  ===&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
##################################################&lt;br /&gt;
# Script taken from http://npr.me.uk/unbound.html&lt;br /&gt;
# Note you need GNU sed&lt;br /&gt;
##################################################&lt;br /&gt;
&lt;br /&gt;
# Remove &amp;quot;#&amp;quot; comments&lt;br /&gt;
# Remove space and tab&lt;br /&gt;
# Remove blank lines&lt;br /&gt;
# Remove localhost and broadcasthost lines&lt;br /&gt;
# Keep just the hosts&lt;br /&gt;
# Remove leading and trailing space and tab (again)&lt;br /&gt;
# Make everything lower case&lt;br /&gt;
&lt;br /&gt;
sed -e &amp;quot;s/#.*//&amp;quot; \&lt;br /&gt;
    -e &amp;quot;s/[ \x09]*$//&amp;quot;\&lt;br /&gt;
    -e &amp;quot;/^$/ d&amp;quot; \&lt;br /&gt;
    -e &amp;quot;/^.*local.*/ d&amp;quot; \&lt;br /&gt;
    -e &amp;quot;/^.*broadcasthost.*/ d&amp;quot; \&lt;br /&gt;
    -e &amp;quot;s/\(^.*\) \([a-zA-Z0-9\.\-]*\)/\2/&amp;quot; \&lt;br /&gt;
    -e &amp;quot;s/^[ \x09]*//;s/[ \x09]*$//&amp;quot; $1 \&lt;br /&gt;
    -e &amp;quot;s/\(.*\)/\L\1/&amp;quot; hosts.txt &amp;gt; temp1.txt&lt;br /&gt;
&lt;br /&gt;
# Remove any duplicate hosts&lt;br /&gt;
&lt;br /&gt;
sort temp1.txt | uniq &amp;gt;temp2.txt&lt;br /&gt;
&lt;br /&gt;
# Remove any hosts starting with &amp;quot;.&amp;quot;&lt;br /&gt;
# Create the two required lines for each host.&lt;br /&gt;
&lt;br /&gt;
sed -e &amp;quot;/^\..*/ d&amp;quot; \&lt;br /&gt;
    -e &amp;quot;s/\(^.*\)/local-zone: \x22\1\x22 redirect\nlocal-data: \x22\1 A 0.0.0.1\x22/&amp;quot; \&lt;br /&gt;
       temp2.txt &amp;gt; filter.conf&lt;br /&gt;
&lt;br /&gt;
# Clean up&lt;br /&gt;
rm temp1.txt&lt;br /&gt;
rm temp2.txt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/unbound/filter.conf ==&lt;br /&gt;
&amp;lt;pre&amp;gt;local-zone: &amp;quot;a-0001.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0001.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0001.dc-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0001.dc-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0002.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0002.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0003.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0003.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0004.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0004.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0005.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0005.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0006.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0006.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0007.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0007.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0008.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0008.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0009.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0009.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0010.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0010.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0011.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0011.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0012.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0012.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a.ads1.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a.ads1.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a.ads2.msads.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a.ads2.msads.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a.ads2.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a.ads2.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ac3.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ac3.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;activity.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;activity.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;adnexus.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;adnexus.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;adnxs.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;adnxs.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ads1.msads.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ads1.msads.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ads1.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ads1.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ads.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ads.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;aidps.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;aidps.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;aka-cdn-ns.adtech.de&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;aka-cdn-ns.adtech.de A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a.rad.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a.rad.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array101-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array101-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array102-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array102-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array103-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array103-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array104-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array104-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array201-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array201-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array202-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array202-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array203-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array203-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array204-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array204-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array401-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array401-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array402-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array402-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array403-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array403-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array404-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array404-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array405-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array405-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array406-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array406-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array407-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array407-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array408-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array408-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ars.smartscreen.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ars.smartscreen.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;az361816.vo.msecnd.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;az361816.vo.msecnd.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;az512334.vo.msecnd.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;az512334.vo.msecnd.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;b.ads1.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;b.ads1.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;b.ads2.msads.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;b.ads2.msads.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bingads.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bingads.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bl3301-a.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bl3301-a.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bl3301-c.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bl3301-c.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bl3301-g.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bl3301-g.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;blob.weather.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;blob.weather.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn1304-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn1304-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn1306-a.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn1306-a.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn1306-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn1306-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn1306-g.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn1306-g.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn2b-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn2b-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn2b-cor002.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn2b-cor002.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn2b-cor003.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn2b-cor003.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn2b-cor004.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn2b-cor004.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn2wns1.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn2wns1.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn3p-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn3p-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn3sch020022328.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn3sch020022328.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;b.rad.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;b.rad.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bs.serving-sys.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bs.serving-sys.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;by3301-a.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;by3301-a.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;by3301-c.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;by3301-c.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;by3301-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;by3301-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;c-0001.dc-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;c-0001.dc-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cache.datamart.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cache.datamart.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;candycrushsoda.king.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;candycrushsoda.king.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;c.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;c.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ca.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ca.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cdn.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cdn.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cdn.content.prod.cms.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cdn.content.prod.cms.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cdn.onenote.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cdn.onenote.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds1204.lon.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds1204.lon.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds1293.lon.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds1293.lon.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds20417.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds20417.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds20431.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds20431.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds20450.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds20450.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds20457.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds20457.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds20475.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds20475.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds21244.lon.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds21244.lon.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds26.ams9.msecn.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds26.ams9.msecn.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds425.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds425.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds459.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds459.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds494.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds494.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds965.lon.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds965.lon.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch1-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch1-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch1-cor002.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch1-cor002.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch3301-c.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch3301-c.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch3301-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch3301-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch3301-g.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch3301-g.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch3302-c.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch3302-c.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch3302-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch3302-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;choice.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;choice.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;choice.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;choice.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;clientconfig.passport.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;clientconfig.passport.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;client-s.gateway.messenger.live.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;client-s.gateway.messenger.live.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;client.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;client.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;c.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;c.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;compatexchange1.trafficmanager.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;compatexchange1.trafficmanager.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;compatexchange.cloudapp.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;compatexchange.cloudapp.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;continuum.dds.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;continuum.dds.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;corpext.msitadfs.glbdns2.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;corpext.msitadfs.glbdns2.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;corp.sts.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;corp.sts.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cp101-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cp101-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cp201-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cp201-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cp401-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cp401-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cs1.wpc.v0cdn.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cs1.wpc.v0cdn.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db3aqu.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db3aqu.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db3wns2011111.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db3wns2011111.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100122.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100122.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100127.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100127.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100831.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100831.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100835.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100835.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100917.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100917.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100925.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100925.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100928.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100928.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100938.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100938.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101001.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101001.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101022.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101022.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101024.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101024.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101031.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101031.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101034.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101034.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101042.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101042.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101044.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101044.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101122.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101122.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101123.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101123.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101125.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101125.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101128.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101128.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101129.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101129.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101133.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101133.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101145.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101145.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101209.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101209.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101221.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101221.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101228.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101228.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101231.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101231.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101237.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101237.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101317.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101317.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101324.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101324.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101329.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101329.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101333.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101333.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101334.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101334.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101338.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101338.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101419.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101419.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101424.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101424.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101426.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101426.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101427.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101427.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101430.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101430.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101445.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101445.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101511.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101511.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101519.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101519.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101529.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101529.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101535.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101535.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101541.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101541.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101543.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101543.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101608.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101608.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101618.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101618.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101629.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101629.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101631.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101631.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101633.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101633.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101640.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101640.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101711.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101711.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101722.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101722.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101739.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101739.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101745.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101745.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101813.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101813.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101820.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101820.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101826.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101826.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101835.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101835.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101837.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101837.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101844.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101844.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101907.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101907.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101914.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101914.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101929.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101929.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101939.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101939.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101941.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101941.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102015.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102015.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102017.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102017.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102019.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102019.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102023.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102023.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102025.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102025.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102032.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102032.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102033.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102033.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110108.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110108.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110109.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110109.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110114.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110114.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110135.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110135.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110142.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110142.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110204.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110204.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110206.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110206.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110214.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110214.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110225.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110225.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110232.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110232.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110245.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110245.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110315.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110315.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110323.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110323.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110325.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110325.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110328.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110328.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110331.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110331.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110341.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110341.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110343.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110343.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110345.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110345.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110403.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110403.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110419.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110419.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110438.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110438.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110442.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110442.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110501.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110501.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110527.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110527.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110533.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110533.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110618.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110618.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110622.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110622.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110624.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110624.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110626.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110626.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110634.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110634.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110705.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110705.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110724.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110724.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110740.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110740.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110810.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110810.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110816.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110816.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110821.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110821.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110822.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110822.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110825.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110825.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110828.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110828.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110835.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110835.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110919.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110919.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110921.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110921.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110923.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110923.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110929.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110929.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103081814.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103081814.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082011.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082011.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082111.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082111.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082308.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082308.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082406.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082406.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082409.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082409.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082609.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082609.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082611.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082611.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082709.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082709.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082712.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082712.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082806.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082806.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090115.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090115.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090415.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090415.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090513.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090513.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090515.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090515.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090608.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090608.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090806.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090806.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090814.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090814.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090906.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090906.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091011.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091011.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091012.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091012.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091106.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091106.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091108.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091108.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091212.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091212.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091311.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091311.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091414.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091414.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091511.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091511.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091617.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091617.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091715.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091715.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091817.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091817.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091908.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091908.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091911.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091911.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092010.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092010.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092108.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092108.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092109.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092109.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092209.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092209.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092210.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092210.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092509.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092509.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100117.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100117.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100121.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100121.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100221.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100221.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100313.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100313.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100314.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100314.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100510.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100510.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100511.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100511.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100611.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100611.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100712.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100712.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101105.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101105.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101208.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101208.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101212.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101212.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101314.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101314.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101411.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101411.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101413.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101413.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101513.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101513.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101610.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101610.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101611.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101611.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101705.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101705.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101711.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101711.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101909.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101909.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101914.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101914.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102009.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102009.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102112.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102112.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102203.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102203.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102209.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102209.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102310.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102310.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102404.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102404.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102609.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102609.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102610.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102610.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102805.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102805.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5wns1d.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5wns1d.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090104.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090104.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090112.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090112.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090116.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090116.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090122.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090122.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090203.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090203.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090206.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090206.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090208.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090208.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090209.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090209.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090211.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090211.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090305.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090305.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090306.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090306.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090308.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090308.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090311.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090311.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090313.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090313.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090410.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090410.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090412.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090412.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090504.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090504.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090510.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090510.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090512.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090512.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090513.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090513.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090514.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090514.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090519.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090519.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090613.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090613.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090619.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090619.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090810.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090810.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090811.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090811.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090902.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090902.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090905.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090905.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090907.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090907.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090908.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090908.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090910.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090910.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090911.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090911.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091003.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091003.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091007.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091007.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091008.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091008.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091009.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091009.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091011.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091011.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091103.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091103.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091105.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091105.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091204.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091204.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091209.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091209.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091305.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091305.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091307.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091307.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091308.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091308.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091309.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091309.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091314.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091314.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091412.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091412.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091503.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091503.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091507.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091507.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091602.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091602.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091603.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091603.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091606.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091606.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091607.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091607.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;deploy.static.akamaitechnologies.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;deploy.static.akamaitechnologies.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;device.auth.xboxlive.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;device.auth.xboxlive.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;dev.virtualearth.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;dev.virtualearth.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;df.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;df.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;diagnostics.support.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;diagnostics.support.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;disc101-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;disc101-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;disc201-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;disc201-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;disc401-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;disc401-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;dmd.metaservices.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;dmd.metaservices.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;dns.msftncsi.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;dns.msftncsi.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ec.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ec.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ecn.dev.virtualearth.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ecn.dev.virtualearth.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;eu.vortex.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;eu.vortex.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;feedback.microsoft-hohm.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;feedback.microsoft-hohm.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;feedback.search.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;feedback.search.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;feedback.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;feedback.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;flex.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;flex.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;fs.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;fs.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;geo-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;geo-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;geover-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;geover-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;g.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;g.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;h1.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;h1.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;h2.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;h2.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i1.services.social.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i1.services.social.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i1.services.social.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i1.services.social.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-bl6p-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-bl6p-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-by3p-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-by3p-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-by3p-cor002.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-by3p-cor002.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-ch1-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-ch1-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-ch1-cor002.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-ch1-cor002.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;img-s-msn-com.akamaized.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;img-s-msn-com.akamaized.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;inference.location.live.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;inference.location.live.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;insiderppe.cloudapp.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;insiderppe.cloudapp.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-sn2-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-sn2-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-sn2-cor002.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-sn2-cor002.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;kv101-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;kv101-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;kv201-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;kv201-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;kv401-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;kv401-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;lb1.www.ms.akadns.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;lb1.www.ms.akadns.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;licensing.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;licensing.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;live.rads.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;live.rads.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ls2web.redmond.corp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ls2web.redmond.corp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;m.adnxs.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;m.adnxs.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;mediaredirect.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;mediaredirect.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;mobile.pipe.aria.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;mobile.pipe.aria.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;msftncsi.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;msftncsi.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;msntest.serving-sys.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;msntest.serving-sys.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;oca.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;oca.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;oca.telemetry.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;oca.telemetry.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;officeclient.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;officeclient.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;oneclient.sfx.ms&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;oneclient.sfx.ms A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;pre.footprintpredict.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;pre.footprintpredict.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;preview.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;preview.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;pti.store.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;pti.store.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;query.prod.cms.rt.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;query.prod.cms.rt.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;rad.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;rad.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;redir.metaservices.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;redir.metaservices.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;register.cdpcs.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;register.cdpcs.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;reports.wes.df.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;reports.wes.df.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;s0.2mdn.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;s0.2mdn.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;schemas.microsoft.akadns.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;schemas.microsoft.akadns.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;search.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;search.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;secure.adnxs.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;secure.adnxs.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;secure.flashtalking.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;secure.flashtalking.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;services.wes.df.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;services.wes.df.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings.data.glbdns2.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings.data.glbdns2.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings-sandbox.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings-sandbox.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings-ssl.xboxlive.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings-ssl.xboxlive.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings-win.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings-win.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings-win-ppe.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings-win-ppe.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sn3301-c.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sn3301-c.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sn3301-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sn3301-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sn3301-g.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sn3301-g.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;so.2mdn.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;so.2mdn.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;spynet2.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;spynet2.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;spynetalt.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;spynetalt.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;spyneteurope.microsoft.akadns.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;spyneteurope.microsoft.akadns.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sqm.df.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sqm.df.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sqm.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sqm.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sqm.telemetry.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sqm.telemetry.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;static.2mdn.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;static.2mdn.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;storecatalogrevocation.storequality.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;storecatalogrevocation.storequality.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;storeedgefd.dsx.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;storeedgefd.dsx.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;store-images.s-microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;store-images.s-microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;support.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;support.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;survey.watson.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;survey.watson.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;t0.ssl.ak.dynamic.tiles.virtualearth.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;t0.ssl.ak.dynamic.tiles.virtualearth.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;t0.ssl.ak.tiles.virtualearth.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;t0.ssl.ak.tiles.virtualearth.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;telecommand.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;telecommand.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;telecommand.telemetry.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;telecommand.telemetry.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;telemetry.appex.bing.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;telemetry.appex.bing.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;telemetry.urs.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;telemetry.urs.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;test.activity.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;test.activity.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;tile-service.weather.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;tile-service.weather.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;time.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;time.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;tk2.plt.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;tk2.plt.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;tsfe.trafficshaping.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;tsfe.trafficshaping.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;urs.smartscreen.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;urs.smartscreen.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;v10.vortex-win.data.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;v10.vortex-win.data.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;v10.vortex-win.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;v10.vortex-win.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;version.hybrid.api.here.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;version.hybrid.api.here.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;view.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;view.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-bn2.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-bn2.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-cy2.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-cy2.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex.data.glbdns2.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex.data.glbdns2.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex.data.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex.data.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-db5.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-db5.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-hk2.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-hk2.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-sandbox.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-sandbox.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-win.data.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-win.data.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-win.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-win.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;watson.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;watson.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;watson.ppe.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;watson.ppe.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;watson.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;watson.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;watson.telemetry.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;watson.telemetry.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;wdcpalt.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;wdcpalt.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;wdcp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;wdcp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;web.vortex.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;web.vortex.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;wes.df.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;wes.df.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;win10.ipv6.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;win10.ipv6.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;win10-trt.msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;win10-trt.msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;win1710.ipv6.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;win1710.ipv6.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;wscont.apps.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;wscont.apps.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;www.msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;www.msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;www.msftconnecttest.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;www.msftconnecttest.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;www.msftncsi.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;www.msftncsi.com A 0.0.0.1&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DNSCrypt ==&lt;br /&gt;
You can test that you&#039;re not getting DNS leaks by using [https://www.dnsleaktest.com dnsleak.com] or this one from [https://www.grc.com/dns/dns.htm GRC]. Providers like CloudFlare and Google (1.1.1.1, 8.8.8.8) use [https://en.wikipedia.org/wiki/Anycast anycast] which should be pointing to a server located to where your VPN exits.&lt;br /&gt;
&lt;br /&gt;
=== /etc/dnscrypt-proxy/dnscrypt-proxy.toml ===&lt;br /&gt;
Using the sample dnscrypt config is fine, you will need to make these changes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;listen_addresses = [&#039;127.0.0.1:53000&#039;, &#039;[::1]:53000&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Add policy route for dnscrypt over VPN ==&lt;br /&gt;
&lt;br /&gt;
Add a [https://en.wikipedia.org/wiki/Policy-based_routing policy based route] based on the uid of the dnscrypt user. On Alpine Linux dnscrypt-proxy runs as a specific user so check /etc/passwd&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;dnscrypt:x:103:104:dnscrypt:/var/empty:/sbin/nologin&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example the dnscrypt user has the uid 103.&lt;br /&gt;
&lt;br /&gt;
{{Warning|Make sure you check the uid of your dnscrypt user and don&#039;t just copy the one here!}}&lt;br /&gt;
&lt;br /&gt;
Add this to [https://wiki.alpinelinux.org/wiki/Linux_Router_with_VPN_on_a_Raspberry_Pi#.2Fetc.2Fnetwork.2Ffwmark_rules fwmark_rules] eg:&lt;br /&gt;
&lt;br /&gt;
=== /etc/network/fwmark_rules ===&lt;br /&gt;
&amp;lt;pre&amp;gt;# Route DNSCrypt user through the VPN table&lt;br /&gt;
/sbin/ip rule add uidrange 103-103 table VPN prio 200&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{cmd|rc-update add unbound default}}&lt;br /&gt;
{{cmd|rc-update add dnscrypt-proxy default}}&lt;br /&gt;
&lt;br /&gt;
= Random number generation =&lt;br /&gt;
There are two ways to assist with random number generation [[Entropy and randomness]]. This can be particularly useful if you&#039;re generating your own Diffie-Hellman nonce file, used in the [[FreeRadius EAP-TLS configuration]] section. Or for that matter any process which requires lots of random number generation such as generating certificates or public private keys.&lt;br /&gt;
&lt;br /&gt;
== Haveged ==&lt;br /&gt;
[http://www.issihosts.com/haveged Haveged] is a great way to improve random number generation speed. It uses the unpredictable random number generator based upon an adaptation of the [http://www.irisa.fr/caps/projects/hipsor/ HAVEGE] algorithm.&lt;br /&gt;
&lt;br /&gt;
Install haveged:&lt;br /&gt;
{{cmd|apk add haveged}}&lt;br /&gt;
&lt;br /&gt;
Start haveged service:&lt;br /&gt;
{{cmd|service haveged start}}&lt;br /&gt;
&lt;br /&gt;
Add service to boot&lt;br /&gt;
{{cmd|rc-update add haveged default}}&lt;br /&gt;
&lt;br /&gt;
Start rngd service:&lt;br /&gt;
{{cmd|service haveged start}}&lt;br /&gt;
&lt;br /&gt;
Add service to boot:&lt;br /&gt;
{{cmd|rc-update add haveged default}}&lt;br /&gt;
&lt;br /&gt;
== rng-tools with bcm2708-rng ==&lt;br /&gt;
&lt;br /&gt;
=== Pre Alpine Linux 3.8 (which includes rngd 5) ===&lt;br /&gt;
All Raspberry Pis come with the bcm2708-rng random number generator on board. If you are doing this project on a Raspberry Pi then you may choose to use this also.&lt;br /&gt;
&lt;br /&gt;
Add the kernel module to /etc/modules:&lt;br /&gt;
{{cmd|echo &amp;quot;bcm2708-rng&amp;quot; &amp;gt; /etc/modules}}&lt;br /&gt;
&lt;br /&gt;
Insert module:&lt;br /&gt;
{{cmd|modprobe bcm2708-rng}}&lt;br /&gt;
&lt;br /&gt;
Install rng-tools:&lt;br /&gt;
{{cmd|apk add rng-tools}}&lt;br /&gt;
&lt;br /&gt;
Set the random device (/dev/random) and rng device (/dev/hwrng) in /etc/conf.d/rngd&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;RNGD_OPTS=&amp;quot;--no-drng=1 --no-tpm=1 -o /dev/random -r /dev/hwrng&amp;quot;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== Post Alpine Linux 3.8 (which includes rngd 6) ===&lt;br /&gt;
&lt;br /&gt;
With AlpineLinux 3.8 you don&#039;t have to insert the module as it is already built in the kernel.&lt;br /&gt;
&lt;br /&gt;
Additionally the syntax has changed for rngd so for /etc/conf.d/rngd you&#039;ll need&lt;br /&gt;
&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;RNGD_OPTS=&amp;quot;-x1 -o /dev/random -r /dev/hwrng&amp;quot;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Start rngd service:&lt;br /&gt;
{{cmd|service rngd start}}&lt;br /&gt;
&lt;br /&gt;
Add service to boot:&lt;br /&gt;
{{cmd|rc-update add rngd default}}&lt;br /&gt;
&lt;br /&gt;
You can test it with:&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;cat /dev/hwrng | rngtest -c 1000&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
You should see something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rngtest 5&lt;br /&gt;
Copyright (c) 2004 by Henrique de Moraes Holschuh&lt;br /&gt;
This is free software; see the source for copying conditions.  There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&lt;br /&gt;
&lt;br /&gt;
rngtest: starting FIPS tests...&lt;br /&gt;
rngtest: bits received from input: 20000032&lt;br /&gt;
rngtest: FIPS 140-2 successes: 1000&lt;br /&gt;
rngtest: FIPS 140-2 failures: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Monobit: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Poker: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Runs: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Long run: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Continuous run: 0&lt;br /&gt;
rngtest: input channel speed: (min=117.709; avg=808.831; max=3255208.333)Kibits/s&lt;br /&gt;
rngtest: FIPS tests speed: (min=17.199; avg=22.207; max=22.653)Mibits/s&lt;br /&gt;
rngtest: Program run time: 25178079 microseconds&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s possible you might have a some failures. That&#039;s okay, two runs I did previously had a failure each.&lt;br /&gt;
&lt;br /&gt;
= WiFi 802.1x EAP and FreeRadius =&lt;br /&gt;
A more secure way than using pre-shared keys (WPA2) is to use [https://en.wikipedia.org/wiki/Extensible_Authentication_Protocol#EAP-TLS EAP-TLS] and use separate certificates for each device. See [[FreeRadius EAP-TLS configuration]]&lt;br /&gt;
&lt;br /&gt;
= VPN Tunnel on specific subnet =&lt;br /&gt;
As mentioned earlier in this article it might be useful to have a VPN subnet and a non-VPN subnet. Typically gaming consoles or computers might want low-latency connections. For this exercise we use fwmark.&lt;br /&gt;
&lt;br /&gt;
We expand the network to look like this:&lt;br /&gt;
&lt;br /&gt;
[[File:Network diagram ipv4 tunnel.svg|900px|center|Network Diagram with IPv4 tunnel]]&lt;br /&gt;
&lt;br /&gt;
Install the necessary packages:&lt;br /&gt;
{{cmd|apk add openvpn iproute2 iputils}}&lt;br /&gt;
&lt;br /&gt;
== /etc/modules ==&lt;br /&gt;
You&#039;ll want to add the tun module&lt;br /&gt;
&amp;lt;pre&amp;gt;tun&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/iproute2/rt_tables ==&lt;br /&gt;
Add the two routing tables to the bottom of rt_tables. It should look something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;#&lt;br /&gt;
# reserved values&lt;br /&gt;
#&lt;br /&gt;
255	local&lt;br /&gt;
254	main&lt;br /&gt;
253	default&lt;br /&gt;
0	unspec&lt;br /&gt;
#&lt;br /&gt;
# local&lt;br /&gt;
#&lt;br /&gt;
#1	inr.ruhep&lt;br /&gt;
1 ISP&lt;br /&gt;
2 VPN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/interfaces ==&lt;br /&gt;
Next up add the virtual interface (really just a IP address to eth0) eth0:2, just under eth0 will do.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Route to VPN subnet&lt;br /&gt;
auto eth0:2&lt;br /&gt;
iface eth0:2 inet static&lt;br /&gt;
  address 192.168.2.1&lt;br /&gt;
  netmask 255.255.255.0&lt;br /&gt;
  broadcast 192.168.2.255&lt;br /&gt;
  post-up /etc/network/fwmark_rules&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/sysctl.d/local.conf ==&lt;br /&gt;
If you want to use fwmark rules you need to change this setting. It causes the router to still do source validation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Needed to use fwmark&lt;br /&gt;
net.ipv4.conf.all.rp_filter = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fwmark won&#039;t work if you have this set to 1.&lt;br /&gt;
&lt;br /&gt;
== /etc/network/fwmark_rules ==&lt;br /&gt;
In this file we want to put the fwmark rules and set the correct priorities.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Normal packets to go direct out WAN&lt;br /&gt;
/sbin/ip rule add fwmark 1 table ISP prio 100&lt;br /&gt;
&lt;br /&gt;
# Put packets destined into VPN when VPN is up&lt;br /&gt;
/sbin/ip rule add fwmark 2 table VPN prio 200&lt;br /&gt;
&lt;br /&gt;
# Prevent packets from being routed out when VPN is down.&lt;br /&gt;
# This prevents packets from falling back to the main table&lt;br /&gt;
# that has a priority of 32766&lt;br /&gt;
/sbin/ip rule add prohibit fwmark 2 prio 300&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/ppp/ip-up ==&lt;br /&gt;
Next up we want to create the routes that should be run when PPP comes online. There are special hooks we can use in ip-up and ip-down to refer to the IP address, [https://ppp.samba.org/pppd.html#sect13 ppp man file - Scripts ] You can also read about them in your man file if you have ppp-doc installed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by pppd when there&#039;s a successful ppp connection.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Flush out any old rules that might be there&lt;br /&gt;
/sbin/ip route flush table ISP&lt;br /&gt;
&lt;br /&gt;
# Add route to table from subnets on LAN&lt;br /&gt;
/sbin/ip route add 192.168.1.0/24 dev eth0 table ISP&lt;br /&gt;
/sbin/ip route add 192.168.2.0/24 dev eth0 table ISP&lt;br /&gt;
&lt;br /&gt;
# Add route from IP given by ISP to the table&lt;br /&gt;
/sbin/ip rule add from ${IPREMOTE} table ISP prio 100&lt;br /&gt;
&lt;br /&gt;
# Add a default route&lt;br /&gt;
/sbin/ip route add table ISP default via ${IPREMOTE} dev ${IFNAME}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/ppp/ip-down ==&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by pppd after the connection has ended.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Delete the rules when we take the interface down&lt;br /&gt;
/sbin/ip rule del from ${IPREMOTE} table ISP prio 100&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/openvpn/route-up-fwmark.sh ==&lt;br /&gt;
OpenVPN needs similar routing scripts and it also has it&#039;s own special hooks that allow you to specify particular values. A full list is here [https://openvpn.net/index.php/open-source/documentation/manuals/65-openvpn-20x-manpage.html#lbAS OpenVPN man file - Environmental Variables]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by OpenVPN when there&#039;s a successful VPN connection.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Flush out any old rules that might be there&lt;br /&gt;
/sbin/ip route flush table VPN&lt;br /&gt;
&lt;br /&gt;
# Add route to table from 192.168.2.0/24 subnet on LAN&lt;br /&gt;
/sbin/ip route add 192.168.2.0/24 dev eth0 table VPN&lt;br /&gt;
&lt;br /&gt;
# Add route from VPN interface IP to the VPN table&lt;br /&gt;
/sbin/ip rule add from ${ifconfig_local} table VPN prio 200&lt;br /&gt;
&lt;br /&gt;
# Add a default route&lt;br /&gt;
/sbin/ip route add default via ${ifconfig_local} dev ${dev} table VPN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/openvpn/route-pre-down-fwmark.sh ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by OpenVPN after the connection has ended&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Delete the rules when we take the interface down&lt;br /&gt;
/sbin/ip rule del from ${ifconfig_local} table VPN prio 200&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What I did find was when starting and stopping the OpenVPN service if you used:&lt;br /&gt;
&lt;br /&gt;
{{cmd|service openvpn stop}}&lt;br /&gt;
&lt;br /&gt;
The rules in route-pre-down-fwmark.sh were not executed.&lt;br /&gt;
&lt;br /&gt;
However:&lt;br /&gt;
&lt;br /&gt;
{{cmd|/etc/init.d/openvpn stop}}&lt;br /&gt;
&lt;br /&gt;
seemed to work correctly.&lt;br /&gt;
&lt;br /&gt;
== Advanced IPtables rules that allow us to route into our two routing tables ==&lt;br /&gt;
This is an expansion of the previous set of rules. It sets up NAT masquerading for the 192.168.2.0 to go through the VPN using marked packets.&lt;br /&gt;
&lt;br /&gt;
I used these guides to write complete this: &lt;br /&gt;
&lt;br /&gt;
* [http://nerdboys.com/2006/05/05/conning-the-mark-multiwan-connections-using-iptables-mark-connmark-and-iproute2 Conning the Mark: Multiwan connections using IPTables, MARK, CONNMARK and iproute2 ]&lt;br /&gt;
* [http://nerdboys.com/2006/05/08/multiwan-connections-addendum Multiwan connections addendum]&lt;br /&gt;
* [http://inai.de/images/nf-packet-flow.png Netfilter packet flow]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#########################################################################&lt;br /&gt;
# Advanced routing rule set&lt;br /&gt;
# Uses 192.168.1.0 via ISP&lt;br /&gt;
#      192.168.2.0 via VPN&lt;br /&gt;
#&lt;br /&gt;
# Packets to/from 192.168.1.0/24 are marked with 0x1 and routed to ISP&lt;br /&gt;
# Packets to/from 192.168.2.0/24 are marked with 0x2 and routed to VPN&lt;br /&gt;
#&lt;br /&gt;
#########################################################################&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# NAT Table&lt;br /&gt;
# This is where translation of packets happens and &amp;quot;forwarding&amp;quot; of ports&lt;br /&gt;
# to specific hosts.&lt;br /&gt;
#&lt;br /&gt;
*nat&lt;br /&gt;
&lt;br /&gt;
# Set default policies for table&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Port forwarding for Bittorrent&lt;br /&gt;
-A PREROUTING -i tun0 -p tcp -m tcp --dport 6881:6889 -j DNAT --to-destination 192.168.2.20&lt;br /&gt;
-A PREROUTING -i tun0 -p udp -m udp --dport 6881:6889 -j DNAT --to-destination 192.168.2.20&lt;br /&gt;
&lt;br /&gt;
# Allows routing to our modem subnet so we can access the web interface&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
-A POSTROUTING -s 192.168.2.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the VPN tunnel&lt;br /&gt;
-A POSTROUTING -o tun0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the PPP tunnel&lt;br /&gt;
-A POSTROUTING -o ppp0 -j MASQUERADE&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Filter Table&lt;br /&gt;
# This is where we decide to ACCEPT, DROP or REJECT things&lt;br /&gt;
#&lt;br /&gt;
*filter&lt;br /&gt;
:INPUT DROP [0:0]&lt;br /&gt;
:FORWARD DROP [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for forwarding packets&lt;br /&gt;
:FWD_ETH0 - [0:0]&lt;br /&gt;
:FWD_ETH1 - [0:0]&lt;br /&gt;
:FWD_PPP0 - [0:0]&lt;br /&gt;
:FWD_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for input packets (for host itself)&lt;br /&gt;
:IN_ETH0 - [0:0]&lt;br /&gt;
:IN_ETH1 - [0:0]&lt;br /&gt;
:IN_PPP0 - [0:0]&lt;br /&gt;
:IN_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a log drop chain&lt;br /&gt;
:LOG_DROP - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a reject chain&lt;br /&gt;
:LOG_REJECT - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Pass input packet to corresponding rule chain&lt;br /&gt;
-A INPUT -i lo -j ACCEPT&lt;br /&gt;
-A INPUT -i eth0 -j IN_ETH0&lt;br /&gt;
-A INPUT -i eth1 -j IN_ETH1&lt;br /&gt;
-A INPUT -i ppp0 -j IN_PPP0&lt;br /&gt;
-A INPUT -i tun0 -j IN_TUN0&lt;br /&gt;
&lt;br /&gt;
# Track forwarded packets&lt;br /&gt;
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass forwarded packet to corresponding rule chain&lt;br /&gt;
-A FORWARD -i eth0 -j FWD_ETH0&lt;br /&gt;
-A FORWARD -i eth1 -j FWD_ETH1&lt;br /&gt;
-A FORWARD -i ppp0 -j FWD_PPP0&lt;br /&gt;
-A FORWARD -i tun0 -j FWD_TUN0&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to ISP&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to VPN&lt;br /&gt;
-A FWD_ETH0 -s 192.168.2.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow excepted server to be FORWARD to ppp0&lt;br /&gt;
#-A FWD_ETH0 -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -o ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward SSH packets from network to modem&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.1.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.2.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward HTTP packets from network to modem&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.1.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.2.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward Bittorrent Port to workstation&lt;br /&gt;
-A FWD_TUN0 -d 192.168.2.20/32 -p tcp -m tcp --dport 6881:6889 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_TUN0 -d 192.168.2.20/32 -p udp -m udp --dport 6881:6889 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# DNS to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# FreeRadius Client (eg a UniFi AP)&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Ubiquiti UAP Device Discovery Broadcast&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 10001 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# NTP to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept traffic to router on both subnets&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow excepted server to be INPUT to eth0 from LAN&lt;br /&gt;
#-A IN_ETH0 -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -o ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# HTTP To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked PPP0 connection&lt;br /&gt;
-A IN_PPP0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on PPP0&lt;br /&gt;
-A IN_PPP0 -j LOG --log-prefix &amp;quot;DROP:INPUT &amp;quot; --log-level 6&lt;br /&gt;
-A IN_PPP0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked TUN0 connection&lt;br /&gt;
-A IN_TUN0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on TUN0&lt;br /&gt;
-A IN_TUN0 -j LOG --log-prefix &amp;quot;DROP:INPUT &amp;quot; --log-level 6&lt;br /&gt;
-A IN_TUN0 -j LOG_DROP&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mangle Table&lt;br /&gt;
# This is the place where our markings happen, whether they be 0x1 or 0x2&lt;br /&gt;
#&lt;br /&gt;
*mangle&lt;br /&gt;
&lt;br /&gt;
# Set default policies for table&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:FORWARD ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Restore CONNMARK to the MARK (If one doesn&#039;t exist then no mark is set)&lt;br /&gt;
-A PREROUTING -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff&lt;br /&gt;
&lt;br /&gt;
# If packet MARK is 2, then it means there is already a connection mark and the&lt;br /&gt;
# original packet came in on VPN&lt;br /&gt;
-A PREROUTING -s 192.168.2.0/24 -m mark --mark 0x2 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Check exception (this is a server which when accessed on a 192.168.2.0/24 address will go out the ISP table) are 0x1&lt;br /&gt;
#-A PREROUTING -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -m mark --mark 0x1 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Mark packets coming from 192.168.2.0/24 are 0x2&lt;br /&gt;
-A PREROUTING -s 192.168.2.0/24 -j MARK --set-xmark 0x2/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# If packet MARK is 1, then it means there is already a connection mark and the&lt;br /&gt;
# original packet came in on ISP&lt;br /&gt;
-A PREROUTING -s 192.168.1.0/24 -m mark --mark 0x1 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Mark packets 192.168.1.0/24 are 0x1&lt;br /&gt;
-A PREROUTING -s 192.168.1.0/24 -j MARK --set-xmark 0x1/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Mark exception (this is a server which when accessed on a 192.168.2.0/24 address will go out the ISP table) as 0x1&lt;br /&gt;
#-A PREROUTING -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -j MARK --set-xmark 0x1/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Set mark to 0 - This is for the modem. Otherwise it will mark with 0x1 or 0x2&lt;br /&gt;
-A PREROUTING -d 192.168.0.1/32 -j MARK --set-xmark 0x0/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Save MARK to CONNMARK (remember iproute can&#039;t see CONNMARKs)&lt;br /&gt;
-A PREROUTING -j CONNMARK --save-mark --nfmask 0xffffffff --ctmask 0xffffffff&lt;br /&gt;
COMMIT&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may want to delete certain rules here that do not apply to you, eg the FreeRadius rules. That is covered later in this article.&lt;br /&gt;
&lt;br /&gt;
== OpenVPN Routing ==&lt;br /&gt;
Usually when you connect with OpenVPN the remote VPN server will push routes down to your system. We don&#039;t want this as we still want to be able to access the internet without the VPN. We have also created our own routes that we want to use earlier in this guide.&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need to add this to the bottom of your OpenVPN configuration file:&lt;br /&gt;
&amp;lt;pre&amp;gt;# Prevents default gateway from being set on the default routing table&lt;br /&gt;
route-noexec&lt;br /&gt;
&lt;br /&gt;
# Allows route-up script to be executed&lt;br /&gt;
script-security 2&lt;br /&gt;
&lt;br /&gt;
# Calls custom shell script after connection to add necessary routes&lt;br /&gt;
route-up /etc/openvpn/route-up-fwmark.sh&lt;br /&gt;
route-pre-down /etc/openvpn/route-pre-down-fwmark.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
My VPNs are arranged like this in /etc/openvpn:&lt;br /&gt;
&lt;br /&gt;
OpenVPN configuration file for that server:&lt;br /&gt;
&amp;lt;pre&amp;gt;countrycode.serverNumber.openvpn.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenVPN certs for that server:&lt;br /&gt;
&amp;lt;pre&amp;gt;countrycode.serverNumber.openvpn/countrycode.serverNumber.openvpn.crt&lt;br /&gt;
countrycode.serverNumber.openvpn/countrycode.serverNumber.openvpn.key&lt;br /&gt;
countrycode.serverNumber.openvpn/myKey.crt&lt;br /&gt;
countrycode.serverNumber.openvpn/myKey.key&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So I use this helpful script to automate the process of changing between servers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
vpn_server_filename=$1&lt;br /&gt;
&lt;br /&gt;
rm /etc/openvpn/openvpn.conf&lt;br /&gt;
ln -s $vpn_server_filename /etc/openvpn/openvpn.conf&lt;br /&gt;
chown -R openvpn:openvpn /etc/openvpn&lt;br /&gt;
chmod -R a=-rwx,u=+rX /etc/openvpn&lt;br /&gt;
chmod u=x /etc/openvpn/*.sh*&lt;br /&gt;
&lt;br /&gt;
if grep -Fxq &amp;quot;#CustomStuffHere&amp;quot; openvpn.conf&lt;br /&gt;
then&lt;br /&gt;
    echo &amp;quot;Not adding custom routes, this server has been used previously&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Adding custom route rules&amp;quot;&lt;br /&gt;
cat &amp;lt;&amp;lt;EOF &amp;gt;&amp;gt; /etc/openvpn/openvpn.conf&lt;br /&gt;
&lt;br /&gt;
#CustomStuffHere&lt;br /&gt;
# Prevents default gateway from being set on the default routing table&lt;br /&gt;
route-noexec&lt;br /&gt;
&lt;br /&gt;
# Allows route-up script to be executed&lt;br /&gt;
script-security 2&lt;br /&gt;
&lt;br /&gt;
# Calls custom shell script after connection to add necessary routes&lt;br /&gt;
route-up /etc/openvpn/route-up-fwmark.sh&lt;br /&gt;
route-pre-down /etc/openvpn/route-pre-down-fwmark.sh&lt;br /&gt;
&lt;br /&gt;
# Logging of OpenVPN to file&lt;br /&gt;
#log /etc/openvpn/openvpn.log&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
fi&lt;br /&gt;
echo &amp;quot;Remember to set BitTorrent port forward in VPN control panel&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That way I can simply change between servers by running:&lt;br /&gt;
{{cmd|changevpn.sh countrycode.serverNumber.openvpn}}&lt;br /&gt;
&lt;br /&gt;
and then restart openvpn. I am also reminded to put the port forward through on the VPN control panel so my BitTorrent client is connectable:&lt;br /&gt;
&lt;br /&gt;
{{cmd|service openvpn restart}}&lt;br /&gt;
&lt;br /&gt;
Finally add openvpn to the default run level&lt;br /&gt;
{{cmd|rc-update add openvpn default}}&lt;br /&gt;
&lt;br /&gt;
= Creating a LAN only Subnet =&lt;br /&gt;
In this section, we&#039;ll be creating a LAN only subnet. This subnet will be 192.168.3.0/24. The idea of this subnet is nodes in it cannot have their packets forwarded to the Internet, however they can be accessed via the other LAN subnets 192.168.1.0/24 and 192.168.2.0/24. This approach doesn&#039;t use VLANs although that would be recommended if you had a managed switch. The idea of this subnet is for things like WiFi access points, IP Phones which contact a local Asterisk server and of course printers.&lt;br /&gt;
&lt;br /&gt;
At the end of this section we will have something like:&lt;br /&gt;
&lt;br /&gt;
[[File:Network diagram ipv4 tunnel LANONLY ROUTE.svg|900px|center|Network Diagram LAN ONLY Route with IPv4]]&lt;br /&gt;
&lt;br /&gt;
== /etc/iproute2/rt_tables ==&lt;br /&gt;
First up we&#039;ll add a third routing table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;3 LAN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/interfaces ==&lt;br /&gt;
Add a an extra virtual interface (really just a IP address to eth0).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# LAN Only&lt;br /&gt;
auto eth0:3&lt;br /&gt;
iface eth0:3 inet static&lt;br /&gt;
  address 192.168.3.1&lt;br /&gt;
  netmask 255.255.255.0&lt;br /&gt;
  broadcast 192.168.3.255&lt;br /&gt;
  post-up /etc/network/route_LAN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/route_LAN ==&lt;br /&gt;
This file will have our route added to it&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Add routes from ISP to LAN&lt;br /&gt;
/sbin/ip route add 192.168.1.0/24 dev eth0 table LAN&lt;br /&gt;
&lt;br /&gt;
# Add route from VPN to LAN&lt;br /&gt;
/sbin/ip route add 192.168.2.0/24 dev eth0 table LAN&lt;br /&gt;
&lt;br /&gt;
# Add route from LAN to it&#039;s own table&lt;br /&gt;
/sbin/ip route add 192.168.3.0/24 dev eth0 table LAN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/ppp/ip-up ==&lt;br /&gt;
Append a route from the LAN subnet to the ISP table&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Add route to LAN subnet&lt;br /&gt;
/sbin/ip route add 192.168.3.0/24 dev eth0 table ISP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/openvpn/route-up-fwmark.sh ==&lt;br /&gt;
Append a route from the LAN subnet to the VPN table&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Add route to LAN only subnet&lt;br /&gt;
/sbin/ip route add 192.168.3.0/24 dev eth0 table VPN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/ntpd.conf ==&lt;br /&gt;
Add a listen address for ntp (OpenNTPD).&lt;br /&gt;
&lt;br /&gt;
You should now have:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Addresses to listen on (ntpd does not listen by default)&lt;br /&gt;
listen on 192.168.1.1&lt;br /&gt;
listen on 192.168.2.1&lt;br /&gt;
listen on 192.168.3.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Devices needing the correct time will need to use this NTP server because they will not be able to get it from the Internet.&lt;br /&gt;
&lt;br /&gt;
== Blocking bogons ==&lt;br /&gt;
Our LAN now has 4 subnets in total that are possible:&lt;br /&gt;
&lt;br /&gt;
* 192.168.0.0/30 (connection between modem and router)&lt;br /&gt;
* 192.168.1.0/24 (ISP table, directly routed out WAN)&lt;br /&gt;
* 192.168.2.0/24 (VPN table, routed out VPN)&lt;br /&gt;
* 192.168.3.0/24 (Null routed subnet for LAN only hosts)&lt;br /&gt;
* 172.16.32.0/20 (VPN provider&#039;s network, so we can access things on the VPN&#039;s network).&lt;br /&gt;
&lt;br /&gt;
Everything else should be rejected. No packets should ever be forwarded on 192.168.5.2 or 10.0.0.5 for example.&lt;br /&gt;
&lt;br /&gt;
=== Installing ipset ===&lt;br /&gt;
Install ipset:&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add ipset}}&lt;br /&gt;
&lt;br /&gt;
Add it to start up:&lt;br /&gt;
{{cmd|rc-update add ipset default}}&lt;br /&gt;
&lt;br /&gt;
Now we need to load the lists of addresses into ipset [http://blog.ls20.com/securing-your-server-using-ipset-and-dynamic-blocklists Securing Your Server using IPset and Dynamic Blocklists] mentions a [https://gist.github.com/hwdsl2/6dce75072274abfd2781 script] which was particularly useful. This script could be run on a cron job if you wanted to regularly update it and for the full bogon list you should as they change when that address space has been allocated.&lt;br /&gt;
&lt;br /&gt;
For the purpose of this we will be using just the [https://files.pfsense.org/lists/bogon-bn-nonagg.txt bogon-bn-nonagg.txt] list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;0.0.0.0/8&lt;br /&gt;
10.0.0.0/8&lt;br /&gt;
100.64.0.0/10&lt;br /&gt;
127.0.0.0/8&lt;br /&gt;
169.254.0.0/16&lt;br /&gt;
172.16.0.0/12&lt;br /&gt;
192.0.0.0/24&lt;br /&gt;
192.0.2.0/24&lt;br /&gt;
192.168.0.0/16&lt;br /&gt;
198.18.0.0/15&lt;br /&gt;
198.51.100.0/24&lt;br /&gt;
203.0.113.0/24&lt;br /&gt;
224.0.0.0/4&lt;br /&gt;
240.0.0.0/4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is unlikely to change as it&#039;s the IPV4 [https://en.wikipedia.org/wiki/Reserved_IP_addresses Reserved IP addresses] space. The script: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#! /bin/bash&lt;br /&gt;
&lt;br /&gt;
# /usr/local/sbin/fullbogons-ipv4&lt;br /&gt;
# BoneKracker&lt;br /&gt;
# Rev. 11 October 2012&lt;br /&gt;
# Tested with ipset 6.13&lt;br /&gt;
&lt;br /&gt;
# Purpose: Periodically update an ipset used in a running firewall to block&lt;br /&gt;
# bogons. Bogons are addresses that nobody should be using on the public&lt;br /&gt;
# Internet because they are either private, not to be assigned, or have&lt;br /&gt;
# not yet been assigned.&lt;br /&gt;
#&lt;br /&gt;
# Notes: Call this from crontab. Feed updated every 4 hours.&lt;br /&gt;
&lt;br /&gt;
# target=&amp;quot;http://www.team-cymru.org/Services/Bogons/fullbogons-ipv4.txt&amp;quot;&lt;br /&gt;
# Use alternative URL from pfSense, due to 404 error with URL above&lt;br /&gt;
target=&amp;quot;https://files.pfsense.org/lists/bogon-bn-nonagg.txt&amp;quot;&lt;br /&gt;
ipset_params=&amp;quot;hash:net&amp;quot;&lt;br /&gt;
&lt;br /&gt;
filename=$(basename ${target})&lt;br /&gt;
firewall_ipset=${filename%.*}           # ipset will be filename minus ext&lt;br /&gt;
data_dir=&amp;quot;/var/tmp/${firewall_ipset}&amp;quot;   # data directory will be same&lt;br /&gt;
data_file=&amp;quot;${data_dir}/${filename}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# if data directory does not exist, create it&lt;br /&gt;
mkdir -pm 0750 ${data_dir}&lt;br /&gt;
&lt;br /&gt;
# function to get modification time of the file in log-friendly format&lt;br /&gt;
get_timestamp() {&lt;br /&gt;
    date -r $1 +%m/%d&#039; &#039;%R&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# file modification time on server is preserved during wget download&lt;br /&gt;
[ -w ${data_file} ] &amp;amp;&amp;amp; old_timestamp=$(get_timestamp ${data_file})&lt;br /&gt;
&lt;br /&gt;
# fetch file only if newer than the version we already have&lt;br /&gt;
wget -qNP ${data_dir} ${target}&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$?&amp;quot; -ne &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
    logger -p cron.err &amp;quot;IPSet: ${firewall_ipset} wget failed.&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
timestamp=$(get_timestamp ${data_file})&lt;br /&gt;
&lt;br /&gt;
# compare timestamps because wget returns success even if no newer file&lt;br /&gt;
if [ &amp;quot;${timestamp}&amp;quot; != &amp;quot;${old_timestamp}&amp;quot; ]; then&lt;br /&gt;
&lt;br /&gt;
    temp_ipset=&amp;quot;${firewall_ipset}_temp&amp;quot;&lt;br /&gt;
    ipset create ${temp_ipset} ${ipset_params}&lt;br /&gt;
&lt;br /&gt;
    #sed -i &#039;/^#/d&#039; ${data_file}            # strip comments&lt;br /&gt;
    sed -ri &#039;/^[#&amp;lt; \t]|^$/d&#039; ${data_file}   # occasionally the file has been xhtml&lt;br /&gt;
&lt;br /&gt;
    while read network; do&lt;br /&gt;
        ipset add ${temp_ipset} ${network}&lt;br /&gt;
    done &amp;lt; ${data_file}&lt;br /&gt;
&lt;br /&gt;
    # if ipset does not exist, create it&lt;br /&gt;
    ipset create -exist ${firewall_ipset} ${ipset_params}&lt;br /&gt;
&lt;br /&gt;
    # swap the temp ipset for the live one&lt;br /&gt;
    ipset swap ${temp_ipset} ${firewall_ipset}&lt;br /&gt;
    ipset destroy ${temp_ipset}&lt;br /&gt;
&lt;br /&gt;
    # log the file modification time for use in minimizing lag in cron schedule&lt;br /&gt;
    logger -p cron.notice &amp;quot;IPSet: ${firewall_ipset} updated (as of: ${timestamp}).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
fi&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you should see the list loaded into memory when you do:&lt;br /&gt;
&lt;br /&gt;
{{cmd|ipset list}}&lt;br /&gt;
&lt;br /&gt;
We want to save it so our router can refer to it next time it starts up so for that:&lt;br /&gt;
&lt;br /&gt;
{{cmd|/etc/init.d/ipset save}}&lt;br /&gt;
&lt;br /&gt;
=== Adding our allowed networks ===&lt;br /&gt;
&lt;br /&gt;
==== IPv4 ====&lt;br /&gt;
{{cmd|ipset create allowed-nets-ipv4 hash:net,iface family inet}}&lt;br /&gt;
&lt;br /&gt;
Then you can add each of your allowed networks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ipset add allowed-nets-ipv4 192.168.0.0/30,eth1&lt;br /&gt;
ipset add allowed-nets-ipv4 192.168.1.0/24,eth0&lt;br /&gt;
ipset add allowed-nets-ipv4 192.168.2.0/24,eth0&lt;br /&gt;
ipset add allowed-nets-ipv4 192.168.3.0/24,eth0&lt;br /&gt;
ipset add allowed-nets-ipv4 127.0.0.0/8,lo&lt;br /&gt;
ipset add allowed-nets-ipv4 172.16.32.0/20,tun0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IPv6 ====&lt;br /&gt;
For IPv6 if you&#039;ve got any [https://en.wikipedia.org/wiki/Unique_local_address Unique local address] ranges you may choose to add them:&lt;br /&gt;
&lt;br /&gt;
{{cmd|ipset create allowed-nets-ipv6 hash:net,iface family inet6}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ipset add allowed-nets-ipv6 fde4:8dba:82e1::/48,tun0&lt;br /&gt;
ipset add allowed-nets-ipv6 fde4:8dba:82e1:ffff::/64,eth0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finally save the sets with this command so they can be loaded next boot:&lt;br /&gt;
&lt;br /&gt;
{{cmd|/etc/init.d/ipset save}}&lt;br /&gt;
&lt;br /&gt;
== Restricting our LAN subnet with iptables, and blocking the bogons ==&lt;br /&gt;
Finally we can apply our iptables rules, to filter both 192.168.3.0/24 and make sure that subnets like 192.168.5.0/24 are not forwarded or accessible by our router. You will need to review these rules, and remove the ones that do not apply to you.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to change your RADIUS rules if you moved your WiFi APs into the 192.168.3.0/24 subnet. You&#039;ll also need to edit /etc/raddb/clients.conf&lt;br /&gt;
&lt;br /&gt;
I used a new table here called &amp;quot;raw&amp;quot;. This table is more primitive than the filter table. It cannot have FORWARD rules or INPUT rules. Therefore you will still need a FORWARD rule in your filter table to block bogons originating from your LAN.&lt;br /&gt;
&lt;br /&gt;
The only kind of rules we may use here are PREROUTING and OUTPUT. The OUTPUT rules will only filter traffic originating from our router&#039;s local processes, such as if we ran the ping command to a bogon range on the router&#039;s command prompt.&lt;br /&gt;
&lt;br /&gt;
Traffic passes over the raw table, before connecting marking as indicated by this packet flow map: [http://inai.de/images/nf-packet-flow.png Netfilter packet flow graph] this means we don&#039;t have to strip the mark off the bogon range in the mangle table anymore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#########################################################################&lt;br /&gt;
# Advanced routing rule set&lt;br /&gt;
# Uses 192.168.1.0 via ISP&lt;br /&gt;
#      192.168.2.0 via VPN&lt;br /&gt;
#      192.168.3.0 via LAN&lt;br /&gt;
#&lt;br /&gt;
# Packets to/from 192.168.1.0/24 are marked with 0x1 and routed to ISP&lt;br /&gt;
# Packets to/from 192.168.2.0/24 are marked with 0x2 and routed to VPN&lt;br /&gt;
# Packets to/from 192.168.3.0/24 are routed to LAN and not forwarded onto&lt;br /&gt;
#                                    the internet&lt;br /&gt;
#&lt;br /&gt;
#########################################################################&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Raw Table&lt;br /&gt;
# This table is the place where we drop all illegal packets from networks that&lt;br /&gt;
# do not exist&lt;br /&gt;
#&lt;br /&gt;
*raw&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a log drop chain&lt;br /&gt;
:LOG_DROP_BOGON - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create an output chain&lt;br /&gt;
:OUT_PPP0 - [0:0]&lt;br /&gt;
:OUT_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Allows traffic from VPN tunnel&lt;br /&gt;
-A PREROUTING -s 172.16.32.0/20 -i tun0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allows traffic to VPN tunnel&lt;br /&gt;
-A PREROUTING -d 172.16.32.0/20 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Block specified bogons coming in from ISP and VPN&lt;br /&gt;
# (unlikely to happen as they filter them on their router)&lt;br /&gt;
-A PREROUTING -i ppp0 -m set --match-set bogon-bn-nonagg src -j LOG_DROP_BOGON&lt;br /&gt;
-A PREROUTING -i tun0 -m set --match-set bogon-bn-nonagg src -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Allows my excepted ranges.&lt;br /&gt;
-A PREROUTING -m set --match-set allowed-nets-ipv4 src,src -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass output interface to corresponding chain&lt;br /&gt;
-A OUTPUT -o ppp0 -j OUT_PPP0&lt;br /&gt;
-A OUTPUT -o tun0 -j OUT_TUN0&lt;br /&gt;
&lt;br /&gt;
# Log drop chain&lt;br /&gt;
-A LOG_DROP_BOGON -j LOG --log-prefix &amp;quot;Dropped Bogon (ipv4) : &amp;quot; --log-level 6&lt;br /&gt;
-A LOG_DROP_BOGON -j DROP&lt;br /&gt;
&lt;br /&gt;
# Block packets originating from the router destined to bogon ranges&lt;br /&gt;
-A OUT_PPP0 -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Blocks packets originating from the router destined to bogon ranges&lt;br /&gt;
-A OUT_TUN0 -d 172.16.32.0/20 -j ACCEPT&lt;br /&gt;
-A OUT_TUN0 -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# NAT Table&lt;br /&gt;
# This is where translation of packets happens and &amp;quot;forwarding&amp;quot; of ports&lt;br /&gt;
# to specific hosts.&lt;br /&gt;
#&lt;br /&gt;
*nat&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Port forwarding for Bittorrent&lt;br /&gt;
-A PREROUTING -i tun0 -p tcp -m tcp --dport 6881:6889 -j DNAT --to-destination 192.168.2.20&lt;br /&gt;
-A PREROUTING -i tun0 -p udp -m udp --dport 6881:6889 -j DNAT --to-destination 192.168.2.20&lt;br /&gt;
&lt;br /&gt;
# Allows routing to our modem subnet so we can access the web interface&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
-A POSTROUTING -s 192.168.2.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the VPN tunnel&lt;br /&gt;
-A POSTROUTING -o tun0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the PPP tunnel&lt;br /&gt;
-A POSTROUTING -o ppp0 -j MASQUERADE&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Filter Table&lt;br /&gt;
# This is where we decide to ACCEPT, DROP or REJECT things&lt;br /&gt;
#&lt;br /&gt;
*filter&lt;br /&gt;
:INPUT DROP [0:0]&lt;br /&gt;
:FORWARD DROP [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for forwarding packets&lt;br /&gt;
:FWD_ETH0 - [0:0]&lt;br /&gt;
:FWD_ETH1 - [0:0]&lt;br /&gt;
:FWD_PPP0 - [0:0]&lt;br /&gt;
:FWD_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for input packets (for host itself)&lt;br /&gt;
:IN_ETH0 - [0:0]&lt;br /&gt;
:IN_ETH1 - [0:0]&lt;br /&gt;
:IN_PPP0 - [0:0]&lt;br /&gt;
:IN_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a drop chain&lt;br /&gt;
:LOG_DROP - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a log drop chain&lt;br /&gt;
:LOG_DROP_BOGON - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a reject chain&lt;br /&gt;
:LOG_REJECT_LANONLY - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create an output chain&lt;br /&gt;
:OUT_PPP0 - [0:0]&lt;br /&gt;
:OUT_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Pass input packet to corresponding rule chain&lt;br /&gt;
-A INPUT -i lo -j ACCEPT&lt;br /&gt;
-A INPUT -i eth0 -j IN_ETH0&lt;br /&gt;
-A INPUT -i eth1 -j IN_ETH1&lt;br /&gt;
-A INPUT -i ppp0 -j IN_PPP0&lt;br /&gt;
-A INPUT -i tun0 -j IN_TUN0&lt;br /&gt;
&lt;br /&gt;
# Track forwarded packets&lt;br /&gt;
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass forwarded packet to corresponding rule chain&lt;br /&gt;
-A FORWARD -i eth0 -j FWD_ETH0&lt;br /&gt;
-A FORWARD -i eth1 -j FWD_ETH1&lt;br /&gt;
-A FORWARD -i ppp0 -j FWD_PPP0&lt;br /&gt;
-A FORWARD -i tun0 -j FWD_TUN0&lt;br /&gt;
&lt;br /&gt;
# Pass output interface to corresponding chain&lt;br /&gt;
-A OUTPUT -o ppp0 -j OUT_PPP0&lt;br /&gt;
-A OUTPUT -o tun0 -j OUT_TUN0&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to Modem&lt;br /&gt;
-A FWD_ETH0 -d 192.168.0.1/32 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow routing to remote address on VPN&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -d 172.16.32.1/32 -o tun0 -j ACCEPT&lt;br /&gt;
-A FWD_ETH0 -s 192.168.2.0/24 -d 172.16.32.1/32 -o tun0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow forwarding from LAN hosts to LAN ONLY subnet&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -d 192.168.3.0/24 -j ACCEPT&lt;br /&gt;
-A FWD_ETH0 -s 192.168.2.0/24 -d 192.168.3.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow LAN ONLY subnet to contact other LAN hosts&lt;br /&gt;
-A FWD_ETH0 -s 192.168.3.0/24 -d 192.168.1.0/24 -j ACCEPT&lt;br /&gt;
-A FWD_ETH0 -s 192.168.3.0/24 -d 192.168.2.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Refuse to forward bogons to the internet!&lt;br /&gt;
-A FWD_ETH0 -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to ISP&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to VPN&lt;br /&gt;
-A FWD_ETH0 -s 192.168.2.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Prevent 192.168.3.0/24 from accessing internet&lt;br /&gt;
-A FWD_ETH0 -s 192.168.3.0/24 -j LOG_REJECT_LANONLY&lt;br /&gt;
&lt;br /&gt;
# Allow excepted server to be FORWARD to ppp0&lt;br /&gt;
#-A FWD_ETH0 -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -o ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward SSH packets from network to modem&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.1.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.2.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward HTTP packets from network to mode&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.1.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.2.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward Bittorrent Port to workstation&lt;br /&gt;
-A FWD_TUN0 -d 192.168.2.20/32 -p tcp -m tcp --dport 6881:6889 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_TUN0 -d 192.168.2.20/32 -p udp -m udp --dport 6881:6889 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# DNS to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# FreeRadius Client (eg a UniFi AP)&lt;br /&gt;
-A IN_ETH0 -s 192.168.3.10/32 -p tcp -m tcp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.3.10/32 -p udp -m udp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Ubiquiti UAP Device Discovery Broadcast&lt;br /&gt;
-A IN_ETH0 -s 192.168.3.10/32 -p udp -m udp --dport 10001 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# NTP to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.3.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept traffic to router on both subnets&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow excepted server to be INPUT to eth0 from LAN&lt;br /&gt;
#-A IN_ETH0 -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -o ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# HTTP To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked PPP0 connection&lt;br /&gt;
-A IN_PPP0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on PPP0&lt;br /&gt;
-A IN_PPP0 -j LOG --log-prefix &amp;quot;DROP:INPUT (ipv4) &amp;quot; --log-level 6&lt;br /&gt;
-A IN_PPP0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked TUN0 connection&lt;br /&gt;
-A IN_TUN0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on TUN0&lt;br /&gt;
-A IN_TUN0 -j LOG --log-prefix &amp;quot;DROP:INPUT (ipv4) &amp;quot; --log-level 6&lt;br /&gt;
-A IN_TUN0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Log dropped bogons that never got forwarded&lt;br /&gt;
-A LOG_DROP_BOGON -j LOG --log-prefix &amp;quot;Dropped Bogon forward (ipv4) &amp;quot; --log-level 6&lt;br /&gt;
-A LOG_DROP_BOGON -j DROP&lt;br /&gt;
&lt;br /&gt;
# Log rejected packets&lt;br /&gt;
-A LOG_REJECT_LANONLY -j LOG --log-prefix &amp;quot;Rejected packet from LAN only range : &amp;quot; --log-level 6&lt;br /&gt;
-A LOG_REJECT_LANONLY -j REJECT --reject-with icmp-port-unreachable&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mangle Table&lt;br /&gt;
# This is the place where our markings happen, whether they be 0x1 or 0x2&lt;br /&gt;
#&lt;br /&gt;
*mangle&lt;br /&gt;
&lt;br /&gt;
# Set default policies for table&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:FORWARD ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Restore CONNMARK to the MARK (If one doesn&#039;t exist then no mark is set)&lt;br /&gt;
-A PREROUTING -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff&lt;br /&gt;
&lt;br /&gt;
# If packet MARK is 2, then it means there is already a connection mark and the&lt;br /&gt;
# original packet came in on VPN&lt;br /&gt;
-A PREROUTING -s 192.168.2.0/24 -m mark --mark 0x2 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Check exception (this is a server which when accessed on a 192.168.2.0/24 address will go out the ISP table) are 0x1&lt;br /&gt;
#-A PREROUTING -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -m mark --mark 0x1 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Mark packets coming from 192.168.2.0/24 are 0x2&lt;br /&gt;
-A PREROUTING -s 192.168.2.0/24 -j MARK --set-xmark 0x2/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# If packet MARK is 1, then it means there is already a connection mark and the&lt;br /&gt;
# original packet came in on ISP&lt;br /&gt;
-A PREROUTING -s 192.168.1.0/24 -m mark --mark 0x1 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Mark packets 192.168.1.0/24 are 0x1&lt;br /&gt;
-A PREROUTING -s 192.168.1.0/24 -j MARK --set-xmark 0x1/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Mark exception (this is a server which when accessed on a 192.168.2.0/24 address will go out the ISP table) as 0x1&lt;br /&gt;
#-A PREROUTING -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -j MARK --set-xmark 0x1/0xffffff&lt;br /&gt;
&lt;br /&gt;
# Strip mark if packet is destined for modem&lt;br /&gt;
-A PREROUTING -d 192.168.0.1/32 -j MARK --set-xmark 0x0/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Save MARK to CONNMARK (remember iproute can&#039;t see CONNMARKs)&lt;br /&gt;
-A PREROUTING -j CONNMARK --save-mark --nfmask 0xffffffff --ctmask 0xffffffff&lt;br /&gt;
COMMIT&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Other Tips =&lt;br /&gt;
&lt;br /&gt;
== Diagnosing firewall problems ==&lt;br /&gt;
&lt;br /&gt;
=== netcat, netcat6 ===&lt;br /&gt;
Netcat can be useful for testing if a port is open or closed or filtered.&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add netcat-openbsd}}&lt;br /&gt;
&lt;br /&gt;
After installing netcat we can use it like this:&lt;br /&gt;
&lt;br /&gt;
Say we wanted to test for IPv6, UDP, Port 547 we would do this on the router:&lt;br /&gt;
&lt;br /&gt;
{{cmd|nc -6 -u -l 547}}&lt;br /&gt;
&lt;br /&gt;
and then this on the client to connect to it:&lt;br /&gt;
&lt;br /&gt;
{{cmd|nc -u -v -6 2001:0db8:1234:0001::1 547}}&lt;br /&gt;
&lt;br /&gt;
=== tcpdump ===&lt;br /&gt;
&lt;br /&gt;
tcpdump can also be useful for dumping the contents of packets coming in on an interface:&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add tcpdump}}&lt;br /&gt;
&lt;br /&gt;
Then we can run it. This example captures all DNS traffic originating from 192.168.2.20.&lt;br /&gt;
&lt;br /&gt;
{{cmd|tcpdump -i eth0 udp and src 192.168.2.20 and port 53}}&lt;br /&gt;
&lt;br /&gt;
You can write the file out with the -w option, and view it in Wireshark locally on your computer. You can increase the verbosity with the -v option. Using -vv will be even more verbose. -vvv will show even more.&lt;br /&gt;
&lt;br /&gt;
== lbu cache ==&lt;br /&gt;
Configure lbu cache so that you don&#039;t need to download packages when you restart your router eg [[Local APK cache]]&lt;br /&gt;
&lt;br /&gt;
This is particularly important as some of the images do not contain ppp-pppoe. This might mean you&#039;re unable to get an internet connection to download the other packages on boot.&lt;br /&gt;
&lt;br /&gt;
== lbu encryption /etc/lbu/lbu.conf ==&lt;br /&gt;
In /etc/lbu/lbu.conf you might want to enable encryption to protect your VPN keys.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# what cipher to use with -e option&lt;br /&gt;
DEFAULT_CIPHER=aes-256-cbc&lt;br /&gt;
&lt;br /&gt;
# Uncomment the row below to encrypt config by default&lt;br /&gt;
ENCRYPTION=$DEFAULT_CIPHER&lt;br /&gt;
&lt;br /&gt;
# Uncomment below to avoid &amp;lt;media&amp;gt; option to &#039;lbu commit&#039;&lt;br /&gt;
# Can also be set to &#039;floppy&#039;&lt;br /&gt;
LBU_MEDIA=mmcblk0p1&lt;br /&gt;
&lt;br /&gt;
# Set the LBU_BACKUPDIR variable in case you prefer to save the apkovls&lt;br /&gt;
# in a normal directory instead of mounting an external media.&lt;br /&gt;
# LBU_BACKUPDIR=/root/config-backups&lt;br /&gt;
&lt;br /&gt;
# Uncomment below to let lbu make up to 3 backups&lt;br /&gt;
# BACKUP_LIMIT=3&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remember to set a root password, by default Alpine Linux&#039;s root account is passwordless.&lt;br /&gt;
{{cmd|passwd root}}&lt;br /&gt;
&lt;br /&gt;
== Backup apkprov ==&lt;br /&gt;
It&#039;s a good idea to back up your apk provision file. You can pull it off your router to your local workstation with:&lt;br /&gt;
&lt;br /&gt;
{{cmd|scp -r root@192.168.2.1:/media/mmcblk0p1/&amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz.aes-256-cbc ./}}&lt;br /&gt;
&lt;br /&gt;
And decrypt it with:&lt;br /&gt;
{{cmd|openssl enc -d -aes-256-cbc -in &amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz.aes-256-cbc -out &amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz}}&lt;br /&gt;
&lt;br /&gt;
It can be encrypted with:&lt;br /&gt;
{{cmd|openssl aes-256-cbc -salt -in &amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz -out &amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz.aes-256-cbc}}&lt;br /&gt;
&lt;br /&gt;
== Harden SSH ==&lt;br /&gt;
&lt;br /&gt;
=== Generate a SSH key ===&lt;br /&gt;
{{cmd|ssh-keygen -t rsa -b 4096}}&lt;br /&gt;
&lt;br /&gt;
You will want to put the contents of id_rsa.pub in /etc/ssh/authorized_keys&lt;br /&gt;
&lt;br /&gt;
You can put multiple public keys on multiple lines if more than one person has access to the router.&lt;br /&gt;
&lt;br /&gt;
=== /etc/ssh/sshd_config ===&lt;br /&gt;
A couple of good options to set in here can be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ListenAddress 192.168.1.1&lt;br /&gt;
ListenAddress 192.168.2.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
While this isn&#039;t usually a good idea, a router doesn&#039;t need more than one user.&lt;br /&gt;
&amp;lt;pre&amp;gt;PermitRootLogin yes&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The most important options:&lt;br /&gt;
&amp;lt;pre&amp;gt;RSAAuthentication yes&lt;br /&gt;
PubkeyAuthentication yes&lt;br /&gt;
AuthorizedKeysFile  /etc/ssh/authorized_keys&lt;br /&gt;
PasswordAuthentication no&lt;br /&gt;
PermitEmptyPasswords no&lt;br /&gt;
AllowTcpForwarding no&lt;br /&gt;
X11Forwarding no&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== /etc/conf.d/sshd ===&lt;br /&gt;
You will want to add &amp;lt;pre&amp;gt;rc_need=&amp;quot;net&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This instructs OpenRC to make sure the network is up before starting ssh.&lt;br /&gt;
&lt;br /&gt;
Finally add sshd to the default run level&lt;br /&gt;
{{cmd|rc-update add sshd default}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at [https://stribika.github.io/2015/01/04/secure-secure-shell.html Secure Secure Shell] and tighten OpenSSH&#039;s cryptography options.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
* https://wiki.gentoo.org/wiki/Home_Router&lt;br /&gt;
* https://help.ubuntu.com/community/ADSLPPPoE&lt;br /&gt;
* https://wiki.archlinux.org/index.php/Router&lt;br /&gt;
* https://wiki.gentoo.org/wiki/IPv6_router_guide&lt;br /&gt;
* [https://vk5tu.livejournal.com/37206.html IPv6 at home, under the hood with Debian Wheezy and Internode]&lt;br /&gt;
* [http://vk5tu.livejournal.com/43059.html Raspberry Pi random number generator]&lt;br /&gt;
* [https://www.raspberrypi.org/forums/viewtopic.php?f=56&amp;amp;t=60569 rng-tools post by ktb]&lt;br /&gt;
&lt;br /&gt;
[[category: VPN]]&lt;br /&gt;
[[category: Raspberry]]&lt;/div&gt;</summary>
		<author><name>Dngray</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Linux_Router_with_VPN_on_a_Raspberry_Pi&amp;diff=19349</id>
		<title>Linux Router with VPN on a Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Linux_Router_with_VPN_on_a_Raspberry_Pi&amp;diff=19349"/>
		<updated>2021-05-14T03:09:51Z</updated>

		<summary type="html">&lt;p&gt;Dngray: /* fix warning */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
= Rationale =&lt;br /&gt;
&lt;br /&gt;
This guide demonstrates how to set up a Linux router with a VPN tunnel. You will need a second ethernet adapter. If you are using a Raspberry Pi like I did, then you can use something like this [http://store.apple.com/us/product/MC704LL/A/apple-usb-ethernet-adapter Apple USB Ethernet Adapter] as it contains a ASIX AX88772 which has good Linux support.&lt;br /&gt;
&lt;br /&gt;
You may choose to also buy an [http://www.element14.com/community/docs/DOC-68907/l/shim-rtc-realtime-clock-accessory-board-for-raspberry-pi RTC clock]. If you don&#039;t have an RTC clock, the time is lost when your Pi is shut down. When it is rebooted, the time will be set back to Thursday, 1 January 1970. As this is earlier than the creation time of your VPN certificates OpenVPN will refuse to start, which may mean you cannot do DNS lookups over VPN.&lt;br /&gt;
&lt;br /&gt;
For wireless, a separate access point was purchased ([http://wiki.openwrt.org/toh/ubiquiti/unifi Ubiquiti UniFi AP]) because it contains a Atheros AR9287 which is supported by [https://wireless.wiki.kernel.org/en/users/drivers/ath9k ath9k].&lt;br /&gt;
&lt;br /&gt;
I only chose a Raspberry Pi due to the fact it was inexpensive. My WAN link is pathetic so I was not concerned with getting high PPS ([https://en.wikipedia.org/wiki/Throughput Packets Per Second]). You could choose to use an old x86/amd64 system instead. If I had better internet I&#039;d probably go with an offering from [https://soekris.com Soekris] such as the [https://soekris.com/products/net6501-1.html net6501] as it would have a much lower power consumption than a generic x86_64 desktop processor.&lt;br /&gt;
&lt;br /&gt;
If you want to route speeds above 100 Mbit/s you&#039;ll want to make use of hardware encryption like [https://en.wikipedia.org/wiki/AES_instruction_set AES-NI]. The [https://soekris.com Soekris] offerings have the option of an additional hardware encryption module ([https://soekris.com/products/vpn-1411.html vpn1411]). Another option is to use a [https://en.wikipedia.org/wiki/Mini-ITX Mini ITX motherboard], with a managed switch. I chose the [https://www.ubnt.com/edgemax/edgeswitch Ubiquiti ES-16-150W].&lt;br /&gt;
&lt;br /&gt;
If you wish to use IPv6 you should consider looking at [[Linux Router with VPN on a Raspberry Pi (IPv6)]] as the implementation does differ slightly to this tutorial.&lt;br /&gt;
&lt;br /&gt;
The network in this tutorial looks like this: &lt;br /&gt;
&lt;br /&gt;
[[File:Network diagram ipv4 basic.svg|900px|center|Network Diagram Single IPv4]]&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
This guide assumes you&#039;re using Alpine Linux from a micro SD card in ramdisk mode. It assumes you&#039;ve read the basics of how to use [[Alpine local backup]].  The [[Raspberry Pi]] article contains information on how to install Alpine Linux on a Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
= Modem in full bridge mode =&lt;br /&gt;
This particular page uses an example where you have a modem that uses PPPoE. You will need to modify parts which do not apply to you. &lt;br /&gt;
&lt;br /&gt;
In this example I have a modem which has been configured in full bridge mode. PPP sessions are initiated on the router.&lt;br /&gt;
&lt;br /&gt;
The modem I am using is a [http://www.cisco.com/c/en/us/products/routers/877-integrated-services-router-isr/index.html Cisco 877 Integrated Services Router]. It has no web interface and is controlled over SSH. More information can be found [[Configuring a Cisco 877 in full bridge mode]].&lt;br /&gt;
&lt;br /&gt;
= Network =&lt;br /&gt;
&lt;br /&gt;
== /etc/hostname ==&lt;br /&gt;
Set this to your hostname eg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;HOST_NAME&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/hosts ==&lt;br /&gt;
Set your host and hostname&lt;br /&gt;
&amp;lt;pre&amp;gt;127.0.0.1	&amp;lt;HOST_NAME&amp;gt; &amp;lt;HOST_NAME&amp;gt;.&amp;lt;DOMAIN_NAME&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::1		&amp;lt;HOST_NAME&amp;gt; ipv6-gateway ipv6-loopback&lt;br /&gt;
ff00::0		ipv6-localnet&lt;br /&gt;
ff00::0		ipv6-mcastprefix&lt;br /&gt;
ff02::1		ipv6-allnodes&lt;br /&gt;
ff02::2		ipv6-allrouters&lt;br /&gt;
ff02::3		ipv6-allhosts&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/interfaces ==&lt;br /&gt;
Configure your network interfaces. Change &amp;quot;yourISP&amp;quot; to the file name of the file in /etc/ppp/peers/yourISP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#&lt;br /&gt;
# Network Interfaces&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Loopback interfaces&lt;br /&gt;
auto lo&lt;br /&gt;
iface lo inet loopback&lt;br /&gt;
  address 127.0.0.1&lt;br /&gt;
  netmask 255.0.0.0&lt;br /&gt;
&lt;br /&gt;
# Internal Interface - facing LAN&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
  address 192.168.1.1&lt;br /&gt;
  netmask 255.255.255.0&lt;br /&gt;
  broadcast 192.168.1.255&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PPP ===&lt;br /&gt;
Next up we need to configure our router to be able to dial a PPP connection with our modem.&lt;br /&gt;
&lt;br /&gt;
If your ISP uses [https://en.wikipedia.org/wiki/Point-to-Point_Protocol PPP] you may need to configure it. See [[PPP]].&lt;br /&gt;
&lt;br /&gt;
You will want to make sure you set your WAN interface, in this example we used eth1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# External Interface - facing Modem&lt;br /&gt;
allow-hotplug eth1&lt;br /&gt;
auto eth1&lt;br /&gt;
iface eth1 inet static&lt;br /&gt;
  address 192.168.0.2&lt;br /&gt;
  netmask 255.255.255.252&lt;br /&gt;
  broadcast 192.168.0.3&lt;br /&gt;
  pre-up /sbin/ip link set eth1 up&lt;br /&gt;
  up ifup ppp0=yourISP&lt;br /&gt;
  down ifdown ppp0=yourISP&lt;br /&gt;
  post-down /sbin/ip link set eth1 up&lt;br /&gt;
&lt;br /&gt;
# Link to ISP&lt;br /&gt;
iface yourISP inet ppp&lt;br /&gt;
  provider yourISP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IPoE ===&lt;br /&gt;
Alternatively it&#039;s quite common for ISPs to use [https://en.wikipedia.org/wiki/IPoE IPoE]. IPoE is much simpler and only runs DHCP on the external interface. It should look something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# External interface to ISP&lt;br /&gt;
allow-hotplug eth1&lt;br /&gt;
auto eth1&lt;br /&gt;
iface eth1 inet dhcp&lt;br /&gt;
&lt;br /&gt;
iface eth1 inet static&lt;br /&gt;
    address 192.168.0.2&lt;br /&gt;
    netmask 255.255.255.252&lt;br /&gt;
    broadcast 192.168.0.3&lt;br /&gt;
&lt;br /&gt;
iface eth1 inet6 manual&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== DHCP from ISP ====&lt;br /&gt;
&lt;br /&gt;
Above we set DHCP and we set a static IP. The purpose of this is so we can still forward packets through to the modem to be able to access the web interface or ssh.&lt;br /&gt;
&lt;br /&gt;
We do still need DHCP to get an IP address form our ISP though. I like to use dhcpcd instead of udhcp (the default in Alpine Linux), because it allows for [https://en.wikipedia.org/wiki/Prefix_delegation Prefix Delegation], which is used in IPv6 networks.&lt;br /&gt;
&lt;br /&gt;
My /etc/dhcpcd.conf looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Enable extra debugging&lt;br /&gt;
# debug&lt;br /&gt;
# logfile /var/log/dhcpcd.log&lt;br /&gt;
&lt;br /&gt;
# Allow users of this group to interact with dhcpcd via the control&lt;br /&gt;
# socket.&lt;br /&gt;
#controlgroup wheel&lt;br /&gt;
&lt;br /&gt;
# Inform the DHCP server of our hostname for DDNS.&lt;br /&gt;
hostname gateway&lt;br /&gt;
&lt;br /&gt;
# Use the hardware address of the interface for the Client ID.&lt;br /&gt;
# clientid&lt;br /&gt;
# or&lt;br /&gt;
# Use the same DUID + IAID as set in DHCPv6 for DHCPv4 ClientID as&lt;br /&gt;
# per RFC4361. Some non-RFC compliant DHCP servers do not reply with&lt;br /&gt;
# this set. In this case, comment out duid and enable clientid above.&lt;br /&gt;
duid&lt;br /&gt;
&lt;br /&gt;
# Persist interface configuration when dhcpcd exits.&lt;br /&gt;
persistent&lt;br /&gt;
&lt;br /&gt;
# Rapid commit support.&lt;br /&gt;
# Safe to enable by default because it requires the equivalent option&lt;br /&gt;
# set on the server to actually work.&lt;br /&gt;
option rapid_commit&lt;br /&gt;
&lt;br /&gt;
# A list of options to request from the DHCP server.&lt;br /&gt;
option domain_name_servers, domain_name, domain_search, host_name&lt;br /&gt;
option classless_static_routes&lt;br /&gt;
&lt;br /&gt;
# Most distributions have NTP support.&lt;br /&gt;
option ntp_servers&lt;br /&gt;
&lt;br /&gt;
# Respect the network MTU.&lt;br /&gt;
# Some interface drivers reset when changing the MTU so disabled by&lt;br /&gt;
# default.&lt;br /&gt;
#option interface_mtu 1586&lt;br /&gt;
&lt;br /&gt;
# A ServerID is required by RFC2131.&lt;br /&gt;
require dhcp_server_identifier&lt;br /&gt;
&lt;br /&gt;
# Generate Stable Private IPv6 Addresses instead of hardware based&lt;br /&gt;
# ones&lt;br /&gt;
slaac private&lt;br /&gt;
&lt;br /&gt;
# A hook script is provided to lookup the hostname if not set by the&lt;br /&gt;
# DHCP server, but it should not be run by default.&lt;br /&gt;
nohook lookup-hostname&lt;br /&gt;
&lt;br /&gt;
# Disable solicitations on all interfaces&lt;br /&gt;
noipv6rs&lt;br /&gt;
&lt;br /&gt;
# Wait for IP before forking to background&lt;br /&gt;
waitip 6&lt;br /&gt;
&lt;br /&gt;
# Don&#039;t touch DNS&lt;br /&gt;
nohook resolv.conf&lt;br /&gt;
&lt;br /&gt;
allowinterfaces eth1 eth0.2&lt;br /&gt;
# Use the interface connected to WAN&lt;br /&gt;
interface eth1&lt;br /&gt;
    waitip 4&lt;br /&gt;
    noipv4ll&lt;br /&gt;
    ipv6rs # enable routing solicitation get the default IPv6 route&lt;br /&gt;
    iaid 1&lt;br /&gt;
    ia_pd 1/::/56 eth0.2/2/64&lt;br /&gt;
    timeout 30&lt;br /&gt;
&lt;br /&gt;
interface eth0.2&lt;br /&gt;
    ipv6only&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Basic IPtables firewall with routing ==&lt;br /&gt;
This demonstrates how to set up basic routing with a permissive outgoing firewall. Incoming packets are blocked. The rest is commented in the rule set.&lt;br /&gt;
&lt;br /&gt;
First install iptables:&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add iptables ip6tables}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#########################################################################&lt;br /&gt;
# Basic iptables IPv4 routing rule set&lt;br /&gt;
#&lt;br /&gt;
# 192.168.1.0/24 routed directly to PPP0 via NAT&lt;br /&gt;
# &lt;br /&gt;
#########################################################################&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mangle Table&lt;br /&gt;
# We leave this empty for the moment.&lt;br /&gt;
#&lt;br /&gt;
*mangle&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:FORWARD ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Filter Table&lt;br /&gt;
# This is where we decide to ACCEPT, DROP or REJECT things&lt;br /&gt;
#&lt;br /&gt;
*filter&lt;br /&gt;
:INPUT DROP [0:0]&lt;br /&gt;
:FORWARD DROP [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
*filter&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for forwarding packets&lt;br /&gt;
:FWD_ETH0 - [0:0]&lt;br /&gt;
:FWD_ETH1 - [0:0]&lt;br /&gt;
:FWD_PPP0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for input packets (for host itself)&lt;br /&gt;
:IN_ETH0 - [0:0]&lt;br /&gt;
:IN_ETH1 - [0:0]&lt;br /&gt;
:IN_PPP0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a log drop chain&lt;br /&gt;
:LOG_DROP - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Pass input packet to corresponding rule chain&lt;br /&gt;
-A INPUT -i lo -j ACCEPT&lt;br /&gt;
-A INPUT -i eth0 -j IN_ETH0&lt;br /&gt;
-A INPUT -i eth1 -j IN_ETH1&lt;br /&gt;
-A INPUT -i ppp0 -j IN_PPP0&lt;br /&gt;
&lt;br /&gt;
# Pass forwarded packet to corresponding rule chain&lt;br /&gt;
-A FORWARD -i eth0 -j FWD_ETH0&lt;br /&gt;
-A FORWARD -i eth1 -j FWD_ETH1&lt;br /&gt;
-A FORWARD -i ppp0 -j FWD_PPP0&lt;br /&gt;
&lt;br /&gt;
# Forward LAN traffic out&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward SSH packets from network to modem&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.0/30 -d 192.168.1.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward HTTP to modem&#039;s webserver&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.0/30 -d 192.168.1.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to ISP&lt;br /&gt;
-A FWD_PPP0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# DNS to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# FreeRadius Client (eg a UniFi AP)&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# NTP to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept traffic&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# HTTP to modem&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked PPP0 connection&lt;br /&gt;
-A IN_PPP0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# NAT Table&lt;br /&gt;
# This is where translation of packets happens and &amp;quot;forwarding&amp;quot; of ports&lt;br /&gt;
# to specific hosts.&lt;br /&gt;
#&lt;br /&gt;
*nat&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Port forwarding for Bittorrent&lt;br /&gt;
-A PREROUTING -i ppp0 -p tcp -m tcp --dport 6881:6889 -j DNAT --to-destination 192.168.1.20&lt;br /&gt;
-A PREROUTING -i ppp0 -p udp -m udp --dport 6881:6889 -j DNAT --to-destination 192.168.1.20&lt;br /&gt;
&lt;br /&gt;
# Allows routing to our modem subnet so we can access the web interface or SSH&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 22 -j MASQUERADE&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the PPP tunnel&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE&lt;br /&gt;
COMMIT&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I&#039;d also highly suggest reading these resources if you are new to iptables: &lt;br /&gt;
&lt;br /&gt;
* [https://www.frozentux.net/category/linux/iptables Frozen Tux Iptables-tutorial]&lt;br /&gt;
* [http://inai.de/links/iptables/ Words of wisdom for #netfilter]&lt;br /&gt;
* [http://sfvlug.editthis.info/wiki/Things_You_Should_Know_About_Netfilter Things You Should Know About Netfilter]&lt;br /&gt;
* [http://inai.de/documents/Perfect_Ruleset.pdf Towards the perfect ruleset]&lt;br /&gt;
&lt;br /&gt;
== /etc/sysctl.d/local.conf ==&lt;br /&gt;
&amp;lt;pre&amp;gt;# Controls IP packet forwarding&lt;br /&gt;
net.ipv4.ip_forward = 1&lt;br /&gt;
&lt;br /&gt;
# Needed to use fwmark, only required if you want to set up the VPN subnet later in this article&lt;br /&gt;
net.ipv4.conf.all.rp_filter = 2&lt;br /&gt;
&lt;br /&gt;
# Disable IPv6&lt;br /&gt;
net.ipv6.conf.all.disable_ipv6 = 1&lt;br /&gt;
net.ipv6.conf.lo.disable_ipv6 = 1&lt;br /&gt;
net.ipv6.conf.default.disable_ipv6 = 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note IPv6 is disabled here if you want that see the other tutorial [[Linux Router with VPN on a Raspberry Pi (IPv6)]]. You may also wish to look at [https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt ip-sysctl.txt] to read about the other keys.&lt;br /&gt;
&lt;br /&gt;
= DHCP =&lt;br /&gt;
{{cmd|apk add dhcp}}&lt;br /&gt;
&lt;br /&gt;
== /etc/conf.d/dhcpd ==&lt;br /&gt;
Specify the configuration file location, interface to run on and that you want DHCPD to run in IPv4 mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# /etc/conf.d/dhcpd: config file for /etc/init.d/dhcpd&lt;br /&gt;
&lt;br /&gt;
# If you require more than one instance of dhcpd you can create symbolic&lt;br /&gt;
# links to dhcpd service like so&lt;br /&gt;
#   cd /etc/init.d&lt;br /&gt;
#   ln -s dhcpd dhcpd.foo&lt;br /&gt;
#   cd ../conf.d&lt;br /&gt;
#   cp dhcpd dhcpd.foo&lt;br /&gt;
# Now you can edit dhcpd.foo and specify a different configuration file.&lt;br /&gt;
# You&#039;ll also need to specify a pidfile in that dhcpd.conf file.&lt;br /&gt;
# See the pid-file-name option in the dhcpd.conf man page for details.&lt;br /&gt;
&lt;br /&gt;
# If you wish to run dhcpd in a chroot, uncomment the following line&lt;br /&gt;
# DHCPD_CHROOT=&amp;quot;/var/lib/dhcp/chroot&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# All file paths below are relative to the chroot.&lt;br /&gt;
# You can specify a different chroot directory but MAKE SURE it&#039;s empty.&lt;br /&gt;
&lt;br /&gt;
# Specify a configuration file - the default is /etc/dhcp/dhcpd.conf&lt;br /&gt;
DHCPD_CONF=&amp;quot;/etc/dhcp/dhcpd.conf&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Configure which interface or interfaces to for dhcpd to listen on.&lt;br /&gt;
# List all interfaces space separated. If this is not specified then&lt;br /&gt;
# we listen on all interfaces.&lt;br /&gt;
DHCPD_IFACE=&amp;quot;eth0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Insert any other dhcpd options - see the man page for a full list.&lt;br /&gt;
DHCPD_OPTS=&amp;quot;-4&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/dhcp/dhcpd.conf ==&lt;br /&gt;
Configure your DHCP configuration server. For my DHCP server I&#039;m going to have three subnets. Each has a specific purpose. You may choose to have any number of subnets like below. The broadcast-address would be different if you used VLANs. However in this case we are not.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;authoritative;&lt;br /&gt;
ddns-update-style interim;&lt;br /&gt;
&lt;br /&gt;
shared-network home {&lt;br /&gt;
  subnet 192.168.1.0 netmask 255.255.255.0 {&lt;br /&gt;
    range 192.168.1.10 192.168.1.240;&lt;br /&gt;
    option subnet-mask 255.255.255.0;&lt;br /&gt;
    option broadcast-address 192.168.1.255;&lt;br /&gt;
    option routers 192.168.1.1;&lt;br /&gt;
    option ntp-servers 192.168.1.1;&lt;br /&gt;
    option domain-name-servers 192.168.1.1;&lt;br /&gt;
    allow unknown-clients;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  subnet 192.168.2.0 netmask 255.255.255.0 {&lt;br /&gt;
    range 192.168.2.10 192.168.2.240;&lt;br /&gt;
    option subnet-mask 255.255.255.0;&lt;br /&gt;
    option broadcast-address 192.168.2.255;&lt;br /&gt;
    option routers 192.168.2.1;&lt;br /&gt;
    option ntp-servers 192.168.2.1;&lt;br /&gt;
    option domain-name-servers 192.168.1.1;&lt;br /&gt;
    ignore unknown-clients;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  subnet 192.168.3.0 netmask 255.255.255.0 {&lt;br /&gt;
    range 192.168.3.10 192.168.3.240;&lt;br /&gt;
    option subnet-mask 255.255.255.0;&lt;br /&gt;
    option broadcast-address 192.168.3.255;&lt;br /&gt;
    option routers 192.168.3.1;&lt;br /&gt;
    option ntp-servers 192.168.3.1;&lt;br /&gt;
    option domain-name-servers 192.168.1.1;&lt;br /&gt;
    ignore unknown-clients;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
host Gaming_Computer {&lt;br /&gt;
  hardware ethernet 00:53:00:FF:FF:11;&lt;br /&gt;
  fixed-address 192.168.1.20;&lt;br /&gt;
  option subnet-mask 255.255.255.0;&lt;br /&gt;
  option broadcast-address 192.168.1.255;&lt;br /&gt;
  option routers 192.168.1.1;&lt;br /&gt;
  option host-name &amp;quot;gaming_computer&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
host Linux_Workstation {&lt;br /&gt;
  hardware ethernet 00:53:00:FF:FF:22;&lt;br /&gt;
  fixed-address 192.168.2.21;&lt;br /&gt;
  option subnet-mask 255.255.255.0;&lt;br /&gt;
  option broadcast-address 192.168.2.255;&lt;br /&gt;
  option routers 192.168.2.1;&lt;br /&gt;
  option host-name &amp;quot;linux_workstation&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
host printer {&lt;br /&gt;
  hardware ethernet 00:53:00:FF:FF:33;&lt;br /&gt;
  fixed-address 192.168.3.9;&lt;br /&gt;
  option subnet-mask 255.255.255.0;&lt;br /&gt;
  option broadcast-address 192.168.3.255;&lt;br /&gt;
  option routers 192.168.3.1;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure to add this to the default run level once configured:&lt;br /&gt;
{{cmd|rc-update add dhcpd default}}&lt;br /&gt;
&lt;br /&gt;
= Synchronizing the clock =&lt;br /&gt;
&lt;br /&gt;
You can choose to use BusyBox&#039;s ntpd or you can choose a more fully fledged option like [http://www.openntpd.org OpenNTPD] or [https://chrony.tuxfamily.org Chrony]&lt;br /&gt;
&lt;br /&gt;
== Busybox /etc/conf.d/ntpd ==&lt;br /&gt;
Allow clients to synchronize their clocks with the router.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# By default ntpd runs as a client. Add -l to run as a server on port 123.&lt;br /&gt;
NTPD_OPTS=&amp;quot;-l -N -p &amp;lt;REMOTE TIME SERVER&amp;gt;&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure to add this to the default run level once configured:&lt;br /&gt;
{{cmd|rc-update add ntpd default}}&lt;br /&gt;
&lt;br /&gt;
Or if you prefer to synchronize with multiple servers...&lt;br /&gt;
&lt;br /&gt;
== Chrony /etc/chrony.conf ==&lt;br /&gt;
{{cmd|apk add chrony}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;logdir /var/log/chrony&lt;br /&gt;
log measurements statistics tracking&lt;br /&gt;
&lt;br /&gt;
allow 192.168.0.0/30&lt;br /&gt;
allow 192.168.1.0/24&lt;br /&gt;
allow 192.168.2.0/24&lt;br /&gt;
allow 192.168.3.0/24&lt;br /&gt;
allow 192.168.4.0/24&lt;br /&gt;
broadcast 30 192.168.0.3&lt;br /&gt;
broadcast 30 192.168.1.255&lt;br /&gt;
broadcast 30 192.168.2.255&lt;br /&gt;
broadcast 30 192.168.3.255&lt;br /&gt;
broadcast 30 192.168.4.255&lt;br /&gt;
&lt;br /&gt;
server 0.pool.ntp.org iburst&lt;br /&gt;
server 1.pool.ntp.org iburst&lt;br /&gt;
server 2.pool.ntp.org iburst&lt;br /&gt;
server 3.pool.ntp.org iburst&lt;br /&gt;
&lt;br /&gt;
initstepslew 10 pool.ntp.org&lt;br /&gt;
driftfile /var/lib/chrony/chrony.drift&lt;br /&gt;
hwclockfile /etc/adjtime&lt;br /&gt;
rtcdevice /dev/rtc0&lt;br /&gt;
rtcsync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OpenNTPD /etc/ntpd.conf ==&lt;br /&gt;
&lt;br /&gt;
Install OpenNTPD&lt;br /&gt;
{{cmd|apk add openntpd}}&lt;br /&gt;
&lt;br /&gt;
Add to default run level.&lt;br /&gt;
{{cmd|rc-update add openntpd default}}&lt;br /&gt;
&lt;br /&gt;
=== /etc/ntpd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;# sample ntpd configuration file, see ntpd.conf(5)&lt;br /&gt;
&lt;br /&gt;
# Addresses to listen on (ntpd does not listen by default)&lt;br /&gt;
listen on 192.168.1.1&lt;br /&gt;
listen on 192.168.2.1&lt;br /&gt;
&lt;br /&gt;
# sync to a single server&lt;br /&gt;
#server ntp.example.org&lt;br /&gt;
&lt;br /&gt;
# use a random selection of NTP Pool Time Servers&lt;br /&gt;
# see http://support.ntp.org/bin/view/Servers/NTPPoolServers&lt;br /&gt;
server 0.pool.ntp.org&lt;br /&gt;
server 1.pool.ntp.org&lt;br /&gt;
server 2.pool.ntp.org&lt;br /&gt;
server 3.pool.ntp.org&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== tlsdate ==&lt;br /&gt;
The time can also be extracted from a https handshake. If the certificate is self-signed you will need to use skip-verification:&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add tlsdate}}&lt;br /&gt;
{{cmd|tlsdate -V --skip-verification -p 80 -H example.com}}&lt;br /&gt;
&lt;br /&gt;
== timezone ==&lt;br /&gt;
You might also want to set a timezone, see [[Setting the timezone]].&lt;br /&gt;
&lt;br /&gt;
= Saving Time =&lt;br /&gt;
There are two ways to do this. If you didn&#039;t buy an RTC clock see [[Saving time with Software Clock]]. If you did like the PiFace Real Time Clock see [[Saving time with Hardware Clock]]&lt;br /&gt;
&lt;br /&gt;
= Unbound DNS forwarder with dnscrypt =&lt;br /&gt;
We want to be able to do our lookups using [https://dnscrypt.info/ dnscrypt] without installing DNSCrypt on every client on the network. DNSCrypt can use it&#039;s [https://dnscrypt.info/protocol own protocol] or [https://en.wikipedia.org/wiki/DNS_over_HTTPS DNS over HTTPS].&lt;br /&gt;
&lt;br /&gt;
The router will also run a DNS forwarder and request unknown domains over DNSCrypt for our clients. Borrowed from the ArchLinux wiki article on [https://wiki.archlinux.org/index.php/dnscrypt-proxy dnscrypt-proxy].&lt;br /&gt;
&lt;br /&gt;
== Unbound ==&lt;br /&gt;
First install {{cmd|apk add unbound}}&lt;br /&gt;
&lt;br /&gt;
=== /etc/unbound/unbound.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;server:&lt;br /&gt;
    # Use this to include other text into the file.&lt;br /&gt;
    include: &amp;quot;/etc/unbound/filter.conf&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # verbosity number, 0 is least verbose. 1 is default.&lt;br /&gt;
    verbosity: 1&lt;br /&gt;
&lt;br /&gt;
    # specify the interfaces to answer queries from by ip-address.&lt;br /&gt;
    # The default is to listen to localhost (127.0.0.1 and ::1).&lt;br /&gt;
    # specify 0.0.0.0 and ::0 to bind to all available interfaces.&lt;br /&gt;
    # specify every interface[@port] on a new &#039;interface:&#039; labelled line.&lt;br /&gt;
    # The listen interfaces are not changed on reload, only on restart.&lt;br /&gt;
    interface: 192.168.2.1&lt;br /&gt;
    interface: 192.168.3.1&lt;br /&gt;
&lt;br /&gt;
    # Enable IPv4, &amp;quot;yes&amp;quot; or &amp;quot;no&amp;quot;.&lt;br /&gt;
    do-ip4: yes&lt;br /&gt;
&lt;br /&gt;
    # Enable IPv6, &amp;quot;yes&amp;quot; or &amp;quot;no&amp;quot;.&lt;br /&gt;
    do-ip6: yes&lt;br /&gt;
&lt;br /&gt;
    # Enable UDP, &amp;quot;yes&amp;quot; or &amp;quot;no&amp;quot;.&lt;br /&gt;
    do-udp: yes&lt;br /&gt;
&lt;br /&gt;
    # Enable TCP, &amp;quot;yes&amp;quot; or &amp;quot;no&amp;quot;.&lt;br /&gt;
    do-tcp: yes&lt;br /&gt;
&lt;br /&gt;
    # control which clients are allowed to make (recursive) queries&lt;br /&gt;
    # to this server. Specify classless netblocks with /size and action.&lt;br /&gt;
    # By default everything is refused, except for localhost.&lt;br /&gt;
    # Choose deny (drop message), refuse (polite error reply),&lt;br /&gt;
    # allow (recursive ok), allow_setrd (recursive ok, rd bit is forced on),&lt;br /&gt;
    # allow_snoop (recursive and nonrecursive ok)&lt;br /&gt;
    # deny_non_local (drop queries unless can be answered from local-data)&lt;br /&gt;
    # refuse_non_local (like deny_non_local but polite error reply).&lt;br /&gt;
    # access-control: 0.0.0.0/0 refuse&lt;br /&gt;
    # access-control: 127.0.0.0/8 allow&lt;br /&gt;
    # access-control: ::0/0 refuse&lt;br /&gt;
    # access-control: ::1 allow&lt;br /&gt;
    # access-control: ::ffff:127.0.0.1 allow&lt;br /&gt;
    access-control: 192.168.1.0/24 allow&lt;br /&gt;
    access-control: 192.168.2.0/24 allow&lt;br /&gt;
    access-control: 192.168.3.0/24 allow&lt;br /&gt;
&lt;br /&gt;
    # the log file, &amp;quot;&amp;quot; means log to stderr.&lt;br /&gt;
    # Use of this option sets use-syslog to &amp;quot;no&amp;quot;.&lt;br /&gt;
    logfile: &amp;quot;/var/log/unbound/unbound.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # Log to syslog(3) if yes. The log facility LOG_DAEMON is used to&lt;br /&gt;
    # log to. If yes, it overrides the logfile.&lt;br /&gt;
    use-syslog: no&lt;br /&gt;
&lt;br /&gt;
    # print one line with time, IP, name, type, class for every query.&lt;br /&gt;
    # log-queries: no&lt;br /&gt;
&lt;br /&gt;
    # print one line per reply, with time, IP, name, type, class, rcode,&lt;br /&gt;
    # timetoresolve, fromcache and responsesize.&lt;br /&gt;
    # log-replies: no&lt;br /&gt;
&lt;br /&gt;
    # enable to not answer id.server and hostname.bind queries.&lt;br /&gt;
    hide-identity: yes&lt;br /&gt;
&lt;br /&gt;
    # enable to not answer version.server and version.bind queries.&lt;br /&gt;
    # hide-version: yes&lt;br /&gt;
&lt;br /&gt;
    # enable to not answer trustanchor.unbound queries.&lt;br /&gt;
    hide-trustanchor: yes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # Harden against very small EDNS buffer sizes.&lt;br /&gt;
    harden-short-bufsize: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden against unseemly large queries.&lt;br /&gt;
    harden-large-queries: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden against out of zone rrsets, to avoid spoofing attempts.&lt;br /&gt;
    harden-glue: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden against receiving dnssec-stripped data. If you turn it&lt;br /&gt;
    # off, failing to validate dnskey data for a trustanchor will&lt;br /&gt;
    # trigger insecure mode for that zone (like without a trustanchor).&lt;br /&gt;
    # Default on, which insists on dnssec data for trust-anchored zones.&lt;br /&gt;
    harden-dnssec-stripped: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden against queries that fall under dnssec-signed nxdomain names.&lt;br /&gt;
    harden-below-nxdomain: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden the referral path by performing additional queries for&lt;br /&gt;
    # infrastructure data.  Validates the replies (if possible).&lt;br /&gt;
    # Default off, because the lookups burden the server.  Experimental&lt;br /&gt;
    # implementation of draft-wijngaards-dnsext-resolver-side-mitigation.&lt;br /&gt;
    # harden-referral-path: no&lt;br /&gt;
&lt;br /&gt;
    # Harden against algorithm downgrade when multiple algorithms are&lt;br /&gt;
    # advertised in the DS record.  If no, allows the weakest algorithm&lt;br /&gt;
    # to validate the zone.&lt;br /&gt;
    harden-algo-downgrade: yes&lt;br /&gt;
&lt;br /&gt;
    # Use 0x20-encoded random bits in the query to foil spoof attempts.&lt;br /&gt;
    # This feature is an experimental implementation of draft dns-0x20.&lt;br /&gt;
    use-caps-for-id: yes&lt;br /&gt;
&lt;br /&gt;
    # Allow the domain (and its subdomains) to contain private addresses.&lt;br /&gt;
    # local-data statements are allowed to contain private addresses too.&lt;br /&gt;
    private-domain: &amp;quot;&amp;lt;HOSTNAME&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # if yes, the above default do-not-query-address entries are present.&lt;br /&gt;
    # if no, localhost can be queried (for testing and debugging).&lt;br /&gt;
    do-not-query-localhost: no&lt;br /&gt;
&lt;br /&gt;
    # File with trusted keys, kept uptodate using RFC5011 probes,&lt;br /&gt;
    # initial file like trust-anchor-file, then it stores metadata.&lt;br /&gt;
    # Use several entries, one per domain name, to track multiple zones.&lt;br /&gt;
    #&lt;br /&gt;
    # If you want to perform DNSSEC validation, run unbound-anchor before&lt;br /&gt;
    # you start unbound (i.e. in the system boot scripts).  And enable:&lt;br /&gt;
    # Please note usage of unbound-anchor root anchor is at your own risk&lt;br /&gt;
    # and under the terms of our LICENSE (see that file in the source).&lt;br /&gt;
    # auto-trust-anchor-file: &amp;quot;@UNBOUND_ROOTKEY_FILE@&amp;quot;&lt;br /&gt;
    auto-trust-anchor-file: &amp;quot;/etc/unbound/root.key&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # If unbound is running service for the local host then it is useful&lt;br /&gt;
    # to perform lan-wide lookups to the upstream, and unblock the&lt;br /&gt;
    # long list of local-zones above.  If this unbound is a dns server&lt;br /&gt;
    # for a network of computers, disabled is better and stops information&lt;br /&gt;
    # leakage of local lan information.&lt;br /&gt;
    unblock-lan-zones: no&lt;br /&gt;
&lt;br /&gt;
    # If you configure local-data without specifying local-zone, by&lt;br /&gt;
    # default a transparent local-zone is created for the data.&lt;br /&gt;
    #&lt;br /&gt;
    # You can add locally served data with&lt;br /&gt;
    # local-zone: &amp;quot;local.&amp;quot; static&lt;br /&gt;
    # local-data: &amp;quot;mycomputer.local. IN A 192.0.2.51&amp;quot;&lt;br /&gt;
    # local-data: &#039;mytext.local TXT &amp;quot;content of text record&amp;quot;&#039;&lt;br /&gt;
&lt;br /&gt;
    # request upstream over TLS (with plain DNS inside the TLS stream).&lt;br /&gt;
    # Default is no.  Can be turned on and off with unbound-control.&lt;br /&gt;
    # tls-upstream: no&lt;br /&gt;
&lt;br /&gt;
    # Forward zones&lt;br /&gt;
    # Create entries like below, to make all queries for &#039;example.com&#039; and&lt;br /&gt;
    # &#039;example.org&#039; go to the given list of servers. These servers have to handle&lt;br /&gt;
    # recursion to other nameservers. List zero or more nameservers by hostname&lt;br /&gt;
    # or by ipaddress. Use an entry with name &amp;quot;.&amp;quot; to forward all queries.&lt;br /&gt;
    # If you enable forward-first, it attempts without the forward if it fails.&lt;br /&gt;
    # forward-zone:&lt;br /&gt;
    #    name: &amp;quot;example.com&amp;quot;&lt;br /&gt;
    #    forward-addr: 192.0.2.68&lt;br /&gt;
    #    forward-addr: 192.0.2.73@5355  # forward to port 5355.&lt;br /&gt;
    #    forward-first: no&lt;br /&gt;
    #    forward-tls-upstream: no&lt;br /&gt;
    #    forward-no-cache: no&lt;br /&gt;
    # forward-zone:&lt;br /&gt;
    #    name: &amp;quot;example.org&amp;quot;&lt;br /&gt;
    #    forward-host: fwd.example.com&lt;br /&gt;
&lt;br /&gt;
forward-zone:&lt;br /&gt;
    name: &amp;quot;.&amp;quot;&lt;br /&gt;
    forward-addr: 172.16.32.1@53&lt;br /&gt;
    forward-addr: ::1@53000&lt;br /&gt;
    forward-addr: 127.0.0.1@53000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Blocking Microsoft Telemetry on the network by domain ==&lt;br /&gt;
Microsoft has added telemetry analytics to Windows which you may want to block at a network level. More information about that can be found [https://www.privacytools.io/operating-systems/#win10 here].&lt;br /&gt;
&lt;br /&gt;
This script takes in a list of domains and produces a filter file. We are directing all lookups to &amp;quot;0.0.0.1&amp;quot; which is an invalid IP and should fail immediately, unlike localhost. There are lists of the addresses in various places such as the tools people use to do this locally on Windows, ie [https://github.com/Nummer/Destroy-Windows-10-Spying/blob/master/DWS/DWSResources.cs#L210 Destroy-Windows-10-Spying], [https://github.com/10se1ucgo/DisableWinTracking/blob/master/dwt.py#L333 DisableWinTracking], [https://github.com/W4RH4WK/Debloat-Windows-10/blob/master/scripts/block-telemetry.ps1#L19 Debloat-Windows-10] and [https://github.com/pragmatrix/Dominator/blob/master/Dominator.Windows10/Settings/telemetry.txt Dominator.Windows10]. I have prepared the list further down: [[Linux Router with VPN on a Raspberry Pi#/etc/unbound/filter.conf]].&lt;br /&gt;
&lt;br /&gt;
You could also use this to block advertising, but that&#039;s probably easier to do in a web browser with something like [https://en.wikipedia.org/wiki/uBlock_Origin uBlock Origin].&lt;br /&gt;
&lt;br /&gt;
Another way is to disable this stuff with a group policy see [https://docs.microsoft.com/en-us/windows/privacy/manage-connections-from-windows-operating-system-components-to-microsoft-services Manage connections from Windows operating system components to Microsoft services] only for Windows 10 Enterprise, version 1607 and newer and Windows Server 2016.&lt;br /&gt;
&lt;br /&gt;
=== /etc/unbound/unbound.conf ===&lt;br /&gt;
In your main unbound configuration add&lt;br /&gt;
&amp;lt;pre&amp;gt;include: /etc/unbound/filter.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Script to prepare/sort domains for Unbound  ===&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
##################################################&lt;br /&gt;
# Script taken from http://npr.me.uk/unbound.html&lt;br /&gt;
# Note you need GNU sed&lt;br /&gt;
##################################################&lt;br /&gt;
&lt;br /&gt;
# Remove &amp;quot;#&amp;quot; comments&lt;br /&gt;
# Remove space and tab&lt;br /&gt;
# Remove blank lines&lt;br /&gt;
# Remove localhost and broadcasthost lines&lt;br /&gt;
# Keep just the hosts&lt;br /&gt;
# Remove leading and trailing space and tab (again)&lt;br /&gt;
# Make everything lower case&lt;br /&gt;
&lt;br /&gt;
sed -e &amp;quot;s/#.*//&amp;quot; \&lt;br /&gt;
    -e &amp;quot;s/[ \x09]*$//&amp;quot;\&lt;br /&gt;
    -e &amp;quot;/^$/ d&amp;quot; \&lt;br /&gt;
    -e &amp;quot;/^.*local.*/ d&amp;quot; \&lt;br /&gt;
    -e &amp;quot;/^.*broadcasthost.*/ d&amp;quot; \&lt;br /&gt;
    -e &amp;quot;s/\(^.*\) \([a-zA-Z0-9\.\-]*\)/\2/&amp;quot; \&lt;br /&gt;
    -e &amp;quot;s/^[ \x09]*//;s/[ \x09]*$//&amp;quot; $1 \&lt;br /&gt;
    -e &amp;quot;s/\(.*\)/\L\1/&amp;quot; hosts.txt &amp;gt; temp1.txt&lt;br /&gt;
&lt;br /&gt;
# Remove any duplicate hosts&lt;br /&gt;
&lt;br /&gt;
sort temp1.txt | uniq &amp;gt;temp2.txt&lt;br /&gt;
&lt;br /&gt;
# Remove any hosts starting with &amp;quot;.&amp;quot;&lt;br /&gt;
# Create the two required lines for each host.&lt;br /&gt;
&lt;br /&gt;
sed -e &amp;quot;/^\..*/ d&amp;quot; \&lt;br /&gt;
    -e &amp;quot;s/\(^.*\)/local-zone: \x22\1\x22 redirect\nlocal-data: \x22\1 A 0.0.0.1\x22/&amp;quot; \&lt;br /&gt;
       temp2.txt &amp;gt; filter.conf&lt;br /&gt;
&lt;br /&gt;
# Clean up&lt;br /&gt;
rm temp1.txt&lt;br /&gt;
rm temp2.txt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/unbound/filter.conf ==&lt;br /&gt;
&amp;lt;pre&amp;gt;local-zone: &amp;quot;a-0001.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0001.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0001.dc-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0001.dc-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0002.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0002.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0003.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0003.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0004.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0004.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0005.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0005.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0006.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0006.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0007.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0007.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0008.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0008.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0009.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0009.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0010.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0010.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0011.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0011.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0012.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0012.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a.ads1.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a.ads1.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a.ads2.msads.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a.ads2.msads.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a.ads2.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a.ads2.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ac3.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ac3.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;activity.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;activity.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;adnexus.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;adnexus.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;adnxs.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;adnxs.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ads1.msads.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ads1.msads.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ads1.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ads1.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ads.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ads.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;aidps.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;aidps.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;aka-cdn-ns.adtech.de&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;aka-cdn-ns.adtech.de A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a.rad.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a.rad.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array101-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array101-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array102-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array102-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array103-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array103-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array104-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array104-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array201-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array201-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array202-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array202-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array203-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array203-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array204-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array204-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array401-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array401-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array402-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array402-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array403-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array403-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array404-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array404-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array405-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array405-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array406-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array406-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array407-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array407-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array408-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array408-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ars.smartscreen.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ars.smartscreen.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;az361816.vo.msecnd.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;az361816.vo.msecnd.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;az512334.vo.msecnd.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;az512334.vo.msecnd.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;b.ads1.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;b.ads1.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;b.ads2.msads.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;b.ads2.msads.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bingads.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bingads.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bl3301-a.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bl3301-a.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bl3301-c.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bl3301-c.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bl3301-g.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bl3301-g.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;blob.weather.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;blob.weather.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn1304-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn1304-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn1306-a.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn1306-a.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn1306-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn1306-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn1306-g.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn1306-g.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn2b-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn2b-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn2b-cor002.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn2b-cor002.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn2b-cor003.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn2b-cor003.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn2b-cor004.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn2b-cor004.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn2wns1.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn2wns1.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn3p-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn3p-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn3sch020022328.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn3sch020022328.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;b.rad.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;b.rad.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bs.serving-sys.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bs.serving-sys.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;by3301-a.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;by3301-a.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;by3301-c.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;by3301-c.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;by3301-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;by3301-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;c-0001.dc-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;c-0001.dc-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cache.datamart.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cache.datamart.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;candycrushsoda.king.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;candycrushsoda.king.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;c.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;c.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ca.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ca.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cdn.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cdn.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cdn.content.prod.cms.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cdn.content.prod.cms.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cdn.onenote.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cdn.onenote.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds1204.lon.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds1204.lon.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds1293.lon.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds1293.lon.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds20417.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds20417.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds20431.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds20431.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds20450.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds20450.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds20457.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds20457.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds20475.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds20475.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds21244.lon.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds21244.lon.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds26.ams9.msecn.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds26.ams9.msecn.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds425.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds425.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds459.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds459.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds494.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds494.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds965.lon.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds965.lon.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch1-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch1-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch1-cor002.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch1-cor002.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch3301-c.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch3301-c.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch3301-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch3301-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch3301-g.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch3301-g.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch3302-c.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch3302-c.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch3302-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch3302-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;choice.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;choice.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;choice.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;choice.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;clientconfig.passport.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;clientconfig.passport.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;client-s.gateway.messenger.live.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;client-s.gateway.messenger.live.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;client.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;client.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;c.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;c.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;compatexchange1.trafficmanager.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;compatexchange1.trafficmanager.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;compatexchange.cloudapp.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;compatexchange.cloudapp.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;continuum.dds.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;continuum.dds.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;corpext.msitadfs.glbdns2.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;corpext.msitadfs.glbdns2.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;corp.sts.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;corp.sts.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cp101-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cp101-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cp201-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cp201-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cp401-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cp401-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cs1.wpc.v0cdn.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cs1.wpc.v0cdn.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db3aqu.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db3aqu.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db3wns2011111.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db3wns2011111.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100122.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100122.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100127.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100127.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100831.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100831.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100835.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100835.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100917.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100917.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100925.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100925.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100928.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100928.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100938.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100938.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101001.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101001.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101022.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101022.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101024.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101024.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101031.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101031.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101034.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101034.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101042.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101042.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101044.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101044.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101122.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101122.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101123.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101123.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101125.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101125.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101128.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101128.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101129.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101129.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101133.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101133.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101145.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101145.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101209.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101209.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101221.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101221.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101228.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101228.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101231.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101231.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101237.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101237.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101317.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101317.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101324.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101324.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101329.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101329.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101333.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101333.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101334.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101334.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101338.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101338.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101419.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101419.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101424.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101424.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101426.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101426.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101427.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101427.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101430.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101430.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101445.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101445.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101511.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101511.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101519.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101519.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101529.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101529.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101535.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101535.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101541.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101541.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101543.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101543.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101608.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101608.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101618.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101618.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101629.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101629.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101631.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101631.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101633.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101633.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101640.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101640.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101711.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101711.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101722.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101722.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101739.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101739.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101745.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101745.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101813.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101813.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101820.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101820.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101826.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101826.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101835.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101835.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101837.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101837.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101844.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101844.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101907.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101907.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101914.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101914.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101929.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101929.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101939.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101939.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101941.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101941.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102015.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102015.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102017.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102017.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102019.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102019.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102023.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102023.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102025.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102025.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102032.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102032.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102033.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102033.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110108.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110108.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110109.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110109.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110114.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110114.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110135.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110135.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110142.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110142.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110204.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110204.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110206.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110206.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110214.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110214.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110225.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110225.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110232.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110232.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110245.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110245.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110315.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110315.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110323.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110323.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110325.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110325.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110328.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110328.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110331.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110331.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110341.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110341.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110343.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110343.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110345.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110345.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110403.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110403.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110419.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110419.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110438.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110438.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110442.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110442.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110501.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110501.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110527.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110527.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110533.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110533.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110618.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110618.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110622.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110622.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110624.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110624.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110626.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110626.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110634.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110634.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110705.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110705.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110724.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110724.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110740.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110740.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110810.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110810.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110816.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110816.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110821.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110821.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110822.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110822.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110825.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110825.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110828.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110828.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110835.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110835.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110919.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110919.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110921.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110921.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110923.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110923.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110929.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110929.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103081814.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103081814.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082011.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082011.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082111.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082111.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082308.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082308.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082406.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082406.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082409.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082409.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082609.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082609.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082611.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082611.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082709.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082709.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082712.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082712.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082806.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082806.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090115.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090115.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090415.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090415.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090513.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090513.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090515.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090515.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090608.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090608.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090806.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090806.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090814.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090814.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090906.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090906.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091011.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091011.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091012.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091012.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091106.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091106.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091108.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091108.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091212.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091212.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091311.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091311.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091414.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091414.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091511.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091511.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091617.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091617.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091715.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091715.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091817.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091817.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091908.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091908.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091911.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091911.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092010.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092010.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092108.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092108.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092109.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092109.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092209.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092209.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092210.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092210.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092509.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092509.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100117.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100117.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100121.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100121.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100221.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100221.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100313.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100313.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100314.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100314.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100510.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100510.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100511.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100511.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100611.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100611.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100712.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100712.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101105.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101105.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101208.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101208.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101212.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101212.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101314.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101314.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101411.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101411.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101413.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101413.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101513.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101513.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101610.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101610.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101611.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101611.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101705.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101705.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101711.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101711.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101909.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101909.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101914.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101914.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102009.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102009.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102112.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102112.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102203.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102203.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102209.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102209.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102310.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102310.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102404.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102404.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102609.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102609.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102610.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102610.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102805.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102805.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5wns1d.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5wns1d.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090104.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090104.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090112.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090112.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090116.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090116.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090122.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090122.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090203.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090203.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090206.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090206.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090208.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090208.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090209.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090209.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090211.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090211.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090305.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090305.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090306.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090306.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090308.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090308.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090311.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090311.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090313.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090313.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090410.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090410.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090412.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090412.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090504.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090504.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090510.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090510.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090512.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090512.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090513.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090513.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090514.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090514.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090519.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090519.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090613.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090613.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090619.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090619.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090810.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090810.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090811.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090811.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090902.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090902.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090905.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090905.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090907.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090907.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090908.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090908.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090910.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090910.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090911.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090911.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091003.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091003.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091007.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091007.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091008.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091008.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091009.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091009.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091011.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091011.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091103.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091103.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091105.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091105.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091204.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091204.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091209.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091209.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091305.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091305.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091307.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091307.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091308.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091308.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091309.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091309.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091314.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091314.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091412.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091412.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091503.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091503.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091507.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091507.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091602.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091602.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091603.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091603.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091606.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091606.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091607.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091607.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;deploy.static.akamaitechnologies.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;deploy.static.akamaitechnologies.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;device.auth.xboxlive.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;device.auth.xboxlive.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;dev.virtualearth.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;dev.virtualearth.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;df.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;df.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;diagnostics.support.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;diagnostics.support.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;disc101-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;disc101-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;disc201-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;disc201-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;disc401-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;disc401-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;dmd.metaservices.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;dmd.metaservices.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;dns.msftncsi.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;dns.msftncsi.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ec.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ec.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ecn.dev.virtualearth.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ecn.dev.virtualearth.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;eu.vortex.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;eu.vortex.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;feedback.microsoft-hohm.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;feedback.microsoft-hohm.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;feedback.search.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;feedback.search.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;feedback.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;feedback.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;flex.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;flex.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;fs.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;fs.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;geo-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;geo-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;geover-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;geover-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;g.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;g.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;h1.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;h1.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;h2.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;h2.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i1.services.social.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i1.services.social.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i1.services.social.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i1.services.social.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-bl6p-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-bl6p-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-by3p-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-by3p-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-by3p-cor002.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-by3p-cor002.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-ch1-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-ch1-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-ch1-cor002.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-ch1-cor002.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;img-s-msn-com.akamaized.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;img-s-msn-com.akamaized.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;inference.location.live.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;inference.location.live.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;insiderppe.cloudapp.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;insiderppe.cloudapp.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-sn2-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-sn2-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-sn2-cor002.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-sn2-cor002.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;kv101-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;kv101-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;kv201-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;kv201-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;kv401-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;kv401-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;lb1.www.ms.akadns.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;lb1.www.ms.akadns.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;licensing.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;licensing.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;live.rads.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;live.rads.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ls2web.redmond.corp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ls2web.redmond.corp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;m.adnxs.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;m.adnxs.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;mediaredirect.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;mediaredirect.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;mobile.pipe.aria.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;mobile.pipe.aria.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;msftncsi.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;msftncsi.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;msntest.serving-sys.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;msntest.serving-sys.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;oca.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;oca.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;oca.telemetry.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;oca.telemetry.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;officeclient.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;officeclient.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;oneclient.sfx.ms&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;oneclient.sfx.ms A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;pre.footprintpredict.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;pre.footprintpredict.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;preview.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;preview.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;pti.store.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;pti.store.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;query.prod.cms.rt.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;query.prod.cms.rt.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;rad.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;rad.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;redir.metaservices.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;redir.metaservices.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;register.cdpcs.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;register.cdpcs.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;reports.wes.df.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;reports.wes.df.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;s0.2mdn.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;s0.2mdn.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;schemas.microsoft.akadns.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;schemas.microsoft.akadns.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;search.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;search.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;secure.adnxs.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;secure.adnxs.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;secure.flashtalking.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;secure.flashtalking.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;services.wes.df.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;services.wes.df.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings.data.glbdns2.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings.data.glbdns2.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings-sandbox.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings-sandbox.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings-ssl.xboxlive.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings-ssl.xboxlive.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings-win.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings-win.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings-win-ppe.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings-win-ppe.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sn3301-c.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sn3301-c.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sn3301-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sn3301-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sn3301-g.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sn3301-g.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;so.2mdn.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;so.2mdn.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;spynet2.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;spynet2.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;spynetalt.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;spynetalt.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;spyneteurope.microsoft.akadns.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;spyneteurope.microsoft.akadns.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sqm.df.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sqm.df.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sqm.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sqm.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sqm.telemetry.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sqm.telemetry.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;static.2mdn.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;static.2mdn.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;storecatalogrevocation.storequality.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;storecatalogrevocation.storequality.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;storeedgefd.dsx.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;storeedgefd.dsx.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;store-images.s-microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;store-images.s-microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;support.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;support.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;survey.watson.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;survey.watson.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;t0.ssl.ak.dynamic.tiles.virtualearth.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;t0.ssl.ak.dynamic.tiles.virtualearth.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;t0.ssl.ak.tiles.virtualearth.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;t0.ssl.ak.tiles.virtualearth.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;telecommand.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;telecommand.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;telecommand.telemetry.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;telecommand.telemetry.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;telemetry.appex.bing.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;telemetry.appex.bing.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;telemetry.urs.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;telemetry.urs.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;test.activity.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;test.activity.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;tile-service.weather.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;tile-service.weather.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;time.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;time.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;tk2.plt.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;tk2.plt.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;tsfe.trafficshaping.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;tsfe.trafficshaping.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;urs.smartscreen.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;urs.smartscreen.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;v10.vortex-win.data.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;v10.vortex-win.data.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;v10.vortex-win.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;v10.vortex-win.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;version.hybrid.api.here.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;version.hybrid.api.here.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;view.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;view.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-bn2.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-bn2.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-cy2.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-cy2.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex.data.glbdns2.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex.data.glbdns2.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex.data.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex.data.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-db5.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-db5.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-hk2.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-hk2.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-sandbox.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-sandbox.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-win.data.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-win.data.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-win.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-win.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;watson.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;watson.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;watson.ppe.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;watson.ppe.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;watson.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;watson.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;watson.telemetry.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;watson.telemetry.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;wdcpalt.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;wdcpalt.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;wdcp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;wdcp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;web.vortex.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;web.vortex.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;wes.df.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;wes.df.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;win10.ipv6.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;win10.ipv6.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;win10-trt.msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;win10-trt.msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;win1710.ipv6.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;win1710.ipv6.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;wscont.apps.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;wscont.apps.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;www.msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;www.msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;www.msftconnecttest.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;www.msftconnecttest.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;www.msftncsi.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;www.msftncsi.com A 0.0.0.1&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DNSCrypt ==&lt;br /&gt;
You can test that you&#039;re not getting DNS leaks by using [https://www.dnsleaktest.com dnsleak.com] or this one from [https://www.grc.com/dns/dns.htm GRC]. Providers like CloudFlare and Google (1.1.1.1, 8.8.8.8) use [https://en.wikipedia.org/wiki/Anycast anycast] which should be pointing to a server located to where your VPN exits.&lt;br /&gt;
&lt;br /&gt;
=== /etc/dnscrypt-proxy/dnscrypt-proxy.toml ===&lt;br /&gt;
Using the sample dnscrypt config is fine, you will need to make these changes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;listen_addresses = [&#039;127.0.0.1:53000&#039;, &#039;[::1]:53000&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Add policy route for dnscrypt over VPN ==&lt;br /&gt;
&lt;br /&gt;
Add a [https://en.wikipedia.org/wiki/Policy-based_routing policy based route] based on the uid of the dnscrypt user. On Alpine Linux dnscrypt-proxy runs as a specific user so check /etc/passwd&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;dnscrypt:x:103:104:dnscrypt:/var/empty:/sbin/nologin&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example the dnscrypt user has the uid 103.&lt;br /&gt;
&lt;br /&gt;
{{Warning|Make sure you check the uid of your dnscrypt user and don&#039;t just copy the one here!}}&lt;br /&gt;
&lt;br /&gt;
Add this to [https://wiki.alpinelinux.org/wiki/Linux_Router_with_VPN_on_a_Raspberry_Pi#.2Fetc.2Fnetwork.2Ffwmark_rules fwmark_rules] eg:&lt;br /&gt;
&lt;br /&gt;
=== /etc/network/fwmark_rules ===&lt;br /&gt;
&amp;lt;pre&amp;gt;# Route DNSCrypt user through the VPN table&lt;br /&gt;
/sbin/ip rule add uidrange 103-103 table VPN prio 200&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{cmd|rc-update add unbound default}}&lt;br /&gt;
{{cmd|rc-update add dnscrypt-proxy default}}&lt;br /&gt;
&lt;br /&gt;
= Random number generation =&lt;br /&gt;
There are two ways to assist with random number generation [[Entropy and randomness]]. This can be particularly useful if you&#039;re generating your own Diffie-Hellman nonce file, used in the [[FreeRadius EAP-TLS configuration]] section. Or for that matter any process which requires lots of random number generation such as generating certificates or public private keys.&lt;br /&gt;
&lt;br /&gt;
== Haveged ==&lt;br /&gt;
[http://www.issihosts.com/haveged Haveged] is a great way to improve random number generation speed. It uses the unpredictable random number generator based upon an adaptation of the [http://www.irisa.fr/caps/projects/hipsor/ HAVEGE] algorithm.&lt;br /&gt;
&lt;br /&gt;
Install haveged:&lt;br /&gt;
{{cmd|apk add haveged}}&lt;br /&gt;
&lt;br /&gt;
Start haveged service:&lt;br /&gt;
{{cmd|service haveged start}}&lt;br /&gt;
&lt;br /&gt;
Add service to boot&lt;br /&gt;
{{cmd|rc-update add haveged default}}&lt;br /&gt;
&lt;br /&gt;
Start rngd service:&lt;br /&gt;
{{cmd|service haveged start}}&lt;br /&gt;
&lt;br /&gt;
Add service to boot:&lt;br /&gt;
{{cmd|rc-update add haveged default}}&lt;br /&gt;
&lt;br /&gt;
== rng-tools with bcm2708-rng ==&lt;br /&gt;
&lt;br /&gt;
=== Pre Alpine Linux 3.8 (which includes rngd 5) ===&lt;br /&gt;
All Raspberry Pis come with the bcm2708-rng random number generator on board. If you are doing this project on a Raspberry Pi then you may choose to use this also.&lt;br /&gt;
&lt;br /&gt;
Add the kernel module to /etc/modules:&lt;br /&gt;
{{cmd|echo &amp;quot;bcm2708-rng&amp;quot; &amp;gt; /etc/modules}}&lt;br /&gt;
&lt;br /&gt;
Insert module:&lt;br /&gt;
{{cmd|modprobe bcm2708-rng}}&lt;br /&gt;
&lt;br /&gt;
Install rng-tools:&lt;br /&gt;
{{cmd|apk add rng-tools}}&lt;br /&gt;
&lt;br /&gt;
Set the random device (/dev/random) and rng device (/dev/hwrng) in /etc/conf.d/rngd&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;RNGD_OPTS=&amp;quot;--no-drng=1 --no-tpm=1 -o /dev/random -r /dev/hwrng&amp;quot;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== Post Alpine Linux 3.8 (which includes rngd 6) ===&lt;br /&gt;
&lt;br /&gt;
With AlpineLinux 3.8 you don&#039;t have to insert the module as it is already built in the kernel.&lt;br /&gt;
&lt;br /&gt;
Additionally the syntax has changed for rngd so for /etc/conf.d/rngd you&#039;ll need&lt;br /&gt;
&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;RNGD_OPTS=&amp;quot;-x1 -o /dev/random -r /dev/hwrng&amp;quot;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Start rngd service:&lt;br /&gt;
{{cmd|service rngd start}}&lt;br /&gt;
&lt;br /&gt;
Add service to boot:&lt;br /&gt;
{{cmd|rc-update add rngd default}}&lt;br /&gt;
&lt;br /&gt;
You can test it with:&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;cat /dev/hwrng | rngtest -c 1000&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
You should see something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rngtest 5&lt;br /&gt;
Copyright (c) 2004 by Henrique de Moraes Holschuh&lt;br /&gt;
This is free software; see the source for copying conditions.  There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&lt;br /&gt;
&lt;br /&gt;
rngtest: starting FIPS tests...&lt;br /&gt;
rngtest: bits received from input: 20000032&lt;br /&gt;
rngtest: FIPS 140-2 successes: 1000&lt;br /&gt;
rngtest: FIPS 140-2 failures: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Monobit: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Poker: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Runs: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Long run: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Continuous run: 0&lt;br /&gt;
rngtest: input channel speed: (min=117.709; avg=808.831; max=3255208.333)Kibits/s&lt;br /&gt;
rngtest: FIPS tests speed: (min=17.199; avg=22.207; max=22.653)Mibits/s&lt;br /&gt;
rngtest: Program run time: 25178079 microseconds&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s possible you might have a some failures. That&#039;s okay, two runs I did previously had a failure each.&lt;br /&gt;
&lt;br /&gt;
= WiFi 802.1x EAP and FreeRadius =&lt;br /&gt;
A more secure way than using pre-shared keys (WPA2) is to use [https://en.wikipedia.org/wiki/Extensible_Authentication_Protocol#EAP-TLS EAP-TLS] and use separate certificates for each device. See [[FreeRadius EAP-TLS configuration]]&lt;br /&gt;
&lt;br /&gt;
= VPN Tunnel on specific subnet =&lt;br /&gt;
As mentioned earlier in this article it might be useful to have a VPN subnet and a non-VPN subnet. Typically gaming consoles or computers might want low-latency connections. For this exercise we use fwmark.&lt;br /&gt;
&lt;br /&gt;
We expand the network to look like this:&lt;br /&gt;
&lt;br /&gt;
[[File:Network diagram ipv4 tunnel.svg|900px|center|Network Diagram with IPv4 tunnel]]&lt;br /&gt;
&lt;br /&gt;
Install the necessary packages:&lt;br /&gt;
{{cmd|apk add openvpn iproute2 iputils}}&lt;br /&gt;
&lt;br /&gt;
== /etc/modules ==&lt;br /&gt;
You&#039;ll want to add the tun module&lt;br /&gt;
&amp;lt;pre&amp;gt;tun&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/iproute2/rt_tables ==&lt;br /&gt;
Add the two routing tables to the bottom of rt_tables. It should look something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;#&lt;br /&gt;
# reserved values&lt;br /&gt;
#&lt;br /&gt;
255	local&lt;br /&gt;
254	main&lt;br /&gt;
253	default&lt;br /&gt;
0	unspec&lt;br /&gt;
#&lt;br /&gt;
# local&lt;br /&gt;
#&lt;br /&gt;
#1	inr.ruhep&lt;br /&gt;
1 ISP&lt;br /&gt;
2 VPN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/interfaces ==&lt;br /&gt;
Next up add the virtual interface (really just a IP address to eth0) eth0:2, just under eth0 will do.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Route to VPN subnet&lt;br /&gt;
auto eth0:2&lt;br /&gt;
iface eth0:2 inet static&lt;br /&gt;
  address 192.168.2.1&lt;br /&gt;
  netmask 255.255.255.0&lt;br /&gt;
  broadcast 192.168.2.255&lt;br /&gt;
  post-up /etc/network/fwmark_rules&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/sysctl.d/local.conf ==&lt;br /&gt;
If you want to use fwmark rules you need to change this setting. It causes the router to still do source validation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Needed to use fwmark&lt;br /&gt;
net.ipv4.conf.all.rp_filter = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fwmark won&#039;t work if you have this set to 1.&lt;br /&gt;
&lt;br /&gt;
== /etc/network/fwmark_rules ==&lt;br /&gt;
In this file we want to put the fwmark rules and set the correct priorities.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Normal packets to go direct out WAN&lt;br /&gt;
/sbin/ip rule add fwmark 1 table ISP prio 100&lt;br /&gt;
&lt;br /&gt;
# Put packets destined into VPN when VPN is up&lt;br /&gt;
/sbin/ip rule add fwmark 2 table VPN prio 200&lt;br /&gt;
&lt;br /&gt;
# Prevent packets from being routed out when VPN is down.&lt;br /&gt;
# This prevents packets from falling back to the main table&lt;br /&gt;
# that has a priority of 32766&lt;br /&gt;
/sbin/ip rule add prohibit fwmark 2 prio 300&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/ppp/ip-up ==&lt;br /&gt;
Next up we want to create the routes that should be run when PPP comes online. There are special hooks we can use in ip-up and ip-down to refer to the IP address, [https://ppp.samba.org/pppd.html#sect13 ppp man file - Scripts ] You can also read about them in your man file if you have ppp-doc installed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by pppd when there&#039;s a successful ppp connection.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Flush out any old rules that might be there&lt;br /&gt;
/sbin/ip route flush table ISP&lt;br /&gt;
&lt;br /&gt;
# Add route to table from subnets on LAN&lt;br /&gt;
/sbin/ip route add 192.168.1.0/24 dev eth0 table ISP&lt;br /&gt;
/sbin/ip route add 192.168.2.0/24 dev eth0 table ISP&lt;br /&gt;
&lt;br /&gt;
# Add route from IP given by ISP to the table&lt;br /&gt;
/sbin/ip rule add from ${IPREMOTE} table ISP prio 100&lt;br /&gt;
&lt;br /&gt;
# Add a default route&lt;br /&gt;
/sbin/ip route add table ISP default via ${IPREMOTE} dev ${IFNAME}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/ppp/ip-down ==&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by pppd after the connection has ended.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Delete the rules when we take the interface down&lt;br /&gt;
/sbin/ip rule del from ${IPREMOTE} table ISP prio 100&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/openvpn/route-up-fwmark.sh ==&lt;br /&gt;
OpenVPN needs similar routing scripts and it also has it&#039;s own special hooks that allow you to specify particular values. A full list is here [https://openvpn.net/index.php/open-source/documentation/manuals/65-openvpn-20x-manpage.html#lbAS OpenVPN man file - Environmental Variables]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by OpenVPN when there&#039;s a successful VPN connection.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Flush out any old rules that might be there&lt;br /&gt;
/sbin/ip route flush table VPN&lt;br /&gt;
&lt;br /&gt;
# Add route to table from 192.168.2.0/24 subnet on LAN&lt;br /&gt;
/sbin/ip route add 192.168.2.0/24 dev eth0 table VPN&lt;br /&gt;
&lt;br /&gt;
# Add route from VPN interface IP to the VPN table&lt;br /&gt;
/sbin/ip rule add from ${ifconfig_local} table VPN prio 200&lt;br /&gt;
&lt;br /&gt;
# Add a default route&lt;br /&gt;
/sbin/ip route add default via ${ifconfig_local} dev ${dev} table VPN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/openvpn/route-pre-down-fwmark.sh ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by OpenVPN after the connection has ended&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Delete the rules when we take the interface down&lt;br /&gt;
/sbin/ip rule del from ${ifconfig_local} table VPN prio 200&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What I did find was when starting and stopping the OpenVPN service if you used:&lt;br /&gt;
&lt;br /&gt;
{{cmd|service openvpn stop}}&lt;br /&gt;
&lt;br /&gt;
The rules in route-pre-down-fwmark.sh were not executed.&lt;br /&gt;
&lt;br /&gt;
However:&lt;br /&gt;
&lt;br /&gt;
{{cmd|/etc/init.d/openvpn stop}}&lt;br /&gt;
&lt;br /&gt;
seemed to work correctly.&lt;br /&gt;
&lt;br /&gt;
== Advanced IPtables rules that allow us to route into our two routing tables ==&lt;br /&gt;
This is an expansion of the previous set of rules. It sets up NAT masquerading for the 192.168.2.0 to go through the VPN using marked packets.&lt;br /&gt;
&lt;br /&gt;
I used these guides to write complete this: &lt;br /&gt;
&lt;br /&gt;
* [http://nerdboys.com/2006/05/05/conning-the-mark-multiwan-connections-using-iptables-mark-connmark-and-iproute2 Conning the Mark: Multiwan connections using IPTables, MARK, CONNMARK and iproute2 ]&lt;br /&gt;
* [http://nerdboys.com/2006/05/08/multiwan-connections-addendum Multiwan connections addendum]&lt;br /&gt;
* [http://inai.de/images/nf-packet-flow.png Netfilter packet flow]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#########################################################################&lt;br /&gt;
# Advanced routing rule set&lt;br /&gt;
# Uses 192.168.1.0 via ISP&lt;br /&gt;
#      192.168.2.0 via VPN&lt;br /&gt;
#&lt;br /&gt;
# Packets to/from 192.168.1.0/24 are marked with 0x1 and routed to ISP&lt;br /&gt;
# Packets to/from 192.168.2.0/24 are marked with 0x2 and routed to VPN&lt;br /&gt;
#&lt;br /&gt;
#########################################################################&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# NAT Table&lt;br /&gt;
# This is where translation of packets happens and &amp;quot;forwarding&amp;quot; of ports&lt;br /&gt;
# to specific hosts.&lt;br /&gt;
#&lt;br /&gt;
*nat&lt;br /&gt;
&lt;br /&gt;
# Set default policies for table&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Port forwarding for Bittorrent&lt;br /&gt;
-A PREROUTING -i tun0 -p tcp -m tcp --dport 6881:6889 -j DNAT --to-destination 192.168.2.20&lt;br /&gt;
-A PREROUTING -i tun0 -p udp -m udp --dport 6881:6889 -j DNAT --to-destination 192.168.2.20&lt;br /&gt;
&lt;br /&gt;
# Allows routing to our modem subnet so we can access the web interface&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
-A POSTROUTING -s 192.168.2.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the VPN tunnel&lt;br /&gt;
-A POSTROUTING -o tun0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the PPP tunnel&lt;br /&gt;
-A POSTROUTING -o ppp0 -j MASQUERADE&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Filter Table&lt;br /&gt;
# This is where we decide to ACCEPT, DROP or REJECT things&lt;br /&gt;
#&lt;br /&gt;
*filter&lt;br /&gt;
:INPUT DROP [0:0]&lt;br /&gt;
:FORWARD DROP [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for forwarding packets&lt;br /&gt;
:FWD_ETH0 - [0:0]&lt;br /&gt;
:FWD_ETH1 - [0:0]&lt;br /&gt;
:FWD_PPP0 - [0:0]&lt;br /&gt;
:FWD_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for input packets (for host itself)&lt;br /&gt;
:IN_ETH0 - [0:0]&lt;br /&gt;
:IN_ETH1 - [0:0]&lt;br /&gt;
:IN_PPP0 - [0:0]&lt;br /&gt;
:IN_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a log drop chain&lt;br /&gt;
:LOG_DROP - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a reject chain&lt;br /&gt;
:LOG_REJECT - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Pass input packet to corresponding rule chain&lt;br /&gt;
-A INPUT -i lo -j ACCEPT&lt;br /&gt;
-A INPUT -i eth0 -j IN_ETH0&lt;br /&gt;
-A INPUT -i eth1 -j IN_ETH1&lt;br /&gt;
-A INPUT -i ppp0 -j IN_PPP0&lt;br /&gt;
-A INPUT -i tun0 -j IN_TUN0&lt;br /&gt;
&lt;br /&gt;
# Track forwarded packets&lt;br /&gt;
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass forwarded packet to corresponding rule chain&lt;br /&gt;
-A FORWARD -i eth0 -j FWD_ETH0&lt;br /&gt;
-A FORWARD -i eth1 -j FWD_ETH1&lt;br /&gt;
-A FORWARD -i ppp0 -j FWD_PPP0&lt;br /&gt;
-A FORWARD -i tun0 -j FWD_TUN0&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to ISP&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to VPN&lt;br /&gt;
-A FWD_ETH0 -s 192.168.2.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow excepted server to be FORWARD to ppp0&lt;br /&gt;
#-A FWD_ETH0 -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -o ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward SSH packets from network to modem&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.1.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.2.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward HTTP packets from network to modem&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.1.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.2.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward Bittorrent Port to workstation&lt;br /&gt;
-A FWD_TUN0 -d 192.168.2.20/32 -p tcp -m tcp --dport 6881:6889 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_TUN0 -d 192.168.2.20/32 -p udp -m udp --dport 6881:6889 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# DNS to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# FreeRadius Client (eg a UniFi AP)&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Ubiquiti UAP Device Discovery Broadcast&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 10001 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# NTP to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept traffic to router on both subnets&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow excepted server to be INPUT to eth0 from LAN&lt;br /&gt;
#-A IN_ETH0 -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -o ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# HTTP To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked PPP0 connection&lt;br /&gt;
-A IN_PPP0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on PPP0&lt;br /&gt;
-A IN_PPP0 -j LOG --log-prefix &amp;quot;DROP:INPUT &amp;quot; --log-level 6&lt;br /&gt;
-A IN_PPP0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked TUN0 connection&lt;br /&gt;
-A IN_TUN0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on TUN0&lt;br /&gt;
-A IN_TUN0 -j LOG --log-prefix &amp;quot;DROP:INPUT &amp;quot; --log-level 6&lt;br /&gt;
-A IN_TUN0 -j LOG_DROP&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mangle Table&lt;br /&gt;
# This is the place where our markings happen, whether they be 0x1 or 0x2&lt;br /&gt;
#&lt;br /&gt;
*mangle&lt;br /&gt;
&lt;br /&gt;
# Set default policies for table&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:FORWARD ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Restore CONNMARK to the MARK (If one doesn&#039;t exist then no mark is set)&lt;br /&gt;
-A PREROUTING -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff&lt;br /&gt;
&lt;br /&gt;
# If packet MARK is 2, then it means there is already a connection mark and the&lt;br /&gt;
# original packet came in on VPN&lt;br /&gt;
-A PREROUTING -s 192.168.2.0/24 -m mark --mark 0x2 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Check exception (this is a server which when accessed on a 192.168.2.0/24 address will go out the ISP table) are 0x1&lt;br /&gt;
#-A PREROUTING -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -m mark --mark 0x1 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Mark packets coming from 192.168.2.0/24 are 0x2&lt;br /&gt;
-A PREROUTING -s 192.168.2.0/24 -j MARK --set-xmark 0x2/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# If packet MARK is 1, then it means there is already a connection mark and the&lt;br /&gt;
# original packet came in on ISP&lt;br /&gt;
-A PREROUTING -s 192.168.1.0/24 -m mark --mark 0x1 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Mark packets 192.168.1.0/24 are 0x1&lt;br /&gt;
-A PREROUTING -s 192.168.1.0/24 -j MARK --set-xmark 0x1/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Mark exception (this is a server which when accessed on a 192.168.2.0/24 address will go out the ISP table) as 0x1&lt;br /&gt;
#-A PREROUTING -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -j MARK --set-xmark 0x1/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Set mark to 0 - This is for the modem. Otherwise it will mark with 0x1 or 0x2&lt;br /&gt;
-A PREROUTING -d 192.168.0.1/32 -j MARK --set-xmark 0x0/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Save MARK to CONNMARK (remember iproute can&#039;t see CONNMARKs)&lt;br /&gt;
-A PREROUTING -j CONNMARK --save-mark --nfmask 0xffffffff --ctmask 0xffffffff&lt;br /&gt;
COMMIT&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may want to delete certain rules here that do not apply to you, eg the FreeRadius rules. That is covered later in this article.&lt;br /&gt;
&lt;br /&gt;
== OpenVPN Routing ==&lt;br /&gt;
Usually when you connect with OpenVPN the remote VPN server will push routes down to your system. We don&#039;t want this as we still want to be able to access the internet without the VPN. We have also created our own routes that we want to use earlier in this guide.&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need to add this to the bottom of your OpenVPN configuration file:&lt;br /&gt;
&amp;lt;pre&amp;gt;# Prevents default gateway from being set on the default routing table&lt;br /&gt;
route-noexec&lt;br /&gt;
&lt;br /&gt;
# Allows route-up script to be executed&lt;br /&gt;
script-security 2&lt;br /&gt;
&lt;br /&gt;
# Calls custom shell script after connection to add necessary routes&lt;br /&gt;
route-up /etc/openvpn/route-up-fwmark.sh&lt;br /&gt;
route-pre-down /etc/openvpn/route-pre-down-fwmark.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
My VPNs are arranged like this in /etc/openvpn:&lt;br /&gt;
&lt;br /&gt;
OpenVPN configuration file for that server:&lt;br /&gt;
&amp;lt;pre&amp;gt;countrycode.serverNumber.openvpn.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenVPN certs for that server:&lt;br /&gt;
&amp;lt;pre&amp;gt;countrycode.serverNumber.openvpn/countrycode.serverNumber.openvpn.crt&lt;br /&gt;
countrycode.serverNumber.openvpn/countrycode.serverNumber.openvpn.key&lt;br /&gt;
countrycode.serverNumber.openvpn/myKey.crt&lt;br /&gt;
countrycode.serverNumber.openvpn/myKey.key&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So I use this helpful script to automate the process of changing between servers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
vpn_server_filename=$1&lt;br /&gt;
&lt;br /&gt;
rm /etc/openvpn/openvpn.conf&lt;br /&gt;
ln -s $vpn_server_filename /etc/openvpn/openvpn.conf&lt;br /&gt;
chown -R openvpn:openvpn /etc/openvpn&lt;br /&gt;
chmod -R a=-rwx,u=+rX /etc/openvpn&lt;br /&gt;
chmod u=x /etc/openvpn/*.sh*&lt;br /&gt;
&lt;br /&gt;
if grep -Fxq &amp;quot;#CustomStuffHere&amp;quot; openvpn.conf&lt;br /&gt;
then&lt;br /&gt;
    echo &amp;quot;Not adding custom routes, this server has been used previously&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Adding custom route rules&amp;quot;&lt;br /&gt;
cat &amp;lt;&amp;lt;EOF &amp;gt;&amp;gt; /etc/openvpn/openvpn.conf&lt;br /&gt;
&lt;br /&gt;
#CustomStuffHere&lt;br /&gt;
# Prevents default gateway from being set on the default routing table&lt;br /&gt;
route-noexec&lt;br /&gt;
&lt;br /&gt;
# Allows route-up script to be executed&lt;br /&gt;
script-security 2&lt;br /&gt;
&lt;br /&gt;
# Calls custom shell script after connection to add necessary routes&lt;br /&gt;
route-up /etc/openvpn/route-up-fwmark.sh&lt;br /&gt;
route-pre-down /etc/openvpn/route-pre-down-fwmark.sh&lt;br /&gt;
&lt;br /&gt;
# Logging of OpenVPN to file&lt;br /&gt;
#log /etc/openvpn/openvpn.log&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
fi&lt;br /&gt;
echo &amp;quot;Remember to set BitTorrent port forward in VPN control panel&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That way I can simply change between servers by running:&lt;br /&gt;
{{cmd|changevpn.sh countrycode.serverNumber.openvpn}}&lt;br /&gt;
&lt;br /&gt;
and then restart openvpn. I am also reminded to put the port forward through on the VPN control panel so my BitTorrent client is connectable:&lt;br /&gt;
&lt;br /&gt;
{{cmd|service openvpn restart}}&lt;br /&gt;
&lt;br /&gt;
Finally add openvpn to the default run level&lt;br /&gt;
{{cmd|rc-update add openvpn default}}&lt;br /&gt;
&lt;br /&gt;
= Creating a LAN only Subnet =&lt;br /&gt;
In this section, we&#039;ll be creating a LAN only subnet. This subnet will be 192.168.3.0/24. The idea of this subnet is nodes in it cannot have their packets forwarded to the Internet, however they can be accessed via the other LAN subnets 192.168.1.0/24 and 192.168.2.0/24. This approach doesn&#039;t use VLANs although that would be recommended if you had a managed switch. The idea of this subnet is for things like WiFi access points, IP Phones which contact a local Asterisk server and of course printers.&lt;br /&gt;
&lt;br /&gt;
At the end of this section we will have something like:&lt;br /&gt;
&lt;br /&gt;
[[File:Network diagram ipv4 tunnel LANONLY ROUTE.svg|900px|center|Network Diagram LAN ONLY Route with IPv4]]&lt;br /&gt;
&lt;br /&gt;
== /etc/iproute2/rt_tables ==&lt;br /&gt;
First up we&#039;ll add a third routing table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;3 LAN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/interfaces ==&lt;br /&gt;
Add a an extra virtual interface (really just a IP address to eth0).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# LAN Only&lt;br /&gt;
auto eth0:3&lt;br /&gt;
iface eth0:3 inet static&lt;br /&gt;
  address 192.168.3.1&lt;br /&gt;
  netmask 255.255.255.0&lt;br /&gt;
  broadcast 192.168.3.255&lt;br /&gt;
  post-up /etc/network/route_LAN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/route_LAN ==&lt;br /&gt;
This file will have our route added to it&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Add routes from ISP to LAN&lt;br /&gt;
/sbin/ip route add 192.168.1.0/24 dev eth0 table LAN&lt;br /&gt;
&lt;br /&gt;
# Add route from VPN to LAN&lt;br /&gt;
/sbin/ip route add 192.168.2.0/24 dev eth0 table LAN&lt;br /&gt;
&lt;br /&gt;
# Add route from LAN to it&#039;s own table&lt;br /&gt;
/sbin/ip route add 192.168.3.0/24 dev eth0 table LAN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/ppp/ip-up ==&lt;br /&gt;
Append a route from the LAN subnet to the ISP table&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Add route to LAN subnet&lt;br /&gt;
/sbin/ip route add 192.168.3.0/24 dev eth0 table ISP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/openvpn/route-up-fwmark.sh ==&lt;br /&gt;
Append a route from the LAN subnet to the VPN table&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Add route to LAN only subnet&lt;br /&gt;
/sbin/ip route add 192.168.3.0/24 dev eth0 table VPN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/ntpd.conf ==&lt;br /&gt;
Add a listen address for ntp (OpenNTPD).&lt;br /&gt;
&lt;br /&gt;
You should now have:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Addresses to listen on (ntpd does not listen by default)&lt;br /&gt;
listen on 192.168.1.1&lt;br /&gt;
listen on 192.168.2.1&lt;br /&gt;
listen on 192.168.3.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Devices needing the correct time will need to use this NTP server because they will not be able to get it from the Internet.&lt;br /&gt;
&lt;br /&gt;
== Blocking bogons ==&lt;br /&gt;
Our LAN now has 4 subnets in total that are possible:&lt;br /&gt;
&lt;br /&gt;
* 192.168.0.0/30 (connection between modem and router)&lt;br /&gt;
* 192.168.1.0/24 (ISP table, directly routed out WAN)&lt;br /&gt;
* 192.168.2.0/24 (VPN table, routed out VPN)&lt;br /&gt;
* 192.168.3.0/24 (Null routed subnet for LAN only hosts)&lt;br /&gt;
* 172.16.32.0/20 (VPN provider&#039;s network, so we can access things on the VPN&#039;s network).&lt;br /&gt;
&lt;br /&gt;
Everything else should be rejected. No packets should ever be forwarded on 192.168.5.2 or 10.0.0.5 for example.&lt;br /&gt;
&lt;br /&gt;
=== Installing ipset ===&lt;br /&gt;
Install ipset:&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add ipset}}&lt;br /&gt;
&lt;br /&gt;
Add it to start up:&lt;br /&gt;
{{cmd|rc-update add ipset default}}&lt;br /&gt;
&lt;br /&gt;
Now we need to load the lists of addresses into ipset [http://blog.ls20.com/securing-your-server-using-ipset-and-dynamic-blocklists Securing Your Server using IPset and Dynamic Blocklists] mentions a [https://gist.github.com/hwdsl2/6dce75072274abfd2781 script] which was particularly useful. This script could be run on a cron job if you wanted to regularly update it and for the full bogon list you should as they change when that address space has been allocated.&lt;br /&gt;
&lt;br /&gt;
For the purpose of this we will be using just the [https://files.pfsense.org/lists/bogon-bn-nonagg.txt bogon-bn-nonagg.txt] list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;0.0.0.0/8&lt;br /&gt;
10.0.0.0/8&lt;br /&gt;
100.64.0.0/10&lt;br /&gt;
127.0.0.0/8&lt;br /&gt;
169.254.0.0/16&lt;br /&gt;
172.16.0.0/12&lt;br /&gt;
192.0.0.0/24&lt;br /&gt;
192.0.2.0/24&lt;br /&gt;
192.168.0.0/16&lt;br /&gt;
198.18.0.0/15&lt;br /&gt;
198.51.100.0/24&lt;br /&gt;
203.0.113.0/24&lt;br /&gt;
224.0.0.0/4&lt;br /&gt;
240.0.0.0/4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is unlikely to change as it&#039;s the IPV4 [https://en.wikipedia.org/wiki/Reserved_IP_addresses Reserved IP addresses] space. The script: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#! /bin/bash&lt;br /&gt;
&lt;br /&gt;
# /usr/local/sbin/fullbogons-ipv4&lt;br /&gt;
# BoneKracker&lt;br /&gt;
# Rev. 11 October 2012&lt;br /&gt;
# Tested with ipset 6.13&lt;br /&gt;
&lt;br /&gt;
# Purpose: Periodically update an ipset used in a running firewall to block&lt;br /&gt;
# bogons. Bogons are addresses that nobody should be using on the public&lt;br /&gt;
# Internet because they are either private, not to be assigned, or have&lt;br /&gt;
# not yet been assigned.&lt;br /&gt;
#&lt;br /&gt;
# Notes: Call this from crontab. Feed updated every 4 hours.&lt;br /&gt;
&lt;br /&gt;
# target=&amp;quot;http://www.team-cymru.org/Services/Bogons/fullbogons-ipv4.txt&amp;quot;&lt;br /&gt;
# Use alternative URL from pfSense, due to 404 error with URL above&lt;br /&gt;
target=&amp;quot;https://files.pfsense.org/lists/bogon-bn-nonagg.txt&amp;quot;&lt;br /&gt;
ipset_params=&amp;quot;hash:net&amp;quot;&lt;br /&gt;
&lt;br /&gt;
filename=$(basename ${target})&lt;br /&gt;
firewall_ipset=${filename%.*}           # ipset will be filename minus ext&lt;br /&gt;
data_dir=&amp;quot;/var/tmp/${firewall_ipset}&amp;quot;   # data directory will be same&lt;br /&gt;
data_file=&amp;quot;${data_dir}/${filename}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# if data directory does not exist, create it&lt;br /&gt;
mkdir -pm 0750 ${data_dir}&lt;br /&gt;
&lt;br /&gt;
# function to get modification time of the file in log-friendly format&lt;br /&gt;
get_timestamp() {&lt;br /&gt;
    date -r $1 +%m/%d&#039; &#039;%R&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# file modification time on server is preserved during wget download&lt;br /&gt;
[ -w ${data_file} ] &amp;amp;&amp;amp; old_timestamp=$(get_timestamp ${data_file})&lt;br /&gt;
&lt;br /&gt;
# fetch file only if newer than the version we already have&lt;br /&gt;
wget -qNP ${data_dir} ${target}&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$?&amp;quot; -ne &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
    logger -p cron.err &amp;quot;IPSet: ${firewall_ipset} wget failed.&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
timestamp=$(get_timestamp ${data_file})&lt;br /&gt;
&lt;br /&gt;
# compare timestamps because wget returns success even if no newer file&lt;br /&gt;
if [ &amp;quot;${timestamp}&amp;quot; != &amp;quot;${old_timestamp}&amp;quot; ]; then&lt;br /&gt;
&lt;br /&gt;
    temp_ipset=&amp;quot;${firewall_ipset}_temp&amp;quot;&lt;br /&gt;
    ipset create ${temp_ipset} ${ipset_params}&lt;br /&gt;
&lt;br /&gt;
    #sed -i &#039;/^#/d&#039; ${data_file}            # strip comments&lt;br /&gt;
    sed -ri &#039;/^[#&amp;lt; \t]|^$/d&#039; ${data_file}   # occasionally the file has been xhtml&lt;br /&gt;
&lt;br /&gt;
    while read network; do&lt;br /&gt;
        ipset add ${temp_ipset} ${network}&lt;br /&gt;
    done &amp;lt; ${data_file}&lt;br /&gt;
&lt;br /&gt;
    # if ipset does not exist, create it&lt;br /&gt;
    ipset create -exist ${firewall_ipset} ${ipset_params}&lt;br /&gt;
&lt;br /&gt;
    # swap the temp ipset for the live one&lt;br /&gt;
    ipset swap ${temp_ipset} ${firewall_ipset}&lt;br /&gt;
    ipset destroy ${temp_ipset}&lt;br /&gt;
&lt;br /&gt;
    # log the file modification time for use in minimizing lag in cron schedule&lt;br /&gt;
    logger -p cron.notice &amp;quot;IPSet: ${firewall_ipset} updated (as of: ${timestamp}).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
fi&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you should see the list loaded into memory when you do:&lt;br /&gt;
&lt;br /&gt;
{{cmd|ipset list}}&lt;br /&gt;
&lt;br /&gt;
We want to save it so our router can refer to it next time it starts up so for that:&lt;br /&gt;
&lt;br /&gt;
{{cmd|/etc/init.d/ipset save}}&lt;br /&gt;
&lt;br /&gt;
=== Adding our allowed networks ===&lt;br /&gt;
&lt;br /&gt;
==== IPv4 ====&lt;br /&gt;
{{cmd|ipset create allowed-nets-ipv4 hash:net,iface family inet}}&lt;br /&gt;
&lt;br /&gt;
Then you can add each of your allowed networks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ipset add allowed-nets-ipv4 192.168.0.0/30,eth1&lt;br /&gt;
ipset add allowed-nets-ipv4 192.168.1.0/24,eth0&lt;br /&gt;
ipset add allowed-nets-ipv4 192.168.2.0/24,eth0&lt;br /&gt;
ipset add allowed-nets-ipv4 192.168.3.0/24,eth0&lt;br /&gt;
ipset add allowed-nets-ipv4 127.0.0.0/8,lo&lt;br /&gt;
ipset add allowed-nets-ipv4 172.16.32.0/20,tun0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IPv6 ====&lt;br /&gt;
For IPv6 if you&#039;ve got any [https://en.wikipedia.org/wiki/Unique_local_address Unique local address] ranges you may choose to add them:&lt;br /&gt;
&lt;br /&gt;
{{cmd|ipset create allowed-nets-ipv6 hash:net,iface family inet6}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ipset add allowed-nets-ipv6 fde4:8dba:82e1::/48,tun0&lt;br /&gt;
ipset add allowed-nets-ipv6 fde4:8dba:82e1:ffff::/64,eth0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finally save the sets with this command so they can be loaded next boot:&lt;br /&gt;
&lt;br /&gt;
{{cmd|/etc/init.d/ipset save}}&lt;br /&gt;
&lt;br /&gt;
== Restricting our LAN subnet with iptables, and blocking the bogons ==&lt;br /&gt;
Finally we can apply our iptables rules, to filter both 192.168.3.0/24 and make sure that subnets like 192.168.5.0/24 are not forwarded or accessible by our router. You will need to review these rules, and remove the ones that do not apply to you.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to change your RADIUS rules if you moved your WiFi APs into the 192.168.3.0/24 subnet. You&#039;ll also need to edit /etc/raddb/clients.conf&lt;br /&gt;
&lt;br /&gt;
I used a new table here called &amp;quot;raw&amp;quot;. This table is more primitive than the filter table. It cannot have FORWARD rules or INPUT rules. Therefore you will still need a FORWARD rule in your filter table to block bogons originating from your LAN.&lt;br /&gt;
&lt;br /&gt;
The only kind of rules we may use here are PREROUTING and OUTPUT. The OUTPUT rules will only filter traffic originating from our router&#039;s local processes, such as if we ran the ping command to a bogon range on the router&#039;s command prompt.&lt;br /&gt;
&lt;br /&gt;
Traffic passes over the raw table, before connecting marking as indicated by this packet flow map: [http://inai.de/images/nf-packet-flow.png Netfilter packet flow graph] this means we don&#039;t have to strip the mark off the bogon range in the mangle table anymore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#########################################################################&lt;br /&gt;
# Advanced routing rule set&lt;br /&gt;
# Uses 192.168.1.0 via ISP&lt;br /&gt;
#      192.168.2.0 via VPN&lt;br /&gt;
#      192.168.3.0 via LAN&lt;br /&gt;
#&lt;br /&gt;
# Packets to/from 192.168.1.0/24 are marked with 0x1 and routed to ISP&lt;br /&gt;
# Packets to/from 192.168.2.0/24 are marked with 0x2 and routed to VPN&lt;br /&gt;
# Packets to/from 192.168.3.0/24 are routed to LAN and not forwarded onto&lt;br /&gt;
#                                    the internet&lt;br /&gt;
#&lt;br /&gt;
#########################################################################&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Raw Table&lt;br /&gt;
# This table is the place where we drop all illegal packets from networks that&lt;br /&gt;
# do not exist&lt;br /&gt;
#&lt;br /&gt;
*raw&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a log drop chain&lt;br /&gt;
:LOG_DROP_BOGON - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create an output chain&lt;br /&gt;
:OUT_PPP0 - [0:0]&lt;br /&gt;
:OUT_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Allows traffic from VPN tunnel&lt;br /&gt;
-A PREROUTING -s 172.16.32.0/20 -i tun0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allows traffic to VPN tunnel&lt;br /&gt;
-A PREROUTING -d 172.16.32.0/20 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Block specified bogons coming in from ISP and VPN&lt;br /&gt;
# (unlikely to happen as they filter them on their router)&lt;br /&gt;
-A PREROUTING -i ppp0 -m set --match-set bogon-bn-nonagg src -j LOG_DROP_BOGON&lt;br /&gt;
-A PREROUTING -i tun0 -m set --match-set bogon-bn-nonagg src -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Allows my excepted ranges.&lt;br /&gt;
-A PREROUTING -m set --match-set allowed-nets-ipv4 src,src -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass output interface to corresponding chain&lt;br /&gt;
-A OUTPUT -o ppp0 -j OUT_PPP0&lt;br /&gt;
-A OUTPUT -o tun0 -j OUT_TUN0&lt;br /&gt;
&lt;br /&gt;
# Log drop chain&lt;br /&gt;
-A LOG_DROP_BOGON -j LOG --log-prefix &amp;quot;Dropped Bogon (ipv4) : &amp;quot; --log-level 6&lt;br /&gt;
-A LOG_DROP_BOGON -j DROP&lt;br /&gt;
&lt;br /&gt;
# Block packets originating from the router destined to bogon ranges&lt;br /&gt;
-A OUT_PPP0 -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Blocks packets originating from the router destined to bogon ranges&lt;br /&gt;
-A OUT_TUN0 -d 172.16.32.0/20 -j ACCEPT&lt;br /&gt;
-A OUT_TUN0 -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# NAT Table&lt;br /&gt;
# This is where translation of packets happens and &amp;quot;forwarding&amp;quot; of ports&lt;br /&gt;
# to specific hosts.&lt;br /&gt;
#&lt;br /&gt;
*nat&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Port forwarding for Bittorrent&lt;br /&gt;
-A PREROUTING -i tun0 -p tcp -m tcp --dport 6881:6889 -j DNAT --to-destination 192.168.2.20&lt;br /&gt;
-A PREROUTING -i tun0 -p udp -m udp --dport 6881:6889 -j DNAT --to-destination 192.168.2.20&lt;br /&gt;
&lt;br /&gt;
# Allows routing to our modem subnet so we can access the web interface&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
-A POSTROUTING -s 192.168.2.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the VPN tunnel&lt;br /&gt;
-A POSTROUTING -o tun0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the PPP tunnel&lt;br /&gt;
-A POSTROUTING -o ppp0 -j MASQUERADE&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Filter Table&lt;br /&gt;
# This is where we decide to ACCEPT, DROP or REJECT things&lt;br /&gt;
#&lt;br /&gt;
*filter&lt;br /&gt;
:INPUT DROP [0:0]&lt;br /&gt;
:FORWARD DROP [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for forwarding packets&lt;br /&gt;
:FWD_ETH0 - [0:0]&lt;br /&gt;
:FWD_ETH1 - [0:0]&lt;br /&gt;
:FWD_PPP0 - [0:0]&lt;br /&gt;
:FWD_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for input packets (for host itself)&lt;br /&gt;
:IN_ETH0 - [0:0]&lt;br /&gt;
:IN_ETH1 - [0:0]&lt;br /&gt;
:IN_PPP0 - [0:0]&lt;br /&gt;
:IN_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a drop chain&lt;br /&gt;
:LOG_DROP - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a log drop chain&lt;br /&gt;
:LOG_DROP_BOGON - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a reject chain&lt;br /&gt;
:LOG_REJECT_LANONLY - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create an output chain&lt;br /&gt;
:OUT_PPP0 - [0:0]&lt;br /&gt;
:OUT_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Pass input packet to corresponding rule chain&lt;br /&gt;
-A INPUT -i lo -j ACCEPT&lt;br /&gt;
-A INPUT -i eth0 -j IN_ETH0&lt;br /&gt;
-A INPUT -i eth1 -j IN_ETH1&lt;br /&gt;
-A INPUT -i ppp0 -j IN_PPP0&lt;br /&gt;
-A INPUT -i tun0 -j IN_TUN0&lt;br /&gt;
&lt;br /&gt;
# Track forwarded packets&lt;br /&gt;
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass forwarded packet to corresponding rule chain&lt;br /&gt;
-A FORWARD -i eth0 -j FWD_ETH0&lt;br /&gt;
-A FORWARD -i eth1 -j FWD_ETH1&lt;br /&gt;
-A FORWARD -i ppp0 -j FWD_PPP0&lt;br /&gt;
-A FORWARD -i tun0 -j FWD_TUN0&lt;br /&gt;
&lt;br /&gt;
# Pass output interface to corresponding chain&lt;br /&gt;
-A OUTPUT -o ppp0 -j OUT_PPP0&lt;br /&gt;
-A OUTPUT -o tun0 -j OUT_TUN0&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to Modem&lt;br /&gt;
-A FWD_ETH0 -d 192.168.0.1/32 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow routing to remote address on VPN&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -d 172.16.32.1/32 -o tun0 -j ACCEPT&lt;br /&gt;
-A FWD_ETH0 -s 192.168.2.0/24 -d 172.16.32.1/32 -o tun0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow forwarding from LAN hosts to LAN ONLY subnet&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -d 192.168.3.0/24 -j ACCEPT&lt;br /&gt;
-A FWD_ETH0 -s 192.168.2.0/24 -d 192.168.3.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow LAN ONLY subnet to contact other LAN hosts&lt;br /&gt;
-A FWD_ETH0 -s 192.168.3.0/24 -d 192.168.1.0/24 -j ACCEPT&lt;br /&gt;
-A FWD_ETH0 -s 192.168.3.0/24 -d 192.168.2.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Refuse to forward bogons to the internet!&lt;br /&gt;
-A FWD_ETH0 -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to ISP&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to VPN&lt;br /&gt;
-A FWD_ETH0 -s 192.168.2.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Prevent 192.168.3.0/24 from accessing internet&lt;br /&gt;
-A FWD_ETH0 -s 192.168.3.0/24 -j LOG_REJECT_LANONLY&lt;br /&gt;
&lt;br /&gt;
# Allow excepted server to be FORWARD to ppp0&lt;br /&gt;
#-A FWD_ETH0 -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -o ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward SSH packets from network to modem&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.1.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.2.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward HTTP packets from network to mode&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.1.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.2.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward Bittorrent Port to workstation&lt;br /&gt;
-A FWD_TUN0 -d 192.168.2.20/32 -p tcp -m tcp --dport 6881:6889 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_TUN0 -d 192.168.2.20/32 -p udp -m udp --dport 6881:6889 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# DNS to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# FreeRadius Client (eg a UniFi AP)&lt;br /&gt;
-A IN_ETH0 -s 192.168.3.10/32 -p tcp -m tcp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.3.10/32 -p udp -m udp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Ubiquiti UAP Device Discovery Broadcast&lt;br /&gt;
-A IN_ETH0 -s 192.168.3.10/32 -p udp -m udp --dport 10001 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# NTP to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.3.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept traffic to router on both subnets&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow excepted server to be INPUT to eth0 from LAN&lt;br /&gt;
#-A IN_ETH0 -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -o ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# HTTP To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked PPP0 connection&lt;br /&gt;
-A IN_PPP0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on PPP0&lt;br /&gt;
-A IN_PPP0 -j LOG --log-prefix &amp;quot;DROP:INPUT (ipv4) &amp;quot; --log-level 6&lt;br /&gt;
-A IN_PPP0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked TUN0 connection&lt;br /&gt;
-A IN_TUN0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on TUN0&lt;br /&gt;
-A IN_TUN0 -j LOG --log-prefix &amp;quot;DROP:INPUT (ipv4) &amp;quot; --log-level 6&lt;br /&gt;
-A IN_TUN0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Log dropped bogons that never got forwarded&lt;br /&gt;
-A LOG_DROP_BOGON -j LOG --log-prefix &amp;quot;Dropped Bogon forward (ipv4) &amp;quot; --log-level 6&lt;br /&gt;
-A LOG_DROP_BOGON -j DROP&lt;br /&gt;
&lt;br /&gt;
# Log rejected packets&lt;br /&gt;
-A LOG_REJECT_LANONLY -j LOG --log-prefix &amp;quot;Rejected packet from LAN only range : &amp;quot; --log-level 6&lt;br /&gt;
-A LOG_REJECT_LANONLY -j REJECT --reject-with icmp-port-unreachable&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mangle Table&lt;br /&gt;
# This is the place where our markings happen, whether they be 0x1 or 0x2&lt;br /&gt;
#&lt;br /&gt;
*mangle&lt;br /&gt;
&lt;br /&gt;
# Set default policies for table&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:FORWARD ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Restore CONNMARK to the MARK (If one doesn&#039;t exist then no mark is set)&lt;br /&gt;
-A PREROUTING -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff&lt;br /&gt;
&lt;br /&gt;
# If packet MARK is 2, then it means there is already a connection mark and the&lt;br /&gt;
# original packet came in on VPN&lt;br /&gt;
-A PREROUTING -s 192.168.2.0/24 -m mark --mark 0x2 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Check exception (this is a server which when accessed on a 192.168.2.0/24 address will go out the ISP table) are 0x1&lt;br /&gt;
#-A PREROUTING -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -m mark --mark 0x1 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Mark packets coming from 192.168.2.0/24 are 0x2&lt;br /&gt;
-A PREROUTING -s 192.168.2.0/24 -j MARK --set-xmark 0x2/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# If packet MARK is 1, then it means there is already a connection mark and the&lt;br /&gt;
# original packet came in on ISP&lt;br /&gt;
-A PREROUTING -s 192.168.1.0/24 -m mark --mark 0x1 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Mark packets 192.168.1.0/24 are 0x1&lt;br /&gt;
-A PREROUTING -s 192.168.1.0/24 -j MARK --set-xmark 0x1/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Mark exception (this is a server which when accessed on a 192.168.2.0/24 address will go out the ISP table) as 0x1&lt;br /&gt;
#-A PREROUTING -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -j MARK --set-xmark 0x1/0xffffff&lt;br /&gt;
&lt;br /&gt;
# Strip mark if packet is destined for modem&lt;br /&gt;
-A PREROUTING -d 192.168.0.1/32 -j MARK --set-xmark 0x0/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Save MARK to CONNMARK (remember iproute can&#039;t see CONNMARKs)&lt;br /&gt;
-A PREROUTING -j CONNMARK --save-mark --nfmask 0xffffffff --ctmask 0xffffffff&lt;br /&gt;
COMMIT&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Other Tips =&lt;br /&gt;
&lt;br /&gt;
== Diagnosing firewall problems ==&lt;br /&gt;
&lt;br /&gt;
=== netcat, netcat6 ===&lt;br /&gt;
Netcat can be useful for testing if a port is open or closed or filtered.&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add netcat-openbsd}}&lt;br /&gt;
&lt;br /&gt;
After installing netcat we can use it like this:&lt;br /&gt;
&lt;br /&gt;
Say we wanted to test for IPv6, UDP, Port 547 we would do this on the router:&lt;br /&gt;
&lt;br /&gt;
{{cmd|nc -6 -u -l 547}}&lt;br /&gt;
&lt;br /&gt;
and then this on the client to connect to it:&lt;br /&gt;
&lt;br /&gt;
{{cmd|nc -u -v -6 2001:0db8:1234:0001::1 547}}&lt;br /&gt;
&lt;br /&gt;
=== tcpdump ===&lt;br /&gt;
&lt;br /&gt;
tcpdump can also be useful for dumping the contents of packets coming in on an interface:&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add tcpdump}}&lt;br /&gt;
&lt;br /&gt;
Then we can run it. This example captures all DNS traffic originating from 192.168.2.20.&lt;br /&gt;
&lt;br /&gt;
{{cmd|tcpdump -i eth0 udp and src 192.168.2.20 and port 53}}&lt;br /&gt;
&lt;br /&gt;
You can write the file out with the -w option, and view it in Wireshark locally on your computer. You can increase the verbosity with the -v option. Using -vv will be even more verbose. -vvv will show even more.&lt;br /&gt;
&lt;br /&gt;
== lbu cache ==&lt;br /&gt;
Configure lbu cache so that you don&#039;t need to download packages when you restart your router eg [[Local APK cache]]&lt;br /&gt;
&lt;br /&gt;
This is particularly important as some of the images do not contain ppp-pppoe. This might mean you&#039;re unable to get an internet connection to download the other packages on boot.&lt;br /&gt;
&lt;br /&gt;
== lbu encryption /etc/lbu/lbu.conf ==&lt;br /&gt;
In /etc/lbu/lbu.conf you might want to enable encryption to protect your VPN keys.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# what cipher to use with -e option&lt;br /&gt;
DEFAULT_CIPHER=aes-256-cbc&lt;br /&gt;
&lt;br /&gt;
# Uncomment the row below to encrypt config by default&lt;br /&gt;
ENCRYPTION=$DEFAULT_CIPHER&lt;br /&gt;
&lt;br /&gt;
# Uncomment below to avoid &amp;lt;media&amp;gt; option to &#039;lbu commit&#039;&lt;br /&gt;
# Can also be set to &#039;floppy&#039;&lt;br /&gt;
LBU_MEDIA=mmcblk0p1&lt;br /&gt;
&lt;br /&gt;
# Set the LBU_BACKUPDIR variable in case you prefer to save the apkovls&lt;br /&gt;
# in a normal directory instead of mounting an external media.&lt;br /&gt;
# LBU_BACKUPDIR=/root/config-backups&lt;br /&gt;
&lt;br /&gt;
# Uncomment below to let lbu make up to 3 backups&lt;br /&gt;
# BACKUP_LIMIT=3&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remember to set a root password, by default Alpine Linux&#039;s root account is passwordless.&lt;br /&gt;
{{cmd|passwd root}}&lt;br /&gt;
&lt;br /&gt;
== Backup apkprov ==&lt;br /&gt;
It&#039;s a good idea to back up your apk provision file. You can pull it off your router to your local workstation with:&lt;br /&gt;
&lt;br /&gt;
{{cmd|scp -r root@192.168.2.1:/media/mmcblk0p1/&amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz.aes-256-cbc ./}}&lt;br /&gt;
&lt;br /&gt;
And decrypt it with:&lt;br /&gt;
{{cmd|openssl enc -d -aes-256-cbc -in &amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz.aes-256-cbc -out &amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz}}&lt;br /&gt;
&lt;br /&gt;
It can be encrypted with:&lt;br /&gt;
{{cmd|openssl aes-256-cbc -salt -in &amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz -out &amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz.aes-256-cbc}}&lt;br /&gt;
&lt;br /&gt;
== Harden SSH ==&lt;br /&gt;
&lt;br /&gt;
=== Generate a SSH key ===&lt;br /&gt;
{{cmd|ssh-keygen -t rsa -b 4096}}&lt;br /&gt;
&lt;br /&gt;
You will want to put the contents of id_rsa.pub in /etc/ssh/authorized_keys&lt;br /&gt;
&lt;br /&gt;
You can put multiple public keys on multiple lines if more than one person has access to the router.&lt;br /&gt;
&lt;br /&gt;
=== /etc/ssh/sshd_config ===&lt;br /&gt;
A couple of good options to set in here can be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ListenAddress 192.168.1.1&lt;br /&gt;
ListenAddress 192.168.2.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
While this isn&#039;t usually a good idea, a router doesn&#039;t need more than one user.&lt;br /&gt;
&amp;lt;pre&amp;gt;PermitRootLogin yes&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The most important options:&lt;br /&gt;
&amp;lt;pre&amp;gt;RSAAuthentication yes&lt;br /&gt;
PubkeyAuthentication yes&lt;br /&gt;
AuthorizedKeysFile  /etc/ssh/authorized_keys&lt;br /&gt;
PasswordAuthentication no&lt;br /&gt;
PermitEmptyPasswords no&lt;br /&gt;
AllowTcpForwarding no&lt;br /&gt;
X11Forwarding no&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== /etc/conf.d/sshd ===&lt;br /&gt;
You will want to add &amp;lt;pre&amp;gt;rc_need=&amp;quot;net&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This instructs OpenRC to make sure the network is up before starting ssh.&lt;br /&gt;
&lt;br /&gt;
Finally add sshd to the default run level&lt;br /&gt;
{{cmd|rc-update add sshd default}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at [https://stribika.github.io/2015/01/04/secure-secure-shell.html Secure Secure Shell] and tighten OpenSSH&#039;s cryptography options.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
* https://wiki.gentoo.org/wiki/Home_Router&lt;br /&gt;
* https://help.ubuntu.com/community/ADSLPPPoE&lt;br /&gt;
* https://wiki.archlinux.org/index.php/Router&lt;br /&gt;
* https://wiki.gentoo.org/wiki/IPv6_router_guide&lt;br /&gt;
* [https://vk5tu.livejournal.com/37206.html IPv6 at home, under the hood with Debian Wheezy and Internode]&lt;br /&gt;
* [http://vk5tu.livejournal.com/43059.html Raspberry Pi random number generator]&lt;br /&gt;
* [https://www.raspberrypi.org/forums/viewtopic.php?f=56&amp;amp;t=60569 rng-tools post by ktb]&lt;br /&gt;
&lt;br /&gt;
[[category: VPN]]&lt;br /&gt;
[[category: Raspberry]]&lt;/div&gt;</summary>
		<author><name>Dngray</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Linux_Router_with_VPN_on_a_Raspberry_Pi&amp;diff=19348</id>
		<title>Linux Router with VPN on a Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Linux_Router_with_VPN_on_a_Raspberry_Pi&amp;diff=19348"/>
		<updated>2021-05-14T03:09:02Z</updated>

		<summary type="html">&lt;p&gt;Dngray: /* Use a PBR instead of socks proxy*/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
= Rationale =&lt;br /&gt;
&lt;br /&gt;
This guide demonstrates how to set up a Linux router with a VPN tunnel. You will need a second ethernet adapter. If you are using a Raspberry Pi like I did, then you can use something like this [http://store.apple.com/us/product/MC704LL/A/apple-usb-ethernet-adapter Apple USB Ethernet Adapter] as it contains a ASIX AX88772 which has good Linux support.&lt;br /&gt;
&lt;br /&gt;
You may choose to also buy an [http://www.element14.com/community/docs/DOC-68907/l/shim-rtc-realtime-clock-accessory-board-for-raspberry-pi RTC clock]. If you don&#039;t have an RTC clock, the time is lost when your Pi is shut down. When it is rebooted, the time will be set back to Thursday, 1 January 1970. As this is earlier than the creation time of your VPN certificates OpenVPN will refuse to start, which may mean you cannot do DNS lookups over VPN.&lt;br /&gt;
&lt;br /&gt;
For wireless, a separate access point was purchased ([http://wiki.openwrt.org/toh/ubiquiti/unifi Ubiquiti UniFi AP]) because it contains a Atheros AR9287 which is supported by [https://wireless.wiki.kernel.org/en/users/drivers/ath9k ath9k].&lt;br /&gt;
&lt;br /&gt;
I only chose a Raspberry Pi due to the fact it was inexpensive. My WAN link is pathetic so I was not concerned with getting high PPS ([https://en.wikipedia.org/wiki/Throughput Packets Per Second]). You could choose to use an old x86/amd64 system instead. If I had better internet I&#039;d probably go with an offering from [https://soekris.com Soekris] such as the [https://soekris.com/products/net6501-1.html net6501] as it would have a much lower power consumption than a generic x86_64 desktop processor.&lt;br /&gt;
&lt;br /&gt;
If you want to route speeds above 100 Mbit/s you&#039;ll want to make use of hardware encryption like [https://en.wikipedia.org/wiki/AES_instruction_set AES-NI]. The [https://soekris.com Soekris] offerings have the option of an additional hardware encryption module ([https://soekris.com/products/vpn-1411.html vpn1411]). Another option is to use a [https://en.wikipedia.org/wiki/Mini-ITX Mini ITX motherboard], with a managed switch. I chose the [https://www.ubnt.com/edgemax/edgeswitch Ubiquiti ES-16-150W].&lt;br /&gt;
&lt;br /&gt;
If you wish to use IPv6 you should consider looking at [[Linux Router with VPN on a Raspberry Pi (IPv6)]] as the implementation does differ slightly to this tutorial.&lt;br /&gt;
&lt;br /&gt;
The network in this tutorial looks like this: &lt;br /&gt;
&lt;br /&gt;
[[File:Network diagram ipv4 basic.svg|900px|center|Network Diagram Single IPv4]]&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
This guide assumes you&#039;re using Alpine Linux from a micro SD card in ramdisk mode. It assumes you&#039;ve read the basics of how to use [[Alpine local backup]].  The [[Raspberry Pi]] article contains information on how to install Alpine Linux on a Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
= Modem in full bridge mode =&lt;br /&gt;
This particular page uses an example where you have a modem that uses PPPoE. You will need to modify parts which do not apply to you. &lt;br /&gt;
&lt;br /&gt;
In this example I have a modem which has been configured in full bridge mode. PPP sessions are initiated on the router.&lt;br /&gt;
&lt;br /&gt;
The modem I am using is a [http://www.cisco.com/c/en/us/products/routers/877-integrated-services-router-isr/index.html Cisco 877 Integrated Services Router]. It has no web interface and is controlled over SSH. More information can be found [[Configuring a Cisco 877 in full bridge mode]].&lt;br /&gt;
&lt;br /&gt;
= Network =&lt;br /&gt;
&lt;br /&gt;
== /etc/hostname ==&lt;br /&gt;
Set this to your hostname eg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;HOST_NAME&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/hosts ==&lt;br /&gt;
Set your host and hostname&lt;br /&gt;
&amp;lt;pre&amp;gt;127.0.0.1	&amp;lt;HOST_NAME&amp;gt; &amp;lt;HOST_NAME&amp;gt;.&amp;lt;DOMAIN_NAME&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::1		&amp;lt;HOST_NAME&amp;gt; ipv6-gateway ipv6-loopback&lt;br /&gt;
ff00::0		ipv6-localnet&lt;br /&gt;
ff00::0		ipv6-mcastprefix&lt;br /&gt;
ff02::1		ipv6-allnodes&lt;br /&gt;
ff02::2		ipv6-allrouters&lt;br /&gt;
ff02::3		ipv6-allhosts&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/interfaces ==&lt;br /&gt;
Configure your network interfaces. Change &amp;quot;yourISP&amp;quot; to the file name of the file in /etc/ppp/peers/yourISP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#&lt;br /&gt;
# Network Interfaces&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Loopback interfaces&lt;br /&gt;
auto lo&lt;br /&gt;
iface lo inet loopback&lt;br /&gt;
  address 127.0.0.1&lt;br /&gt;
  netmask 255.0.0.0&lt;br /&gt;
&lt;br /&gt;
# Internal Interface - facing LAN&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
  address 192.168.1.1&lt;br /&gt;
  netmask 255.255.255.0&lt;br /&gt;
  broadcast 192.168.1.255&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PPP ===&lt;br /&gt;
Next up we need to configure our router to be able to dial a PPP connection with our modem.&lt;br /&gt;
&lt;br /&gt;
If your ISP uses [https://en.wikipedia.org/wiki/Point-to-Point_Protocol PPP] you may need to configure it. See [[PPP]].&lt;br /&gt;
&lt;br /&gt;
You will want to make sure you set your WAN interface, in this example we used eth1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# External Interface - facing Modem&lt;br /&gt;
allow-hotplug eth1&lt;br /&gt;
auto eth1&lt;br /&gt;
iface eth1 inet static&lt;br /&gt;
  address 192.168.0.2&lt;br /&gt;
  netmask 255.255.255.252&lt;br /&gt;
  broadcast 192.168.0.3&lt;br /&gt;
  pre-up /sbin/ip link set eth1 up&lt;br /&gt;
  up ifup ppp0=yourISP&lt;br /&gt;
  down ifdown ppp0=yourISP&lt;br /&gt;
  post-down /sbin/ip link set eth1 up&lt;br /&gt;
&lt;br /&gt;
# Link to ISP&lt;br /&gt;
iface yourISP inet ppp&lt;br /&gt;
  provider yourISP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IPoE ===&lt;br /&gt;
Alternatively it&#039;s quite common for ISPs to use [https://en.wikipedia.org/wiki/IPoE IPoE]. IPoE is much simpler and only runs DHCP on the external interface. It should look something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# External interface to ISP&lt;br /&gt;
allow-hotplug eth1&lt;br /&gt;
auto eth1&lt;br /&gt;
iface eth1 inet dhcp&lt;br /&gt;
&lt;br /&gt;
iface eth1 inet static&lt;br /&gt;
    address 192.168.0.2&lt;br /&gt;
    netmask 255.255.255.252&lt;br /&gt;
    broadcast 192.168.0.3&lt;br /&gt;
&lt;br /&gt;
iface eth1 inet6 manual&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== DHCP from ISP ====&lt;br /&gt;
&lt;br /&gt;
Above we set DHCP and we set a static IP. The purpose of this is so we can still forward packets through to the modem to be able to access the web interface or ssh.&lt;br /&gt;
&lt;br /&gt;
We do still need DHCP to get an IP address form our ISP though. I like to use dhcpcd instead of udhcp (the default in Alpine Linux), because it allows for [https://en.wikipedia.org/wiki/Prefix_delegation Prefix Delegation], which is used in IPv6 networks.&lt;br /&gt;
&lt;br /&gt;
My /etc/dhcpcd.conf looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Enable extra debugging&lt;br /&gt;
# debug&lt;br /&gt;
# logfile /var/log/dhcpcd.log&lt;br /&gt;
&lt;br /&gt;
# Allow users of this group to interact with dhcpcd via the control&lt;br /&gt;
# socket.&lt;br /&gt;
#controlgroup wheel&lt;br /&gt;
&lt;br /&gt;
# Inform the DHCP server of our hostname for DDNS.&lt;br /&gt;
hostname gateway&lt;br /&gt;
&lt;br /&gt;
# Use the hardware address of the interface for the Client ID.&lt;br /&gt;
# clientid&lt;br /&gt;
# or&lt;br /&gt;
# Use the same DUID + IAID as set in DHCPv6 for DHCPv4 ClientID as&lt;br /&gt;
# per RFC4361. Some non-RFC compliant DHCP servers do not reply with&lt;br /&gt;
# this set. In this case, comment out duid and enable clientid above.&lt;br /&gt;
duid&lt;br /&gt;
&lt;br /&gt;
# Persist interface configuration when dhcpcd exits.&lt;br /&gt;
persistent&lt;br /&gt;
&lt;br /&gt;
# Rapid commit support.&lt;br /&gt;
# Safe to enable by default because it requires the equivalent option&lt;br /&gt;
# set on the server to actually work.&lt;br /&gt;
option rapid_commit&lt;br /&gt;
&lt;br /&gt;
# A list of options to request from the DHCP server.&lt;br /&gt;
option domain_name_servers, domain_name, domain_search, host_name&lt;br /&gt;
option classless_static_routes&lt;br /&gt;
&lt;br /&gt;
# Most distributions have NTP support.&lt;br /&gt;
option ntp_servers&lt;br /&gt;
&lt;br /&gt;
# Respect the network MTU.&lt;br /&gt;
# Some interface drivers reset when changing the MTU so disabled by&lt;br /&gt;
# default.&lt;br /&gt;
#option interface_mtu 1586&lt;br /&gt;
&lt;br /&gt;
# A ServerID is required by RFC2131.&lt;br /&gt;
require dhcp_server_identifier&lt;br /&gt;
&lt;br /&gt;
# Generate Stable Private IPv6 Addresses instead of hardware based&lt;br /&gt;
# ones&lt;br /&gt;
slaac private&lt;br /&gt;
&lt;br /&gt;
# A hook script is provided to lookup the hostname if not set by the&lt;br /&gt;
# DHCP server, but it should not be run by default.&lt;br /&gt;
nohook lookup-hostname&lt;br /&gt;
&lt;br /&gt;
# Disable solicitations on all interfaces&lt;br /&gt;
noipv6rs&lt;br /&gt;
&lt;br /&gt;
# Wait for IP before forking to background&lt;br /&gt;
waitip 6&lt;br /&gt;
&lt;br /&gt;
# Don&#039;t touch DNS&lt;br /&gt;
nohook resolv.conf&lt;br /&gt;
&lt;br /&gt;
allowinterfaces eth1 eth0.2&lt;br /&gt;
# Use the interface connected to WAN&lt;br /&gt;
interface eth1&lt;br /&gt;
    waitip 4&lt;br /&gt;
    noipv4ll&lt;br /&gt;
    ipv6rs # enable routing solicitation get the default IPv6 route&lt;br /&gt;
    iaid 1&lt;br /&gt;
    ia_pd 1/::/56 eth0.2/2/64&lt;br /&gt;
    timeout 30&lt;br /&gt;
&lt;br /&gt;
interface eth0.2&lt;br /&gt;
    ipv6only&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Basic IPtables firewall with routing ==&lt;br /&gt;
This demonstrates how to set up basic routing with a permissive outgoing firewall. Incoming packets are blocked. The rest is commented in the rule set.&lt;br /&gt;
&lt;br /&gt;
First install iptables:&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add iptables ip6tables}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#########################################################################&lt;br /&gt;
# Basic iptables IPv4 routing rule set&lt;br /&gt;
#&lt;br /&gt;
# 192.168.1.0/24 routed directly to PPP0 via NAT&lt;br /&gt;
# &lt;br /&gt;
#########################################################################&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mangle Table&lt;br /&gt;
# We leave this empty for the moment.&lt;br /&gt;
#&lt;br /&gt;
*mangle&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:FORWARD ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Filter Table&lt;br /&gt;
# This is where we decide to ACCEPT, DROP or REJECT things&lt;br /&gt;
#&lt;br /&gt;
*filter&lt;br /&gt;
:INPUT DROP [0:0]&lt;br /&gt;
:FORWARD DROP [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
*filter&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for forwarding packets&lt;br /&gt;
:FWD_ETH0 - [0:0]&lt;br /&gt;
:FWD_ETH1 - [0:0]&lt;br /&gt;
:FWD_PPP0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for input packets (for host itself)&lt;br /&gt;
:IN_ETH0 - [0:0]&lt;br /&gt;
:IN_ETH1 - [0:0]&lt;br /&gt;
:IN_PPP0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a log drop chain&lt;br /&gt;
:LOG_DROP - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Pass input packet to corresponding rule chain&lt;br /&gt;
-A INPUT -i lo -j ACCEPT&lt;br /&gt;
-A INPUT -i eth0 -j IN_ETH0&lt;br /&gt;
-A INPUT -i eth1 -j IN_ETH1&lt;br /&gt;
-A INPUT -i ppp0 -j IN_PPP0&lt;br /&gt;
&lt;br /&gt;
# Pass forwarded packet to corresponding rule chain&lt;br /&gt;
-A FORWARD -i eth0 -j FWD_ETH0&lt;br /&gt;
-A FORWARD -i eth1 -j FWD_ETH1&lt;br /&gt;
-A FORWARD -i ppp0 -j FWD_PPP0&lt;br /&gt;
&lt;br /&gt;
# Forward LAN traffic out&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward SSH packets from network to modem&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.0/30 -d 192.168.1.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward HTTP to modem&#039;s webserver&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.0/30 -d 192.168.1.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to ISP&lt;br /&gt;
-A FWD_PPP0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# DNS to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# FreeRadius Client (eg a UniFi AP)&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# NTP to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept traffic&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# HTTP to modem&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked PPP0 connection&lt;br /&gt;
-A IN_PPP0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# NAT Table&lt;br /&gt;
# This is where translation of packets happens and &amp;quot;forwarding&amp;quot; of ports&lt;br /&gt;
# to specific hosts.&lt;br /&gt;
#&lt;br /&gt;
*nat&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Port forwarding for Bittorrent&lt;br /&gt;
-A PREROUTING -i ppp0 -p tcp -m tcp --dport 6881:6889 -j DNAT --to-destination 192.168.1.20&lt;br /&gt;
-A PREROUTING -i ppp0 -p udp -m udp --dport 6881:6889 -j DNAT --to-destination 192.168.1.20&lt;br /&gt;
&lt;br /&gt;
# Allows routing to our modem subnet so we can access the web interface or SSH&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 22 -j MASQUERADE&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the PPP tunnel&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE&lt;br /&gt;
COMMIT&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I&#039;d also highly suggest reading these resources if you are new to iptables: &lt;br /&gt;
&lt;br /&gt;
* [https://www.frozentux.net/category/linux/iptables Frozen Tux Iptables-tutorial]&lt;br /&gt;
* [http://inai.de/links/iptables/ Words of wisdom for #netfilter]&lt;br /&gt;
* [http://sfvlug.editthis.info/wiki/Things_You_Should_Know_About_Netfilter Things You Should Know About Netfilter]&lt;br /&gt;
* [http://inai.de/documents/Perfect_Ruleset.pdf Towards the perfect ruleset]&lt;br /&gt;
&lt;br /&gt;
== /etc/sysctl.d/local.conf ==&lt;br /&gt;
&amp;lt;pre&amp;gt;# Controls IP packet forwarding&lt;br /&gt;
net.ipv4.ip_forward = 1&lt;br /&gt;
&lt;br /&gt;
# Needed to use fwmark, only required if you want to set up the VPN subnet later in this article&lt;br /&gt;
net.ipv4.conf.all.rp_filter = 2&lt;br /&gt;
&lt;br /&gt;
# Disable IPv6&lt;br /&gt;
net.ipv6.conf.all.disable_ipv6 = 1&lt;br /&gt;
net.ipv6.conf.lo.disable_ipv6 = 1&lt;br /&gt;
net.ipv6.conf.default.disable_ipv6 = 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note IPv6 is disabled here if you want that see the other tutorial [[Linux Router with VPN on a Raspberry Pi (IPv6)]]. You may also wish to look at [https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt ip-sysctl.txt] to read about the other keys.&lt;br /&gt;
&lt;br /&gt;
= DHCP =&lt;br /&gt;
{{cmd|apk add dhcp}}&lt;br /&gt;
&lt;br /&gt;
== /etc/conf.d/dhcpd ==&lt;br /&gt;
Specify the configuration file location, interface to run on and that you want DHCPD to run in IPv4 mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# /etc/conf.d/dhcpd: config file for /etc/init.d/dhcpd&lt;br /&gt;
&lt;br /&gt;
# If you require more than one instance of dhcpd you can create symbolic&lt;br /&gt;
# links to dhcpd service like so&lt;br /&gt;
#   cd /etc/init.d&lt;br /&gt;
#   ln -s dhcpd dhcpd.foo&lt;br /&gt;
#   cd ../conf.d&lt;br /&gt;
#   cp dhcpd dhcpd.foo&lt;br /&gt;
# Now you can edit dhcpd.foo and specify a different configuration file.&lt;br /&gt;
# You&#039;ll also need to specify a pidfile in that dhcpd.conf file.&lt;br /&gt;
# See the pid-file-name option in the dhcpd.conf man page for details.&lt;br /&gt;
&lt;br /&gt;
# If you wish to run dhcpd in a chroot, uncomment the following line&lt;br /&gt;
# DHCPD_CHROOT=&amp;quot;/var/lib/dhcp/chroot&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# All file paths below are relative to the chroot.&lt;br /&gt;
# You can specify a different chroot directory but MAKE SURE it&#039;s empty.&lt;br /&gt;
&lt;br /&gt;
# Specify a configuration file - the default is /etc/dhcp/dhcpd.conf&lt;br /&gt;
DHCPD_CONF=&amp;quot;/etc/dhcp/dhcpd.conf&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Configure which interface or interfaces to for dhcpd to listen on.&lt;br /&gt;
# List all interfaces space separated. If this is not specified then&lt;br /&gt;
# we listen on all interfaces.&lt;br /&gt;
DHCPD_IFACE=&amp;quot;eth0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Insert any other dhcpd options - see the man page for a full list.&lt;br /&gt;
DHCPD_OPTS=&amp;quot;-4&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/dhcp/dhcpd.conf ==&lt;br /&gt;
Configure your DHCP configuration server. For my DHCP server I&#039;m going to have three subnets. Each has a specific purpose. You may choose to have any number of subnets like below. The broadcast-address would be different if you used VLANs. However in this case we are not.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;authoritative;&lt;br /&gt;
ddns-update-style interim;&lt;br /&gt;
&lt;br /&gt;
shared-network home {&lt;br /&gt;
  subnet 192.168.1.0 netmask 255.255.255.0 {&lt;br /&gt;
    range 192.168.1.10 192.168.1.240;&lt;br /&gt;
    option subnet-mask 255.255.255.0;&lt;br /&gt;
    option broadcast-address 192.168.1.255;&lt;br /&gt;
    option routers 192.168.1.1;&lt;br /&gt;
    option ntp-servers 192.168.1.1;&lt;br /&gt;
    option domain-name-servers 192.168.1.1;&lt;br /&gt;
    allow unknown-clients;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  subnet 192.168.2.0 netmask 255.255.255.0 {&lt;br /&gt;
    range 192.168.2.10 192.168.2.240;&lt;br /&gt;
    option subnet-mask 255.255.255.0;&lt;br /&gt;
    option broadcast-address 192.168.2.255;&lt;br /&gt;
    option routers 192.168.2.1;&lt;br /&gt;
    option ntp-servers 192.168.2.1;&lt;br /&gt;
    option domain-name-servers 192.168.1.1;&lt;br /&gt;
    ignore unknown-clients;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  subnet 192.168.3.0 netmask 255.255.255.0 {&lt;br /&gt;
    range 192.168.3.10 192.168.3.240;&lt;br /&gt;
    option subnet-mask 255.255.255.0;&lt;br /&gt;
    option broadcast-address 192.168.3.255;&lt;br /&gt;
    option routers 192.168.3.1;&lt;br /&gt;
    option ntp-servers 192.168.3.1;&lt;br /&gt;
    option domain-name-servers 192.168.1.1;&lt;br /&gt;
    ignore unknown-clients;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
host Gaming_Computer {&lt;br /&gt;
  hardware ethernet 00:53:00:FF:FF:11;&lt;br /&gt;
  fixed-address 192.168.1.20;&lt;br /&gt;
  option subnet-mask 255.255.255.0;&lt;br /&gt;
  option broadcast-address 192.168.1.255;&lt;br /&gt;
  option routers 192.168.1.1;&lt;br /&gt;
  option host-name &amp;quot;gaming_computer&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
host Linux_Workstation {&lt;br /&gt;
  hardware ethernet 00:53:00:FF:FF:22;&lt;br /&gt;
  fixed-address 192.168.2.21;&lt;br /&gt;
  option subnet-mask 255.255.255.0;&lt;br /&gt;
  option broadcast-address 192.168.2.255;&lt;br /&gt;
  option routers 192.168.2.1;&lt;br /&gt;
  option host-name &amp;quot;linux_workstation&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
host printer {&lt;br /&gt;
  hardware ethernet 00:53:00:FF:FF:33;&lt;br /&gt;
  fixed-address 192.168.3.9;&lt;br /&gt;
  option subnet-mask 255.255.255.0;&lt;br /&gt;
  option broadcast-address 192.168.3.255;&lt;br /&gt;
  option routers 192.168.3.1;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure to add this to the default run level once configured:&lt;br /&gt;
{{cmd|rc-update add dhcpd default}}&lt;br /&gt;
&lt;br /&gt;
= Synchronizing the clock =&lt;br /&gt;
&lt;br /&gt;
You can choose to use BusyBox&#039;s ntpd or you can choose a more fully fledged option like [http://www.openntpd.org OpenNTPD] or [https://chrony.tuxfamily.org Chrony]&lt;br /&gt;
&lt;br /&gt;
== Busybox /etc/conf.d/ntpd ==&lt;br /&gt;
Allow clients to synchronize their clocks with the router.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# By default ntpd runs as a client. Add -l to run as a server on port 123.&lt;br /&gt;
NTPD_OPTS=&amp;quot;-l -N -p &amp;lt;REMOTE TIME SERVER&amp;gt;&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure to add this to the default run level once configured:&lt;br /&gt;
{{cmd|rc-update add ntpd default}}&lt;br /&gt;
&lt;br /&gt;
Or if you prefer to synchronize with multiple servers...&lt;br /&gt;
&lt;br /&gt;
== Chrony /etc/chrony.conf ==&lt;br /&gt;
{{cmd|apk add chrony}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;logdir /var/log/chrony&lt;br /&gt;
log measurements statistics tracking&lt;br /&gt;
&lt;br /&gt;
allow 192.168.0.0/30&lt;br /&gt;
allow 192.168.1.0/24&lt;br /&gt;
allow 192.168.2.0/24&lt;br /&gt;
allow 192.168.3.0/24&lt;br /&gt;
allow 192.168.4.0/24&lt;br /&gt;
broadcast 30 192.168.0.3&lt;br /&gt;
broadcast 30 192.168.1.255&lt;br /&gt;
broadcast 30 192.168.2.255&lt;br /&gt;
broadcast 30 192.168.3.255&lt;br /&gt;
broadcast 30 192.168.4.255&lt;br /&gt;
&lt;br /&gt;
server 0.pool.ntp.org iburst&lt;br /&gt;
server 1.pool.ntp.org iburst&lt;br /&gt;
server 2.pool.ntp.org iburst&lt;br /&gt;
server 3.pool.ntp.org iburst&lt;br /&gt;
&lt;br /&gt;
initstepslew 10 pool.ntp.org&lt;br /&gt;
driftfile /var/lib/chrony/chrony.drift&lt;br /&gt;
hwclockfile /etc/adjtime&lt;br /&gt;
rtcdevice /dev/rtc0&lt;br /&gt;
rtcsync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OpenNTPD /etc/ntpd.conf ==&lt;br /&gt;
&lt;br /&gt;
Install OpenNTPD&lt;br /&gt;
{{cmd|apk add openntpd}}&lt;br /&gt;
&lt;br /&gt;
Add to default run level.&lt;br /&gt;
{{cmd|rc-update add openntpd default}}&lt;br /&gt;
&lt;br /&gt;
=== /etc/ntpd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;# sample ntpd configuration file, see ntpd.conf(5)&lt;br /&gt;
&lt;br /&gt;
# Addresses to listen on (ntpd does not listen by default)&lt;br /&gt;
listen on 192.168.1.1&lt;br /&gt;
listen on 192.168.2.1&lt;br /&gt;
&lt;br /&gt;
# sync to a single server&lt;br /&gt;
#server ntp.example.org&lt;br /&gt;
&lt;br /&gt;
# use a random selection of NTP Pool Time Servers&lt;br /&gt;
# see http://support.ntp.org/bin/view/Servers/NTPPoolServers&lt;br /&gt;
server 0.pool.ntp.org&lt;br /&gt;
server 1.pool.ntp.org&lt;br /&gt;
server 2.pool.ntp.org&lt;br /&gt;
server 3.pool.ntp.org&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== tlsdate ==&lt;br /&gt;
The time can also be extracted from a https handshake. If the certificate is self-signed you will need to use skip-verification:&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add tlsdate}}&lt;br /&gt;
{{cmd|tlsdate -V --skip-verification -p 80 -H example.com}}&lt;br /&gt;
&lt;br /&gt;
== timezone ==&lt;br /&gt;
You might also want to set a timezone, see [[Setting the timezone]].&lt;br /&gt;
&lt;br /&gt;
= Saving Time =&lt;br /&gt;
There are two ways to do this. If you didn&#039;t buy an RTC clock see [[Saving time with Software Clock]]. If you did like the PiFace Real Time Clock see [[Saving time with Hardware Clock]]&lt;br /&gt;
&lt;br /&gt;
= Unbound DNS forwarder with dnscrypt =&lt;br /&gt;
We want to be able to do our lookups using [https://dnscrypt.info/ dnscrypt] without installing DNSCrypt on every client on the network. DNSCrypt can use it&#039;s [https://dnscrypt.info/protocol own protocol] or [https://en.wikipedia.org/wiki/DNS_over_HTTPS DNS over HTTPS].&lt;br /&gt;
&lt;br /&gt;
The router will also run a DNS forwarder and request unknown domains over DNSCrypt for our clients. Borrowed from the ArchLinux wiki article on [https://wiki.archlinux.org/index.php/dnscrypt-proxy dnscrypt-proxy].&lt;br /&gt;
&lt;br /&gt;
== Unbound ==&lt;br /&gt;
First install {{cmd|apk add unbound}}&lt;br /&gt;
&lt;br /&gt;
=== /etc/unbound/unbound.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;server:&lt;br /&gt;
    # Use this to include other text into the file.&lt;br /&gt;
    include: &amp;quot;/etc/unbound/filter.conf&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # verbosity number, 0 is least verbose. 1 is default.&lt;br /&gt;
    verbosity: 1&lt;br /&gt;
&lt;br /&gt;
    # specify the interfaces to answer queries from by ip-address.&lt;br /&gt;
    # The default is to listen to localhost (127.0.0.1 and ::1).&lt;br /&gt;
    # specify 0.0.0.0 and ::0 to bind to all available interfaces.&lt;br /&gt;
    # specify every interface[@port] on a new &#039;interface:&#039; labelled line.&lt;br /&gt;
    # The listen interfaces are not changed on reload, only on restart.&lt;br /&gt;
    interface: 192.168.2.1&lt;br /&gt;
    interface: 192.168.3.1&lt;br /&gt;
&lt;br /&gt;
    # Enable IPv4, &amp;quot;yes&amp;quot; or &amp;quot;no&amp;quot;.&lt;br /&gt;
    do-ip4: yes&lt;br /&gt;
&lt;br /&gt;
    # Enable IPv6, &amp;quot;yes&amp;quot; or &amp;quot;no&amp;quot;.&lt;br /&gt;
    do-ip6: yes&lt;br /&gt;
&lt;br /&gt;
    # Enable UDP, &amp;quot;yes&amp;quot; or &amp;quot;no&amp;quot;.&lt;br /&gt;
    do-udp: yes&lt;br /&gt;
&lt;br /&gt;
    # Enable TCP, &amp;quot;yes&amp;quot; or &amp;quot;no&amp;quot;.&lt;br /&gt;
    do-tcp: yes&lt;br /&gt;
&lt;br /&gt;
    # control which clients are allowed to make (recursive) queries&lt;br /&gt;
    # to this server. Specify classless netblocks with /size and action.&lt;br /&gt;
    # By default everything is refused, except for localhost.&lt;br /&gt;
    # Choose deny (drop message), refuse (polite error reply),&lt;br /&gt;
    # allow (recursive ok), allow_setrd (recursive ok, rd bit is forced on),&lt;br /&gt;
    # allow_snoop (recursive and nonrecursive ok)&lt;br /&gt;
    # deny_non_local (drop queries unless can be answered from local-data)&lt;br /&gt;
    # refuse_non_local (like deny_non_local but polite error reply).&lt;br /&gt;
    # access-control: 0.0.0.0/0 refuse&lt;br /&gt;
    # access-control: 127.0.0.0/8 allow&lt;br /&gt;
    # access-control: ::0/0 refuse&lt;br /&gt;
    # access-control: ::1 allow&lt;br /&gt;
    # access-control: ::ffff:127.0.0.1 allow&lt;br /&gt;
    access-control: 192.168.1.0/24 allow&lt;br /&gt;
    access-control: 192.168.2.0/24 allow&lt;br /&gt;
    access-control: 192.168.3.0/24 allow&lt;br /&gt;
&lt;br /&gt;
    # the log file, &amp;quot;&amp;quot; means log to stderr.&lt;br /&gt;
    # Use of this option sets use-syslog to &amp;quot;no&amp;quot;.&lt;br /&gt;
    logfile: &amp;quot;/var/log/unbound/unbound.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # Log to syslog(3) if yes. The log facility LOG_DAEMON is used to&lt;br /&gt;
    # log to. If yes, it overrides the logfile.&lt;br /&gt;
    use-syslog: no&lt;br /&gt;
&lt;br /&gt;
    # print one line with time, IP, name, type, class for every query.&lt;br /&gt;
    # log-queries: no&lt;br /&gt;
&lt;br /&gt;
    # print one line per reply, with time, IP, name, type, class, rcode,&lt;br /&gt;
    # timetoresolve, fromcache and responsesize.&lt;br /&gt;
    # log-replies: no&lt;br /&gt;
&lt;br /&gt;
    # enable to not answer id.server and hostname.bind queries.&lt;br /&gt;
    hide-identity: yes&lt;br /&gt;
&lt;br /&gt;
    # enable to not answer version.server and version.bind queries.&lt;br /&gt;
    # hide-version: yes&lt;br /&gt;
&lt;br /&gt;
    # enable to not answer trustanchor.unbound queries.&lt;br /&gt;
    hide-trustanchor: yes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # Harden against very small EDNS buffer sizes.&lt;br /&gt;
    harden-short-bufsize: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden against unseemly large queries.&lt;br /&gt;
    harden-large-queries: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden against out of zone rrsets, to avoid spoofing attempts.&lt;br /&gt;
    harden-glue: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden against receiving dnssec-stripped data. If you turn it&lt;br /&gt;
    # off, failing to validate dnskey data for a trustanchor will&lt;br /&gt;
    # trigger insecure mode for that zone (like without a trustanchor).&lt;br /&gt;
    # Default on, which insists on dnssec data for trust-anchored zones.&lt;br /&gt;
    harden-dnssec-stripped: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden against queries that fall under dnssec-signed nxdomain names.&lt;br /&gt;
    harden-below-nxdomain: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden the referral path by performing additional queries for&lt;br /&gt;
    # infrastructure data.  Validates the replies (if possible).&lt;br /&gt;
    # Default off, because the lookups burden the server.  Experimental&lt;br /&gt;
    # implementation of draft-wijngaards-dnsext-resolver-side-mitigation.&lt;br /&gt;
    # harden-referral-path: no&lt;br /&gt;
&lt;br /&gt;
    # Harden against algorithm downgrade when multiple algorithms are&lt;br /&gt;
    # advertised in the DS record.  If no, allows the weakest algorithm&lt;br /&gt;
    # to validate the zone.&lt;br /&gt;
    harden-algo-downgrade: yes&lt;br /&gt;
&lt;br /&gt;
    # Use 0x20-encoded random bits in the query to foil spoof attempts.&lt;br /&gt;
    # This feature is an experimental implementation of draft dns-0x20.&lt;br /&gt;
    use-caps-for-id: yes&lt;br /&gt;
&lt;br /&gt;
    # Allow the domain (and its subdomains) to contain private addresses.&lt;br /&gt;
    # local-data statements are allowed to contain private addresses too.&lt;br /&gt;
    private-domain: &amp;quot;&amp;lt;HOSTNAME&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # if yes, the above default do-not-query-address entries are present.&lt;br /&gt;
    # if no, localhost can be queried (for testing and debugging).&lt;br /&gt;
    do-not-query-localhost: no&lt;br /&gt;
&lt;br /&gt;
    # File with trusted keys, kept uptodate using RFC5011 probes,&lt;br /&gt;
    # initial file like trust-anchor-file, then it stores metadata.&lt;br /&gt;
    # Use several entries, one per domain name, to track multiple zones.&lt;br /&gt;
    #&lt;br /&gt;
    # If you want to perform DNSSEC validation, run unbound-anchor before&lt;br /&gt;
    # you start unbound (i.e. in the system boot scripts).  And enable:&lt;br /&gt;
    # Please note usage of unbound-anchor root anchor is at your own risk&lt;br /&gt;
    # and under the terms of our LICENSE (see that file in the source).&lt;br /&gt;
    # auto-trust-anchor-file: &amp;quot;@UNBOUND_ROOTKEY_FILE@&amp;quot;&lt;br /&gt;
    auto-trust-anchor-file: &amp;quot;/etc/unbound/root.key&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # If unbound is running service for the local host then it is useful&lt;br /&gt;
    # to perform lan-wide lookups to the upstream, and unblock the&lt;br /&gt;
    # long list of local-zones above.  If this unbound is a dns server&lt;br /&gt;
    # for a network of computers, disabled is better and stops information&lt;br /&gt;
    # leakage of local lan information.&lt;br /&gt;
    unblock-lan-zones: no&lt;br /&gt;
&lt;br /&gt;
    # If you configure local-data without specifying local-zone, by&lt;br /&gt;
    # default a transparent local-zone is created for the data.&lt;br /&gt;
    #&lt;br /&gt;
    # You can add locally served data with&lt;br /&gt;
    # local-zone: &amp;quot;local.&amp;quot; static&lt;br /&gt;
    # local-data: &amp;quot;mycomputer.local. IN A 192.0.2.51&amp;quot;&lt;br /&gt;
    # local-data: &#039;mytext.local TXT &amp;quot;content of text record&amp;quot;&#039;&lt;br /&gt;
&lt;br /&gt;
    # request upstream over TLS (with plain DNS inside the TLS stream).&lt;br /&gt;
    # Default is no.  Can be turned on and off with unbound-control.&lt;br /&gt;
    # tls-upstream: no&lt;br /&gt;
&lt;br /&gt;
    # Forward zones&lt;br /&gt;
    # Create entries like below, to make all queries for &#039;example.com&#039; and&lt;br /&gt;
    # &#039;example.org&#039; go to the given list of servers. These servers have to handle&lt;br /&gt;
    # recursion to other nameservers. List zero or more nameservers by hostname&lt;br /&gt;
    # or by ipaddress. Use an entry with name &amp;quot;.&amp;quot; to forward all queries.&lt;br /&gt;
    # If you enable forward-first, it attempts without the forward if it fails.&lt;br /&gt;
    # forward-zone:&lt;br /&gt;
    #    name: &amp;quot;example.com&amp;quot;&lt;br /&gt;
    #    forward-addr: 192.0.2.68&lt;br /&gt;
    #    forward-addr: 192.0.2.73@5355  # forward to port 5355.&lt;br /&gt;
    #    forward-first: no&lt;br /&gt;
    #    forward-tls-upstream: no&lt;br /&gt;
    #    forward-no-cache: no&lt;br /&gt;
    # forward-zone:&lt;br /&gt;
    #    name: &amp;quot;example.org&amp;quot;&lt;br /&gt;
    #    forward-host: fwd.example.com&lt;br /&gt;
&lt;br /&gt;
forward-zone:&lt;br /&gt;
    name: &amp;quot;.&amp;quot;&lt;br /&gt;
    forward-addr: 172.16.32.1@53&lt;br /&gt;
    forward-addr: ::1@53000&lt;br /&gt;
    forward-addr: 127.0.0.1@53000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Blocking Microsoft Telemetry on the network by domain ==&lt;br /&gt;
Microsoft has added telemetry analytics to Windows which you may want to block at a network level. More information about that can be found [https://www.privacytools.io/operating-systems/#win10 here].&lt;br /&gt;
&lt;br /&gt;
This script takes in a list of domains and produces a filter file. We are directing all lookups to &amp;quot;0.0.0.1&amp;quot; which is an invalid IP and should fail immediately, unlike localhost. There are lists of the addresses in various places such as the tools people use to do this locally on Windows, ie [https://github.com/Nummer/Destroy-Windows-10-Spying/blob/master/DWS/DWSResources.cs#L210 Destroy-Windows-10-Spying], [https://github.com/10se1ucgo/DisableWinTracking/blob/master/dwt.py#L333 DisableWinTracking], [https://github.com/W4RH4WK/Debloat-Windows-10/blob/master/scripts/block-telemetry.ps1#L19 Debloat-Windows-10] and [https://github.com/pragmatrix/Dominator/blob/master/Dominator.Windows10/Settings/telemetry.txt Dominator.Windows10]. I have prepared the list further down: [[Linux Router with VPN on a Raspberry Pi#/etc/unbound/filter.conf]].&lt;br /&gt;
&lt;br /&gt;
You could also use this to block advertising, but that&#039;s probably easier to do in a web browser with something like [https://en.wikipedia.org/wiki/uBlock_Origin uBlock Origin].&lt;br /&gt;
&lt;br /&gt;
Another way is to disable this stuff with a group policy see [https://docs.microsoft.com/en-us/windows/privacy/manage-connections-from-windows-operating-system-components-to-microsoft-services Manage connections from Windows operating system components to Microsoft services] only for Windows 10 Enterprise, version 1607 and newer and Windows Server 2016.&lt;br /&gt;
&lt;br /&gt;
=== /etc/unbound/unbound.conf ===&lt;br /&gt;
In your main unbound configuration add&lt;br /&gt;
&amp;lt;pre&amp;gt;include: /etc/unbound/filter.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Script to prepare/sort domains for Unbound  ===&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
##################################################&lt;br /&gt;
# Script taken from http://npr.me.uk/unbound.html&lt;br /&gt;
# Note you need GNU sed&lt;br /&gt;
##################################################&lt;br /&gt;
&lt;br /&gt;
# Remove &amp;quot;#&amp;quot; comments&lt;br /&gt;
# Remove space and tab&lt;br /&gt;
# Remove blank lines&lt;br /&gt;
# Remove localhost and broadcasthost lines&lt;br /&gt;
# Keep just the hosts&lt;br /&gt;
# Remove leading and trailing space and tab (again)&lt;br /&gt;
# Make everything lower case&lt;br /&gt;
&lt;br /&gt;
sed -e &amp;quot;s/#.*//&amp;quot; \&lt;br /&gt;
    -e &amp;quot;s/[ \x09]*$//&amp;quot;\&lt;br /&gt;
    -e &amp;quot;/^$/ d&amp;quot; \&lt;br /&gt;
    -e &amp;quot;/^.*local.*/ d&amp;quot; \&lt;br /&gt;
    -e &amp;quot;/^.*broadcasthost.*/ d&amp;quot; \&lt;br /&gt;
    -e &amp;quot;s/\(^.*\) \([a-zA-Z0-9\.\-]*\)/\2/&amp;quot; \&lt;br /&gt;
    -e &amp;quot;s/^[ \x09]*//;s/[ \x09]*$//&amp;quot; $1 \&lt;br /&gt;
    -e &amp;quot;s/\(.*\)/\L\1/&amp;quot; hosts.txt &amp;gt; temp1.txt&lt;br /&gt;
&lt;br /&gt;
# Remove any duplicate hosts&lt;br /&gt;
&lt;br /&gt;
sort temp1.txt | uniq &amp;gt;temp2.txt&lt;br /&gt;
&lt;br /&gt;
# Remove any hosts starting with &amp;quot;.&amp;quot;&lt;br /&gt;
# Create the two required lines for each host.&lt;br /&gt;
&lt;br /&gt;
sed -e &amp;quot;/^\..*/ d&amp;quot; \&lt;br /&gt;
    -e &amp;quot;s/\(^.*\)/local-zone: \x22\1\x22 redirect\nlocal-data: \x22\1 A 0.0.0.1\x22/&amp;quot; \&lt;br /&gt;
       temp2.txt &amp;gt; filter.conf&lt;br /&gt;
&lt;br /&gt;
# Clean up&lt;br /&gt;
rm temp1.txt&lt;br /&gt;
rm temp2.txt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/unbound/filter.conf ==&lt;br /&gt;
&amp;lt;pre&amp;gt;local-zone: &amp;quot;a-0001.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0001.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0001.dc-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0001.dc-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0002.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0002.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0003.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0003.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0004.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0004.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0005.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0005.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0006.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0006.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0007.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0007.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0008.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0008.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0009.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0009.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0010.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0010.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0011.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0011.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0012.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0012.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a.ads1.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a.ads1.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a.ads2.msads.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a.ads2.msads.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a.ads2.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a.ads2.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ac3.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ac3.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;activity.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;activity.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;adnexus.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;adnexus.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;adnxs.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;adnxs.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ads1.msads.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ads1.msads.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ads1.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ads1.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ads.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ads.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;aidps.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;aidps.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;aka-cdn-ns.adtech.de&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;aka-cdn-ns.adtech.de A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a.rad.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a.rad.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array101-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array101-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array102-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array102-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array103-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array103-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array104-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array104-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array201-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array201-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array202-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array202-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array203-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array203-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array204-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array204-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array401-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array401-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array402-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array402-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array403-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array403-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array404-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array404-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array405-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array405-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array406-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array406-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array407-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array407-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array408-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array408-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ars.smartscreen.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ars.smartscreen.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;az361816.vo.msecnd.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;az361816.vo.msecnd.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;az512334.vo.msecnd.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;az512334.vo.msecnd.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;b.ads1.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;b.ads1.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;b.ads2.msads.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;b.ads2.msads.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bingads.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bingads.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bl3301-a.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bl3301-a.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bl3301-c.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bl3301-c.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bl3301-g.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bl3301-g.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;blob.weather.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;blob.weather.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn1304-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn1304-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn1306-a.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn1306-a.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn1306-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn1306-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn1306-g.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn1306-g.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn2b-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn2b-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn2b-cor002.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn2b-cor002.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn2b-cor003.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn2b-cor003.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn2b-cor004.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn2b-cor004.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn2wns1.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn2wns1.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn3p-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn3p-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn3sch020022328.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn3sch020022328.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;b.rad.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;b.rad.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bs.serving-sys.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bs.serving-sys.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;by3301-a.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;by3301-a.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;by3301-c.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;by3301-c.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;by3301-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;by3301-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;c-0001.dc-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;c-0001.dc-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cache.datamart.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cache.datamart.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;candycrushsoda.king.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;candycrushsoda.king.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;c.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;c.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ca.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ca.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cdn.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cdn.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cdn.content.prod.cms.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cdn.content.prod.cms.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cdn.onenote.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cdn.onenote.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds1204.lon.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds1204.lon.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds1293.lon.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds1293.lon.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds20417.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds20417.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds20431.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds20431.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds20450.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds20450.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds20457.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds20457.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds20475.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds20475.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds21244.lon.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds21244.lon.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds26.ams9.msecn.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds26.ams9.msecn.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds425.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds425.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds459.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds459.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds494.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds494.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds965.lon.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds965.lon.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch1-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch1-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch1-cor002.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch1-cor002.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch3301-c.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch3301-c.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch3301-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch3301-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch3301-g.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch3301-g.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch3302-c.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch3302-c.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch3302-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch3302-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;choice.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;choice.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;choice.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;choice.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;clientconfig.passport.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;clientconfig.passport.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;client-s.gateway.messenger.live.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;client-s.gateway.messenger.live.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;client.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;client.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;c.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;c.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;compatexchange1.trafficmanager.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;compatexchange1.trafficmanager.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;compatexchange.cloudapp.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;compatexchange.cloudapp.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;continuum.dds.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;continuum.dds.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;corpext.msitadfs.glbdns2.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;corpext.msitadfs.glbdns2.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;corp.sts.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;corp.sts.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cp101-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cp101-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cp201-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cp201-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cp401-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cp401-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cs1.wpc.v0cdn.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cs1.wpc.v0cdn.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db3aqu.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db3aqu.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db3wns2011111.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db3wns2011111.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100122.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100122.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100127.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100127.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100831.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100831.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100835.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100835.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100917.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100917.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100925.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100925.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100928.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100928.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100938.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100938.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101001.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101001.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101022.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101022.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101024.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101024.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101031.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101031.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101034.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101034.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101042.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101042.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101044.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101044.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101122.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101122.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101123.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101123.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101125.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101125.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101128.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101128.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101129.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101129.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101133.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101133.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101145.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101145.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101209.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101209.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101221.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101221.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101228.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101228.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101231.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101231.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101237.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101237.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101317.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101317.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101324.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101324.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101329.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101329.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101333.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101333.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101334.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101334.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101338.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101338.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101419.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101419.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101424.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101424.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101426.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101426.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101427.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101427.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101430.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101430.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101445.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101445.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101511.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101511.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101519.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101519.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101529.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101529.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101535.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101535.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101541.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101541.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101543.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101543.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101608.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101608.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101618.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101618.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101629.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101629.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101631.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101631.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101633.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101633.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101640.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101640.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101711.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101711.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101722.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101722.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101739.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101739.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101745.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101745.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101813.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101813.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101820.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101820.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101826.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101826.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101835.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101835.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101837.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101837.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101844.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101844.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101907.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101907.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101914.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101914.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101929.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101929.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101939.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101939.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101941.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101941.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102015.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102015.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102017.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102017.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102019.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102019.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102023.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102023.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102025.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102025.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102032.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102032.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102033.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102033.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110108.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110108.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110109.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110109.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110114.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110114.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110135.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110135.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110142.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110142.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110204.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110204.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110206.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110206.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110214.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110214.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110225.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110225.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110232.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110232.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110245.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110245.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110315.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110315.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110323.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110323.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110325.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110325.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110328.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110328.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110331.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110331.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110341.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110341.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110343.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110343.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110345.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110345.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110403.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110403.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110419.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110419.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110438.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110438.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110442.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110442.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110501.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110501.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110527.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110527.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110533.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110533.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110618.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110618.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110622.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110622.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110624.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110624.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110626.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110626.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110634.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110634.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110705.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110705.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110724.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110724.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110740.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110740.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110810.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110810.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110816.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110816.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110821.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110821.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110822.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110822.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110825.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110825.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110828.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110828.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110835.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110835.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110919.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110919.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110921.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110921.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110923.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110923.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110929.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110929.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103081814.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103081814.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082011.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082011.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082111.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082111.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082308.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082308.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082406.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082406.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082409.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082409.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082609.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082609.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082611.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082611.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082709.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082709.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082712.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082712.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082806.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082806.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090115.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090115.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090415.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090415.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090513.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090513.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090515.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090515.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090608.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090608.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090806.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090806.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090814.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090814.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090906.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090906.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091011.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091011.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091012.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091012.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091106.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091106.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091108.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091108.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091212.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091212.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091311.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091311.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091414.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091414.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091511.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091511.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091617.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091617.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091715.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091715.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091817.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091817.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091908.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091908.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091911.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091911.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092010.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092010.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092108.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092108.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092109.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092109.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092209.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092209.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092210.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092210.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092509.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092509.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100117.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100117.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100121.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100121.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100221.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100221.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100313.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100313.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100314.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100314.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100510.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100510.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100511.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100511.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100611.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100611.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100712.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100712.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101105.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101105.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101208.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101208.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101212.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101212.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101314.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101314.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101411.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101411.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101413.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101413.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101513.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101513.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101610.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101610.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101611.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101611.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101705.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101705.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101711.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101711.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101909.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101909.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101914.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101914.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102009.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102009.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102112.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102112.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102203.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102203.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102209.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102209.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102310.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102310.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102404.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102404.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102609.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102609.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102610.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102610.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102805.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102805.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5wns1d.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5wns1d.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090104.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090104.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090112.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090112.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090116.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090116.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090122.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090122.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090203.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090203.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090206.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090206.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090208.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090208.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090209.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090209.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090211.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090211.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090305.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090305.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090306.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090306.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090308.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090308.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090311.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090311.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090313.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090313.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090410.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090410.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090412.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090412.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090504.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090504.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090510.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090510.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090512.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090512.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090513.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090513.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090514.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090514.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090519.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090519.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090613.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090613.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090619.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090619.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090810.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090810.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090811.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090811.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090902.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090902.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090905.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090905.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090907.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090907.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090908.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090908.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090910.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090910.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090911.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090911.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091003.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091003.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091007.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091007.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091008.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091008.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091009.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091009.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091011.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091011.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091103.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091103.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091105.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091105.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091204.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091204.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091209.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091209.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091305.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091305.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091307.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091307.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091308.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091308.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091309.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091309.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091314.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091314.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091412.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091412.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091503.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091503.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091507.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091507.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091602.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091602.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091603.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091603.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091606.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091606.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091607.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091607.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;deploy.static.akamaitechnologies.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;deploy.static.akamaitechnologies.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;device.auth.xboxlive.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;device.auth.xboxlive.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;dev.virtualearth.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;dev.virtualearth.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;df.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;df.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;diagnostics.support.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;diagnostics.support.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;disc101-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;disc101-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;disc201-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;disc201-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;disc401-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;disc401-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;dmd.metaservices.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;dmd.metaservices.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;dns.msftncsi.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;dns.msftncsi.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ec.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ec.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ecn.dev.virtualearth.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ecn.dev.virtualearth.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;eu.vortex.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;eu.vortex.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;feedback.microsoft-hohm.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;feedback.microsoft-hohm.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;feedback.search.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;feedback.search.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;feedback.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;feedback.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;flex.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;flex.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;fs.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;fs.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;geo-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;geo-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;geover-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;geover-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;g.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;g.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;h1.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;h1.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;h2.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;h2.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i1.services.social.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i1.services.social.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i1.services.social.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i1.services.social.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-bl6p-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-bl6p-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-by3p-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-by3p-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-by3p-cor002.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-by3p-cor002.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-ch1-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-ch1-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-ch1-cor002.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-ch1-cor002.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;img-s-msn-com.akamaized.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;img-s-msn-com.akamaized.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;inference.location.live.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;inference.location.live.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;insiderppe.cloudapp.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;insiderppe.cloudapp.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-sn2-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-sn2-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-sn2-cor002.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-sn2-cor002.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;kv101-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;kv101-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;kv201-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;kv201-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;kv401-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;kv401-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;lb1.www.ms.akadns.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;lb1.www.ms.akadns.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;licensing.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;licensing.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;live.rads.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;live.rads.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ls2web.redmond.corp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ls2web.redmond.corp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;m.adnxs.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;m.adnxs.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;mediaredirect.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;mediaredirect.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;mobile.pipe.aria.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;mobile.pipe.aria.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;msftncsi.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;msftncsi.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;msntest.serving-sys.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;msntest.serving-sys.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;oca.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;oca.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;oca.telemetry.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;oca.telemetry.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;officeclient.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;officeclient.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;oneclient.sfx.ms&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;oneclient.sfx.ms A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;pre.footprintpredict.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;pre.footprintpredict.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;preview.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;preview.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;pti.store.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;pti.store.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;query.prod.cms.rt.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;query.prod.cms.rt.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;rad.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;rad.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;redir.metaservices.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;redir.metaservices.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;register.cdpcs.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;register.cdpcs.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;reports.wes.df.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;reports.wes.df.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;s0.2mdn.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;s0.2mdn.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;schemas.microsoft.akadns.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;schemas.microsoft.akadns.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;search.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;search.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;secure.adnxs.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;secure.adnxs.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;secure.flashtalking.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;secure.flashtalking.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;services.wes.df.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;services.wes.df.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings.data.glbdns2.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings.data.glbdns2.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings-sandbox.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings-sandbox.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings-ssl.xboxlive.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings-ssl.xboxlive.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings-win.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings-win.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings-win-ppe.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings-win-ppe.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sn3301-c.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sn3301-c.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sn3301-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sn3301-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sn3301-g.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sn3301-g.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;so.2mdn.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;so.2mdn.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;spynet2.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;spynet2.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;spynetalt.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;spynetalt.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;spyneteurope.microsoft.akadns.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;spyneteurope.microsoft.akadns.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sqm.df.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sqm.df.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sqm.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sqm.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sqm.telemetry.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sqm.telemetry.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;static.2mdn.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;static.2mdn.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;storecatalogrevocation.storequality.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;storecatalogrevocation.storequality.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;storeedgefd.dsx.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;storeedgefd.dsx.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;store-images.s-microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;store-images.s-microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;support.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;support.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;survey.watson.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;survey.watson.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;t0.ssl.ak.dynamic.tiles.virtualearth.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;t0.ssl.ak.dynamic.tiles.virtualearth.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;t0.ssl.ak.tiles.virtualearth.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;t0.ssl.ak.tiles.virtualearth.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;telecommand.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;telecommand.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;telecommand.telemetry.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;telecommand.telemetry.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;telemetry.appex.bing.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;telemetry.appex.bing.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;telemetry.urs.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;telemetry.urs.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;test.activity.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;test.activity.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;tile-service.weather.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;tile-service.weather.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;time.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;time.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;tk2.plt.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;tk2.plt.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;tsfe.trafficshaping.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;tsfe.trafficshaping.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;urs.smartscreen.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;urs.smartscreen.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;v10.vortex-win.data.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;v10.vortex-win.data.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;v10.vortex-win.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;v10.vortex-win.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;version.hybrid.api.here.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;version.hybrid.api.here.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;view.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;view.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-bn2.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-bn2.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-cy2.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-cy2.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex.data.glbdns2.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex.data.glbdns2.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex.data.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex.data.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-db5.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-db5.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-hk2.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-hk2.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-sandbox.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-sandbox.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-win.data.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-win.data.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-win.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-win.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;watson.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;watson.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;watson.ppe.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;watson.ppe.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;watson.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;watson.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;watson.telemetry.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;watson.telemetry.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;wdcpalt.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;wdcpalt.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;wdcp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;wdcp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;web.vortex.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;web.vortex.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;wes.df.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;wes.df.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;win10.ipv6.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;win10.ipv6.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;win10-trt.msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;win10-trt.msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;win1710.ipv6.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;win1710.ipv6.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;wscont.apps.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;wscont.apps.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;www.msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;www.msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;www.msftconnecttest.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;www.msftconnecttest.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;www.msftncsi.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;www.msftncsi.com A 0.0.0.1&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DNSCrypt ==&lt;br /&gt;
You can test that you&#039;re not getting DNS leaks by using [https://www.dnsleaktest.com dnsleak.com] or this one from [https://www.grc.com/dns/dns.htm GRC]. Providers like CloudFlare and Google (1.1.1.1, 8.8.8.8) use [https://en.wikipedia.org/wiki/Anycast anycast] which should be pointing to a server located to where your VPN exits.&lt;br /&gt;
&lt;br /&gt;
=== /etc/dnscrypt-proxy/dnscrypt-proxy.toml ===&lt;br /&gt;
Using the sample dnscrypt config is fine, you will need to make these changes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;listen_addresses = [&#039;127.0.0.1:53000&#039;, &#039;[::1]:53000&#039;]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Add policy route for dnscrypt over VPN ==&lt;br /&gt;
&lt;br /&gt;
Add a [https://en.wikipedia.org/wiki/Policy-based_routing policy based route] based on the uid of the dnscrypt user. On Alpine Linux dnscrypt-proxy runs as a specific user so check /etc/passwd&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;dnscrypt:x:103:104:dnscrypt:/var/empty:/sbin/nologin&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example the dnscrypt user has the uid 103.&lt;br /&gt;
&lt;br /&gt;
Warning: {{Warning|Make sure you check the uid of your dnscrypt user and don&#039;t just copy the one here!}}&lt;br /&gt;
&lt;br /&gt;
Add this to [https://wiki.alpinelinux.org/wiki/Linux_Router_with_VPN_on_a_Raspberry_Pi#.2Fetc.2Fnetwork.2Ffwmark_rules fwmark_rules] eg:&lt;br /&gt;
&lt;br /&gt;
=== /etc/network/fwmark_rules ===&lt;br /&gt;
&amp;lt;pre&amp;gt;# Route DNSCrypt user through the VPN table&lt;br /&gt;
/sbin/ip rule add uidrange 103-103 table VPN prio 200&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{cmd|rc-update add unbound default}}&lt;br /&gt;
{{cmd|rc-update add dnscrypt-proxy default}}&lt;br /&gt;
&lt;br /&gt;
= Random number generation =&lt;br /&gt;
There are two ways to assist with random number generation [[Entropy and randomness]]. This can be particularly useful if you&#039;re generating your own Diffie-Hellman nonce file, used in the [[FreeRadius EAP-TLS configuration]] section. Or for that matter any process which requires lots of random number generation such as generating certificates or public private keys.&lt;br /&gt;
&lt;br /&gt;
== Haveged ==&lt;br /&gt;
[http://www.issihosts.com/haveged Haveged] is a great way to improve random number generation speed. It uses the unpredictable random number generator based upon an adaptation of the [http://www.irisa.fr/caps/projects/hipsor/ HAVEGE] algorithm.&lt;br /&gt;
&lt;br /&gt;
Install haveged:&lt;br /&gt;
{{cmd|apk add haveged}}&lt;br /&gt;
&lt;br /&gt;
Start haveged service:&lt;br /&gt;
{{cmd|service haveged start}}&lt;br /&gt;
&lt;br /&gt;
Add service to boot&lt;br /&gt;
{{cmd|rc-update add haveged default}}&lt;br /&gt;
&lt;br /&gt;
Start rngd service:&lt;br /&gt;
{{cmd|service haveged start}}&lt;br /&gt;
&lt;br /&gt;
Add service to boot:&lt;br /&gt;
{{cmd|rc-update add haveged default}}&lt;br /&gt;
&lt;br /&gt;
== rng-tools with bcm2708-rng ==&lt;br /&gt;
&lt;br /&gt;
=== Pre Alpine Linux 3.8 (which includes rngd 5) ===&lt;br /&gt;
All Raspberry Pis come with the bcm2708-rng random number generator on board. If you are doing this project on a Raspberry Pi then you may choose to use this also.&lt;br /&gt;
&lt;br /&gt;
Add the kernel module to /etc/modules:&lt;br /&gt;
{{cmd|echo &amp;quot;bcm2708-rng&amp;quot; &amp;gt; /etc/modules}}&lt;br /&gt;
&lt;br /&gt;
Insert module:&lt;br /&gt;
{{cmd|modprobe bcm2708-rng}}&lt;br /&gt;
&lt;br /&gt;
Install rng-tools:&lt;br /&gt;
{{cmd|apk add rng-tools}}&lt;br /&gt;
&lt;br /&gt;
Set the random device (/dev/random) and rng device (/dev/hwrng) in /etc/conf.d/rngd&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;RNGD_OPTS=&amp;quot;--no-drng=1 --no-tpm=1 -o /dev/random -r /dev/hwrng&amp;quot;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== Post Alpine Linux 3.8 (which includes rngd 6) ===&lt;br /&gt;
&lt;br /&gt;
With AlpineLinux 3.8 you don&#039;t have to insert the module as it is already built in the kernel.&lt;br /&gt;
&lt;br /&gt;
Additionally the syntax has changed for rngd so for /etc/conf.d/rngd you&#039;ll need&lt;br /&gt;
&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;RNGD_OPTS=&amp;quot;-x1 -o /dev/random -r /dev/hwrng&amp;quot;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Start rngd service:&lt;br /&gt;
{{cmd|service rngd start}}&lt;br /&gt;
&lt;br /&gt;
Add service to boot:&lt;br /&gt;
{{cmd|rc-update add rngd default}}&lt;br /&gt;
&lt;br /&gt;
You can test it with:&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;cat /dev/hwrng | rngtest -c 1000&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
You should see something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rngtest 5&lt;br /&gt;
Copyright (c) 2004 by Henrique de Moraes Holschuh&lt;br /&gt;
This is free software; see the source for copying conditions.  There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&lt;br /&gt;
&lt;br /&gt;
rngtest: starting FIPS tests...&lt;br /&gt;
rngtest: bits received from input: 20000032&lt;br /&gt;
rngtest: FIPS 140-2 successes: 1000&lt;br /&gt;
rngtest: FIPS 140-2 failures: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Monobit: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Poker: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Runs: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Long run: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Continuous run: 0&lt;br /&gt;
rngtest: input channel speed: (min=117.709; avg=808.831; max=3255208.333)Kibits/s&lt;br /&gt;
rngtest: FIPS tests speed: (min=17.199; avg=22.207; max=22.653)Mibits/s&lt;br /&gt;
rngtest: Program run time: 25178079 microseconds&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s possible you might have a some failures. That&#039;s okay, two runs I did previously had a failure each.&lt;br /&gt;
&lt;br /&gt;
= WiFi 802.1x EAP and FreeRadius =&lt;br /&gt;
A more secure way than using pre-shared keys (WPA2) is to use [https://en.wikipedia.org/wiki/Extensible_Authentication_Protocol#EAP-TLS EAP-TLS] and use separate certificates for each device. See [[FreeRadius EAP-TLS configuration]]&lt;br /&gt;
&lt;br /&gt;
= VPN Tunnel on specific subnet =&lt;br /&gt;
As mentioned earlier in this article it might be useful to have a VPN subnet and a non-VPN subnet. Typically gaming consoles or computers might want low-latency connections. For this exercise we use fwmark.&lt;br /&gt;
&lt;br /&gt;
We expand the network to look like this:&lt;br /&gt;
&lt;br /&gt;
[[File:Network diagram ipv4 tunnel.svg|900px|center|Network Diagram with IPv4 tunnel]]&lt;br /&gt;
&lt;br /&gt;
Install the necessary packages:&lt;br /&gt;
{{cmd|apk add openvpn iproute2 iputils}}&lt;br /&gt;
&lt;br /&gt;
== /etc/modules ==&lt;br /&gt;
You&#039;ll want to add the tun module&lt;br /&gt;
&amp;lt;pre&amp;gt;tun&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/iproute2/rt_tables ==&lt;br /&gt;
Add the two routing tables to the bottom of rt_tables. It should look something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;#&lt;br /&gt;
# reserved values&lt;br /&gt;
#&lt;br /&gt;
255	local&lt;br /&gt;
254	main&lt;br /&gt;
253	default&lt;br /&gt;
0	unspec&lt;br /&gt;
#&lt;br /&gt;
# local&lt;br /&gt;
#&lt;br /&gt;
#1	inr.ruhep&lt;br /&gt;
1 ISP&lt;br /&gt;
2 VPN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/interfaces ==&lt;br /&gt;
Next up add the virtual interface (really just a IP address to eth0) eth0:2, just under eth0 will do.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Route to VPN subnet&lt;br /&gt;
auto eth0:2&lt;br /&gt;
iface eth0:2 inet static&lt;br /&gt;
  address 192.168.2.1&lt;br /&gt;
  netmask 255.255.255.0&lt;br /&gt;
  broadcast 192.168.2.255&lt;br /&gt;
  post-up /etc/network/fwmark_rules&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/sysctl.d/local.conf ==&lt;br /&gt;
If you want to use fwmark rules you need to change this setting. It causes the router to still do source validation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Needed to use fwmark&lt;br /&gt;
net.ipv4.conf.all.rp_filter = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fwmark won&#039;t work if you have this set to 1.&lt;br /&gt;
&lt;br /&gt;
== /etc/network/fwmark_rules ==&lt;br /&gt;
In this file we want to put the fwmark rules and set the correct priorities.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Normal packets to go direct out WAN&lt;br /&gt;
/sbin/ip rule add fwmark 1 table ISP prio 100&lt;br /&gt;
&lt;br /&gt;
# Put packets destined into VPN when VPN is up&lt;br /&gt;
/sbin/ip rule add fwmark 2 table VPN prio 200&lt;br /&gt;
&lt;br /&gt;
# Prevent packets from being routed out when VPN is down.&lt;br /&gt;
# This prevents packets from falling back to the main table&lt;br /&gt;
# that has a priority of 32766&lt;br /&gt;
/sbin/ip rule add prohibit fwmark 2 prio 300&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/ppp/ip-up ==&lt;br /&gt;
Next up we want to create the routes that should be run when PPP comes online. There are special hooks we can use in ip-up and ip-down to refer to the IP address, [https://ppp.samba.org/pppd.html#sect13 ppp man file - Scripts ] You can also read about them in your man file if you have ppp-doc installed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by pppd when there&#039;s a successful ppp connection.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Flush out any old rules that might be there&lt;br /&gt;
/sbin/ip route flush table ISP&lt;br /&gt;
&lt;br /&gt;
# Add route to table from subnets on LAN&lt;br /&gt;
/sbin/ip route add 192.168.1.0/24 dev eth0 table ISP&lt;br /&gt;
/sbin/ip route add 192.168.2.0/24 dev eth0 table ISP&lt;br /&gt;
&lt;br /&gt;
# Add route from IP given by ISP to the table&lt;br /&gt;
/sbin/ip rule add from ${IPREMOTE} table ISP prio 100&lt;br /&gt;
&lt;br /&gt;
# Add a default route&lt;br /&gt;
/sbin/ip route add table ISP default via ${IPREMOTE} dev ${IFNAME}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/ppp/ip-down ==&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by pppd after the connection has ended.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Delete the rules when we take the interface down&lt;br /&gt;
/sbin/ip rule del from ${IPREMOTE} table ISP prio 100&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/openvpn/route-up-fwmark.sh ==&lt;br /&gt;
OpenVPN needs similar routing scripts and it also has it&#039;s own special hooks that allow you to specify particular values. A full list is here [https://openvpn.net/index.php/open-source/documentation/manuals/65-openvpn-20x-manpage.html#lbAS OpenVPN man file - Environmental Variables]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by OpenVPN when there&#039;s a successful VPN connection.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Flush out any old rules that might be there&lt;br /&gt;
/sbin/ip route flush table VPN&lt;br /&gt;
&lt;br /&gt;
# Add route to table from 192.168.2.0/24 subnet on LAN&lt;br /&gt;
/sbin/ip route add 192.168.2.0/24 dev eth0 table VPN&lt;br /&gt;
&lt;br /&gt;
# Add route from VPN interface IP to the VPN table&lt;br /&gt;
/sbin/ip rule add from ${ifconfig_local} table VPN prio 200&lt;br /&gt;
&lt;br /&gt;
# Add a default route&lt;br /&gt;
/sbin/ip route add default via ${ifconfig_local} dev ${dev} table VPN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/openvpn/route-pre-down-fwmark.sh ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by OpenVPN after the connection has ended&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Delete the rules when we take the interface down&lt;br /&gt;
/sbin/ip rule del from ${ifconfig_local} table VPN prio 200&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What I did find was when starting and stopping the OpenVPN service if you used:&lt;br /&gt;
&lt;br /&gt;
{{cmd|service openvpn stop}}&lt;br /&gt;
&lt;br /&gt;
The rules in route-pre-down-fwmark.sh were not executed.&lt;br /&gt;
&lt;br /&gt;
However:&lt;br /&gt;
&lt;br /&gt;
{{cmd|/etc/init.d/openvpn stop}}&lt;br /&gt;
&lt;br /&gt;
seemed to work correctly.&lt;br /&gt;
&lt;br /&gt;
== Advanced IPtables rules that allow us to route into our two routing tables ==&lt;br /&gt;
This is an expansion of the previous set of rules. It sets up NAT masquerading for the 192.168.2.0 to go through the VPN using marked packets.&lt;br /&gt;
&lt;br /&gt;
I used these guides to write complete this: &lt;br /&gt;
&lt;br /&gt;
* [http://nerdboys.com/2006/05/05/conning-the-mark-multiwan-connections-using-iptables-mark-connmark-and-iproute2 Conning the Mark: Multiwan connections using IPTables, MARK, CONNMARK and iproute2 ]&lt;br /&gt;
* [http://nerdboys.com/2006/05/08/multiwan-connections-addendum Multiwan connections addendum]&lt;br /&gt;
* [http://inai.de/images/nf-packet-flow.png Netfilter packet flow]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#########################################################################&lt;br /&gt;
# Advanced routing rule set&lt;br /&gt;
# Uses 192.168.1.0 via ISP&lt;br /&gt;
#      192.168.2.0 via VPN&lt;br /&gt;
#&lt;br /&gt;
# Packets to/from 192.168.1.0/24 are marked with 0x1 and routed to ISP&lt;br /&gt;
# Packets to/from 192.168.2.0/24 are marked with 0x2 and routed to VPN&lt;br /&gt;
#&lt;br /&gt;
#########################################################################&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# NAT Table&lt;br /&gt;
# This is where translation of packets happens and &amp;quot;forwarding&amp;quot; of ports&lt;br /&gt;
# to specific hosts.&lt;br /&gt;
#&lt;br /&gt;
*nat&lt;br /&gt;
&lt;br /&gt;
# Set default policies for table&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Port forwarding for Bittorrent&lt;br /&gt;
-A PREROUTING -i tun0 -p tcp -m tcp --dport 6881:6889 -j DNAT --to-destination 192.168.2.20&lt;br /&gt;
-A PREROUTING -i tun0 -p udp -m udp --dport 6881:6889 -j DNAT --to-destination 192.168.2.20&lt;br /&gt;
&lt;br /&gt;
# Allows routing to our modem subnet so we can access the web interface&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
-A POSTROUTING -s 192.168.2.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the VPN tunnel&lt;br /&gt;
-A POSTROUTING -o tun0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the PPP tunnel&lt;br /&gt;
-A POSTROUTING -o ppp0 -j MASQUERADE&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Filter Table&lt;br /&gt;
# This is where we decide to ACCEPT, DROP or REJECT things&lt;br /&gt;
#&lt;br /&gt;
*filter&lt;br /&gt;
:INPUT DROP [0:0]&lt;br /&gt;
:FORWARD DROP [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for forwarding packets&lt;br /&gt;
:FWD_ETH0 - [0:0]&lt;br /&gt;
:FWD_ETH1 - [0:0]&lt;br /&gt;
:FWD_PPP0 - [0:0]&lt;br /&gt;
:FWD_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for input packets (for host itself)&lt;br /&gt;
:IN_ETH0 - [0:0]&lt;br /&gt;
:IN_ETH1 - [0:0]&lt;br /&gt;
:IN_PPP0 - [0:0]&lt;br /&gt;
:IN_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a log drop chain&lt;br /&gt;
:LOG_DROP - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a reject chain&lt;br /&gt;
:LOG_REJECT - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Pass input packet to corresponding rule chain&lt;br /&gt;
-A INPUT -i lo -j ACCEPT&lt;br /&gt;
-A INPUT -i eth0 -j IN_ETH0&lt;br /&gt;
-A INPUT -i eth1 -j IN_ETH1&lt;br /&gt;
-A INPUT -i ppp0 -j IN_PPP0&lt;br /&gt;
-A INPUT -i tun0 -j IN_TUN0&lt;br /&gt;
&lt;br /&gt;
# Track forwarded packets&lt;br /&gt;
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass forwarded packet to corresponding rule chain&lt;br /&gt;
-A FORWARD -i eth0 -j FWD_ETH0&lt;br /&gt;
-A FORWARD -i eth1 -j FWD_ETH1&lt;br /&gt;
-A FORWARD -i ppp0 -j FWD_PPP0&lt;br /&gt;
-A FORWARD -i tun0 -j FWD_TUN0&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to ISP&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to VPN&lt;br /&gt;
-A FWD_ETH0 -s 192.168.2.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow excepted server to be FORWARD to ppp0&lt;br /&gt;
#-A FWD_ETH0 -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -o ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward SSH packets from network to modem&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.1.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.2.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward HTTP packets from network to modem&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.1.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.2.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward Bittorrent Port to workstation&lt;br /&gt;
-A FWD_TUN0 -d 192.168.2.20/32 -p tcp -m tcp --dport 6881:6889 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_TUN0 -d 192.168.2.20/32 -p udp -m udp --dport 6881:6889 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# DNS to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# FreeRadius Client (eg a UniFi AP)&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Ubiquiti UAP Device Discovery Broadcast&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 10001 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# NTP to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept traffic to router on both subnets&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow excepted server to be INPUT to eth0 from LAN&lt;br /&gt;
#-A IN_ETH0 -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -o ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# HTTP To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked PPP0 connection&lt;br /&gt;
-A IN_PPP0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on PPP0&lt;br /&gt;
-A IN_PPP0 -j LOG --log-prefix &amp;quot;DROP:INPUT &amp;quot; --log-level 6&lt;br /&gt;
-A IN_PPP0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked TUN0 connection&lt;br /&gt;
-A IN_TUN0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on TUN0&lt;br /&gt;
-A IN_TUN0 -j LOG --log-prefix &amp;quot;DROP:INPUT &amp;quot; --log-level 6&lt;br /&gt;
-A IN_TUN0 -j LOG_DROP&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mangle Table&lt;br /&gt;
# This is the place where our markings happen, whether they be 0x1 or 0x2&lt;br /&gt;
#&lt;br /&gt;
*mangle&lt;br /&gt;
&lt;br /&gt;
# Set default policies for table&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:FORWARD ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Restore CONNMARK to the MARK (If one doesn&#039;t exist then no mark is set)&lt;br /&gt;
-A PREROUTING -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff&lt;br /&gt;
&lt;br /&gt;
# If packet MARK is 2, then it means there is already a connection mark and the&lt;br /&gt;
# original packet came in on VPN&lt;br /&gt;
-A PREROUTING -s 192.168.2.0/24 -m mark --mark 0x2 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Check exception (this is a server which when accessed on a 192.168.2.0/24 address will go out the ISP table) are 0x1&lt;br /&gt;
#-A PREROUTING -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -m mark --mark 0x1 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Mark packets coming from 192.168.2.0/24 are 0x2&lt;br /&gt;
-A PREROUTING -s 192.168.2.0/24 -j MARK --set-xmark 0x2/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# If packet MARK is 1, then it means there is already a connection mark and the&lt;br /&gt;
# original packet came in on ISP&lt;br /&gt;
-A PREROUTING -s 192.168.1.0/24 -m mark --mark 0x1 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Mark packets 192.168.1.0/24 are 0x1&lt;br /&gt;
-A PREROUTING -s 192.168.1.0/24 -j MARK --set-xmark 0x1/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Mark exception (this is a server which when accessed on a 192.168.2.0/24 address will go out the ISP table) as 0x1&lt;br /&gt;
#-A PREROUTING -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -j MARK --set-xmark 0x1/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Set mark to 0 - This is for the modem. Otherwise it will mark with 0x1 or 0x2&lt;br /&gt;
-A PREROUTING -d 192.168.0.1/32 -j MARK --set-xmark 0x0/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Save MARK to CONNMARK (remember iproute can&#039;t see CONNMARKs)&lt;br /&gt;
-A PREROUTING -j CONNMARK --save-mark --nfmask 0xffffffff --ctmask 0xffffffff&lt;br /&gt;
COMMIT&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may want to delete certain rules here that do not apply to you, eg the FreeRadius rules. That is covered later in this article.&lt;br /&gt;
&lt;br /&gt;
== OpenVPN Routing ==&lt;br /&gt;
Usually when you connect with OpenVPN the remote VPN server will push routes down to your system. We don&#039;t want this as we still want to be able to access the internet without the VPN. We have also created our own routes that we want to use earlier in this guide.&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need to add this to the bottom of your OpenVPN configuration file:&lt;br /&gt;
&amp;lt;pre&amp;gt;# Prevents default gateway from being set on the default routing table&lt;br /&gt;
route-noexec&lt;br /&gt;
&lt;br /&gt;
# Allows route-up script to be executed&lt;br /&gt;
script-security 2&lt;br /&gt;
&lt;br /&gt;
# Calls custom shell script after connection to add necessary routes&lt;br /&gt;
route-up /etc/openvpn/route-up-fwmark.sh&lt;br /&gt;
route-pre-down /etc/openvpn/route-pre-down-fwmark.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
My VPNs are arranged like this in /etc/openvpn:&lt;br /&gt;
&lt;br /&gt;
OpenVPN configuration file for that server:&lt;br /&gt;
&amp;lt;pre&amp;gt;countrycode.serverNumber.openvpn.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenVPN certs for that server:&lt;br /&gt;
&amp;lt;pre&amp;gt;countrycode.serverNumber.openvpn/countrycode.serverNumber.openvpn.crt&lt;br /&gt;
countrycode.serverNumber.openvpn/countrycode.serverNumber.openvpn.key&lt;br /&gt;
countrycode.serverNumber.openvpn/myKey.crt&lt;br /&gt;
countrycode.serverNumber.openvpn/myKey.key&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So I use this helpful script to automate the process of changing between servers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
vpn_server_filename=$1&lt;br /&gt;
&lt;br /&gt;
rm /etc/openvpn/openvpn.conf&lt;br /&gt;
ln -s $vpn_server_filename /etc/openvpn/openvpn.conf&lt;br /&gt;
chown -R openvpn:openvpn /etc/openvpn&lt;br /&gt;
chmod -R a=-rwx,u=+rX /etc/openvpn&lt;br /&gt;
chmod u=x /etc/openvpn/*.sh*&lt;br /&gt;
&lt;br /&gt;
if grep -Fxq &amp;quot;#CustomStuffHere&amp;quot; openvpn.conf&lt;br /&gt;
then&lt;br /&gt;
    echo &amp;quot;Not adding custom routes, this server has been used previously&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Adding custom route rules&amp;quot;&lt;br /&gt;
cat &amp;lt;&amp;lt;EOF &amp;gt;&amp;gt; /etc/openvpn/openvpn.conf&lt;br /&gt;
&lt;br /&gt;
#CustomStuffHere&lt;br /&gt;
# Prevents default gateway from being set on the default routing table&lt;br /&gt;
route-noexec&lt;br /&gt;
&lt;br /&gt;
# Allows route-up script to be executed&lt;br /&gt;
script-security 2&lt;br /&gt;
&lt;br /&gt;
# Calls custom shell script after connection to add necessary routes&lt;br /&gt;
route-up /etc/openvpn/route-up-fwmark.sh&lt;br /&gt;
route-pre-down /etc/openvpn/route-pre-down-fwmark.sh&lt;br /&gt;
&lt;br /&gt;
# Logging of OpenVPN to file&lt;br /&gt;
#log /etc/openvpn/openvpn.log&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
fi&lt;br /&gt;
echo &amp;quot;Remember to set BitTorrent port forward in VPN control panel&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That way I can simply change between servers by running:&lt;br /&gt;
{{cmd|changevpn.sh countrycode.serverNumber.openvpn}}&lt;br /&gt;
&lt;br /&gt;
and then restart openvpn. I am also reminded to put the port forward through on the VPN control panel so my BitTorrent client is connectable:&lt;br /&gt;
&lt;br /&gt;
{{cmd|service openvpn restart}}&lt;br /&gt;
&lt;br /&gt;
Finally add openvpn to the default run level&lt;br /&gt;
{{cmd|rc-update add openvpn default}}&lt;br /&gt;
&lt;br /&gt;
= Creating a LAN only Subnet =&lt;br /&gt;
In this section, we&#039;ll be creating a LAN only subnet. This subnet will be 192.168.3.0/24. The idea of this subnet is nodes in it cannot have their packets forwarded to the Internet, however they can be accessed via the other LAN subnets 192.168.1.0/24 and 192.168.2.0/24. This approach doesn&#039;t use VLANs although that would be recommended if you had a managed switch. The idea of this subnet is for things like WiFi access points, IP Phones which contact a local Asterisk server and of course printers.&lt;br /&gt;
&lt;br /&gt;
At the end of this section we will have something like:&lt;br /&gt;
&lt;br /&gt;
[[File:Network diagram ipv4 tunnel LANONLY ROUTE.svg|900px|center|Network Diagram LAN ONLY Route with IPv4]]&lt;br /&gt;
&lt;br /&gt;
== /etc/iproute2/rt_tables ==&lt;br /&gt;
First up we&#039;ll add a third routing table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;3 LAN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/interfaces ==&lt;br /&gt;
Add a an extra virtual interface (really just a IP address to eth0).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# LAN Only&lt;br /&gt;
auto eth0:3&lt;br /&gt;
iface eth0:3 inet static&lt;br /&gt;
  address 192.168.3.1&lt;br /&gt;
  netmask 255.255.255.0&lt;br /&gt;
  broadcast 192.168.3.255&lt;br /&gt;
  post-up /etc/network/route_LAN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/route_LAN ==&lt;br /&gt;
This file will have our route added to it&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Add routes from ISP to LAN&lt;br /&gt;
/sbin/ip route add 192.168.1.0/24 dev eth0 table LAN&lt;br /&gt;
&lt;br /&gt;
# Add route from VPN to LAN&lt;br /&gt;
/sbin/ip route add 192.168.2.0/24 dev eth0 table LAN&lt;br /&gt;
&lt;br /&gt;
# Add route from LAN to it&#039;s own table&lt;br /&gt;
/sbin/ip route add 192.168.3.0/24 dev eth0 table LAN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/ppp/ip-up ==&lt;br /&gt;
Append a route from the LAN subnet to the ISP table&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Add route to LAN subnet&lt;br /&gt;
/sbin/ip route add 192.168.3.0/24 dev eth0 table ISP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/openvpn/route-up-fwmark.sh ==&lt;br /&gt;
Append a route from the LAN subnet to the VPN table&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Add route to LAN only subnet&lt;br /&gt;
/sbin/ip route add 192.168.3.0/24 dev eth0 table VPN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/ntpd.conf ==&lt;br /&gt;
Add a listen address for ntp (OpenNTPD).&lt;br /&gt;
&lt;br /&gt;
You should now have:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Addresses to listen on (ntpd does not listen by default)&lt;br /&gt;
listen on 192.168.1.1&lt;br /&gt;
listen on 192.168.2.1&lt;br /&gt;
listen on 192.168.3.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Devices needing the correct time will need to use this NTP server because they will not be able to get it from the Internet.&lt;br /&gt;
&lt;br /&gt;
== Blocking bogons ==&lt;br /&gt;
Our LAN now has 4 subnets in total that are possible:&lt;br /&gt;
&lt;br /&gt;
* 192.168.0.0/30 (connection between modem and router)&lt;br /&gt;
* 192.168.1.0/24 (ISP table, directly routed out WAN)&lt;br /&gt;
* 192.168.2.0/24 (VPN table, routed out VPN)&lt;br /&gt;
* 192.168.3.0/24 (Null routed subnet for LAN only hosts)&lt;br /&gt;
* 172.16.32.0/20 (VPN provider&#039;s network, so we can access things on the VPN&#039;s network).&lt;br /&gt;
&lt;br /&gt;
Everything else should be rejected. No packets should ever be forwarded on 192.168.5.2 or 10.0.0.5 for example.&lt;br /&gt;
&lt;br /&gt;
=== Installing ipset ===&lt;br /&gt;
Install ipset:&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add ipset}}&lt;br /&gt;
&lt;br /&gt;
Add it to start up:&lt;br /&gt;
{{cmd|rc-update add ipset default}}&lt;br /&gt;
&lt;br /&gt;
Now we need to load the lists of addresses into ipset [http://blog.ls20.com/securing-your-server-using-ipset-and-dynamic-blocklists Securing Your Server using IPset and Dynamic Blocklists] mentions a [https://gist.github.com/hwdsl2/6dce75072274abfd2781 script] which was particularly useful. This script could be run on a cron job if you wanted to regularly update it and for the full bogon list you should as they change when that address space has been allocated.&lt;br /&gt;
&lt;br /&gt;
For the purpose of this we will be using just the [https://files.pfsense.org/lists/bogon-bn-nonagg.txt bogon-bn-nonagg.txt] list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;0.0.0.0/8&lt;br /&gt;
10.0.0.0/8&lt;br /&gt;
100.64.0.0/10&lt;br /&gt;
127.0.0.0/8&lt;br /&gt;
169.254.0.0/16&lt;br /&gt;
172.16.0.0/12&lt;br /&gt;
192.0.0.0/24&lt;br /&gt;
192.0.2.0/24&lt;br /&gt;
192.168.0.0/16&lt;br /&gt;
198.18.0.0/15&lt;br /&gt;
198.51.100.0/24&lt;br /&gt;
203.0.113.0/24&lt;br /&gt;
224.0.0.0/4&lt;br /&gt;
240.0.0.0/4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is unlikely to change as it&#039;s the IPV4 [https://en.wikipedia.org/wiki/Reserved_IP_addresses Reserved IP addresses] space. The script: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#! /bin/bash&lt;br /&gt;
&lt;br /&gt;
# /usr/local/sbin/fullbogons-ipv4&lt;br /&gt;
# BoneKracker&lt;br /&gt;
# Rev. 11 October 2012&lt;br /&gt;
# Tested with ipset 6.13&lt;br /&gt;
&lt;br /&gt;
# Purpose: Periodically update an ipset used in a running firewall to block&lt;br /&gt;
# bogons. Bogons are addresses that nobody should be using on the public&lt;br /&gt;
# Internet because they are either private, not to be assigned, or have&lt;br /&gt;
# not yet been assigned.&lt;br /&gt;
#&lt;br /&gt;
# Notes: Call this from crontab. Feed updated every 4 hours.&lt;br /&gt;
&lt;br /&gt;
# target=&amp;quot;http://www.team-cymru.org/Services/Bogons/fullbogons-ipv4.txt&amp;quot;&lt;br /&gt;
# Use alternative URL from pfSense, due to 404 error with URL above&lt;br /&gt;
target=&amp;quot;https://files.pfsense.org/lists/bogon-bn-nonagg.txt&amp;quot;&lt;br /&gt;
ipset_params=&amp;quot;hash:net&amp;quot;&lt;br /&gt;
&lt;br /&gt;
filename=$(basename ${target})&lt;br /&gt;
firewall_ipset=${filename%.*}           # ipset will be filename minus ext&lt;br /&gt;
data_dir=&amp;quot;/var/tmp/${firewall_ipset}&amp;quot;   # data directory will be same&lt;br /&gt;
data_file=&amp;quot;${data_dir}/${filename}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# if data directory does not exist, create it&lt;br /&gt;
mkdir -pm 0750 ${data_dir}&lt;br /&gt;
&lt;br /&gt;
# function to get modification time of the file in log-friendly format&lt;br /&gt;
get_timestamp() {&lt;br /&gt;
    date -r $1 +%m/%d&#039; &#039;%R&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# file modification time on server is preserved during wget download&lt;br /&gt;
[ -w ${data_file} ] &amp;amp;&amp;amp; old_timestamp=$(get_timestamp ${data_file})&lt;br /&gt;
&lt;br /&gt;
# fetch file only if newer than the version we already have&lt;br /&gt;
wget -qNP ${data_dir} ${target}&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$?&amp;quot; -ne &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
    logger -p cron.err &amp;quot;IPSet: ${firewall_ipset} wget failed.&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
timestamp=$(get_timestamp ${data_file})&lt;br /&gt;
&lt;br /&gt;
# compare timestamps because wget returns success even if no newer file&lt;br /&gt;
if [ &amp;quot;${timestamp}&amp;quot; != &amp;quot;${old_timestamp}&amp;quot; ]; then&lt;br /&gt;
&lt;br /&gt;
    temp_ipset=&amp;quot;${firewall_ipset}_temp&amp;quot;&lt;br /&gt;
    ipset create ${temp_ipset} ${ipset_params}&lt;br /&gt;
&lt;br /&gt;
    #sed -i &#039;/^#/d&#039; ${data_file}            # strip comments&lt;br /&gt;
    sed -ri &#039;/^[#&amp;lt; \t]|^$/d&#039; ${data_file}   # occasionally the file has been xhtml&lt;br /&gt;
&lt;br /&gt;
    while read network; do&lt;br /&gt;
        ipset add ${temp_ipset} ${network}&lt;br /&gt;
    done &amp;lt; ${data_file}&lt;br /&gt;
&lt;br /&gt;
    # if ipset does not exist, create it&lt;br /&gt;
    ipset create -exist ${firewall_ipset} ${ipset_params}&lt;br /&gt;
&lt;br /&gt;
    # swap the temp ipset for the live one&lt;br /&gt;
    ipset swap ${temp_ipset} ${firewall_ipset}&lt;br /&gt;
    ipset destroy ${temp_ipset}&lt;br /&gt;
&lt;br /&gt;
    # log the file modification time for use in minimizing lag in cron schedule&lt;br /&gt;
    logger -p cron.notice &amp;quot;IPSet: ${firewall_ipset} updated (as of: ${timestamp}).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
fi&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you should see the list loaded into memory when you do:&lt;br /&gt;
&lt;br /&gt;
{{cmd|ipset list}}&lt;br /&gt;
&lt;br /&gt;
We want to save it so our router can refer to it next time it starts up so for that:&lt;br /&gt;
&lt;br /&gt;
{{cmd|/etc/init.d/ipset save}}&lt;br /&gt;
&lt;br /&gt;
=== Adding our allowed networks ===&lt;br /&gt;
&lt;br /&gt;
==== IPv4 ====&lt;br /&gt;
{{cmd|ipset create allowed-nets-ipv4 hash:net,iface family inet}}&lt;br /&gt;
&lt;br /&gt;
Then you can add each of your allowed networks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ipset add allowed-nets-ipv4 192.168.0.0/30,eth1&lt;br /&gt;
ipset add allowed-nets-ipv4 192.168.1.0/24,eth0&lt;br /&gt;
ipset add allowed-nets-ipv4 192.168.2.0/24,eth0&lt;br /&gt;
ipset add allowed-nets-ipv4 192.168.3.0/24,eth0&lt;br /&gt;
ipset add allowed-nets-ipv4 127.0.0.0/8,lo&lt;br /&gt;
ipset add allowed-nets-ipv4 172.16.32.0/20,tun0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IPv6 ====&lt;br /&gt;
For IPv6 if you&#039;ve got any [https://en.wikipedia.org/wiki/Unique_local_address Unique local address] ranges you may choose to add them:&lt;br /&gt;
&lt;br /&gt;
{{cmd|ipset create allowed-nets-ipv6 hash:net,iface family inet6}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ipset add allowed-nets-ipv6 fde4:8dba:82e1::/48,tun0&lt;br /&gt;
ipset add allowed-nets-ipv6 fde4:8dba:82e1:ffff::/64,eth0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finally save the sets with this command so they can be loaded next boot:&lt;br /&gt;
&lt;br /&gt;
{{cmd|/etc/init.d/ipset save}}&lt;br /&gt;
&lt;br /&gt;
== Restricting our LAN subnet with iptables, and blocking the bogons ==&lt;br /&gt;
Finally we can apply our iptables rules, to filter both 192.168.3.0/24 and make sure that subnets like 192.168.5.0/24 are not forwarded or accessible by our router. You will need to review these rules, and remove the ones that do not apply to you.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to change your RADIUS rules if you moved your WiFi APs into the 192.168.3.0/24 subnet. You&#039;ll also need to edit /etc/raddb/clients.conf&lt;br /&gt;
&lt;br /&gt;
I used a new table here called &amp;quot;raw&amp;quot;. This table is more primitive than the filter table. It cannot have FORWARD rules or INPUT rules. Therefore you will still need a FORWARD rule in your filter table to block bogons originating from your LAN.&lt;br /&gt;
&lt;br /&gt;
The only kind of rules we may use here are PREROUTING and OUTPUT. The OUTPUT rules will only filter traffic originating from our router&#039;s local processes, such as if we ran the ping command to a bogon range on the router&#039;s command prompt.&lt;br /&gt;
&lt;br /&gt;
Traffic passes over the raw table, before connecting marking as indicated by this packet flow map: [http://inai.de/images/nf-packet-flow.png Netfilter packet flow graph] this means we don&#039;t have to strip the mark off the bogon range in the mangle table anymore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#########################################################################&lt;br /&gt;
# Advanced routing rule set&lt;br /&gt;
# Uses 192.168.1.0 via ISP&lt;br /&gt;
#      192.168.2.0 via VPN&lt;br /&gt;
#      192.168.3.0 via LAN&lt;br /&gt;
#&lt;br /&gt;
# Packets to/from 192.168.1.0/24 are marked with 0x1 and routed to ISP&lt;br /&gt;
# Packets to/from 192.168.2.0/24 are marked with 0x2 and routed to VPN&lt;br /&gt;
# Packets to/from 192.168.3.0/24 are routed to LAN and not forwarded onto&lt;br /&gt;
#                                    the internet&lt;br /&gt;
#&lt;br /&gt;
#########################################################################&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Raw Table&lt;br /&gt;
# This table is the place where we drop all illegal packets from networks that&lt;br /&gt;
# do not exist&lt;br /&gt;
#&lt;br /&gt;
*raw&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a log drop chain&lt;br /&gt;
:LOG_DROP_BOGON - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create an output chain&lt;br /&gt;
:OUT_PPP0 - [0:0]&lt;br /&gt;
:OUT_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Allows traffic from VPN tunnel&lt;br /&gt;
-A PREROUTING -s 172.16.32.0/20 -i tun0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allows traffic to VPN tunnel&lt;br /&gt;
-A PREROUTING -d 172.16.32.0/20 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Block specified bogons coming in from ISP and VPN&lt;br /&gt;
# (unlikely to happen as they filter them on their router)&lt;br /&gt;
-A PREROUTING -i ppp0 -m set --match-set bogon-bn-nonagg src -j LOG_DROP_BOGON&lt;br /&gt;
-A PREROUTING -i tun0 -m set --match-set bogon-bn-nonagg src -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Allows my excepted ranges.&lt;br /&gt;
-A PREROUTING -m set --match-set allowed-nets-ipv4 src,src -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass output interface to corresponding chain&lt;br /&gt;
-A OUTPUT -o ppp0 -j OUT_PPP0&lt;br /&gt;
-A OUTPUT -o tun0 -j OUT_TUN0&lt;br /&gt;
&lt;br /&gt;
# Log drop chain&lt;br /&gt;
-A LOG_DROP_BOGON -j LOG --log-prefix &amp;quot;Dropped Bogon (ipv4) : &amp;quot; --log-level 6&lt;br /&gt;
-A LOG_DROP_BOGON -j DROP&lt;br /&gt;
&lt;br /&gt;
# Block packets originating from the router destined to bogon ranges&lt;br /&gt;
-A OUT_PPP0 -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Blocks packets originating from the router destined to bogon ranges&lt;br /&gt;
-A OUT_TUN0 -d 172.16.32.0/20 -j ACCEPT&lt;br /&gt;
-A OUT_TUN0 -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# NAT Table&lt;br /&gt;
# This is where translation of packets happens and &amp;quot;forwarding&amp;quot; of ports&lt;br /&gt;
# to specific hosts.&lt;br /&gt;
#&lt;br /&gt;
*nat&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Port forwarding for Bittorrent&lt;br /&gt;
-A PREROUTING -i tun0 -p tcp -m tcp --dport 6881:6889 -j DNAT --to-destination 192.168.2.20&lt;br /&gt;
-A PREROUTING -i tun0 -p udp -m udp --dport 6881:6889 -j DNAT --to-destination 192.168.2.20&lt;br /&gt;
&lt;br /&gt;
# Allows routing to our modem subnet so we can access the web interface&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
-A POSTROUTING -s 192.168.2.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the VPN tunnel&lt;br /&gt;
-A POSTROUTING -o tun0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the PPP tunnel&lt;br /&gt;
-A POSTROUTING -o ppp0 -j MASQUERADE&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Filter Table&lt;br /&gt;
# This is where we decide to ACCEPT, DROP or REJECT things&lt;br /&gt;
#&lt;br /&gt;
*filter&lt;br /&gt;
:INPUT DROP [0:0]&lt;br /&gt;
:FORWARD DROP [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for forwarding packets&lt;br /&gt;
:FWD_ETH0 - [0:0]&lt;br /&gt;
:FWD_ETH1 - [0:0]&lt;br /&gt;
:FWD_PPP0 - [0:0]&lt;br /&gt;
:FWD_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for input packets (for host itself)&lt;br /&gt;
:IN_ETH0 - [0:0]&lt;br /&gt;
:IN_ETH1 - [0:0]&lt;br /&gt;
:IN_PPP0 - [0:0]&lt;br /&gt;
:IN_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a drop chain&lt;br /&gt;
:LOG_DROP - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a log drop chain&lt;br /&gt;
:LOG_DROP_BOGON - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a reject chain&lt;br /&gt;
:LOG_REJECT_LANONLY - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create an output chain&lt;br /&gt;
:OUT_PPP0 - [0:0]&lt;br /&gt;
:OUT_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Pass input packet to corresponding rule chain&lt;br /&gt;
-A INPUT -i lo -j ACCEPT&lt;br /&gt;
-A INPUT -i eth0 -j IN_ETH0&lt;br /&gt;
-A INPUT -i eth1 -j IN_ETH1&lt;br /&gt;
-A INPUT -i ppp0 -j IN_PPP0&lt;br /&gt;
-A INPUT -i tun0 -j IN_TUN0&lt;br /&gt;
&lt;br /&gt;
# Track forwarded packets&lt;br /&gt;
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass forwarded packet to corresponding rule chain&lt;br /&gt;
-A FORWARD -i eth0 -j FWD_ETH0&lt;br /&gt;
-A FORWARD -i eth1 -j FWD_ETH1&lt;br /&gt;
-A FORWARD -i ppp0 -j FWD_PPP0&lt;br /&gt;
-A FORWARD -i tun0 -j FWD_TUN0&lt;br /&gt;
&lt;br /&gt;
# Pass output interface to corresponding chain&lt;br /&gt;
-A OUTPUT -o ppp0 -j OUT_PPP0&lt;br /&gt;
-A OUTPUT -o tun0 -j OUT_TUN0&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to Modem&lt;br /&gt;
-A FWD_ETH0 -d 192.168.0.1/32 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow routing to remote address on VPN&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -d 172.16.32.1/32 -o tun0 -j ACCEPT&lt;br /&gt;
-A FWD_ETH0 -s 192.168.2.0/24 -d 172.16.32.1/32 -o tun0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow forwarding from LAN hosts to LAN ONLY subnet&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -d 192.168.3.0/24 -j ACCEPT&lt;br /&gt;
-A FWD_ETH0 -s 192.168.2.0/24 -d 192.168.3.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow LAN ONLY subnet to contact other LAN hosts&lt;br /&gt;
-A FWD_ETH0 -s 192.168.3.0/24 -d 192.168.1.0/24 -j ACCEPT&lt;br /&gt;
-A FWD_ETH0 -s 192.168.3.0/24 -d 192.168.2.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Refuse to forward bogons to the internet!&lt;br /&gt;
-A FWD_ETH0 -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to ISP&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to VPN&lt;br /&gt;
-A FWD_ETH0 -s 192.168.2.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Prevent 192.168.3.0/24 from accessing internet&lt;br /&gt;
-A FWD_ETH0 -s 192.168.3.0/24 -j LOG_REJECT_LANONLY&lt;br /&gt;
&lt;br /&gt;
# Allow excepted server to be FORWARD to ppp0&lt;br /&gt;
#-A FWD_ETH0 -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -o ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward SSH packets from network to modem&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.1.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.2.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward HTTP packets from network to mode&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.1.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.2.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward Bittorrent Port to workstation&lt;br /&gt;
-A FWD_TUN0 -d 192.168.2.20/32 -p tcp -m tcp --dport 6881:6889 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_TUN0 -d 192.168.2.20/32 -p udp -m udp --dport 6881:6889 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# DNS to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# FreeRadius Client (eg a UniFi AP)&lt;br /&gt;
-A IN_ETH0 -s 192.168.3.10/32 -p tcp -m tcp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.3.10/32 -p udp -m udp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Ubiquiti UAP Device Discovery Broadcast&lt;br /&gt;
-A IN_ETH0 -s 192.168.3.10/32 -p udp -m udp --dport 10001 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# NTP to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.3.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept traffic to router on both subnets&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow excepted server to be INPUT to eth0 from LAN&lt;br /&gt;
#-A IN_ETH0 -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -o ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# HTTP To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked PPP0 connection&lt;br /&gt;
-A IN_PPP0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on PPP0&lt;br /&gt;
-A IN_PPP0 -j LOG --log-prefix &amp;quot;DROP:INPUT (ipv4) &amp;quot; --log-level 6&lt;br /&gt;
-A IN_PPP0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked TUN0 connection&lt;br /&gt;
-A IN_TUN0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on TUN0&lt;br /&gt;
-A IN_TUN0 -j LOG --log-prefix &amp;quot;DROP:INPUT (ipv4) &amp;quot; --log-level 6&lt;br /&gt;
-A IN_TUN0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Log dropped bogons that never got forwarded&lt;br /&gt;
-A LOG_DROP_BOGON -j LOG --log-prefix &amp;quot;Dropped Bogon forward (ipv4) &amp;quot; --log-level 6&lt;br /&gt;
-A LOG_DROP_BOGON -j DROP&lt;br /&gt;
&lt;br /&gt;
# Log rejected packets&lt;br /&gt;
-A LOG_REJECT_LANONLY -j LOG --log-prefix &amp;quot;Rejected packet from LAN only range : &amp;quot; --log-level 6&lt;br /&gt;
-A LOG_REJECT_LANONLY -j REJECT --reject-with icmp-port-unreachable&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mangle Table&lt;br /&gt;
# This is the place where our markings happen, whether they be 0x1 or 0x2&lt;br /&gt;
#&lt;br /&gt;
*mangle&lt;br /&gt;
&lt;br /&gt;
# Set default policies for table&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:FORWARD ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Restore CONNMARK to the MARK (If one doesn&#039;t exist then no mark is set)&lt;br /&gt;
-A PREROUTING -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff&lt;br /&gt;
&lt;br /&gt;
# If packet MARK is 2, then it means there is already a connection mark and the&lt;br /&gt;
# original packet came in on VPN&lt;br /&gt;
-A PREROUTING -s 192.168.2.0/24 -m mark --mark 0x2 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Check exception (this is a server which when accessed on a 192.168.2.0/24 address will go out the ISP table) are 0x1&lt;br /&gt;
#-A PREROUTING -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -m mark --mark 0x1 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Mark packets coming from 192.168.2.0/24 are 0x2&lt;br /&gt;
-A PREROUTING -s 192.168.2.0/24 -j MARK --set-xmark 0x2/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# If packet MARK is 1, then it means there is already a connection mark and the&lt;br /&gt;
# original packet came in on ISP&lt;br /&gt;
-A PREROUTING -s 192.168.1.0/24 -m mark --mark 0x1 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Mark packets 192.168.1.0/24 are 0x1&lt;br /&gt;
-A PREROUTING -s 192.168.1.0/24 -j MARK --set-xmark 0x1/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Mark exception (this is a server which when accessed on a 192.168.2.0/24 address will go out the ISP table) as 0x1&lt;br /&gt;
#-A PREROUTING -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -j MARK --set-xmark 0x1/0xffffff&lt;br /&gt;
&lt;br /&gt;
# Strip mark if packet is destined for modem&lt;br /&gt;
-A PREROUTING -d 192.168.0.1/32 -j MARK --set-xmark 0x0/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Save MARK to CONNMARK (remember iproute can&#039;t see CONNMARKs)&lt;br /&gt;
-A PREROUTING -j CONNMARK --save-mark --nfmask 0xffffffff --ctmask 0xffffffff&lt;br /&gt;
COMMIT&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Other Tips =&lt;br /&gt;
&lt;br /&gt;
== Diagnosing firewall problems ==&lt;br /&gt;
&lt;br /&gt;
=== netcat, netcat6 ===&lt;br /&gt;
Netcat can be useful for testing if a port is open or closed or filtered.&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add netcat-openbsd}}&lt;br /&gt;
&lt;br /&gt;
After installing netcat we can use it like this:&lt;br /&gt;
&lt;br /&gt;
Say we wanted to test for IPv6, UDP, Port 547 we would do this on the router:&lt;br /&gt;
&lt;br /&gt;
{{cmd|nc -6 -u -l 547}}&lt;br /&gt;
&lt;br /&gt;
and then this on the client to connect to it:&lt;br /&gt;
&lt;br /&gt;
{{cmd|nc -u -v -6 2001:0db8:1234:0001::1 547}}&lt;br /&gt;
&lt;br /&gt;
=== tcpdump ===&lt;br /&gt;
&lt;br /&gt;
tcpdump can also be useful for dumping the contents of packets coming in on an interface:&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add tcpdump}}&lt;br /&gt;
&lt;br /&gt;
Then we can run it. This example captures all DNS traffic originating from 192.168.2.20.&lt;br /&gt;
&lt;br /&gt;
{{cmd|tcpdump -i eth0 udp and src 192.168.2.20 and port 53}}&lt;br /&gt;
&lt;br /&gt;
You can write the file out with the -w option, and view it in Wireshark locally on your computer. You can increase the verbosity with the -v option. Using -vv will be even more verbose. -vvv will show even more.&lt;br /&gt;
&lt;br /&gt;
== lbu cache ==&lt;br /&gt;
Configure lbu cache so that you don&#039;t need to download packages when you restart your router eg [[Local APK cache]]&lt;br /&gt;
&lt;br /&gt;
This is particularly important as some of the images do not contain ppp-pppoe. This might mean you&#039;re unable to get an internet connection to download the other packages on boot.&lt;br /&gt;
&lt;br /&gt;
== lbu encryption /etc/lbu/lbu.conf ==&lt;br /&gt;
In /etc/lbu/lbu.conf you might want to enable encryption to protect your VPN keys.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# what cipher to use with -e option&lt;br /&gt;
DEFAULT_CIPHER=aes-256-cbc&lt;br /&gt;
&lt;br /&gt;
# Uncomment the row below to encrypt config by default&lt;br /&gt;
ENCRYPTION=$DEFAULT_CIPHER&lt;br /&gt;
&lt;br /&gt;
# Uncomment below to avoid &amp;lt;media&amp;gt; option to &#039;lbu commit&#039;&lt;br /&gt;
# Can also be set to &#039;floppy&#039;&lt;br /&gt;
LBU_MEDIA=mmcblk0p1&lt;br /&gt;
&lt;br /&gt;
# Set the LBU_BACKUPDIR variable in case you prefer to save the apkovls&lt;br /&gt;
# in a normal directory instead of mounting an external media.&lt;br /&gt;
# LBU_BACKUPDIR=/root/config-backups&lt;br /&gt;
&lt;br /&gt;
# Uncomment below to let lbu make up to 3 backups&lt;br /&gt;
# BACKUP_LIMIT=3&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remember to set a root password, by default Alpine Linux&#039;s root account is passwordless.&lt;br /&gt;
{{cmd|passwd root}}&lt;br /&gt;
&lt;br /&gt;
== Backup apkprov ==&lt;br /&gt;
It&#039;s a good idea to back up your apk provision file. You can pull it off your router to your local workstation with:&lt;br /&gt;
&lt;br /&gt;
{{cmd|scp -r root@192.168.2.1:/media/mmcblk0p1/&amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz.aes-256-cbc ./}}&lt;br /&gt;
&lt;br /&gt;
And decrypt it with:&lt;br /&gt;
{{cmd|openssl enc -d -aes-256-cbc -in &amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz.aes-256-cbc -out &amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz}}&lt;br /&gt;
&lt;br /&gt;
It can be encrypted with:&lt;br /&gt;
{{cmd|openssl aes-256-cbc -salt -in &amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz -out &amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz.aes-256-cbc}}&lt;br /&gt;
&lt;br /&gt;
== Harden SSH ==&lt;br /&gt;
&lt;br /&gt;
=== Generate a SSH key ===&lt;br /&gt;
{{cmd|ssh-keygen -t rsa -b 4096}}&lt;br /&gt;
&lt;br /&gt;
You will want to put the contents of id_rsa.pub in /etc/ssh/authorized_keys&lt;br /&gt;
&lt;br /&gt;
You can put multiple public keys on multiple lines if more than one person has access to the router.&lt;br /&gt;
&lt;br /&gt;
=== /etc/ssh/sshd_config ===&lt;br /&gt;
A couple of good options to set in here can be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ListenAddress 192.168.1.1&lt;br /&gt;
ListenAddress 192.168.2.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
While this isn&#039;t usually a good idea, a router doesn&#039;t need more than one user.&lt;br /&gt;
&amp;lt;pre&amp;gt;PermitRootLogin yes&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The most important options:&lt;br /&gt;
&amp;lt;pre&amp;gt;RSAAuthentication yes&lt;br /&gt;
PubkeyAuthentication yes&lt;br /&gt;
AuthorizedKeysFile  /etc/ssh/authorized_keys&lt;br /&gt;
PasswordAuthentication no&lt;br /&gt;
PermitEmptyPasswords no&lt;br /&gt;
AllowTcpForwarding no&lt;br /&gt;
X11Forwarding no&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== /etc/conf.d/sshd ===&lt;br /&gt;
You will want to add &amp;lt;pre&amp;gt;rc_need=&amp;quot;net&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This instructs OpenRC to make sure the network is up before starting ssh.&lt;br /&gt;
&lt;br /&gt;
Finally add sshd to the default run level&lt;br /&gt;
{{cmd|rc-update add sshd default}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at [https://stribika.github.io/2015/01/04/secure-secure-shell.html Secure Secure Shell] and tighten OpenSSH&#039;s cryptography options.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
* https://wiki.gentoo.org/wiki/Home_Router&lt;br /&gt;
* https://help.ubuntu.com/community/ADSLPPPoE&lt;br /&gt;
* https://wiki.archlinux.org/index.php/Router&lt;br /&gt;
* https://wiki.gentoo.org/wiki/IPv6_router_guide&lt;br /&gt;
* [https://vk5tu.livejournal.com/37206.html IPv6 at home, under the hood with Debian Wheezy and Internode]&lt;br /&gt;
* [http://vk5tu.livejournal.com/43059.html Raspberry Pi random number generator]&lt;br /&gt;
* [https://www.raspberrypi.org/forums/viewtopic.php?f=56&amp;amp;t=60569 rng-tools post by ktb]&lt;br /&gt;
&lt;br /&gt;
[[category: VPN]]&lt;br /&gt;
[[category: Raspberry]]&lt;/div&gt;</summary>
		<author><name>Dngray</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Linux_Router_with_VPN_on_a_Raspberry_Pi&amp;diff=16945</id>
		<title>Linux Router with VPN on a Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Linux_Router_with_VPN_on_a_Raspberry_Pi&amp;diff=16945"/>
		<updated>2020-02-25T10:03:22Z</updated>

		<summary type="html">&lt;p&gt;Dngray: Mention dhcpcd&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
= Rationale =&lt;br /&gt;
&lt;br /&gt;
This guide demonstrates how to set up a Linux router with a VPN tunnel. You will need a second ethernet adapter. If you are using a Raspberry Pi like I did, then you can use something like this [http://store.apple.com/us/product/MC704LL/A/apple-usb-ethernet-adapter Apple USB Ethernet Adapter] as it contains a ASIX AX88772 which has good Linux support.&lt;br /&gt;
&lt;br /&gt;
You may choose to also buy an [http://www.element14.com/community/docs/DOC-68907/l/shim-rtc-realtime-clock-accessory-board-for-raspberry-pi RTC clock]. If you don&#039;t have an RTC clock, the time is lost when your Pi is shut down. When it is rebooted, the time will be set back to Thursday, 1 January 1970. As this is earlier than the creation time of your VPN certificates OpenVPN will refuse to start, which may mean you cannot do DNS lookups over VPN.&lt;br /&gt;
&lt;br /&gt;
For wireless, a separate access point was purchased ([http://wiki.openwrt.org/toh/ubiquiti/unifi Ubiquiti UniFi AP]) because it contains a Atheros AR9287 which is supported by [https://wireless.wiki.kernel.org/en/users/drivers/ath9k ath9k].&lt;br /&gt;
&lt;br /&gt;
I only chose a Raspberry Pi due to the fact it was inexpensive. My WAN link is pathetic so I was not concerned with getting high PPS ([https://en.wikipedia.org/wiki/Throughput Packets Per Second]). You could choose to use an old x86/amd64 system instead. If I had better internet I&#039;d probably go with an offering from [https://soekris.com Soekris] such as the [https://soekris.com/products/net6501-1.html net6501] as it would have a much lower power consumption than a generic x86_64 desktop processor.&lt;br /&gt;
&lt;br /&gt;
If you want to route speeds above 100 Mbit/s you&#039;ll want to make use of hardware encryption like [https://en.wikipedia.org/wiki/AES_instruction_set AES-NI]. The [https://soekris.com Soekris] offerings have the option of an additional hardware encryption module ([https://soekris.com/products/vpn-1411.html vpn1411]). Another option is to use a [https://en.wikipedia.org/wiki/Mini-ITX Mini ITX motherboard], with a managed switch. I chose the [https://www.ubnt.com/edgemax/edgeswitch Ubiquiti ES-16-150W].&lt;br /&gt;
&lt;br /&gt;
If you wish to use IPv6 you should consider looking at [[Linux Router with VPN on a Raspberry Pi (IPv6)]] as the implementation does differ slightly to this tutorial.&lt;br /&gt;
&lt;br /&gt;
The network in this tutorial looks like this: &lt;br /&gt;
&lt;br /&gt;
[[File:Network diagram ipv4 basic.svg|900px|center|Network Diagram Single IPv4]]&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
This guide assumes you&#039;re using Alpine Linux from a micro SD card in ramdisk mode. It assumes you&#039;ve read the basics of how to use [[Alpine local backup]].  The [[Raspberry Pi]] article contains information on how to install Alpine Linux on a Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
= Modem in full bridge mode =&lt;br /&gt;
This particular page uses an example where you have a modem that uses PPPoE. You will need to modify parts which do not apply to you. &lt;br /&gt;
&lt;br /&gt;
In this example I have a modem which has been configured in full bridge mode. PPP sessions are initiated on the router.&lt;br /&gt;
&lt;br /&gt;
The modem I am using is a [http://www.cisco.com/c/en/us/products/routers/877-integrated-services-router-isr/index.html Cisco 877 Integrated Services Router]. It has no web interface and is controlled over SSH. More information can be found [[Configuring a Cisco 877 in full bridge mode]].&lt;br /&gt;
&lt;br /&gt;
= Network =&lt;br /&gt;
&lt;br /&gt;
== /etc/hostname ==&lt;br /&gt;
Set this to your hostname eg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;HOST_NAME&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/hosts ==&lt;br /&gt;
Set your host and hostname&lt;br /&gt;
&amp;lt;pre&amp;gt;127.0.0.1	&amp;lt;HOST_NAME&amp;gt; &amp;lt;HOST_NAME&amp;gt;.&amp;lt;DOMAIN_NAME&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::1		&amp;lt;HOST_NAME&amp;gt; ipv6-gateway ipv6-loopback&lt;br /&gt;
ff00::0		ipv6-localnet&lt;br /&gt;
ff00::0		ipv6-mcastprefix&lt;br /&gt;
ff02::1		ipv6-allnodes&lt;br /&gt;
ff02::2		ipv6-allrouters&lt;br /&gt;
ff02::3		ipv6-allhosts&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/interfaces ==&lt;br /&gt;
Configure your network interfaces. Change &amp;quot;yourISP&amp;quot; to the file name of the file in /etc/ppp/peers/yourISP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#&lt;br /&gt;
# Network Interfaces&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Loopback interfaces&lt;br /&gt;
auto lo&lt;br /&gt;
iface lo inet loopback&lt;br /&gt;
  address 127.0.0.1&lt;br /&gt;
  netmask 255.0.0.0&lt;br /&gt;
&lt;br /&gt;
# Internal Interface - facing LAN&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
  address 192.168.1.1&lt;br /&gt;
  netmask 255.255.255.0&lt;br /&gt;
  broadcast 192.168.1.255&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PPP ===&lt;br /&gt;
Next up we need to configure our router to be able to dial a PPP connection with our modem.&lt;br /&gt;
&lt;br /&gt;
If your ISP uses [https://en.wikipedia.org/wiki/Point-to-Point_Protocol PPP] you may need to configure it. See [[PPP]].&lt;br /&gt;
&lt;br /&gt;
You will want to make sure you set your WAN interface, in this example we used eth1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# External Interface - facing Modem&lt;br /&gt;
allow-hotplug eth1&lt;br /&gt;
auto eth1&lt;br /&gt;
iface eth1 inet static&lt;br /&gt;
  address 192.168.0.2&lt;br /&gt;
  netmask 255.255.255.252&lt;br /&gt;
  broadcast 192.168.0.3&lt;br /&gt;
  pre-up /sbin/ip link set eth1 up&lt;br /&gt;
  up ifup ppp0=yourISP&lt;br /&gt;
  down ifdown ppp0=yourISP&lt;br /&gt;
  post-down /sbin/ip link set eth1 up&lt;br /&gt;
&lt;br /&gt;
# Link to ISP&lt;br /&gt;
iface yourISP inet ppp&lt;br /&gt;
  provider yourISP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IPoE ===&lt;br /&gt;
Alternatively it&#039;s quite common for ISPs to use [https://en.wikipedia.org/wiki/IPoE IPoE]. IPoE is much simpler and only runs DHCP on the external interface. It should look something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# External interface to ISP&lt;br /&gt;
allow-hotplug eth1&lt;br /&gt;
auto eth1&lt;br /&gt;
iface eth1 inet dhcp&lt;br /&gt;
&lt;br /&gt;
iface eth1 inet static&lt;br /&gt;
    address 192.168.0.2&lt;br /&gt;
    netmask 255.255.255.252&lt;br /&gt;
    broadcast 192.168.0.3&lt;br /&gt;
&lt;br /&gt;
iface eth1 inet6 manual&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== DHCP from ISP ====&lt;br /&gt;
&lt;br /&gt;
Above we set DHCP and we set a static IP. The purpose of this is so we can still forward packets through to the modem to be able to access the web interface or ssh.&lt;br /&gt;
&lt;br /&gt;
We do still need DHCP to get an IP address form our ISP though. I like to use dhcpcd instead of udhcp (the default in Alpine Linux), because it allows for [https://en.wikipedia.org/wiki/Prefix_delegation Prefix Delegation], which is used in IPv6 networks.&lt;br /&gt;
&lt;br /&gt;
My /etc/dhcpcd.conf looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Enable extra debugging&lt;br /&gt;
# debug&lt;br /&gt;
# logfile /var/log/dhcpcd.log&lt;br /&gt;
&lt;br /&gt;
# Allow users of this group to interact with dhcpcd via the control&lt;br /&gt;
# socket.&lt;br /&gt;
#controlgroup wheel&lt;br /&gt;
&lt;br /&gt;
# Inform the DHCP server of our hostname for DDNS.&lt;br /&gt;
hostname gateway&lt;br /&gt;
&lt;br /&gt;
# Use the hardware address of the interface for the Client ID.&lt;br /&gt;
# clientid&lt;br /&gt;
# or&lt;br /&gt;
# Use the same DUID + IAID as set in DHCPv6 for DHCPv4 ClientID as&lt;br /&gt;
# per RFC4361. Some non-RFC compliant DHCP servers do not reply with&lt;br /&gt;
# this set. In this case, comment out duid and enable clientid above.&lt;br /&gt;
duid&lt;br /&gt;
&lt;br /&gt;
# Persist interface configuration when dhcpcd exits.&lt;br /&gt;
persistent&lt;br /&gt;
&lt;br /&gt;
# Rapid commit support.&lt;br /&gt;
# Safe to enable by default because it requires the equivalent option&lt;br /&gt;
# set on the server to actually work.&lt;br /&gt;
option rapid_commit&lt;br /&gt;
&lt;br /&gt;
# A list of options to request from the DHCP server.&lt;br /&gt;
option domain_name_servers, domain_name, domain_search, host_name&lt;br /&gt;
option classless_static_routes&lt;br /&gt;
&lt;br /&gt;
# Most distributions have NTP support.&lt;br /&gt;
option ntp_servers&lt;br /&gt;
&lt;br /&gt;
# Respect the network MTU.&lt;br /&gt;
# Some interface drivers reset when changing the MTU so disabled by&lt;br /&gt;
# default.&lt;br /&gt;
#option interface_mtu 1586&lt;br /&gt;
&lt;br /&gt;
# A ServerID is required by RFC2131.&lt;br /&gt;
require dhcp_server_identifier&lt;br /&gt;
&lt;br /&gt;
# Generate Stable Private IPv6 Addresses instead of hardware based&lt;br /&gt;
# ones&lt;br /&gt;
slaac private&lt;br /&gt;
&lt;br /&gt;
# A hook script is provided to lookup the hostname if not set by the&lt;br /&gt;
# DHCP server, but it should not be run by default.&lt;br /&gt;
nohook lookup-hostname&lt;br /&gt;
&lt;br /&gt;
# Disable solicitations on all interfaces&lt;br /&gt;
noipv6rs&lt;br /&gt;
&lt;br /&gt;
# Wait for IP before forking to background&lt;br /&gt;
waitip 6&lt;br /&gt;
&lt;br /&gt;
# Don&#039;t touch DNS&lt;br /&gt;
nohook resolv.conf&lt;br /&gt;
&lt;br /&gt;
allowinterfaces eth1 eth0.2&lt;br /&gt;
# Use the interface connected to WAN&lt;br /&gt;
interface eth1&lt;br /&gt;
    waitip 4&lt;br /&gt;
    noipv4ll&lt;br /&gt;
    ipv6rs # enable routing solicitation get the default IPv6 route&lt;br /&gt;
    iaid 1&lt;br /&gt;
    ia_pd 1/::/56 eth0.2/2/64&lt;br /&gt;
    timeout 30&lt;br /&gt;
&lt;br /&gt;
interface eth0.2&lt;br /&gt;
    ipv6only&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Basic IPtables firewall with routing ==&lt;br /&gt;
This demonstrates how to set up basic routing with a permissive outgoing firewall. Incoming packets are blocked. The rest is commented in the rule set.&lt;br /&gt;
&lt;br /&gt;
First install iptables:&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add iptables ip6tables}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#########################################################################&lt;br /&gt;
# Basic iptables IPv4 routing rule set&lt;br /&gt;
#&lt;br /&gt;
# 192.168.1.0/24 routed directly to PPP0 via NAT&lt;br /&gt;
# &lt;br /&gt;
#########################################################################&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mangle Table&lt;br /&gt;
# We leave this empty for the moment.&lt;br /&gt;
#&lt;br /&gt;
*mangle&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:FORWARD ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Filter Table&lt;br /&gt;
# This is where we decide to ACCEPT, DROP or REJECT things&lt;br /&gt;
#&lt;br /&gt;
*filter&lt;br /&gt;
:INPUT DROP [0:0]&lt;br /&gt;
:FORWARD DROP [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
*filter&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for forwarding packets&lt;br /&gt;
:FWD_ETH0 - [0:0]&lt;br /&gt;
:FWD_ETH1 - [0:0]&lt;br /&gt;
:FWD_PPP0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for input packets (for host itself)&lt;br /&gt;
:IN_ETH0 - [0:0]&lt;br /&gt;
:IN_ETH1 - [0:0]&lt;br /&gt;
:IN_PPP0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a log drop chain&lt;br /&gt;
:LOG_DROP - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Pass input packet to corresponding rule chain&lt;br /&gt;
-A INPUT -i lo -j ACCEPT&lt;br /&gt;
-A INPUT -i eth0 -j IN_ETH0&lt;br /&gt;
-A INPUT -i eth1 -j IN_ETH1&lt;br /&gt;
-A INPUT -i ppp0 -j IN_PPP0&lt;br /&gt;
&lt;br /&gt;
# Pass forwarded packet to corresponding rule chain&lt;br /&gt;
-A FORWARD -i eth0 -j FWD_ETH0&lt;br /&gt;
-A FORWARD -i eth1 -j FWD_ETH1&lt;br /&gt;
-A FORWARD -i ppp0 -j FWD_PPP0&lt;br /&gt;
&lt;br /&gt;
# Forward LAN traffic out&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward SSH packets from network to modem&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.0/30 -d 192.168.1.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward HTTP to modem&#039;s webserver&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.0/30 -d 192.168.1.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to ISP&lt;br /&gt;
-A FWD_PPP0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# DNS to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# FreeRadius Client (eg a UniFi AP)&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# NTP to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept traffic&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# HTTP to modem&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked PPP0 connection&lt;br /&gt;
-A IN_PPP0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# NAT Table&lt;br /&gt;
# This is where translation of packets happens and &amp;quot;forwarding&amp;quot; of ports&lt;br /&gt;
# to specific hosts.&lt;br /&gt;
#&lt;br /&gt;
*nat&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Port forwarding for Bittorrent&lt;br /&gt;
-A PREROUTING -i ppp0 -p tcp -m tcp --dport 6881:6889 -j DNAT --to-destination 192.168.1.20&lt;br /&gt;
-A PREROUTING -i ppp0 -p udp -m udp --dport 6881:6889 -j DNAT --to-destination 192.168.1.20&lt;br /&gt;
&lt;br /&gt;
# Allows routing to our modem subnet so we can access the web interface or SSH&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 22 -j MASQUERADE&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the PPP tunnel&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE&lt;br /&gt;
COMMIT&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I&#039;d also highly suggest reading these resources if you are new to iptables: &lt;br /&gt;
&lt;br /&gt;
* [https://www.frozentux.net/category/linux/iptables Frozen Tux Iptables-tutorial]&lt;br /&gt;
* [http://inai.de/links/iptables/ Words of wisdom for #netfilter]&lt;br /&gt;
* [http://sfvlug.editthis.info/wiki/Things_You_Should_Know_About_Netfilter Things You Should Know About Netfilter]&lt;br /&gt;
* [http://inai.de/documents/Perfect_Ruleset.pdf Towards the perfect ruleset]&lt;br /&gt;
&lt;br /&gt;
== /etc/sysctl.d/local.conf ==&lt;br /&gt;
&amp;lt;pre&amp;gt;# Controls IP packet forwarding&lt;br /&gt;
net.ipv4.ip_forward = 1&lt;br /&gt;
&lt;br /&gt;
# Needed to use fwmark, only required if you want to set up the VPN subnet later in this article&lt;br /&gt;
net.ipv4.conf.all.rp_filter = 2&lt;br /&gt;
&lt;br /&gt;
# Disable IPv6&lt;br /&gt;
net.ipv6.conf.all.disable_ipv6 = 1&lt;br /&gt;
net.ipv6.conf.lo.disable_ipv6 = 1&lt;br /&gt;
net.ipv6.conf.default.disable_ipv6 = 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note IPv6 is disabled here if you want that see the other tutorial [[Linux Router with VPN on a Raspberry Pi (IPv6)]]. You may also wish to look at [https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt ip-sysctl.txt] to read about the other keys.&lt;br /&gt;
&lt;br /&gt;
= DHCP =&lt;br /&gt;
{{cmd|apk add dhcp}}&lt;br /&gt;
&lt;br /&gt;
== /etc/conf.d/dhcpd ==&lt;br /&gt;
Specify the configuration file location, interface to run on and that you want DHCPD to run in IPv4 mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# /etc/conf.d/dhcpd: config file for /etc/init.d/dhcpd&lt;br /&gt;
&lt;br /&gt;
# If you require more than one instance of dhcpd you can create symbolic&lt;br /&gt;
# links to dhcpd service like so&lt;br /&gt;
#   cd /etc/init.d&lt;br /&gt;
#   ln -s dhcpd dhcpd.foo&lt;br /&gt;
#   cd ../conf.d&lt;br /&gt;
#   cp dhcpd dhcpd.foo&lt;br /&gt;
# Now you can edit dhcpd.foo and specify a different configuration file.&lt;br /&gt;
# You&#039;ll also need to specify a pidfile in that dhcpd.conf file.&lt;br /&gt;
# See the pid-file-name option in the dhcpd.conf man page for details.&lt;br /&gt;
&lt;br /&gt;
# If you wish to run dhcpd in a chroot, uncomment the following line&lt;br /&gt;
# DHCPD_CHROOT=&amp;quot;/var/lib/dhcp/chroot&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# All file paths below are relative to the chroot.&lt;br /&gt;
# You can specify a different chroot directory but MAKE SURE it&#039;s empty.&lt;br /&gt;
&lt;br /&gt;
# Specify a configuration file - the default is /etc/dhcp/dhcpd.conf&lt;br /&gt;
DHCPD_CONF=&amp;quot;/etc/dhcp/dhcpd.conf&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Configure which interface or interfaces to for dhcpd to listen on.&lt;br /&gt;
# List all interfaces space separated. If this is not specified then&lt;br /&gt;
# we listen on all interfaces.&lt;br /&gt;
DHCPD_IFACE=&amp;quot;eth0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Insert any other dhcpd options - see the man page for a full list.&lt;br /&gt;
DHCPD_OPTS=&amp;quot;-4&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/dhcp/dhcpd.conf ==&lt;br /&gt;
Configure your DHCP configuration server. For my DHCP server I&#039;m going to have three subnets. Each has a specific purpose. You may choose to have any number of subnets like below. The broadcast-address would be different if you used VLANs. However in this case we are not.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;authoritative;&lt;br /&gt;
ddns-update-style interim;&lt;br /&gt;
&lt;br /&gt;
shared-network home {&lt;br /&gt;
  subnet 192.168.1.0 netmask 255.255.255.0 {&lt;br /&gt;
    range 192.168.1.10 192.168.1.240;&lt;br /&gt;
    option subnet-mask 255.255.255.0;&lt;br /&gt;
    option broadcast-address 192.168.1.255;&lt;br /&gt;
    option routers 192.168.1.1;&lt;br /&gt;
    option ntp-servers 192.168.1.1;&lt;br /&gt;
    option domain-name-servers 192.168.1.1;&lt;br /&gt;
    allow unknown-clients;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  subnet 192.168.2.0 netmask 255.255.255.0 {&lt;br /&gt;
    range 192.168.2.10 192.168.2.240;&lt;br /&gt;
    option subnet-mask 255.255.255.0;&lt;br /&gt;
    option broadcast-address 192.168.2.255;&lt;br /&gt;
    option routers 192.168.2.1;&lt;br /&gt;
    option ntp-servers 192.168.2.1;&lt;br /&gt;
    option domain-name-servers 192.168.1.1;&lt;br /&gt;
    ignore unknown-clients;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  subnet 192.168.3.0 netmask 255.255.255.0 {&lt;br /&gt;
    range 192.168.3.10 192.168.3.240;&lt;br /&gt;
    option subnet-mask 255.255.255.0;&lt;br /&gt;
    option broadcast-address 192.168.3.255;&lt;br /&gt;
    option routers 192.168.3.1;&lt;br /&gt;
    option ntp-servers 192.168.3.1;&lt;br /&gt;
    option domain-name-servers 192.168.1.1;&lt;br /&gt;
    ignore unknown-clients;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
host Gaming_Computer {&lt;br /&gt;
  hardware ethernet 00:53:00:FF:FF:11;&lt;br /&gt;
  fixed-address 192.168.1.20;&lt;br /&gt;
  option subnet-mask 255.255.255.0;&lt;br /&gt;
  option broadcast-address 192.168.1.255;&lt;br /&gt;
  option routers 192.168.1.1;&lt;br /&gt;
  option host-name &amp;quot;gaming_computer&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
host Linux_Workstation {&lt;br /&gt;
  hardware ethernet 00:53:00:FF:FF:22;&lt;br /&gt;
  fixed-address 192.168.2.21;&lt;br /&gt;
  option subnet-mask 255.255.255.0;&lt;br /&gt;
  option broadcast-address 192.168.2.255;&lt;br /&gt;
  option routers 192.168.2.1;&lt;br /&gt;
  option host-name &amp;quot;linux_workstation&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
host printer {&lt;br /&gt;
  hardware ethernet 00:53:00:FF:FF:33;&lt;br /&gt;
  fixed-address 192.168.3.9;&lt;br /&gt;
  option subnet-mask 255.255.255.0;&lt;br /&gt;
  option broadcast-address 192.168.3.255;&lt;br /&gt;
  option routers 192.168.3.1;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure to add this to the default run level once configured:&lt;br /&gt;
{{cmd|rc-update add dhcpd default}}&lt;br /&gt;
&lt;br /&gt;
= Synchronizing the clock =&lt;br /&gt;
&lt;br /&gt;
You can choose to use BusyBox&#039;s ntpd or you can choose a more fully fledged option like [http://www.openntpd.org OpenNTPD] or [https://chrony.tuxfamily.org Chrony]&lt;br /&gt;
&lt;br /&gt;
== Busybox /etc/conf.d/ntpd ==&lt;br /&gt;
Allow clients to synchronize their clocks with the router.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# By default ntpd runs as a client. Add -l to run as a server on port 123.&lt;br /&gt;
NTPD_OPTS=&amp;quot;-l -N -p &amp;lt;REMOTE TIME SERVER&amp;gt;&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure to add this to the default run level once configured:&lt;br /&gt;
{{cmd|rc-update add ntpd default}}&lt;br /&gt;
&lt;br /&gt;
Or if you prefer to synchronize with multiple servers...&lt;br /&gt;
&lt;br /&gt;
== Chrony /etc/chrony.conf ==&lt;br /&gt;
{{cmd|apk add chrony}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;logdir /var/log/chrony&lt;br /&gt;
log measurements statistics tracking&lt;br /&gt;
&lt;br /&gt;
allow 192.168.0.0/30&lt;br /&gt;
allow 192.168.1.0/24&lt;br /&gt;
allow 192.168.2.0/24&lt;br /&gt;
allow 192.168.3.0/24&lt;br /&gt;
allow 192.168.4.0/24&lt;br /&gt;
broadcast 30 192.168.0.3&lt;br /&gt;
broadcast 30 192.168.1.255&lt;br /&gt;
broadcast 30 192.168.2.255&lt;br /&gt;
broadcast 30 192.168.3.255&lt;br /&gt;
broadcast 30 192.168.4.255&lt;br /&gt;
&lt;br /&gt;
server 0.pool.ntp.org iburst&lt;br /&gt;
server 1.pool.ntp.org iburst&lt;br /&gt;
server 2.pool.ntp.org iburst&lt;br /&gt;
server 3.pool.ntp.org iburst&lt;br /&gt;
&lt;br /&gt;
initstepslew 10 pool.ntp.org&lt;br /&gt;
driftfile /var/lib/chrony/chrony.drift&lt;br /&gt;
hwclockfile /etc/adjtime&lt;br /&gt;
rtcdevice /dev/rtc0&lt;br /&gt;
rtcsync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OpenNTPD /etc/ntpd.conf ==&lt;br /&gt;
&lt;br /&gt;
Install OpenNTPD&lt;br /&gt;
{{cmd|apk add openntpd}}&lt;br /&gt;
&lt;br /&gt;
Add to default run level.&lt;br /&gt;
{{cmd|rc-update add openntpd default}}&lt;br /&gt;
&lt;br /&gt;
=== /etc/ntpd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;# sample ntpd configuration file, see ntpd.conf(5)&lt;br /&gt;
&lt;br /&gt;
# Addresses to listen on (ntpd does not listen by default)&lt;br /&gt;
listen on 192.168.1.1&lt;br /&gt;
listen on 192.168.2.1&lt;br /&gt;
&lt;br /&gt;
# sync to a single server&lt;br /&gt;
#server ntp.example.org&lt;br /&gt;
&lt;br /&gt;
# use a random selection of NTP Pool Time Servers&lt;br /&gt;
# see http://support.ntp.org/bin/view/Servers/NTPPoolServers&lt;br /&gt;
server 0.pool.ntp.org&lt;br /&gt;
server 1.pool.ntp.org&lt;br /&gt;
server 2.pool.ntp.org&lt;br /&gt;
server 3.pool.ntp.org&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== tlsdate ==&lt;br /&gt;
The time can also be extracted from a https handshake. If the certificate is self-signed you will need to use skip-verification:&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add tlsdate}}&lt;br /&gt;
{{cmd|tlsdate -V --skip-verification -p 80 -H example.com}}&lt;br /&gt;
&lt;br /&gt;
== timezone ==&lt;br /&gt;
You might also want to set a timezone, see [[Setting the timezone]].&lt;br /&gt;
&lt;br /&gt;
= Saving Time =&lt;br /&gt;
There are two ways to do this. If you didn&#039;t buy an RTC clock see [[Saving time with Software Clock]]. If you did like the PiFace Real Time Clock see [[Saving time with Hardware Clock]]&lt;br /&gt;
&lt;br /&gt;
= Unbound DNS forwarder with dnscrypt =&lt;br /&gt;
We want to be able to do our lookups using [https://dnscrypt.info/ dnscrypt] without installing DNSCrypt on every client on the network. DNSCrypt can use it&#039;s [https://dnscrypt.info/protocol own protocol] or [https://en.wikipedia.org/wiki/DNS_over_HTTPS DNS over HTTPS].&lt;br /&gt;
&lt;br /&gt;
The router will also run a DNS forwarder and request unknown domains over DNSCrypt for our clients. Borrowed from the ArchLinux wiki article on [https://wiki.archlinux.org/index.php/dnscrypt-proxy dnscrypt-proxy].&lt;br /&gt;
&lt;br /&gt;
== Unbound ==&lt;br /&gt;
First install {{cmd|apk add unbound}}&lt;br /&gt;
&lt;br /&gt;
=== /etc/unbound/unbound.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;server:&lt;br /&gt;
    # Use this to include other text into the file.&lt;br /&gt;
    include: &amp;quot;/etc/unbound/filter.conf&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # verbosity number, 0 is least verbose. 1 is default.&lt;br /&gt;
    verbosity: 1&lt;br /&gt;
&lt;br /&gt;
    # specify the interfaces to answer queries from by ip-address.&lt;br /&gt;
    # The default is to listen to localhost (127.0.0.1 and ::1).&lt;br /&gt;
    # specify 0.0.0.0 and ::0 to bind to all available interfaces.&lt;br /&gt;
    # specify every interface[@port] on a new &#039;interface:&#039; labelled line.&lt;br /&gt;
    # The listen interfaces are not changed on reload, only on restart.&lt;br /&gt;
    interface: 192.168.2.1&lt;br /&gt;
    interface: 192.168.3.1&lt;br /&gt;
&lt;br /&gt;
    # Enable IPv4, &amp;quot;yes&amp;quot; or &amp;quot;no&amp;quot;.&lt;br /&gt;
    do-ip4: yes&lt;br /&gt;
&lt;br /&gt;
    # Enable IPv6, &amp;quot;yes&amp;quot; or &amp;quot;no&amp;quot;.&lt;br /&gt;
    do-ip6: yes&lt;br /&gt;
&lt;br /&gt;
    # Enable UDP, &amp;quot;yes&amp;quot; or &amp;quot;no&amp;quot;.&lt;br /&gt;
    do-udp: yes&lt;br /&gt;
&lt;br /&gt;
    # Enable TCP, &amp;quot;yes&amp;quot; or &amp;quot;no&amp;quot;.&lt;br /&gt;
    do-tcp: yes&lt;br /&gt;
&lt;br /&gt;
    # control which clients are allowed to make (recursive) queries&lt;br /&gt;
    # to this server. Specify classless netblocks with /size and action.&lt;br /&gt;
    # By default everything is refused, except for localhost.&lt;br /&gt;
    # Choose deny (drop message), refuse (polite error reply),&lt;br /&gt;
    # allow (recursive ok), allow_setrd (recursive ok, rd bit is forced on),&lt;br /&gt;
    # allow_snoop (recursive and nonrecursive ok)&lt;br /&gt;
    # deny_non_local (drop queries unless can be answered from local-data)&lt;br /&gt;
    # refuse_non_local (like deny_non_local but polite error reply).&lt;br /&gt;
    # access-control: 0.0.0.0/0 refuse&lt;br /&gt;
    # access-control: 127.0.0.0/8 allow&lt;br /&gt;
    # access-control: ::0/0 refuse&lt;br /&gt;
    # access-control: ::1 allow&lt;br /&gt;
    # access-control: ::ffff:127.0.0.1 allow&lt;br /&gt;
    access-control: 192.168.1.0/24 allow&lt;br /&gt;
    access-control: 192.168.2.0/24 allow&lt;br /&gt;
    access-control: 192.168.3.0/24 allow&lt;br /&gt;
&lt;br /&gt;
    # the log file, &amp;quot;&amp;quot; means log to stderr.&lt;br /&gt;
    # Use of this option sets use-syslog to &amp;quot;no&amp;quot;.&lt;br /&gt;
    logfile: &amp;quot;/var/log/unbound/unbound.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # Log to syslog(3) if yes. The log facility LOG_DAEMON is used to&lt;br /&gt;
    # log to. If yes, it overrides the logfile.&lt;br /&gt;
    use-syslog: no&lt;br /&gt;
&lt;br /&gt;
    # print one line with time, IP, name, type, class for every query.&lt;br /&gt;
    # log-queries: no&lt;br /&gt;
&lt;br /&gt;
    # print one line per reply, with time, IP, name, type, class, rcode,&lt;br /&gt;
    # timetoresolve, fromcache and responsesize.&lt;br /&gt;
    # log-replies: no&lt;br /&gt;
&lt;br /&gt;
    # enable to not answer id.server and hostname.bind queries.&lt;br /&gt;
    hide-identity: yes&lt;br /&gt;
&lt;br /&gt;
    # enable to not answer version.server and version.bind queries.&lt;br /&gt;
    # hide-version: yes&lt;br /&gt;
&lt;br /&gt;
    # enable to not answer trustanchor.unbound queries.&lt;br /&gt;
    hide-trustanchor: yes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # Harden against very small EDNS buffer sizes.&lt;br /&gt;
    harden-short-bufsize: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden against unseemly large queries.&lt;br /&gt;
    harden-large-queries: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden against out of zone rrsets, to avoid spoofing attempts.&lt;br /&gt;
    harden-glue: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden against receiving dnssec-stripped data. If you turn it&lt;br /&gt;
    # off, failing to validate dnskey data for a trustanchor will&lt;br /&gt;
    # trigger insecure mode for that zone (like without a trustanchor).&lt;br /&gt;
    # Default on, which insists on dnssec data for trust-anchored zones.&lt;br /&gt;
    harden-dnssec-stripped: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden against queries that fall under dnssec-signed nxdomain names.&lt;br /&gt;
    harden-below-nxdomain: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden the referral path by performing additional queries for&lt;br /&gt;
    # infrastructure data.  Validates the replies (if possible).&lt;br /&gt;
    # Default off, because the lookups burden the server.  Experimental&lt;br /&gt;
    # implementation of draft-wijngaards-dnsext-resolver-side-mitigation.&lt;br /&gt;
    # harden-referral-path: no&lt;br /&gt;
&lt;br /&gt;
    # Harden against algorithm downgrade when multiple algorithms are&lt;br /&gt;
    # advertised in the DS record.  If no, allows the weakest algorithm&lt;br /&gt;
    # to validate the zone.&lt;br /&gt;
    harden-algo-downgrade: yes&lt;br /&gt;
&lt;br /&gt;
    # Use 0x20-encoded random bits in the query to foil spoof attempts.&lt;br /&gt;
    # This feature is an experimental implementation of draft dns-0x20.&lt;br /&gt;
    use-caps-for-id: yes&lt;br /&gt;
&lt;br /&gt;
    # Allow the domain (and its subdomains) to contain private addresses.&lt;br /&gt;
    # local-data statements are allowed to contain private addresses too.&lt;br /&gt;
    private-domain: &amp;quot;&amp;lt;HOSTNAME&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # if yes, the above default do-not-query-address entries are present.&lt;br /&gt;
    # if no, localhost can be queried (for testing and debugging).&lt;br /&gt;
    do-not-query-localhost: no&lt;br /&gt;
&lt;br /&gt;
    # File with trusted keys, kept uptodate using RFC5011 probes,&lt;br /&gt;
    # initial file like trust-anchor-file, then it stores metadata.&lt;br /&gt;
    # Use several entries, one per domain name, to track multiple zones.&lt;br /&gt;
    #&lt;br /&gt;
    # If you want to perform DNSSEC validation, run unbound-anchor before&lt;br /&gt;
    # you start unbound (i.e. in the system boot scripts).  And enable:&lt;br /&gt;
    # Please note usage of unbound-anchor root anchor is at your own risk&lt;br /&gt;
    # and under the terms of our LICENSE (see that file in the source).&lt;br /&gt;
    # auto-trust-anchor-file: &amp;quot;@UNBOUND_ROOTKEY_FILE@&amp;quot;&lt;br /&gt;
    auto-trust-anchor-file: &amp;quot;/etc/unbound/root.key&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # If unbound is running service for the local host then it is useful&lt;br /&gt;
    # to perform lan-wide lookups to the upstream, and unblock the&lt;br /&gt;
    # long list of local-zones above.  If this unbound is a dns server&lt;br /&gt;
    # for a network of computers, disabled is better and stops information&lt;br /&gt;
    # leakage of local lan information.&lt;br /&gt;
    unblock-lan-zones: no&lt;br /&gt;
&lt;br /&gt;
    # If you configure local-data without specifying local-zone, by&lt;br /&gt;
    # default a transparent local-zone is created for the data.&lt;br /&gt;
    #&lt;br /&gt;
    # You can add locally served data with&lt;br /&gt;
    # local-zone: &amp;quot;local.&amp;quot; static&lt;br /&gt;
    # local-data: &amp;quot;mycomputer.local. IN A 192.0.2.51&amp;quot;&lt;br /&gt;
    # local-data: &#039;mytext.local TXT &amp;quot;content of text record&amp;quot;&#039;&lt;br /&gt;
&lt;br /&gt;
    # request upstream over TLS (with plain DNS inside the TLS stream).&lt;br /&gt;
    # Default is no.  Can be turned on and off with unbound-control.&lt;br /&gt;
    # tls-upstream: no&lt;br /&gt;
&lt;br /&gt;
    # Forward zones&lt;br /&gt;
    # Create entries like below, to make all queries for &#039;example.com&#039; and&lt;br /&gt;
    # &#039;example.org&#039; go to the given list of servers. These servers have to handle&lt;br /&gt;
    # recursion to other nameservers. List zero or more nameservers by hostname&lt;br /&gt;
    # or by ipaddress. Use an entry with name &amp;quot;.&amp;quot; to forward all queries.&lt;br /&gt;
    # If you enable forward-first, it attempts without the forward if it fails.&lt;br /&gt;
    # forward-zone:&lt;br /&gt;
    #    name: &amp;quot;example.com&amp;quot;&lt;br /&gt;
    #    forward-addr: 192.0.2.68&lt;br /&gt;
    #    forward-addr: 192.0.2.73@5355  # forward to port 5355.&lt;br /&gt;
    #    forward-first: no&lt;br /&gt;
    #    forward-tls-upstream: no&lt;br /&gt;
    #    forward-no-cache: no&lt;br /&gt;
    # forward-zone:&lt;br /&gt;
    #    name: &amp;quot;example.org&amp;quot;&lt;br /&gt;
    #    forward-host: fwd.example.com&lt;br /&gt;
&lt;br /&gt;
forward-zone:&lt;br /&gt;
    name: &amp;quot;.&amp;quot;&lt;br /&gt;
    forward-addr: 172.16.32.1@53&lt;br /&gt;
    forward-addr: ::1@53000&lt;br /&gt;
    forward-addr: 127.0.0.1@53000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Blocking Microsoft Telemetry on the network by domain ==&lt;br /&gt;
Microsoft has added telemetry analytics to Windows which you may want to block at a network level. More information about that can be found [https://www.privacytools.io/operating-systems/#win10 here].&lt;br /&gt;
&lt;br /&gt;
This script takes in a list of domains and produces a filter file. We are directing all lookups to &amp;quot;0.0.0.1&amp;quot; which is an invalid IP and should fail immediately, unlike localhost. There are lists of the addresses in various places such as the tools people use to do this locally on Windows, ie [https://github.com/Nummer/Destroy-Windows-10-Spying/blob/master/DWS/DWSResources.cs#L210 Destroy-Windows-10-Spying], [https://github.com/10se1ucgo/DisableWinTracking/blob/master/dwt.py#L333 DisableWinTracking], [https://github.com/W4RH4WK/Debloat-Windows-10/blob/master/scripts/block-telemetry.ps1#L19 Debloat-Windows-10] and [https://github.com/pragmatrix/Dominator/blob/master/Dominator.Windows10/Settings/telemetry.txt Dominator.Windows10]. I have prepared the list further down: [[Linux Router with VPN on a Raspberry Pi#/etc/unbound/filter.conf]].&lt;br /&gt;
&lt;br /&gt;
You could also use this to block advertising, but that&#039;s probably easier to do in a web browser with something like [https://en.wikipedia.org/wiki/uBlock_Origin uBlock Origin].&lt;br /&gt;
&lt;br /&gt;
Another way is to disable this stuff with a group policy see [https://docs.microsoft.com/en-us/windows/privacy/manage-connections-from-windows-operating-system-components-to-microsoft-services Manage connections from Windows operating system components to Microsoft services] only for Windows 10 Enterprise, version 1607 and newer and Windows Server 2016.&lt;br /&gt;
&lt;br /&gt;
=== /etc/unbound/unbound.conf ===&lt;br /&gt;
In your main unbound configuration add&lt;br /&gt;
&amp;lt;pre&amp;gt;include: /etc/unbound/filter.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Script to prepare/sort domains for Unbound  ===&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
##################################################&lt;br /&gt;
# Script taken from http://npr.me.uk/unbound.html&lt;br /&gt;
# Note you need GNU sed&lt;br /&gt;
##################################################&lt;br /&gt;
&lt;br /&gt;
# Remove &amp;quot;#&amp;quot; comments&lt;br /&gt;
# Remove space and tab&lt;br /&gt;
# Remove blank lines&lt;br /&gt;
# Remove localhost and broadcasthost lines&lt;br /&gt;
# Keep just the hosts&lt;br /&gt;
# Remove leading and trailing space and tab (again)&lt;br /&gt;
# Make everything lower case&lt;br /&gt;
&lt;br /&gt;
sed -e &amp;quot;s/#.*//&amp;quot; \&lt;br /&gt;
    -e &amp;quot;s/[ \x09]*$//&amp;quot;\&lt;br /&gt;
    -e &amp;quot;/^$/ d&amp;quot; \&lt;br /&gt;
    -e &amp;quot;/^.*local.*/ d&amp;quot; \&lt;br /&gt;
    -e &amp;quot;/^.*broadcasthost.*/ d&amp;quot; \&lt;br /&gt;
    -e &amp;quot;s/\(^.*\) \([a-zA-Z0-9\.\-]*\)/\2/&amp;quot; \&lt;br /&gt;
    -e &amp;quot;s/^[ \x09]*//;s/[ \x09]*$//&amp;quot; $1 \&lt;br /&gt;
    -e &amp;quot;s/\(.*\)/\L\1/&amp;quot; hosts.txt &amp;gt; temp1.txt&lt;br /&gt;
&lt;br /&gt;
# Remove any duplicate hosts&lt;br /&gt;
&lt;br /&gt;
sort temp1.txt | uniq &amp;gt;temp2.txt&lt;br /&gt;
&lt;br /&gt;
# Remove any hosts starting with &amp;quot;.&amp;quot;&lt;br /&gt;
# Create the two required lines for each host.&lt;br /&gt;
&lt;br /&gt;
sed -e &amp;quot;/^\..*/ d&amp;quot; \&lt;br /&gt;
    -e &amp;quot;s/\(^.*\)/local-zone: \x22\1\x22 redirect\nlocal-data: \x22\1 A 0.0.0.1\x22/&amp;quot; \&lt;br /&gt;
       temp2.txt &amp;gt; filter.conf&lt;br /&gt;
&lt;br /&gt;
# Clean up&lt;br /&gt;
rm temp1.txt&lt;br /&gt;
rm temp2.txt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/unbound/filter.conf ==&lt;br /&gt;
&amp;lt;pre&amp;gt;local-zone: &amp;quot;a-0001.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0001.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0001.dc-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0001.dc-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0002.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0002.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0003.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0003.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0004.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0004.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0005.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0005.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0006.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0006.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0007.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0007.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0008.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0008.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0009.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0009.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0010.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0010.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0011.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0011.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0012.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0012.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a.ads1.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a.ads1.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a.ads2.msads.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a.ads2.msads.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a.ads2.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a.ads2.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ac3.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ac3.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;activity.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;activity.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;adnexus.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;adnexus.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;adnxs.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;adnxs.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ads1.msads.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ads1.msads.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ads1.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ads1.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ads.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ads.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;aidps.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;aidps.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;aka-cdn-ns.adtech.de&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;aka-cdn-ns.adtech.de A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a.rad.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a.rad.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array101-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array101-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array102-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array102-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array103-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array103-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array104-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array104-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array201-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array201-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array202-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array202-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array203-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array203-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array204-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array204-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array401-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array401-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array402-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array402-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array403-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array403-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array404-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array404-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array405-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array405-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array406-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array406-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array407-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array407-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array408-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array408-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ars.smartscreen.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ars.smartscreen.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;az361816.vo.msecnd.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;az361816.vo.msecnd.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;az512334.vo.msecnd.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;az512334.vo.msecnd.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;b.ads1.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;b.ads1.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;b.ads2.msads.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;b.ads2.msads.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bingads.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bingads.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bl3301-a.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bl3301-a.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bl3301-c.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bl3301-c.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bl3301-g.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bl3301-g.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;blob.weather.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;blob.weather.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn1304-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn1304-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn1306-a.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn1306-a.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn1306-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn1306-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn1306-g.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn1306-g.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn2b-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn2b-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn2b-cor002.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn2b-cor002.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn2b-cor003.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn2b-cor003.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn2b-cor004.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn2b-cor004.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn2wns1.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn2wns1.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn3p-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn3p-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn3sch020022328.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn3sch020022328.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;b.rad.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;b.rad.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bs.serving-sys.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bs.serving-sys.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;by3301-a.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;by3301-a.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;by3301-c.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;by3301-c.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;by3301-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;by3301-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;c-0001.dc-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;c-0001.dc-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cache.datamart.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cache.datamart.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;candycrushsoda.king.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;candycrushsoda.king.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;c.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;c.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ca.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ca.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cdn.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cdn.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cdn.content.prod.cms.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cdn.content.prod.cms.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cdn.onenote.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cdn.onenote.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds1204.lon.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds1204.lon.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds1293.lon.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds1293.lon.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds20417.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds20417.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds20431.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds20431.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds20450.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds20450.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds20457.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds20457.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds20475.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds20475.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds21244.lon.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds21244.lon.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds26.ams9.msecn.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds26.ams9.msecn.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds425.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds425.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds459.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds459.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds494.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds494.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds965.lon.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds965.lon.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch1-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch1-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch1-cor002.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch1-cor002.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch3301-c.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch3301-c.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch3301-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch3301-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch3301-g.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch3301-g.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch3302-c.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch3302-c.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch3302-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch3302-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;choice.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;choice.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;choice.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;choice.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;clientconfig.passport.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;clientconfig.passport.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;client-s.gateway.messenger.live.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;client-s.gateway.messenger.live.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;client.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;client.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;c.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;c.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;compatexchange1.trafficmanager.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;compatexchange1.trafficmanager.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;compatexchange.cloudapp.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;compatexchange.cloudapp.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;continuum.dds.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;continuum.dds.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;corpext.msitadfs.glbdns2.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;corpext.msitadfs.glbdns2.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;corp.sts.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;corp.sts.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cp101-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cp101-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cp201-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cp201-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cp401-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cp401-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cs1.wpc.v0cdn.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cs1.wpc.v0cdn.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db3aqu.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db3aqu.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db3wns2011111.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db3wns2011111.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100122.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100122.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100127.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100127.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100831.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100831.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100835.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100835.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100917.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100917.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100925.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100925.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100928.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100928.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100938.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100938.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101001.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101001.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101022.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101022.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101024.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101024.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101031.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101031.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101034.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101034.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101042.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101042.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101044.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101044.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101122.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101122.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101123.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101123.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101125.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101125.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101128.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101128.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101129.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101129.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101133.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101133.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101145.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101145.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101209.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101209.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101221.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101221.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101228.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101228.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101231.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101231.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101237.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101237.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101317.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101317.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101324.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101324.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101329.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101329.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101333.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101333.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101334.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101334.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101338.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101338.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101419.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101419.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101424.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101424.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101426.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101426.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101427.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101427.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101430.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101430.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101445.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101445.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101511.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101511.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101519.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101519.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101529.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101529.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101535.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101535.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101541.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101541.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101543.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101543.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101608.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101608.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101618.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101618.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101629.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101629.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101631.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101631.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101633.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101633.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101640.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101640.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101711.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101711.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101722.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101722.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101739.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101739.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101745.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101745.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101813.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101813.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101820.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101820.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101826.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101826.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101835.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101835.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101837.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101837.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101844.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101844.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101907.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101907.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101914.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101914.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101929.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101929.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101939.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101939.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101941.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101941.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102015.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102015.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102017.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102017.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102019.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102019.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102023.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102023.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102025.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102025.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102032.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102032.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102033.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102033.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110108.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110108.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110109.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110109.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110114.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110114.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110135.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110135.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110142.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110142.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110204.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110204.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110206.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110206.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110214.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110214.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110225.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110225.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110232.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110232.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110245.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110245.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110315.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110315.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110323.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110323.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110325.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110325.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110328.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110328.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110331.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110331.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110341.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110341.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110343.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110343.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110345.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110345.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110403.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110403.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110419.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110419.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110438.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110438.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110442.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110442.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110501.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110501.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110527.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110527.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110533.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110533.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110618.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110618.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110622.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110622.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110624.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110624.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110626.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110626.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110634.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110634.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110705.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110705.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110724.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110724.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110740.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110740.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110810.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110810.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110816.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110816.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110821.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110821.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110822.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110822.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110825.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110825.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110828.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110828.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110835.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110835.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110919.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110919.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110921.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110921.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110923.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110923.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110929.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110929.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103081814.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103081814.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082011.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082011.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082111.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082111.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082308.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082308.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082406.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082406.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082409.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082409.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082609.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082609.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082611.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082611.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082709.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082709.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082712.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082712.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082806.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082806.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090115.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090115.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090415.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090415.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090513.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090513.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090515.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090515.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090608.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090608.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090806.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090806.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090814.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090814.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090906.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090906.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091011.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091011.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091012.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091012.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091106.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091106.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091108.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091108.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091212.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091212.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091311.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091311.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091414.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091414.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091511.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091511.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091617.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091617.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091715.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091715.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091817.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091817.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091908.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091908.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091911.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091911.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092010.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092010.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092108.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092108.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092109.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092109.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092209.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092209.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092210.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092210.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092509.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092509.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100117.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100117.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100121.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100121.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100221.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100221.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100313.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100313.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100314.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100314.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100510.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100510.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100511.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100511.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100611.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100611.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100712.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100712.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101105.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101105.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101208.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101208.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101212.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101212.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101314.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101314.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101411.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101411.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101413.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101413.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101513.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101513.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101610.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101610.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101611.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101611.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101705.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101705.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101711.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101711.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101909.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101909.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101914.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101914.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102009.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102009.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102112.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102112.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102203.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102203.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102209.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102209.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102310.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102310.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102404.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102404.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102609.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102609.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102610.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102610.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102805.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102805.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5wns1d.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5wns1d.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090104.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090104.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090112.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090112.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090116.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090116.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090122.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090122.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090203.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090203.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090206.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090206.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090208.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090208.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090209.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090209.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090211.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090211.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090305.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090305.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090306.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090306.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090308.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090308.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090311.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090311.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090313.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090313.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090410.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090410.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090412.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090412.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090504.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090504.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090510.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090510.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090512.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090512.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090513.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090513.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090514.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090514.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090519.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090519.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090613.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090613.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090619.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090619.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090810.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090810.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090811.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090811.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090902.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090902.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090905.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090905.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090907.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090907.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090908.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090908.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090910.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090910.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090911.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090911.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091003.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091003.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091007.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091007.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091008.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091008.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091009.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091009.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091011.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091011.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091103.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091103.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091105.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091105.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091204.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091204.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091209.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091209.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091305.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091305.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091307.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091307.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091308.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091308.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091309.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091309.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091314.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091314.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091412.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091412.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091503.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091503.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091507.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091507.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091602.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091602.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091603.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091603.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091606.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091606.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091607.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091607.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;deploy.static.akamaitechnologies.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;deploy.static.akamaitechnologies.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;device.auth.xboxlive.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;device.auth.xboxlive.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;dev.virtualearth.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;dev.virtualearth.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;df.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;df.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;diagnostics.support.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;diagnostics.support.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;disc101-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;disc101-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;disc201-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;disc201-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;disc401-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;disc401-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;dmd.metaservices.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;dmd.metaservices.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;dns.msftncsi.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;dns.msftncsi.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ec.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ec.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ecn.dev.virtualearth.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ecn.dev.virtualearth.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;eu.vortex.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;eu.vortex.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;feedback.microsoft-hohm.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;feedback.microsoft-hohm.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;feedback.search.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;feedback.search.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;feedback.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;feedback.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;flex.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;flex.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;fs.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;fs.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;geo-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;geo-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;geover-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;geover-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;g.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;g.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;h1.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;h1.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;h2.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;h2.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i1.services.social.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i1.services.social.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i1.services.social.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i1.services.social.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-bl6p-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-bl6p-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-by3p-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-by3p-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-by3p-cor002.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-by3p-cor002.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-ch1-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-ch1-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-ch1-cor002.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-ch1-cor002.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;img-s-msn-com.akamaized.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;img-s-msn-com.akamaized.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;inference.location.live.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;inference.location.live.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;insiderppe.cloudapp.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;insiderppe.cloudapp.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-sn2-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-sn2-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-sn2-cor002.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-sn2-cor002.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;kv101-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;kv101-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;kv201-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;kv201-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;kv401-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;kv401-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;lb1.www.ms.akadns.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;lb1.www.ms.akadns.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;licensing.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;licensing.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;live.rads.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;live.rads.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ls2web.redmond.corp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ls2web.redmond.corp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;m.adnxs.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;m.adnxs.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;mediaredirect.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;mediaredirect.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;mobile.pipe.aria.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;mobile.pipe.aria.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;msftncsi.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;msftncsi.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;msntest.serving-sys.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;msntest.serving-sys.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;oca.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;oca.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;oca.telemetry.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;oca.telemetry.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;officeclient.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;officeclient.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;oneclient.sfx.ms&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;oneclient.sfx.ms A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;pre.footprintpredict.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;pre.footprintpredict.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;preview.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;preview.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;pti.store.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;pti.store.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;query.prod.cms.rt.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;query.prod.cms.rt.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;rad.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;rad.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;redir.metaservices.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;redir.metaservices.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;register.cdpcs.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;register.cdpcs.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;reports.wes.df.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;reports.wes.df.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;s0.2mdn.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;s0.2mdn.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;schemas.microsoft.akadns.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;schemas.microsoft.akadns.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;search.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;search.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;secure.adnxs.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;secure.adnxs.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;secure.flashtalking.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;secure.flashtalking.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;services.wes.df.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;services.wes.df.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings.data.glbdns2.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings.data.glbdns2.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings-sandbox.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings-sandbox.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings-ssl.xboxlive.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings-ssl.xboxlive.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings-win.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings-win.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings-win-ppe.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings-win-ppe.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sn3301-c.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sn3301-c.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sn3301-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sn3301-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sn3301-g.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sn3301-g.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;so.2mdn.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;so.2mdn.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;spynet2.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;spynet2.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;spynetalt.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;spynetalt.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;spyneteurope.microsoft.akadns.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;spyneteurope.microsoft.akadns.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sqm.df.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sqm.df.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sqm.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sqm.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sqm.telemetry.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sqm.telemetry.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;static.2mdn.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;static.2mdn.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;storecatalogrevocation.storequality.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;storecatalogrevocation.storequality.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;storeedgefd.dsx.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;storeedgefd.dsx.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;store-images.s-microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;store-images.s-microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;support.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;support.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;survey.watson.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;survey.watson.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;t0.ssl.ak.dynamic.tiles.virtualearth.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;t0.ssl.ak.dynamic.tiles.virtualearth.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;t0.ssl.ak.tiles.virtualearth.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;t0.ssl.ak.tiles.virtualearth.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;telecommand.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;telecommand.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;telecommand.telemetry.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;telecommand.telemetry.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;telemetry.appex.bing.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;telemetry.appex.bing.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;telemetry.urs.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;telemetry.urs.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;test.activity.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;test.activity.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;tile-service.weather.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;tile-service.weather.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;time.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;time.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;tk2.plt.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;tk2.plt.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;tsfe.trafficshaping.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;tsfe.trafficshaping.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;urs.smartscreen.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;urs.smartscreen.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;v10.vortex-win.data.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;v10.vortex-win.data.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;v10.vortex-win.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;v10.vortex-win.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;version.hybrid.api.here.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;version.hybrid.api.here.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;view.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;view.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-bn2.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-bn2.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-cy2.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-cy2.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex.data.glbdns2.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex.data.glbdns2.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex.data.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex.data.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-db5.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-db5.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-hk2.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-hk2.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-sandbox.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-sandbox.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-win.data.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-win.data.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-win.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-win.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;watson.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;watson.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;watson.ppe.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;watson.ppe.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;watson.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;watson.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;watson.telemetry.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;watson.telemetry.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;wdcpalt.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;wdcpalt.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;wdcp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;wdcp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;web.vortex.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;web.vortex.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;wes.df.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;wes.df.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;win10.ipv6.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;win10.ipv6.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;win10-trt.msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;win10-trt.msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;win1710.ipv6.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;win1710.ipv6.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;wscont.apps.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;wscont.apps.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;www.msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;www.msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;www.msftconnecttest.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;www.msftconnecttest.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;www.msftncsi.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;www.msftncsi.com A 0.0.0.1&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DNSCrypt ==&lt;br /&gt;
Configuring DNSCrypt to send it&#039;s lookups through the VPN and not directly out your ppp interface is done using a socks proxy.&lt;br /&gt;
&lt;br /&gt;
You can test that you&#039;re not getting DNS leaks by using [https://www.dnsleaktest.com dnsleak.com] or this one from [https://www.grc.com/dns/dns.htm GRC]. Providers like CloudFlare and Google (1.1.1.1, 8.8.8.8) use [https://en.wikipedia.org/wiki/Anycast anycast] which should be pointing to a server located to where your VPN exits.&lt;br /&gt;
&lt;br /&gt;
=== /etc/dnscrypt-proxy/dnscrypt-proxy.toml ===&lt;br /&gt;
Using the sample dnscrypt config is fine, you will need to make these changes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;listen_addresses = [&#039;127.0.0.1:53000&#039;, &#039;[::1]:53000&#039;]&lt;br /&gt;
proxy = &amp;quot;socks5://127.0.0.1:1080&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Dante ==&lt;br /&gt;
First install dante, you&#039;ll need to pin the testing repository. See: [[Alpine Linux package management#Repository pinning]].&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add dante-server@testing}}&lt;br /&gt;
&lt;br /&gt;
Configure it like so:&lt;br /&gt;
&lt;br /&gt;
=== /etc/sockd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;logoutput: stderr&lt;br /&gt;
internal: 127.0.0.1 port = 1080&lt;br /&gt;
external: tun0&lt;br /&gt;
clientmethod: none&lt;br /&gt;
socksmethod: none&lt;br /&gt;
user.unprivileged: sockd&lt;br /&gt;
&lt;br /&gt;
# Allow connections from localhost to any host&lt;br /&gt;
client pass {&lt;br /&gt;
        from: 127.0.0.1/8 to: 0.0.0.0/0&lt;br /&gt;
	log: error # connect/disconnect&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Generic pass statement - bind/outgoing traffic&lt;br /&gt;
socks pass {&lt;br /&gt;
        from: 0.0.0.0/0 to: 0.0.0.0/0&lt;br /&gt;
        command: bind connect udpassociate&lt;br /&gt;
        log: error # connect disconnect iooperation&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Generic pass statement for incoming connections/packets&lt;br /&gt;
socks pass {&lt;br /&gt;
        from: 0.0.0.0/0 to: 0.0.0.0/0&lt;br /&gt;
        command: bindreply udpreply&lt;br /&gt;
        log: error # connect disconnect iooperation&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally the services to the the default run level:&lt;br /&gt;
{{cmd|rc-update add sockd default}}&lt;br /&gt;
{{cmd|rc-update add unbound default}}&lt;br /&gt;
{{cmd|rc-update add dnscrypt-proxy default}}&lt;br /&gt;
&lt;br /&gt;
= Random number generation =&lt;br /&gt;
There are two ways to assist with random number generation [[Entropy and randomness]]. This can be particularly useful if you&#039;re generating your own Diffie-Hellman nonce file, used in the [[FreeRadius EAP-TLS configuration]] section. Or for that matter any process which requires lots of random number generation such as generating certificates or public private keys.&lt;br /&gt;
&lt;br /&gt;
== Haveged ==&lt;br /&gt;
[http://www.issihosts.com/haveged Haveged] is a great way to improve random number generation speed. It uses the unpredictable random number generator based upon an adaptation of the [http://www.irisa.fr/caps/projects/hipsor/ HAVEGE] algorithm.&lt;br /&gt;
&lt;br /&gt;
Install haveged:&lt;br /&gt;
{{cmd|apk add haveged}}&lt;br /&gt;
&lt;br /&gt;
Start haveged service:&lt;br /&gt;
{{cmd|service haveged start}}&lt;br /&gt;
&lt;br /&gt;
Add service to boot&lt;br /&gt;
{{cmd|rc-update add haveged default}}&lt;br /&gt;
&lt;br /&gt;
Start rngd service:&lt;br /&gt;
{{cmd|service haveged start}}&lt;br /&gt;
&lt;br /&gt;
Add service to boot:&lt;br /&gt;
{{cmd|rc-update add haveged default}}&lt;br /&gt;
&lt;br /&gt;
== rng-tools with bcm2708-rng ==&lt;br /&gt;
&lt;br /&gt;
=== Pre Alpine Linux 3.8 (which includes rngd 5) ===&lt;br /&gt;
All Raspberry Pis come with the bcm2708-rng random number generator on board. If you are doing this project on a Raspberry Pi then you may choose to use this also.&lt;br /&gt;
&lt;br /&gt;
Add the kernel module to /etc/modules:&lt;br /&gt;
{{cmd|echo &amp;quot;bcm2708-rng&amp;quot; &amp;gt; /etc/modules}}&lt;br /&gt;
&lt;br /&gt;
Insert module:&lt;br /&gt;
{{cmd|modprobe bcm2708-rng}}&lt;br /&gt;
&lt;br /&gt;
Install rng-tools:&lt;br /&gt;
{{cmd|apk add rng-tools}}&lt;br /&gt;
&lt;br /&gt;
Set the random device (/dev/random) and rng device (/dev/hwrng) in /etc/conf.d/rngd&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;RNGD_OPTS=&amp;quot;--no-drng=1 --no-tpm=1 -o /dev/random -r /dev/hwrng&amp;quot;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== Post Alpine Linux 3.8 (which includes rngd 6) ===&lt;br /&gt;
&lt;br /&gt;
With AlpineLinux 3.8 you don&#039;t have to insert the module as it is already built in the kernel.&lt;br /&gt;
&lt;br /&gt;
Additionally the syntax has changed for rngd so for /etc/conf.d/rngd you&#039;ll need&lt;br /&gt;
&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;RNGD_OPTS=&amp;quot;-x1 -o /dev/random -r /dev/hwrng&amp;quot;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Start rngd service:&lt;br /&gt;
{{cmd|service rngd start}}&lt;br /&gt;
&lt;br /&gt;
Add service to boot:&lt;br /&gt;
{{cmd|rc-update add rngd default}}&lt;br /&gt;
&lt;br /&gt;
You can test it with:&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;cat /dev/hwrng | rngtest -c 1000&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
You should see something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rngtest 5&lt;br /&gt;
Copyright (c) 2004 by Henrique de Moraes Holschuh&lt;br /&gt;
This is free software; see the source for copying conditions.  There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&lt;br /&gt;
&lt;br /&gt;
rngtest: starting FIPS tests...&lt;br /&gt;
rngtest: bits received from input: 20000032&lt;br /&gt;
rngtest: FIPS 140-2 successes: 1000&lt;br /&gt;
rngtest: FIPS 140-2 failures: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Monobit: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Poker: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Runs: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Long run: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Continuous run: 0&lt;br /&gt;
rngtest: input channel speed: (min=117.709; avg=808.831; max=3255208.333)Kibits/s&lt;br /&gt;
rngtest: FIPS tests speed: (min=17.199; avg=22.207; max=22.653)Mibits/s&lt;br /&gt;
rngtest: Program run time: 25178079 microseconds&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s possible you might have a some failures. That&#039;s okay, two runs I did previously had a failure each.&lt;br /&gt;
&lt;br /&gt;
= WiFi 802.1x EAP and FreeRadius =&lt;br /&gt;
A more secure way than using pre-shared keys (WPA2) is to use [https://en.wikipedia.org/wiki/Extensible_Authentication_Protocol#EAP-TLS EAP-TLS] and use separate certificates for each device. See [[FreeRadius EAP-TLS configuration]]&lt;br /&gt;
&lt;br /&gt;
= VPN Tunnel on specific subnet =&lt;br /&gt;
As mentioned earlier in this article it might be useful to have a VPN subnet and a non-VPN subnet. Typically gaming consoles or computers might want low-latency connections. For this exercise we use fwmark.&lt;br /&gt;
&lt;br /&gt;
We expand the network to look like this:&lt;br /&gt;
&lt;br /&gt;
[[File:Network diagram ipv4 tunnel.svg|900px|center|Network Diagram with IPv4 tunnel]]&lt;br /&gt;
&lt;br /&gt;
Install the necessary packages:&lt;br /&gt;
{{cmd|apk add openvpn iproute2 iputils}}&lt;br /&gt;
&lt;br /&gt;
== /etc/modules ==&lt;br /&gt;
You&#039;ll want to add the tun module&lt;br /&gt;
&amp;lt;pre&amp;gt;tun&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/iproute2/rt_tables ==&lt;br /&gt;
Add the two routing tables to the bottom of rt_tables. It should look something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;#&lt;br /&gt;
# reserved values&lt;br /&gt;
#&lt;br /&gt;
255	local&lt;br /&gt;
254	main&lt;br /&gt;
253	default&lt;br /&gt;
0	unspec&lt;br /&gt;
#&lt;br /&gt;
# local&lt;br /&gt;
#&lt;br /&gt;
#1	inr.ruhep&lt;br /&gt;
1 ISP&lt;br /&gt;
2 VPN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/interfaces ==&lt;br /&gt;
Next up add the virtual interface (really just a IP address to eth0) eth0:2, just under eth0 will do.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Route to VPN subnet&lt;br /&gt;
auto eth0:2&lt;br /&gt;
iface eth0:2 inet static&lt;br /&gt;
  address 192.168.2.1&lt;br /&gt;
  netmask 255.255.255.0&lt;br /&gt;
  broadcast 192.168.2.255&lt;br /&gt;
  post-up /etc/network/fwmark_rules&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/sysctl.d/local.conf ==&lt;br /&gt;
If you want to use fwmark rules you need to change this setting. It causes the router to still do source validation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Needed to use fwmark&lt;br /&gt;
net.ipv4.conf.all.rp_filter = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fwmark won&#039;t work if you have this set to 1.&lt;br /&gt;
&lt;br /&gt;
== /etc/network/fwmark_rules ==&lt;br /&gt;
In this file we want to put the fwmark rules and set the correct priorities.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Normal packets to go direct out WAN&lt;br /&gt;
/sbin/ip rule add fwmark 1 table ISP prio 100&lt;br /&gt;
&lt;br /&gt;
# Put packets destined into VPN when VPN is up&lt;br /&gt;
/sbin/ip rule add fwmark 2 table VPN prio 200&lt;br /&gt;
&lt;br /&gt;
# Prevent packets from being routed out when VPN is down.&lt;br /&gt;
# This prevents packets from falling back to the main table&lt;br /&gt;
# that has a priority of 32766&lt;br /&gt;
/sbin/ip rule add prohibit fwmark 2 prio 300&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/ppp/ip-up ==&lt;br /&gt;
Next up we want to create the routes that should be run when PPP comes online. There are special hooks we can use in ip-up and ip-down to refer to the IP address, [https://ppp.samba.org/pppd.html#sect13 ppp man file - Scripts ] You can also read about them in your man file if you have ppp-doc installed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by pppd when there&#039;s a successful ppp connection.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Flush out any old rules that might be there&lt;br /&gt;
/sbin/ip route flush table ISP&lt;br /&gt;
&lt;br /&gt;
# Add route to table from subnets on LAN&lt;br /&gt;
/sbin/ip route add 192.168.1.0/24 dev eth0 table ISP&lt;br /&gt;
/sbin/ip route add 192.168.2.0/24 dev eth0 table ISP&lt;br /&gt;
&lt;br /&gt;
# Add route from IP given by ISP to the table&lt;br /&gt;
/sbin/ip rule add from ${IPREMOTE} table ISP prio 100&lt;br /&gt;
&lt;br /&gt;
# Add a default route&lt;br /&gt;
/sbin/ip route add table ISP default via ${IPREMOTE} dev ${IFNAME}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/ppp/ip-down ==&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by pppd after the connection has ended.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Delete the rules when we take the interface down&lt;br /&gt;
/sbin/ip rule del from ${IPREMOTE} table ISP prio 100&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/openvpn/route-up-fwmark.sh ==&lt;br /&gt;
OpenVPN needs similar routing scripts and it also has it&#039;s own special hooks that allow you to specify particular values. A full list is here [https://openvpn.net/index.php/open-source/documentation/manuals/65-openvpn-20x-manpage.html#lbAS OpenVPN man file - Environmental Variables]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by OpenVPN when there&#039;s a successful VPN connection.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Flush out any old rules that might be there&lt;br /&gt;
/sbin/ip route flush table VPN&lt;br /&gt;
&lt;br /&gt;
# Add route to table from 192.168.2.0/24 subnet on LAN&lt;br /&gt;
/sbin/ip route add 192.168.2.0/24 dev eth0 table VPN&lt;br /&gt;
&lt;br /&gt;
# Add route from VPN interface IP to the VPN table&lt;br /&gt;
/sbin/ip rule add from ${ifconfig_local} table VPN prio 200&lt;br /&gt;
&lt;br /&gt;
# Add a default route&lt;br /&gt;
/sbin/ip route add default via ${ifconfig_local} dev ${dev} table VPN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/openvpn/route-pre-down-fwmark.sh ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by OpenVPN after the connection has ended&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Delete the rules when we take the interface down&lt;br /&gt;
/sbin/ip rule del from ${ifconfig_local} table VPN prio 200&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What I did find was when starting and stopping the OpenVPN service if you used:&lt;br /&gt;
&lt;br /&gt;
{{cmd|service openvpn stop}}&lt;br /&gt;
&lt;br /&gt;
The rules in route-pre-down-fwmark.sh were not executed.&lt;br /&gt;
&lt;br /&gt;
However:&lt;br /&gt;
&lt;br /&gt;
{{cmd|/etc/init.d/openvpn stop}}&lt;br /&gt;
&lt;br /&gt;
seemed to work correctly.&lt;br /&gt;
&lt;br /&gt;
== Advanced IPtables rules that allow us to route into our two routing tables ==&lt;br /&gt;
This is an expansion of the previous set of rules. It sets up NAT masquerading for the 192.168.2.0 to go through the VPN using marked packets.&lt;br /&gt;
&lt;br /&gt;
I used these guides to write complete this: &lt;br /&gt;
&lt;br /&gt;
* [http://nerdboys.com/2006/05/05/conning-the-mark-multiwan-connections-using-iptables-mark-connmark-and-iproute2 Conning the Mark: Multiwan connections using IPTables, MARK, CONNMARK and iproute2 ]&lt;br /&gt;
* [http://nerdboys.com/2006/05/08/multiwan-connections-addendum Multiwan connections addendum]&lt;br /&gt;
* [http://inai.de/images/nf-packet-flow.png Netfilter packet flow]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#########################################################################&lt;br /&gt;
# Advanced routing rule set&lt;br /&gt;
# Uses 192.168.1.0 via ISP&lt;br /&gt;
#      192.168.2.0 via VPN&lt;br /&gt;
#&lt;br /&gt;
# Packets to/from 192.168.1.0/24 are marked with 0x1 and routed to ISP&lt;br /&gt;
# Packets to/from 192.168.2.0/24 are marked with 0x2 and routed to VPN&lt;br /&gt;
#&lt;br /&gt;
#########################################################################&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# NAT Table&lt;br /&gt;
# This is where translation of packets happens and &amp;quot;forwarding&amp;quot; of ports&lt;br /&gt;
# to specific hosts.&lt;br /&gt;
#&lt;br /&gt;
*nat&lt;br /&gt;
&lt;br /&gt;
# Set default policies for table&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Port forwarding for Bittorrent&lt;br /&gt;
-A PREROUTING -i tun0 -p tcp -m tcp --dport 6881:6889 -j DNAT --to-destination 192.168.2.20&lt;br /&gt;
-A PREROUTING -i tun0 -p udp -m udp --dport 6881:6889 -j DNAT --to-destination 192.168.2.20&lt;br /&gt;
&lt;br /&gt;
# Allows routing to our modem subnet so we can access the web interface&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
-A POSTROUTING -s 192.168.2.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the VPN tunnel&lt;br /&gt;
-A POSTROUTING -o tun0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the PPP tunnel&lt;br /&gt;
-A POSTROUTING -o ppp0 -j MASQUERADE&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Filter Table&lt;br /&gt;
# This is where we decide to ACCEPT, DROP or REJECT things&lt;br /&gt;
#&lt;br /&gt;
*filter&lt;br /&gt;
:INPUT DROP [0:0]&lt;br /&gt;
:FORWARD DROP [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for forwarding packets&lt;br /&gt;
:FWD_ETH0 - [0:0]&lt;br /&gt;
:FWD_ETH1 - [0:0]&lt;br /&gt;
:FWD_PPP0 - [0:0]&lt;br /&gt;
:FWD_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for input packets (for host itself)&lt;br /&gt;
:IN_ETH0 - [0:0]&lt;br /&gt;
:IN_ETH1 - [0:0]&lt;br /&gt;
:IN_PPP0 - [0:0]&lt;br /&gt;
:IN_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a log drop chain&lt;br /&gt;
:LOG_DROP - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a reject chain&lt;br /&gt;
:LOG_REJECT - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Pass input packet to corresponding rule chain&lt;br /&gt;
-A INPUT -i lo -j ACCEPT&lt;br /&gt;
-A INPUT -i eth0 -j IN_ETH0&lt;br /&gt;
-A INPUT -i eth1 -j IN_ETH1&lt;br /&gt;
-A INPUT -i ppp0 -j IN_PPP0&lt;br /&gt;
-A INPUT -i tun0 -j IN_TUN0&lt;br /&gt;
&lt;br /&gt;
# Track forwarded packets&lt;br /&gt;
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass forwarded packet to corresponding rule chain&lt;br /&gt;
-A FORWARD -i eth0 -j FWD_ETH0&lt;br /&gt;
-A FORWARD -i eth1 -j FWD_ETH1&lt;br /&gt;
-A FORWARD -i ppp0 -j FWD_PPP0&lt;br /&gt;
-A FORWARD -i tun0 -j FWD_TUN0&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to ISP&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to VPN&lt;br /&gt;
-A FWD_ETH0 -s 192.168.2.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow excepted server to be FORWARD to ppp0&lt;br /&gt;
#-A FWD_ETH0 -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -o ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward SSH packets from network to modem&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.1.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.2.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward HTTP packets from network to modem&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.1.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.2.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward Bittorrent Port to workstation&lt;br /&gt;
-A FWD_TUN0 -d 192.168.2.20/32 -p tcp -m tcp --dport 6881:6889 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_TUN0 -d 192.168.2.20/32 -p udp -m udp --dport 6881:6889 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# DNS to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# FreeRadius Client (eg a UniFi AP)&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Ubiquiti UAP Device Discovery Broadcast&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 10001 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# NTP to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept traffic to router on both subnets&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow excepted server to be INPUT to eth0 from LAN&lt;br /&gt;
#-A IN_ETH0 -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -o ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# HTTP To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked PPP0 connection&lt;br /&gt;
-A IN_PPP0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on PPP0&lt;br /&gt;
-A IN_PPP0 -j LOG --log-prefix &amp;quot;DROP:INPUT &amp;quot; --log-level 6&lt;br /&gt;
-A IN_PPP0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked TUN0 connection&lt;br /&gt;
-A IN_TUN0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on TUN0&lt;br /&gt;
-A IN_TUN0 -j LOG --log-prefix &amp;quot;DROP:INPUT &amp;quot; --log-level 6&lt;br /&gt;
-A IN_TUN0 -j LOG_DROP&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mangle Table&lt;br /&gt;
# This is the place where our markings happen, whether they be 0x1 or 0x2&lt;br /&gt;
#&lt;br /&gt;
*mangle&lt;br /&gt;
&lt;br /&gt;
# Set default policies for table&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:FORWARD ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Restore CONNMARK to the MARK (If one doesn&#039;t exist then no mark is set)&lt;br /&gt;
-A PREROUTING -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff&lt;br /&gt;
&lt;br /&gt;
# If packet MARK is 2, then it means there is already a connection mark and the&lt;br /&gt;
# original packet came in on VPN&lt;br /&gt;
-A PREROUTING -s 192.168.2.0/24 -m mark --mark 0x2 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Check exception (this is a server which when accessed on a 192.168.2.0/24 address will go out the ISP table) are 0x1&lt;br /&gt;
#-A PREROUTING -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -m mark --mark 0x1 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Mark packets coming from 192.168.2.0/24 are 0x2&lt;br /&gt;
-A PREROUTING -s 192.168.2.0/24 -j MARK --set-xmark 0x2/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# If packet MARK is 1, then it means there is already a connection mark and the&lt;br /&gt;
# original packet came in on ISP&lt;br /&gt;
-A PREROUTING -s 192.168.1.0/24 -m mark --mark 0x1 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Mark packets 192.168.1.0/24 are 0x1&lt;br /&gt;
-A PREROUTING -s 192.168.1.0/24 -j MARK --set-xmark 0x1/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Mark exception (this is a server which when accessed on a 192.168.2.0/24 address will go out the ISP table) as 0x1&lt;br /&gt;
#-A PREROUTING -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -j MARK --set-xmark 0x1/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Set mark to 0 - This is for the modem. Otherwise it will mark with 0x1 or 0x2&lt;br /&gt;
-A PREROUTING -d 192.168.0.1/32 -j MARK --set-xmark 0x0/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Save MARK to CONNMARK (remember iproute can&#039;t see CONNMARKs)&lt;br /&gt;
-A PREROUTING -j CONNMARK --save-mark --nfmask 0xffffffff --ctmask 0xffffffff&lt;br /&gt;
COMMIT&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may want to delete certain rules here that do not apply to you, eg the FreeRadius rules. That is covered later in this article.&lt;br /&gt;
&lt;br /&gt;
== OpenVPN Routing ==&lt;br /&gt;
Usually when you connect with OpenVPN the remote VPN server will push routes down to your system. We don&#039;t want this as we still want to be able to access the internet without the VPN. We have also created our own routes that we want to use earlier in this guide.&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need to add this to the bottom of your OpenVPN configuration file:&lt;br /&gt;
&amp;lt;pre&amp;gt;# Prevents default gateway from being set on the default routing table&lt;br /&gt;
route-noexec&lt;br /&gt;
&lt;br /&gt;
# Allows route-up script to be executed&lt;br /&gt;
script-security 2&lt;br /&gt;
&lt;br /&gt;
# Calls custom shell script after connection to add necessary routes&lt;br /&gt;
route-up /etc/openvpn/route-up-fwmark.sh&lt;br /&gt;
route-pre-down /etc/openvpn/route-pre-down-fwmark.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
My VPNs are arranged like this in /etc/openvpn:&lt;br /&gt;
&lt;br /&gt;
OpenVPN configuration file for that server:&lt;br /&gt;
&amp;lt;pre&amp;gt;countrycode.serverNumber.openvpn.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenVPN certs for that server:&lt;br /&gt;
&amp;lt;pre&amp;gt;countrycode.serverNumber.openvpn/countrycode.serverNumber.openvpn.crt&lt;br /&gt;
countrycode.serverNumber.openvpn/countrycode.serverNumber.openvpn.key&lt;br /&gt;
countrycode.serverNumber.openvpn/myKey.crt&lt;br /&gt;
countrycode.serverNumber.openvpn/myKey.key&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So I use this helpful script to automate the process of changing between servers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
vpn_server_filename=$1&lt;br /&gt;
&lt;br /&gt;
rm /etc/openvpn/openvpn.conf&lt;br /&gt;
ln -s $vpn_server_filename /etc/openvpn/openvpn.conf&lt;br /&gt;
chown -R openvpn:openvpn /etc/openvpn&lt;br /&gt;
chmod -R a=-rwx,u=+rX /etc/openvpn&lt;br /&gt;
chmod u=x /etc/openvpn/*.sh*&lt;br /&gt;
&lt;br /&gt;
if grep -Fxq &amp;quot;#CustomStuffHere&amp;quot; openvpn.conf&lt;br /&gt;
then&lt;br /&gt;
    echo &amp;quot;Not adding custom routes, this server has been used previously&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Adding custom route rules&amp;quot;&lt;br /&gt;
cat &amp;lt;&amp;lt;EOF &amp;gt;&amp;gt; /etc/openvpn/openvpn.conf&lt;br /&gt;
&lt;br /&gt;
#CustomStuffHere&lt;br /&gt;
# Prevents default gateway from being set on the default routing table&lt;br /&gt;
route-noexec&lt;br /&gt;
&lt;br /&gt;
# Allows route-up script to be executed&lt;br /&gt;
script-security 2&lt;br /&gt;
&lt;br /&gt;
# Calls custom shell script after connection to add necessary routes&lt;br /&gt;
route-up /etc/openvpn/route-up-fwmark.sh&lt;br /&gt;
route-pre-down /etc/openvpn/route-pre-down-fwmark.sh&lt;br /&gt;
&lt;br /&gt;
# Logging of OpenVPN to file&lt;br /&gt;
#log /etc/openvpn/openvpn.log&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
fi&lt;br /&gt;
echo &amp;quot;Remember to set BitTorrent port forward in VPN control panel&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That way I can simply change between servers by running:&lt;br /&gt;
{{cmd|changevpn.sh countrycode.serverNumber.openvpn}}&lt;br /&gt;
&lt;br /&gt;
and then restart openvpn. I am also reminded to put the port forward through on the VPN control panel so my BitTorrent client is connectable:&lt;br /&gt;
&lt;br /&gt;
{{cmd|service openvpn restart}}&lt;br /&gt;
&lt;br /&gt;
Finally add openvpn to the default run level&lt;br /&gt;
{{cmd|rc-update add openvpn default}}&lt;br /&gt;
&lt;br /&gt;
= Creating a LAN only Subnet =&lt;br /&gt;
In this section, we&#039;ll be creating a LAN only subnet. This subnet will be 192.168.3.0/24. The idea of this subnet is nodes in it cannot have their packets forwarded to the Internet, however they can be accessed via the other LAN subnets 192.168.1.0/24 and 192.168.2.0/24. This approach doesn&#039;t use VLANs although that would be recommended if you had a managed switch. The idea of this subnet is for things like WiFi access points, IP Phones which contact a local Asterisk server and of course printers.&lt;br /&gt;
&lt;br /&gt;
At the end of this section we will have something like:&lt;br /&gt;
&lt;br /&gt;
[[File:Network diagram ipv4 tunnel LANONLY ROUTE.svg|900px|center|Network Diagram LAN ONLY Route with IPv4]]&lt;br /&gt;
&lt;br /&gt;
== /etc/iproute2/rt_tables ==&lt;br /&gt;
First up we&#039;ll add a third routing table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;3 LAN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/interfaces ==&lt;br /&gt;
Add a an extra virtual interface (really just a IP address to eth0).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# LAN Only&lt;br /&gt;
auto eth0:3&lt;br /&gt;
iface eth0:3 inet static&lt;br /&gt;
  address 192.168.3.1&lt;br /&gt;
  netmask 255.255.255.0&lt;br /&gt;
  broadcast 192.168.3.255&lt;br /&gt;
  post-up /etc/network/route_LAN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/route_LAN ==&lt;br /&gt;
This file will have our route added to it&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Add routes from ISP to LAN&lt;br /&gt;
/sbin/ip route add 192.168.1.0/24 dev eth0 table LAN&lt;br /&gt;
&lt;br /&gt;
# Add route from VPN to LAN&lt;br /&gt;
/sbin/ip route add 192.168.2.0/24 dev eth0 table LAN&lt;br /&gt;
&lt;br /&gt;
# Add route from LAN to it&#039;s own table&lt;br /&gt;
/sbin/ip route add 192.168.3.0/24 dev eth0 table LAN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/ppp/ip-up ==&lt;br /&gt;
Append a route from the LAN subnet to the ISP table&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Add route to LAN subnet&lt;br /&gt;
/sbin/ip route add 192.168.3.0/24 dev eth0 table ISP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/openvpn/route-up-fwmark.sh ==&lt;br /&gt;
Append a route from the LAN subnet to the VPN table&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Add route to LAN only subnet&lt;br /&gt;
/sbin/ip route add 192.168.3.0/24 dev eth0 table VPN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/ntpd.conf ==&lt;br /&gt;
Add a listen address for ntp (OpenNTPD).&lt;br /&gt;
&lt;br /&gt;
You should now have:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Addresses to listen on (ntpd does not listen by default)&lt;br /&gt;
listen on 192.168.1.1&lt;br /&gt;
listen on 192.168.2.1&lt;br /&gt;
listen on 192.168.3.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Devices needing the correct time will need to use this NTP server because they will not be able to get it from the Internet.&lt;br /&gt;
&lt;br /&gt;
== Blocking bogons ==&lt;br /&gt;
Our LAN now has 4 subnets in total that are possible:&lt;br /&gt;
&lt;br /&gt;
* 192.168.0.0/30 (connection between modem and router)&lt;br /&gt;
* 192.168.1.0/24 (ISP table, directly routed out WAN)&lt;br /&gt;
* 192.168.2.0/24 (VPN table, routed out VPN)&lt;br /&gt;
* 192.168.3.0/24 (Null routed subnet for LAN only hosts)&lt;br /&gt;
* 172.16.32.0/20 (VPN provider&#039;s network, so we can access things on the VPN&#039;s network).&lt;br /&gt;
&lt;br /&gt;
Everything else should be rejected. No packets should ever be forwarded on 192.168.5.2 or 10.0.0.5 for example.&lt;br /&gt;
&lt;br /&gt;
=== Installing ipset ===&lt;br /&gt;
Install ipset:&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add ipset}}&lt;br /&gt;
&lt;br /&gt;
Add it to start up:&lt;br /&gt;
{{cmd|rc-update add ipset default}}&lt;br /&gt;
&lt;br /&gt;
Now we need to load the lists of addresses into ipset [http://blog.ls20.com/securing-your-server-using-ipset-and-dynamic-blocklists Securing Your Server using IPset and Dynamic Blocklists] mentions a [https://gist.github.com/hwdsl2/6dce75072274abfd2781 script] which was particularly useful. This script could be run on a cron job if you wanted to regularly update it and for the full bogon list you should as they change when that address space has been allocated.&lt;br /&gt;
&lt;br /&gt;
For the purpose of this we will be using just the [https://files.pfsense.org/lists/bogon-bn-nonagg.txt bogon-bn-nonagg.txt] list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;0.0.0.0/8&lt;br /&gt;
10.0.0.0/8&lt;br /&gt;
100.64.0.0/10&lt;br /&gt;
127.0.0.0/8&lt;br /&gt;
169.254.0.0/16&lt;br /&gt;
172.16.0.0/12&lt;br /&gt;
192.0.0.0/24&lt;br /&gt;
192.0.2.0/24&lt;br /&gt;
192.168.0.0/16&lt;br /&gt;
198.18.0.0/15&lt;br /&gt;
198.51.100.0/24&lt;br /&gt;
203.0.113.0/24&lt;br /&gt;
224.0.0.0/4&lt;br /&gt;
240.0.0.0/4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is unlikely to change as it&#039;s the IPV4 [https://en.wikipedia.org/wiki/Reserved_IP_addresses Reserved IP addresses] space. The script: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#! /bin/bash&lt;br /&gt;
&lt;br /&gt;
# /usr/local/sbin/fullbogons-ipv4&lt;br /&gt;
# BoneKracker&lt;br /&gt;
# Rev. 11 October 2012&lt;br /&gt;
# Tested with ipset 6.13&lt;br /&gt;
&lt;br /&gt;
# Purpose: Periodically update an ipset used in a running firewall to block&lt;br /&gt;
# bogons. Bogons are addresses that nobody should be using on the public&lt;br /&gt;
# Internet because they are either private, not to be assigned, or have&lt;br /&gt;
# not yet been assigned.&lt;br /&gt;
#&lt;br /&gt;
# Notes: Call this from crontab. Feed updated every 4 hours.&lt;br /&gt;
&lt;br /&gt;
# target=&amp;quot;http://www.team-cymru.org/Services/Bogons/fullbogons-ipv4.txt&amp;quot;&lt;br /&gt;
# Use alternative URL from pfSense, due to 404 error with URL above&lt;br /&gt;
target=&amp;quot;https://files.pfsense.org/lists/bogon-bn-nonagg.txt&amp;quot;&lt;br /&gt;
ipset_params=&amp;quot;hash:net&amp;quot;&lt;br /&gt;
&lt;br /&gt;
filename=$(basename ${target})&lt;br /&gt;
firewall_ipset=${filename%.*}           # ipset will be filename minus ext&lt;br /&gt;
data_dir=&amp;quot;/var/tmp/${firewall_ipset}&amp;quot;   # data directory will be same&lt;br /&gt;
data_file=&amp;quot;${data_dir}/${filename}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# if data directory does not exist, create it&lt;br /&gt;
mkdir -pm 0750 ${data_dir}&lt;br /&gt;
&lt;br /&gt;
# function to get modification time of the file in log-friendly format&lt;br /&gt;
get_timestamp() {&lt;br /&gt;
    date -r $1 +%m/%d&#039; &#039;%R&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# file modification time on server is preserved during wget download&lt;br /&gt;
[ -w ${data_file} ] &amp;amp;&amp;amp; old_timestamp=$(get_timestamp ${data_file})&lt;br /&gt;
&lt;br /&gt;
# fetch file only if newer than the version we already have&lt;br /&gt;
wget -qNP ${data_dir} ${target}&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$?&amp;quot; -ne &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
    logger -p cron.err &amp;quot;IPSet: ${firewall_ipset} wget failed.&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
timestamp=$(get_timestamp ${data_file})&lt;br /&gt;
&lt;br /&gt;
# compare timestamps because wget returns success even if no newer file&lt;br /&gt;
if [ &amp;quot;${timestamp}&amp;quot; != &amp;quot;${old_timestamp}&amp;quot; ]; then&lt;br /&gt;
&lt;br /&gt;
    temp_ipset=&amp;quot;${firewall_ipset}_temp&amp;quot;&lt;br /&gt;
    ipset create ${temp_ipset} ${ipset_params}&lt;br /&gt;
&lt;br /&gt;
    #sed -i &#039;/^#/d&#039; ${data_file}            # strip comments&lt;br /&gt;
    sed -ri &#039;/^[#&amp;lt; \t]|^$/d&#039; ${data_file}   # occasionally the file has been xhtml&lt;br /&gt;
&lt;br /&gt;
    while read network; do&lt;br /&gt;
        ipset add ${temp_ipset} ${network}&lt;br /&gt;
    done &amp;lt; ${data_file}&lt;br /&gt;
&lt;br /&gt;
    # if ipset does not exist, create it&lt;br /&gt;
    ipset create -exist ${firewall_ipset} ${ipset_params}&lt;br /&gt;
&lt;br /&gt;
    # swap the temp ipset for the live one&lt;br /&gt;
    ipset swap ${temp_ipset} ${firewall_ipset}&lt;br /&gt;
    ipset destroy ${temp_ipset}&lt;br /&gt;
&lt;br /&gt;
    # log the file modification time for use in minimizing lag in cron schedule&lt;br /&gt;
    logger -p cron.notice &amp;quot;IPSet: ${firewall_ipset} updated (as of: ${timestamp}).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
fi&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you should see the list loaded into memory when you do:&lt;br /&gt;
&lt;br /&gt;
{{cmd|ipset list}}&lt;br /&gt;
&lt;br /&gt;
We want to save it so our router can refer to it next time it starts up so for that:&lt;br /&gt;
&lt;br /&gt;
{{cmd|/etc/init.d/ipset save}}&lt;br /&gt;
&lt;br /&gt;
=== Adding our allowed networks ===&lt;br /&gt;
&lt;br /&gt;
==== IPv4 ====&lt;br /&gt;
{{cmd|ipset create allowed-nets-ipv4 hash:net,iface family inet}}&lt;br /&gt;
&lt;br /&gt;
Then you can add each of your allowed networks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ipset add allowed-nets-ipv4 192.168.0.0/30,eth1&lt;br /&gt;
ipset add allowed-nets-ipv4 192.168.1.0/24,eth0&lt;br /&gt;
ipset add allowed-nets-ipv4 192.168.2.0/24,eth0&lt;br /&gt;
ipset add allowed-nets-ipv4 192.168.3.0/24,eth0&lt;br /&gt;
ipset add allowed-nets-ipv4 127.0.0.0/8,lo&lt;br /&gt;
ipset add allowed-nets-ipv4 172.16.32.0/20,tun0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IPv6 ====&lt;br /&gt;
For IPv6 if you&#039;ve got any [https://en.wikipedia.org/wiki/Unique_local_address Unique local address] ranges you may choose to add them:&lt;br /&gt;
&lt;br /&gt;
{{cmd|ipset create allowed-nets-ipv6 hash:net,iface family inet6}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ipset add allowed-nets-ipv6 fde4:8dba:82e1::/48,tun0&lt;br /&gt;
ipset add allowed-nets-ipv6 fde4:8dba:82e1:ffff::/64,eth0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finally save the sets with this command so they can be loaded next boot:&lt;br /&gt;
&lt;br /&gt;
{{cmd|/etc/init.d/ipset save}}&lt;br /&gt;
&lt;br /&gt;
== Restricting our LAN subnet with iptables, and blocking the bogons ==&lt;br /&gt;
Finally we can apply our iptables rules, to filter both 192.168.3.0/24 and make sure that subnets like 192.168.5.0/24 are not forwarded or accessible by our router. You will need to review these rules, and remove the ones that do not apply to you.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to change your RADIUS rules if you moved your WiFi APs into the 192.168.3.0/24 subnet. You&#039;ll also need to edit /etc/raddb/clients.conf&lt;br /&gt;
&lt;br /&gt;
I used a new table here called &amp;quot;raw&amp;quot;. This table is more primitive than the filter table. It cannot have FORWARD rules or INPUT rules. Therefore you will still need a FORWARD rule in your filter table to block bogons originating from your LAN.&lt;br /&gt;
&lt;br /&gt;
The only kind of rules we may use here are PREROUTING and OUTPUT. The OUTPUT rules will only filter traffic originating from our router&#039;s local processes, such as if we ran the ping command to a bogon range on the router&#039;s command prompt.&lt;br /&gt;
&lt;br /&gt;
Traffic passes over the raw table, before connecting marking as indicated by this packet flow map: [http://inai.de/images/nf-packet-flow.png Netfilter packet flow graph] this means we don&#039;t have to strip the mark off the bogon range in the mangle table anymore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#########################################################################&lt;br /&gt;
# Advanced routing rule set&lt;br /&gt;
# Uses 192.168.1.0 via ISP&lt;br /&gt;
#      192.168.2.0 via VPN&lt;br /&gt;
#      192.168.3.0 via LAN&lt;br /&gt;
#&lt;br /&gt;
# Packets to/from 192.168.1.0/24 are marked with 0x1 and routed to ISP&lt;br /&gt;
# Packets to/from 192.168.2.0/24 are marked with 0x2 and routed to VPN&lt;br /&gt;
# Packets to/from 192.168.3.0/24 are routed to LAN and not forwarded onto&lt;br /&gt;
#                                    the internet&lt;br /&gt;
#&lt;br /&gt;
#########################################################################&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Raw Table&lt;br /&gt;
# This table is the place where we drop all illegal packets from networks that&lt;br /&gt;
# do not exist&lt;br /&gt;
#&lt;br /&gt;
*raw&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a log drop chain&lt;br /&gt;
:LOG_DROP_BOGON - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create an output chain&lt;br /&gt;
:OUT_PPP0 - [0:0]&lt;br /&gt;
:OUT_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Allows traffic from VPN tunnel&lt;br /&gt;
-A PREROUTING -s 172.16.32.0/20 -i tun0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allows traffic to VPN tunnel&lt;br /&gt;
-A PREROUTING -d 172.16.32.0/20 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Block specified bogons coming in from ISP and VPN&lt;br /&gt;
# (unlikely to happen as they filter them on their router)&lt;br /&gt;
-A PREROUTING -i ppp0 -m set --match-set bogon-bn-nonagg src -j LOG_DROP_BOGON&lt;br /&gt;
-A PREROUTING -i tun0 -m set --match-set bogon-bn-nonagg src -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Allows my excepted ranges.&lt;br /&gt;
-A PREROUTING -m set --match-set allowed-nets-ipv4 src,src -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass output interface to corresponding chain&lt;br /&gt;
-A OUTPUT -o ppp0 -j OUT_PPP0&lt;br /&gt;
-A OUTPUT -o tun0 -j OUT_TUN0&lt;br /&gt;
&lt;br /&gt;
# Log drop chain&lt;br /&gt;
-A LOG_DROP_BOGON -j LOG --log-prefix &amp;quot;Dropped Bogon (ipv4) : &amp;quot; --log-level 6&lt;br /&gt;
-A LOG_DROP_BOGON -j DROP&lt;br /&gt;
&lt;br /&gt;
# Block packets originating from the router destined to bogon ranges&lt;br /&gt;
-A OUT_PPP0 -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Blocks packets originating from the router destined to bogon ranges&lt;br /&gt;
-A OUT_TUN0 -d 172.16.32.0/20 -j ACCEPT&lt;br /&gt;
-A OUT_TUN0 -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# NAT Table&lt;br /&gt;
# This is where translation of packets happens and &amp;quot;forwarding&amp;quot; of ports&lt;br /&gt;
# to specific hosts.&lt;br /&gt;
#&lt;br /&gt;
*nat&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Port forwarding for Bittorrent&lt;br /&gt;
-A PREROUTING -i tun0 -p tcp -m tcp --dport 6881:6889 -j DNAT --to-destination 192.168.2.20&lt;br /&gt;
-A PREROUTING -i tun0 -p udp -m udp --dport 6881:6889 -j DNAT --to-destination 192.168.2.20&lt;br /&gt;
&lt;br /&gt;
# Allows routing to our modem subnet so we can access the web interface&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
-A POSTROUTING -s 192.168.2.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the VPN tunnel&lt;br /&gt;
-A POSTROUTING -o tun0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the PPP tunnel&lt;br /&gt;
-A POSTROUTING -o ppp0 -j MASQUERADE&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Filter Table&lt;br /&gt;
# This is where we decide to ACCEPT, DROP or REJECT things&lt;br /&gt;
#&lt;br /&gt;
*filter&lt;br /&gt;
:INPUT DROP [0:0]&lt;br /&gt;
:FORWARD DROP [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for forwarding packets&lt;br /&gt;
:FWD_ETH0 - [0:0]&lt;br /&gt;
:FWD_ETH1 - [0:0]&lt;br /&gt;
:FWD_PPP0 - [0:0]&lt;br /&gt;
:FWD_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for input packets (for host itself)&lt;br /&gt;
:IN_ETH0 - [0:0]&lt;br /&gt;
:IN_ETH1 - [0:0]&lt;br /&gt;
:IN_PPP0 - [0:0]&lt;br /&gt;
:IN_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a drop chain&lt;br /&gt;
:LOG_DROP - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a log drop chain&lt;br /&gt;
:LOG_DROP_BOGON - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a reject chain&lt;br /&gt;
:LOG_REJECT_LANONLY - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create an output chain&lt;br /&gt;
:OUT_PPP0 - [0:0]&lt;br /&gt;
:OUT_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Pass input packet to corresponding rule chain&lt;br /&gt;
-A INPUT -i lo -j ACCEPT&lt;br /&gt;
-A INPUT -i eth0 -j IN_ETH0&lt;br /&gt;
-A INPUT -i eth1 -j IN_ETH1&lt;br /&gt;
-A INPUT -i ppp0 -j IN_PPP0&lt;br /&gt;
-A INPUT -i tun0 -j IN_TUN0&lt;br /&gt;
&lt;br /&gt;
# Track forwarded packets&lt;br /&gt;
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass forwarded packet to corresponding rule chain&lt;br /&gt;
-A FORWARD -i eth0 -j FWD_ETH0&lt;br /&gt;
-A FORWARD -i eth1 -j FWD_ETH1&lt;br /&gt;
-A FORWARD -i ppp0 -j FWD_PPP0&lt;br /&gt;
-A FORWARD -i tun0 -j FWD_TUN0&lt;br /&gt;
&lt;br /&gt;
# Pass output interface to corresponding chain&lt;br /&gt;
-A OUTPUT -o ppp0 -j OUT_PPP0&lt;br /&gt;
-A OUTPUT -o tun0 -j OUT_TUN0&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to Modem&lt;br /&gt;
-A FWD_ETH0 -d 192.168.0.1/32 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow routing to remote address on VPN&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -d 172.16.32.1/32 -o tun0 -j ACCEPT&lt;br /&gt;
-A FWD_ETH0 -s 192.168.2.0/24 -d 172.16.32.1/32 -o tun0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow forwarding from LAN hosts to LAN ONLY subnet&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -d 192.168.3.0/24 -j ACCEPT&lt;br /&gt;
-A FWD_ETH0 -s 192.168.2.0/24 -d 192.168.3.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow LAN ONLY subnet to contact other LAN hosts&lt;br /&gt;
-A FWD_ETH0 -s 192.168.3.0/24 -d 192.168.1.0/24 -j ACCEPT&lt;br /&gt;
-A FWD_ETH0 -s 192.168.3.0/24 -d 192.168.2.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Refuse to forward bogons to the internet!&lt;br /&gt;
-A FWD_ETH0 -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to ISP&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to VPN&lt;br /&gt;
-A FWD_ETH0 -s 192.168.2.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Prevent 192.168.3.0/24 from accessing internet&lt;br /&gt;
-A FWD_ETH0 -s 192.168.3.0/24 -j LOG_REJECT_LANONLY&lt;br /&gt;
&lt;br /&gt;
# Allow excepted server to be FORWARD to ppp0&lt;br /&gt;
#-A FWD_ETH0 -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -o ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward SSH packets from network to modem&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.1.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.2.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward HTTP packets from network to mode&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.1.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.2.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward Bittorrent Port to workstation&lt;br /&gt;
-A FWD_TUN0 -d 192.168.2.20/32 -p tcp -m tcp --dport 6881:6889 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_TUN0 -d 192.168.2.20/32 -p udp -m udp --dport 6881:6889 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# DNS to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# FreeRadius Client (eg a UniFi AP)&lt;br /&gt;
-A IN_ETH0 -s 192.168.3.10/32 -p tcp -m tcp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.3.10/32 -p udp -m udp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Ubiquiti UAP Device Discovery Broadcast&lt;br /&gt;
-A IN_ETH0 -s 192.168.3.10/32 -p udp -m udp --dport 10001 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# NTP to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.3.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept traffic to router on both subnets&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow excepted server to be INPUT to eth0 from LAN&lt;br /&gt;
#-A IN_ETH0 -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -o ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# HTTP To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked PPP0 connection&lt;br /&gt;
-A IN_PPP0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on PPP0&lt;br /&gt;
-A IN_PPP0 -j LOG --log-prefix &amp;quot;DROP:INPUT (ipv4) &amp;quot; --log-level 6&lt;br /&gt;
-A IN_PPP0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked TUN0 connection&lt;br /&gt;
-A IN_TUN0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on TUN0&lt;br /&gt;
-A IN_TUN0 -j LOG --log-prefix &amp;quot;DROP:INPUT (ipv4) &amp;quot; --log-level 6&lt;br /&gt;
-A IN_TUN0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Log dropped bogons that never got forwarded&lt;br /&gt;
-A LOG_DROP_BOGON -j LOG --log-prefix &amp;quot;Dropped Bogon forward (ipv4) &amp;quot; --log-level 6&lt;br /&gt;
-A LOG_DROP_BOGON -j DROP&lt;br /&gt;
&lt;br /&gt;
# Log rejected packets&lt;br /&gt;
-A LOG_REJECT_LANONLY -j LOG --log-prefix &amp;quot;Rejected packet from LAN only range : &amp;quot; --log-level 6&lt;br /&gt;
-A LOG_REJECT_LANONLY -j REJECT --reject-with icmp-port-unreachable&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mangle Table&lt;br /&gt;
# This is the place where our markings happen, whether they be 0x1 or 0x2&lt;br /&gt;
#&lt;br /&gt;
*mangle&lt;br /&gt;
&lt;br /&gt;
# Set default policies for table&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:FORWARD ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Restore CONNMARK to the MARK (If one doesn&#039;t exist then no mark is set)&lt;br /&gt;
-A PREROUTING -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff&lt;br /&gt;
&lt;br /&gt;
# If packet MARK is 2, then it means there is already a connection mark and the&lt;br /&gt;
# original packet came in on VPN&lt;br /&gt;
-A PREROUTING -s 192.168.2.0/24 -m mark --mark 0x2 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Check exception (this is a server which when accessed on a 192.168.2.0/24 address will go out the ISP table) are 0x1&lt;br /&gt;
#-A PREROUTING -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -m mark --mark 0x1 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Mark packets coming from 192.168.2.0/24 are 0x2&lt;br /&gt;
-A PREROUTING -s 192.168.2.0/24 -j MARK --set-xmark 0x2/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# If packet MARK is 1, then it means there is already a connection mark and the&lt;br /&gt;
# original packet came in on ISP&lt;br /&gt;
-A PREROUTING -s 192.168.1.0/24 -m mark --mark 0x1 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Mark packets 192.168.1.0/24 are 0x1&lt;br /&gt;
-A PREROUTING -s 192.168.1.0/24 -j MARK --set-xmark 0x1/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Mark exception (this is a server which when accessed on a 192.168.2.0/24 address will go out the ISP table) as 0x1&lt;br /&gt;
#-A PREROUTING -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -j MARK --set-xmark 0x1/0xffffff&lt;br /&gt;
&lt;br /&gt;
# Strip mark if packet is destined for modem&lt;br /&gt;
-A PREROUTING -d 192.168.0.1/32 -j MARK --set-xmark 0x0/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Save MARK to CONNMARK (remember iproute can&#039;t see CONNMARKs)&lt;br /&gt;
-A PREROUTING -j CONNMARK --save-mark --nfmask 0xffffffff --ctmask 0xffffffff&lt;br /&gt;
COMMIT&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Other Tips =&lt;br /&gt;
&lt;br /&gt;
== Diagnosing firewall problems ==&lt;br /&gt;
&lt;br /&gt;
=== netcat, netcat6 ===&lt;br /&gt;
Netcat can be useful for testing if a port is open or closed or filtered.&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add netcat-openbsd}}&lt;br /&gt;
&lt;br /&gt;
After installing netcat we can use it like this:&lt;br /&gt;
&lt;br /&gt;
Say we wanted to test for IPv6, UDP, Port 547 we would do this on the router:&lt;br /&gt;
&lt;br /&gt;
{{cmd|nc -6 -u -l 547}}&lt;br /&gt;
&lt;br /&gt;
and then this on the client to connect to it:&lt;br /&gt;
&lt;br /&gt;
{{cmd|nc -u -v -6 2001:0db8:1234:0001::1 547}}&lt;br /&gt;
&lt;br /&gt;
=== tcpdump ===&lt;br /&gt;
&lt;br /&gt;
tcpdump can also be useful for dumping the contents of packets coming in on an interface:&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add tcpdump}}&lt;br /&gt;
&lt;br /&gt;
Then we can run it. This example captures all DNS traffic originating from 192.168.2.20.&lt;br /&gt;
&lt;br /&gt;
{{cmd|tcpdump -i eth0 udp and src 192.168.2.20 and port 53}}&lt;br /&gt;
&lt;br /&gt;
You can write the file out with the -w option, and view it in Wireshark locally on your computer. You can increase the verbosity with the -v option. Using -vv will be even more verbose. -vvv will show even more.&lt;br /&gt;
&lt;br /&gt;
== lbu cache ==&lt;br /&gt;
Configure lbu cache so that you don&#039;t need to download packages when you restart your router eg [[Local APK cache]]&lt;br /&gt;
&lt;br /&gt;
This is particularly important as some of the images do not contain ppp-pppoe. This might mean you&#039;re unable to get an internet connection to download the other packages on boot.&lt;br /&gt;
&lt;br /&gt;
== lbu encryption /etc/lbu/lbu.conf ==&lt;br /&gt;
In /etc/lbu/lbu.conf you might want to enable encryption to protect your VPN keys.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# what cipher to use with -e option&lt;br /&gt;
DEFAULT_CIPHER=aes-256-cbc&lt;br /&gt;
&lt;br /&gt;
# Uncomment the row below to encrypt config by default&lt;br /&gt;
ENCRYPTION=$DEFAULT_CIPHER&lt;br /&gt;
&lt;br /&gt;
# Uncomment below to avoid &amp;lt;media&amp;gt; option to &#039;lbu commit&#039;&lt;br /&gt;
# Can also be set to &#039;floppy&#039;&lt;br /&gt;
LBU_MEDIA=mmcblk0p1&lt;br /&gt;
&lt;br /&gt;
# Set the LBU_BACKUPDIR variable in case you prefer to save the apkovls&lt;br /&gt;
# in a normal directory instead of mounting an external media.&lt;br /&gt;
# LBU_BACKUPDIR=/root/config-backups&lt;br /&gt;
&lt;br /&gt;
# Uncomment below to let lbu make up to 3 backups&lt;br /&gt;
# BACKUP_LIMIT=3&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remember to set a root password, by default Alpine Linux&#039;s root account is passwordless.&lt;br /&gt;
{{cmd|passwd root}}&lt;br /&gt;
&lt;br /&gt;
== Backup apkprov ==&lt;br /&gt;
It&#039;s a good idea to back up your apk provision file. You can pull it off your router to your local workstation with:&lt;br /&gt;
&lt;br /&gt;
{{cmd|scp -r root@192.168.2.1:/media/mmcblk0p1/&amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz.aes-256-cbc ./}}&lt;br /&gt;
&lt;br /&gt;
And decrypt it with:&lt;br /&gt;
{{cmd|openssl enc -d -aes-256-cbc -in &amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz.aes-256-cbc -out &amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz}}&lt;br /&gt;
&lt;br /&gt;
It can be encrypted with:&lt;br /&gt;
{{cmd|openssl aes-256-cbc -salt -in &amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz -out &amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz.aes-256-cbc}}&lt;br /&gt;
&lt;br /&gt;
== Harden SSH ==&lt;br /&gt;
&lt;br /&gt;
=== Generate a SSH key ===&lt;br /&gt;
{{cmd|ssh-keygen -t rsa -b 4096}}&lt;br /&gt;
&lt;br /&gt;
You will want to put the contents of id_rsa.pub in /etc/ssh/authorized_keys&lt;br /&gt;
&lt;br /&gt;
You can put multiple public keys on multiple lines if more than one person has access to the router.&lt;br /&gt;
&lt;br /&gt;
=== /etc/ssh/sshd_config ===&lt;br /&gt;
A couple of good options to set in here can be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ListenAddress 192.168.1.1&lt;br /&gt;
ListenAddress 192.168.2.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
While this isn&#039;t usually a good idea, a router doesn&#039;t need more than one user.&lt;br /&gt;
&amp;lt;pre&amp;gt;PermitRootLogin yes&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The most important options:&lt;br /&gt;
&amp;lt;pre&amp;gt;RSAAuthentication yes&lt;br /&gt;
PubkeyAuthentication yes&lt;br /&gt;
AuthorizedKeysFile  /etc/ssh/authorized_keys&lt;br /&gt;
PasswordAuthentication no&lt;br /&gt;
PermitEmptyPasswords no&lt;br /&gt;
AllowTcpForwarding no&lt;br /&gt;
X11Forwarding no&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== /etc/conf.d/sshd ===&lt;br /&gt;
You will want to add &amp;lt;pre&amp;gt;rc_need=&amp;quot;net&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This instructs OpenRC to make sure the network is up before starting ssh.&lt;br /&gt;
&lt;br /&gt;
Finally add sshd to the default run level&lt;br /&gt;
{{cmd|rc-update add sshd default}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at [https://stribika.github.io/2015/01/04/secure-secure-shell.html Secure Secure Shell] and tighten OpenSSH&#039;s cryptography options.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
* https://wiki.gentoo.org/wiki/Home_Router&lt;br /&gt;
* https://help.ubuntu.com/community/ADSLPPPoE&lt;br /&gt;
* https://wiki.archlinux.org/index.php/Router&lt;br /&gt;
* https://wiki.gentoo.org/wiki/IPv6_router_guide&lt;br /&gt;
* [https://vk5tu.livejournal.com/37206.html IPv6 at home, under the hood with Debian Wheezy and Internode]&lt;br /&gt;
* [http://vk5tu.livejournal.com/43059.html Raspberry Pi random number generator]&lt;br /&gt;
* [https://www.raspberrypi.org/forums/viewtopic.php?f=56&amp;amp;t=60569 rng-tools post by ktb]&lt;br /&gt;
&lt;br /&gt;
[[category: VPN]]&lt;br /&gt;
[[category: Raspberry]]&lt;/div&gt;</summary>
		<author><name>Dngray</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Linux_Router_with_VPN_on_a_Raspberry_Pi&amp;diff=16944</id>
		<title>Linux Router with VPN on a Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Linux_Router_with_VPN_on_a_Raspberry_Pi&amp;diff=16944"/>
		<updated>2020-02-25T09:52:29Z</updated>

		<summary type="html">&lt;p&gt;Dngray: Mention IPoE&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
= Rationale =&lt;br /&gt;
&lt;br /&gt;
This guide demonstrates how to set up a Linux router with a VPN tunnel. You will need a second ethernet adapter. If you are using a Raspberry Pi like I did, then you can use something like this [http://store.apple.com/us/product/MC704LL/A/apple-usb-ethernet-adapter Apple USB Ethernet Adapter] as it contains a ASIX AX88772 which has good Linux support.&lt;br /&gt;
&lt;br /&gt;
You may choose to also buy an [http://www.element14.com/community/docs/DOC-68907/l/shim-rtc-realtime-clock-accessory-board-for-raspberry-pi RTC clock]. If you don&#039;t have an RTC clock, the time is lost when your Pi is shut down. When it is rebooted, the time will be set back to Thursday, 1 January 1970. As this is earlier than the creation time of your VPN certificates OpenVPN will refuse to start, which may mean you cannot do DNS lookups over VPN.&lt;br /&gt;
&lt;br /&gt;
For wireless, a separate access point was purchased ([http://wiki.openwrt.org/toh/ubiquiti/unifi Ubiquiti UniFi AP]) because it contains a Atheros AR9287 which is supported by [https://wireless.wiki.kernel.org/en/users/drivers/ath9k ath9k].&lt;br /&gt;
&lt;br /&gt;
I only chose a Raspberry Pi due to the fact it was inexpensive. My WAN link is pathetic so I was not concerned with getting high PPS ([https://en.wikipedia.org/wiki/Throughput Packets Per Second]). You could choose to use an old x86/amd64 system instead. If I had better internet I&#039;d probably go with an offering from [https://soekris.com Soekris] such as the [https://soekris.com/products/net6501-1.html net6501] as it would have a much lower power consumption than a generic x86_64 desktop processor.&lt;br /&gt;
&lt;br /&gt;
If you want to route speeds above 100 Mbit/s you&#039;ll want to make use of hardware encryption like [https://en.wikipedia.org/wiki/AES_instruction_set AES-NI]. The [https://soekris.com Soekris] offerings have the option of an additional hardware encryption module ([https://soekris.com/products/vpn-1411.html vpn1411]). Another option is to use a [https://en.wikipedia.org/wiki/Mini-ITX Mini ITX motherboard], with a managed switch. I chose the [https://www.ubnt.com/edgemax/edgeswitch Ubiquiti ES-16-150W].&lt;br /&gt;
&lt;br /&gt;
If you wish to use IPv6 you should consider looking at [[Linux Router with VPN on a Raspberry Pi (IPv6)]] as the implementation does differ slightly to this tutorial.&lt;br /&gt;
&lt;br /&gt;
The network in this tutorial looks like this: &lt;br /&gt;
&lt;br /&gt;
[[File:Network diagram ipv4 basic.svg|900px|center|Network Diagram Single IPv4]]&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
This guide assumes you&#039;re using Alpine Linux from a micro SD card in ramdisk mode. It assumes you&#039;ve read the basics of how to use [[Alpine local backup]].  The [[Raspberry Pi]] article contains information on how to install Alpine Linux on a Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
= Modem in full bridge mode =&lt;br /&gt;
This particular page uses an example where you have a modem that uses PPPoE. You will need to modify parts which do not apply to you. &lt;br /&gt;
&lt;br /&gt;
In this example I have a modem which has been configured in full bridge mode. PPP sessions are initiated on the router.&lt;br /&gt;
&lt;br /&gt;
The modem I am using is a [http://www.cisco.com/c/en/us/products/routers/877-integrated-services-router-isr/index.html Cisco 877 Integrated Services Router]. It has no web interface and is controlled over SSH. More information can be found [[Configuring a Cisco 877 in full bridge mode]].&lt;br /&gt;
&lt;br /&gt;
= Network =&lt;br /&gt;
&lt;br /&gt;
== /etc/hostname ==&lt;br /&gt;
Set this to your hostname eg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;HOST_NAME&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/hosts ==&lt;br /&gt;
Set your host and hostname&lt;br /&gt;
&amp;lt;pre&amp;gt;127.0.0.1	&amp;lt;HOST_NAME&amp;gt; &amp;lt;HOST_NAME&amp;gt;.&amp;lt;DOMAIN_NAME&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::1		&amp;lt;HOST_NAME&amp;gt; ipv6-gateway ipv6-loopback&lt;br /&gt;
ff00::0		ipv6-localnet&lt;br /&gt;
ff00::0		ipv6-mcastprefix&lt;br /&gt;
ff02::1		ipv6-allnodes&lt;br /&gt;
ff02::2		ipv6-allrouters&lt;br /&gt;
ff02::3		ipv6-allhosts&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/interfaces ==&lt;br /&gt;
Configure your network interfaces. Change &amp;quot;yourISP&amp;quot; to the file name of the file in /etc/ppp/peers/yourISP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#&lt;br /&gt;
# Network Interfaces&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Loopback interfaces&lt;br /&gt;
auto lo&lt;br /&gt;
iface lo inet loopback&lt;br /&gt;
  address 127.0.0.1&lt;br /&gt;
  netmask 255.0.0.0&lt;br /&gt;
&lt;br /&gt;
# Internal Interface - facing LAN&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
  address 192.168.1.1&lt;br /&gt;
  netmask 255.255.255.0&lt;br /&gt;
  broadcast 192.168.1.255&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PPP ===&lt;br /&gt;
Next up we need to configure our router to be able to dial a PPP connection with our modem.&lt;br /&gt;
&lt;br /&gt;
If your ISP uses [https://en.wikipedia.org/wiki/Point-to-Point_Protocol PPP] you may need to configure it. See [[PPP]].&lt;br /&gt;
&lt;br /&gt;
You will want to make sure you set your WAN interface, in this example we used eth1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# External Interface - facing Modem&lt;br /&gt;
allow-hotplug eth1&lt;br /&gt;
auto eth1&lt;br /&gt;
iface eth1 inet static&lt;br /&gt;
  address 192.168.0.2&lt;br /&gt;
  netmask 255.255.255.252&lt;br /&gt;
  broadcast 192.168.0.3&lt;br /&gt;
  pre-up /sbin/ip link set eth1 up&lt;br /&gt;
  up ifup ppp0=yourISP&lt;br /&gt;
  down ifdown ppp0=yourISP&lt;br /&gt;
  post-down /sbin/ip link set eth1 up&lt;br /&gt;
&lt;br /&gt;
# Link to ISP&lt;br /&gt;
iface yourISP inet ppp&lt;br /&gt;
  provider yourISP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IPoE ===&lt;br /&gt;
Alternatively it&#039;s quite common for ISPs to use [https://en.wikipedia.org/wiki/IPoE IPoE]. IPoE is much simpler and only runs DHCP on the external interface. It should look something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# External interface to ISP&lt;br /&gt;
allow-hotplug eth1&lt;br /&gt;
auto eth1&lt;br /&gt;
iface eth1 inet dhcp&lt;br /&gt;
&lt;br /&gt;
iface eth1 inet static&lt;br /&gt;
    address 192.168.0.2&lt;br /&gt;
    netmask 255.255.255.252&lt;br /&gt;
    broadcast 192.168.0.3&lt;br /&gt;
&lt;br /&gt;
iface eth1 inet6 manual&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Basic IPtables firewall with routing ==&lt;br /&gt;
This demonstrates how to set up basic routing with a permissive outgoing firewall. Incoming packets are blocked. The rest is commented in the rule set.&lt;br /&gt;
&lt;br /&gt;
First install iptables:&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add iptables ip6tables}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#########################################################################&lt;br /&gt;
# Basic iptables IPv4 routing rule set&lt;br /&gt;
#&lt;br /&gt;
# 192.168.1.0/24 routed directly to PPP0 via NAT&lt;br /&gt;
# &lt;br /&gt;
#########################################################################&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mangle Table&lt;br /&gt;
# We leave this empty for the moment.&lt;br /&gt;
#&lt;br /&gt;
*mangle&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:FORWARD ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Filter Table&lt;br /&gt;
# This is where we decide to ACCEPT, DROP or REJECT things&lt;br /&gt;
#&lt;br /&gt;
*filter&lt;br /&gt;
:INPUT DROP [0:0]&lt;br /&gt;
:FORWARD DROP [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
*filter&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for forwarding packets&lt;br /&gt;
:FWD_ETH0 - [0:0]&lt;br /&gt;
:FWD_ETH1 - [0:0]&lt;br /&gt;
:FWD_PPP0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for input packets (for host itself)&lt;br /&gt;
:IN_ETH0 - [0:0]&lt;br /&gt;
:IN_ETH1 - [0:0]&lt;br /&gt;
:IN_PPP0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a log drop chain&lt;br /&gt;
:LOG_DROP - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Pass input packet to corresponding rule chain&lt;br /&gt;
-A INPUT -i lo -j ACCEPT&lt;br /&gt;
-A INPUT -i eth0 -j IN_ETH0&lt;br /&gt;
-A INPUT -i eth1 -j IN_ETH1&lt;br /&gt;
-A INPUT -i ppp0 -j IN_PPP0&lt;br /&gt;
&lt;br /&gt;
# Pass forwarded packet to corresponding rule chain&lt;br /&gt;
-A FORWARD -i eth0 -j FWD_ETH0&lt;br /&gt;
-A FORWARD -i eth1 -j FWD_ETH1&lt;br /&gt;
-A FORWARD -i ppp0 -j FWD_PPP0&lt;br /&gt;
&lt;br /&gt;
# Forward LAN traffic out&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward SSH packets from network to modem&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.0/30 -d 192.168.1.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward HTTP to modem&#039;s webserver&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.0/30 -d 192.168.1.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to ISP&lt;br /&gt;
-A FWD_PPP0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# DNS to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# FreeRadius Client (eg a UniFi AP)&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# NTP to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept traffic&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# HTTP to modem&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked PPP0 connection&lt;br /&gt;
-A IN_PPP0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# NAT Table&lt;br /&gt;
# This is where translation of packets happens and &amp;quot;forwarding&amp;quot; of ports&lt;br /&gt;
# to specific hosts.&lt;br /&gt;
#&lt;br /&gt;
*nat&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Port forwarding for Bittorrent&lt;br /&gt;
-A PREROUTING -i ppp0 -p tcp -m tcp --dport 6881:6889 -j DNAT --to-destination 192.168.1.20&lt;br /&gt;
-A PREROUTING -i ppp0 -p udp -m udp --dport 6881:6889 -j DNAT --to-destination 192.168.1.20&lt;br /&gt;
&lt;br /&gt;
# Allows routing to our modem subnet so we can access the web interface or SSH&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 22 -j MASQUERADE&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the PPP tunnel&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE&lt;br /&gt;
COMMIT&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I&#039;d also highly suggest reading these resources if you are new to iptables: &lt;br /&gt;
&lt;br /&gt;
* [https://www.frozentux.net/category/linux/iptables Frozen Tux Iptables-tutorial]&lt;br /&gt;
* [http://inai.de/links/iptables/ Words of wisdom for #netfilter]&lt;br /&gt;
* [http://sfvlug.editthis.info/wiki/Things_You_Should_Know_About_Netfilter Things You Should Know About Netfilter]&lt;br /&gt;
* [http://inai.de/documents/Perfect_Ruleset.pdf Towards the perfect ruleset]&lt;br /&gt;
&lt;br /&gt;
== /etc/sysctl.d/local.conf ==&lt;br /&gt;
&amp;lt;pre&amp;gt;# Controls IP packet forwarding&lt;br /&gt;
net.ipv4.ip_forward = 1&lt;br /&gt;
&lt;br /&gt;
# Needed to use fwmark, only required if you want to set up the VPN subnet later in this article&lt;br /&gt;
net.ipv4.conf.all.rp_filter = 2&lt;br /&gt;
&lt;br /&gt;
# Disable IPv6&lt;br /&gt;
net.ipv6.conf.all.disable_ipv6 = 1&lt;br /&gt;
net.ipv6.conf.lo.disable_ipv6 = 1&lt;br /&gt;
net.ipv6.conf.default.disable_ipv6 = 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note IPv6 is disabled here if you want that see the other tutorial [[Linux Router with VPN on a Raspberry Pi (IPv6)]]. You may also wish to look at [https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt ip-sysctl.txt] to read about the other keys.&lt;br /&gt;
&lt;br /&gt;
= DHCP =&lt;br /&gt;
{{cmd|apk add dhcp}}&lt;br /&gt;
&lt;br /&gt;
== /etc/conf.d/dhcpd ==&lt;br /&gt;
Specify the configuration file location, interface to run on and that you want DHCPD to run in IPv4 mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# /etc/conf.d/dhcpd: config file for /etc/init.d/dhcpd&lt;br /&gt;
&lt;br /&gt;
# If you require more than one instance of dhcpd you can create symbolic&lt;br /&gt;
# links to dhcpd service like so&lt;br /&gt;
#   cd /etc/init.d&lt;br /&gt;
#   ln -s dhcpd dhcpd.foo&lt;br /&gt;
#   cd ../conf.d&lt;br /&gt;
#   cp dhcpd dhcpd.foo&lt;br /&gt;
# Now you can edit dhcpd.foo and specify a different configuration file.&lt;br /&gt;
# You&#039;ll also need to specify a pidfile in that dhcpd.conf file.&lt;br /&gt;
# See the pid-file-name option in the dhcpd.conf man page for details.&lt;br /&gt;
&lt;br /&gt;
# If you wish to run dhcpd in a chroot, uncomment the following line&lt;br /&gt;
# DHCPD_CHROOT=&amp;quot;/var/lib/dhcp/chroot&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# All file paths below are relative to the chroot.&lt;br /&gt;
# You can specify a different chroot directory but MAKE SURE it&#039;s empty.&lt;br /&gt;
&lt;br /&gt;
# Specify a configuration file - the default is /etc/dhcp/dhcpd.conf&lt;br /&gt;
DHCPD_CONF=&amp;quot;/etc/dhcp/dhcpd.conf&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Configure which interface or interfaces to for dhcpd to listen on.&lt;br /&gt;
# List all interfaces space separated. If this is not specified then&lt;br /&gt;
# we listen on all interfaces.&lt;br /&gt;
DHCPD_IFACE=&amp;quot;eth0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Insert any other dhcpd options - see the man page for a full list.&lt;br /&gt;
DHCPD_OPTS=&amp;quot;-4&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/dhcp/dhcpd.conf ==&lt;br /&gt;
Configure your DHCP configuration server. For my DHCP server I&#039;m going to have three subnets. Each has a specific purpose. You may choose to have any number of subnets like below. The broadcast-address would be different if you used VLANs. However in this case we are not.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;authoritative;&lt;br /&gt;
ddns-update-style interim;&lt;br /&gt;
&lt;br /&gt;
shared-network home {&lt;br /&gt;
  subnet 192.168.1.0 netmask 255.255.255.0 {&lt;br /&gt;
    range 192.168.1.10 192.168.1.240;&lt;br /&gt;
    option subnet-mask 255.255.255.0;&lt;br /&gt;
    option broadcast-address 192.168.1.255;&lt;br /&gt;
    option routers 192.168.1.1;&lt;br /&gt;
    option ntp-servers 192.168.1.1;&lt;br /&gt;
    option domain-name-servers 192.168.1.1;&lt;br /&gt;
    allow unknown-clients;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  subnet 192.168.2.0 netmask 255.255.255.0 {&lt;br /&gt;
    range 192.168.2.10 192.168.2.240;&lt;br /&gt;
    option subnet-mask 255.255.255.0;&lt;br /&gt;
    option broadcast-address 192.168.2.255;&lt;br /&gt;
    option routers 192.168.2.1;&lt;br /&gt;
    option ntp-servers 192.168.2.1;&lt;br /&gt;
    option domain-name-servers 192.168.1.1;&lt;br /&gt;
    ignore unknown-clients;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  subnet 192.168.3.0 netmask 255.255.255.0 {&lt;br /&gt;
    range 192.168.3.10 192.168.3.240;&lt;br /&gt;
    option subnet-mask 255.255.255.0;&lt;br /&gt;
    option broadcast-address 192.168.3.255;&lt;br /&gt;
    option routers 192.168.3.1;&lt;br /&gt;
    option ntp-servers 192.168.3.1;&lt;br /&gt;
    option domain-name-servers 192.168.1.1;&lt;br /&gt;
    ignore unknown-clients;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
host Gaming_Computer {&lt;br /&gt;
  hardware ethernet 00:53:00:FF:FF:11;&lt;br /&gt;
  fixed-address 192.168.1.20;&lt;br /&gt;
  option subnet-mask 255.255.255.0;&lt;br /&gt;
  option broadcast-address 192.168.1.255;&lt;br /&gt;
  option routers 192.168.1.1;&lt;br /&gt;
  option host-name &amp;quot;gaming_computer&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
host Linux_Workstation {&lt;br /&gt;
  hardware ethernet 00:53:00:FF:FF:22;&lt;br /&gt;
  fixed-address 192.168.2.21;&lt;br /&gt;
  option subnet-mask 255.255.255.0;&lt;br /&gt;
  option broadcast-address 192.168.2.255;&lt;br /&gt;
  option routers 192.168.2.1;&lt;br /&gt;
  option host-name &amp;quot;linux_workstation&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
host printer {&lt;br /&gt;
  hardware ethernet 00:53:00:FF:FF:33;&lt;br /&gt;
  fixed-address 192.168.3.9;&lt;br /&gt;
  option subnet-mask 255.255.255.0;&lt;br /&gt;
  option broadcast-address 192.168.3.255;&lt;br /&gt;
  option routers 192.168.3.1;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure to add this to the default run level once configured:&lt;br /&gt;
{{cmd|rc-update add dhcpd default}}&lt;br /&gt;
&lt;br /&gt;
= Synchronizing the clock =&lt;br /&gt;
&lt;br /&gt;
You can choose to use BusyBox&#039;s ntpd or you can choose a more fully fledged option like [http://www.openntpd.org OpenNTPD] or [https://chrony.tuxfamily.org Chrony]&lt;br /&gt;
&lt;br /&gt;
== Busybox /etc/conf.d/ntpd ==&lt;br /&gt;
Allow clients to synchronize their clocks with the router.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# By default ntpd runs as a client. Add -l to run as a server on port 123.&lt;br /&gt;
NTPD_OPTS=&amp;quot;-l -N -p &amp;lt;REMOTE TIME SERVER&amp;gt;&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure to add this to the default run level once configured:&lt;br /&gt;
{{cmd|rc-update add ntpd default}}&lt;br /&gt;
&lt;br /&gt;
Or if you prefer to synchronize with multiple servers...&lt;br /&gt;
&lt;br /&gt;
== Chrony /etc/chrony.conf ==&lt;br /&gt;
{{cmd|apk add chrony}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;logdir /var/log/chrony&lt;br /&gt;
log measurements statistics tracking&lt;br /&gt;
&lt;br /&gt;
allow 192.168.0.0/30&lt;br /&gt;
allow 192.168.1.0/24&lt;br /&gt;
allow 192.168.2.0/24&lt;br /&gt;
allow 192.168.3.0/24&lt;br /&gt;
allow 192.168.4.0/24&lt;br /&gt;
broadcast 30 192.168.0.3&lt;br /&gt;
broadcast 30 192.168.1.255&lt;br /&gt;
broadcast 30 192.168.2.255&lt;br /&gt;
broadcast 30 192.168.3.255&lt;br /&gt;
broadcast 30 192.168.4.255&lt;br /&gt;
&lt;br /&gt;
server 0.pool.ntp.org iburst&lt;br /&gt;
server 1.pool.ntp.org iburst&lt;br /&gt;
server 2.pool.ntp.org iburst&lt;br /&gt;
server 3.pool.ntp.org iburst&lt;br /&gt;
&lt;br /&gt;
initstepslew 10 pool.ntp.org&lt;br /&gt;
driftfile /var/lib/chrony/chrony.drift&lt;br /&gt;
hwclockfile /etc/adjtime&lt;br /&gt;
rtcdevice /dev/rtc0&lt;br /&gt;
rtcsync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OpenNTPD /etc/ntpd.conf ==&lt;br /&gt;
&lt;br /&gt;
Install OpenNTPD&lt;br /&gt;
{{cmd|apk add openntpd}}&lt;br /&gt;
&lt;br /&gt;
Add to default run level.&lt;br /&gt;
{{cmd|rc-update add openntpd default}}&lt;br /&gt;
&lt;br /&gt;
=== /etc/ntpd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;# sample ntpd configuration file, see ntpd.conf(5)&lt;br /&gt;
&lt;br /&gt;
# Addresses to listen on (ntpd does not listen by default)&lt;br /&gt;
listen on 192.168.1.1&lt;br /&gt;
listen on 192.168.2.1&lt;br /&gt;
&lt;br /&gt;
# sync to a single server&lt;br /&gt;
#server ntp.example.org&lt;br /&gt;
&lt;br /&gt;
# use a random selection of NTP Pool Time Servers&lt;br /&gt;
# see http://support.ntp.org/bin/view/Servers/NTPPoolServers&lt;br /&gt;
server 0.pool.ntp.org&lt;br /&gt;
server 1.pool.ntp.org&lt;br /&gt;
server 2.pool.ntp.org&lt;br /&gt;
server 3.pool.ntp.org&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== tlsdate ==&lt;br /&gt;
The time can also be extracted from a https handshake. If the certificate is self-signed you will need to use skip-verification:&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add tlsdate}}&lt;br /&gt;
{{cmd|tlsdate -V --skip-verification -p 80 -H example.com}}&lt;br /&gt;
&lt;br /&gt;
== timezone ==&lt;br /&gt;
You might also want to set a timezone, see [[Setting the timezone]].&lt;br /&gt;
&lt;br /&gt;
= Saving Time =&lt;br /&gt;
There are two ways to do this. If you didn&#039;t buy an RTC clock see [[Saving time with Software Clock]]. If you did like the PiFace Real Time Clock see [[Saving time with Hardware Clock]]&lt;br /&gt;
&lt;br /&gt;
= Unbound DNS forwarder with dnscrypt =&lt;br /&gt;
We want to be able to do our lookups using [https://dnscrypt.info/ dnscrypt] without installing DNSCrypt on every client on the network. DNSCrypt can use it&#039;s [https://dnscrypt.info/protocol own protocol] or [https://en.wikipedia.org/wiki/DNS_over_HTTPS DNS over HTTPS].&lt;br /&gt;
&lt;br /&gt;
The router will also run a DNS forwarder and request unknown domains over DNSCrypt for our clients. Borrowed from the ArchLinux wiki article on [https://wiki.archlinux.org/index.php/dnscrypt-proxy dnscrypt-proxy].&lt;br /&gt;
&lt;br /&gt;
== Unbound ==&lt;br /&gt;
First install {{cmd|apk add unbound}}&lt;br /&gt;
&lt;br /&gt;
=== /etc/unbound/unbound.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;server:&lt;br /&gt;
    # Use this to include other text into the file.&lt;br /&gt;
    include: &amp;quot;/etc/unbound/filter.conf&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # verbosity number, 0 is least verbose. 1 is default.&lt;br /&gt;
    verbosity: 1&lt;br /&gt;
&lt;br /&gt;
    # specify the interfaces to answer queries from by ip-address.&lt;br /&gt;
    # The default is to listen to localhost (127.0.0.1 and ::1).&lt;br /&gt;
    # specify 0.0.0.0 and ::0 to bind to all available interfaces.&lt;br /&gt;
    # specify every interface[@port] on a new &#039;interface:&#039; labelled line.&lt;br /&gt;
    # The listen interfaces are not changed on reload, only on restart.&lt;br /&gt;
    interface: 192.168.2.1&lt;br /&gt;
    interface: 192.168.3.1&lt;br /&gt;
&lt;br /&gt;
    # Enable IPv4, &amp;quot;yes&amp;quot; or &amp;quot;no&amp;quot;.&lt;br /&gt;
    do-ip4: yes&lt;br /&gt;
&lt;br /&gt;
    # Enable IPv6, &amp;quot;yes&amp;quot; or &amp;quot;no&amp;quot;.&lt;br /&gt;
    do-ip6: yes&lt;br /&gt;
&lt;br /&gt;
    # Enable UDP, &amp;quot;yes&amp;quot; or &amp;quot;no&amp;quot;.&lt;br /&gt;
    do-udp: yes&lt;br /&gt;
&lt;br /&gt;
    # Enable TCP, &amp;quot;yes&amp;quot; or &amp;quot;no&amp;quot;.&lt;br /&gt;
    do-tcp: yes&lt;br /&gt;
&lt;br /&gt;
    # control which clients are allowed to make (recursive) queries&lt;br /&gt;
    # to this server. Specify classless netblocks with /size and action.&lt;br /&gt;
    # By default everything is refused, except for localhost.&lt;br /&gt;
    # Choose deny (drop message), refuse (polite error reply),&lt;br /&gt;
    # allow (recursive ok), allow_setrd (recursive ok, rd bit is forced on),&lt;br /&gt;
    # allow_snoop (recursive and nonrecursive ok)&lt;br /&gt;
    # deny_non_local (drop queries unless can be answered from local-data)&lt;br /&gt;
    # refuse_non_local (like deny_non_local but polite error reply).&lt;br /&gt;
    # access-control: 0.0.0.0/0 refuse&lt;br /&gt;
    # access-control: 127.0.0.0/8 allow&lt;br /&gt;
    # access-control: ::0/0 refuse&lt;br /&gt;
    # access-control: ::1 allow&lt;br /&gt;
    # access-control: ::ffff:127.0.0.1 allow&lt;br /&gt;
    access-control: 192.168.1.0/24 allow&lt;br /&gt;
    access-control: 192.168.2.0/24 allow&lt;br /&gt;
    access-control: 192.168.3.0/24 allow&lt;br /&gt;
&lt;br /&gt;
    # the log file, &amp;quot;&amp;quot; means log to stderr.&lt;br /&gt;
    # Use of this option sets use-syslog to &amp;quot;no&amp;quot;.&lt;br /&gt;
    logfile: &amp;quot;/var/log/unbound/unbound.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # Log to syslog(3) if yes. The log facility LOG_DAEMON is used to&lt;br /&gt;
    # log to. If yes, it overrides the logfile.&lt;br /&gt;
    use-syslog: no&lt;br /&gt;
&lt;br /&gt;
    # print one line with time, IP, name, type, class for every query.&lt;br /&gt;
    # log-queries: no&lt;br /&gt;
&lt;br /&gt;
    # print one line per reply, with time, IP, name, type, class, rcode,&lt;br /&gt;
    # timetoresolve, fromcache and responsesize.&lt;br /&gt;
    # log-replies: no&lt;br /&gt;
&lt;br /&gt;
    # enable to not answer id.server and hostname.bind queries.&lt;br /&gt;
    hide-identity: yes&lt;br /&gt;
&lt;br /&gt;
    # enable to not answer version.server and version.bind queries.&lt;br /&gt;
    # hide-version: yes&lt;br /&gt;
&lt;br /&gt;
    # enable to not answer trustanchor.unbound queries.&lt;br /&gt;
    hide-trustanchor: yes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # Harden against very small EDNS buffer sizes.&lt;br /&gt;
    harden-short-bufsize: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden against unseemly large queries.&lt;br /&gt;
    harden-large-queries: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden against out of zone rrsets, to avoid spoofing attempts.&lt;br /&gt;
    harden-glue: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden against receiving dnssec-stripped data. If you turn it&lt;br /&gt;
    # off, failing to validate dnskey data for a trustanchor will&lt;br /&gt;
    # trigger insecure mode for that zone (like without a trustanchor).&lt;br /&gt;
    # Default on, which insists on dnssec data for trust-anchored zones.&lt;br /&gt;
    harden-dnssec-stripped: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden against queries that fall under dnssec-signed nxdomain names.&lt;br /&gt;
    harden-below-nxdomain: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden the referral path by performing additional queries for&lt;br /&gt;
    # infrastructure data.  Validates the replies (if possible).&lt;br /&gt;
    # Default off, because the lookups burden the server.  Experimental&lt;br /&gt;
    # implementation of draft-wijngaards-dnsext-resolver-side-mitigation.&lt;br /&gt;
    # harden-referral-path: no&lt;br /&gt;
&lt;br /&gt;
    # Harden against algorithm downgrade when multiple algorithms are&lt;br /&gt;
    # advertised in the DS record.  If no, allows the weakest algorithm&lt;br /&gt;
    # to validate the zone.&lt;br /&gt;
    harden-algo-downgrade: yes&lt;br /&gt;
&lt;br /&gt;
    # Use 0x20-encoded random bits in the query to foil spoof attempts.&lt;br /&gt;
    # This feature is an experimental implementation of draft dns-0x20.&lt;br /&gt;
    use-caps-for-id: yes&lt;br /&gt;
&lt;br /&gt;
    # Allow the domain (and its subdomains) to contain private addresses.&lt;br /&gt;
    # local-data statements are allowed to contain private addresses too.&lt;br /&gt;
    private-domain: &amp;quot;&amp;lt;HOSTNAME&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # if yes, the above default do-not-query-address entries are present.&lt;br /&gt;
    # if no, localhost can be queried (for testing and debugging).&lt;br /&gt;
    do-not-query-localhost: no&lt;br /&gt;
&lt;br /&gt;
    # File with trusted keys, kept uptodate using RFC5011 probes,&lt;br /&gt;
    # initial file like trust-anchor-file, then it stores metadata.&lt;br /&gt;
    # Use several entries, one per domain name, to track multiple zones.&lt;br /&gt;
    #&lt;br /&gt;
    # If you want to perform DNSSEC validation, run unbound-anchor before&lt;br /&gt;
    # you start unbound (i.e. in the system boot scripts).  And enable:&lt;br /&gt;
    # Please note usage of unbound-anchor root anchor is at your own risk&lt;br /&gt;
    # and under the terms of our LICENSE (see that file in the source).&lt;br /&gt;
    # auto-trust-anchor-file: &amp;quot;@UNBOUND_ROOTKEY_FILE@&amp;quot;&lt;br /&gt;
    auto-trust-anchor-file: &amp;quot;/etc/unbound/root.key&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # If unbound is running service for the local host then it is useful&lt;br /&gt;
    # to perform lan-wide lookups to the upstream, and unblock the&lt;br /&gt;
    # long list of local-zones above.  If this unbound is a dns server&lt;br /&gt;
    # for a network of computers, disabled is better and stops information&lt;br /&gt;
    # leakage of local lan information.&lt;br /&gt;
    unblock-lan-zones: no&lt;br /&gt;
&lt;br /&gt;
    # If you configure local-data without specifying local-zone, by&lt;br /&gt;
    # default a transparent local-zone is created for the data.&lt;br /&gt;
    #&lt;br /&gt;
    # You can add locally served data with&lt;br /&gt;
    # local-zone: &amp;quot;local.&amp;quot; static&lt;br /&gt;
    # local-data: &amp;quot;mycomputer.local. IN A 192.0.2.51&amp;quot;&lt;br /&gt;
    # local-data: &#039;mytext.local TXT &amp;quot;content of text record&amp;quot;&#039;&lt;br /&gt;
&lt;br /&gt;
    # request upstream over TLS (with plain DNS inside the TLS stream).&lt;br /&gt;
    # Default is no.  Can be turned on and off with unbound-control.&lt;br /&gt;
    # tls-upstream: no&lt;br /&gt;
&lt;br /&gt;
    # Forward zones&lt;br /&gt;
    # Create entries like below, to make all queries for &#039;example.com&#039; and&lt;br /&gt;
    # &#039;example.org&#039; go to the given list of servers. These servers have to handle&lt;br /&gt;
    # recursion to other nameservers. List zero or more nameservers by hostname&lt;br /&gt;
    # or by ipaddress. Use an entry with name &amp;quot;.&amp;quot; to forward all queries.&lt;br /&gt;
    # If you enable forward-first, it attempts without the forward if it fails.&lt;br /&gt;
    # forward-zone:&lt;br /&gt;
    #    name: &amp;quot;example.com&amp;quot;&lt;br /&gt;
    #    forward-addr: 192.0.2.68&lt;br /&gt;
    #    forward-addr: 192.0.2.73@5355  # forward to port 5355.&lt;br /&gt;
    #    forward-first: no&lt;br /&gt;
    #    forward-tls-upstream: no&lt;br /&gt;
    #    forward-no-cache: no&lt;br /&gt;
    # forward-zone:&lt;br /&gt;
    #    name: &amp;quot;example.org&amp;quot;&lt;br /&gt;
    #    forward-host: fwd.example.com&lt;br /&gt;
&lt;br /&gt;
forward-zone:&lt;br /&gt;
    name: &amp;quot;.&amp;quot;&lt;br /&gt;
    forward-addr: 172.16.32.1@53&lt;br /&gt;
    forward-addr: ::1@53000&lt;br /&gt;
    forward-addr: 127.0.0.1@53000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Blocking Microsoft Telemetry on the network by domain ==&lt;br /&gt;
Microsoft has added telemetry analytics to Windows which you may want to block at a network level. More information about that can be found [https://www.privacytools.io/operating-systems/#win10 here].&lt;br /&gt;
&lt;br /&gt;
This script takes in a list of domains and produces a filter file. We are directing all lookups to &amp;quot;0.0.0.1&amp;quot; which is an invalid IP and should fail immediately, unlike localhost. There are lists of the addresses in various places such as the tools people use to do this locally on Windows, ie [https://github.com/Nummer/Destroy-Windows-10-Spying/blob/master/DWS/DWSResources.cs#L210 Destroy-Windows-10-Spying], [https://github.com/10se1ucgo/DisableWinTracking/blob/master/dwt.py#L333 DisableWinTracking], [https://github.com/W4RH4WK/Debloat-Windows-10/blob/master/scripts/block-telemetry.ps1#L19 Debloat-Windows-10] and [https://github.com/pragmatrix/Dominator/blob/master/Dominator.Windows10/Settings/telemetry.txt Dominator.Windows10]. I have prepared the list further down: [[Linux Router with VPN on a Raspberry Pi#/etc/unbound/filter.conf]].&lt;br /&gt;
&lt;br /&gt;
You could also use this to block advertising, but that&#039;s probably easier to do in a web browser with something like [https://en.wikipedia.org/wiki/uBlock_Origin uBlock Origin].&lt;br /&gt;
&lt;br /&gt;
Another way is to disable this stuff with a group policy see [https://docs.microsoft.com/en-us/windows/privacy/manage-connections-from-windows-operating-system-components-to-microsoft-services Manage connections from Windows operating system components to Microsoft services] only for Windows 10 Enterprise, version 1607 and newer and Windows Server 2016.&lt;br /&gt;
&lt;br /&gt;
=== /etc/unbound/unbound.conf ===&lt;br /&gt;
In your main unbound configuration add&lt;br /&gt;
&amp;lt;pre&amp;gt;include: /etc/unbound/filter.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Script to prepare/sort domains for Unbound  ===&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
##################################################&lt;br /&gt;
# Script taken from http://npr.me.uk/unbound.html&lt;br /&gt;
# Note you need GNU sed&lt;br /&gt;
##################################################&lt;br /&gt;
&lt;br /&gt;
# Remove &amp;quot;#&amp;quot; comments&lt;br /&gt;
# Remove space and tab&lt;br /&gt;
# Remove blank lines&lt;br /&gt;
# Remove localhost and broadcasthost lines&lt;br /&gt;
# Keep just the hosts&lt;br /&gt;
# Remove leading and trailing space and tab (again)&lt;br /&gt;
# Make everything lower case&lt;br /&gt;
&lt;br /&gt;
sed -e &amp;quot;s/#.*//&amp;quot; \&lt;br /&gt;
    -e &amp;quot;s/[ \x09]*$//&amp;quot;\&lt;br /&gt;
    -e &amp;quot;/^$/ d&amp;quot; \&lt;br /&gt;
    -e &amp;quot;/^.*local.*/ d&amp;quot; \&lt;br /&gt;
    -e &amp;quot;/^.*broadcasthost.*/ d&amp;quot; \&lt;br /&gt;
    -e &amp;quot;s/\(^.*\) \([a-zA-Z0-9\.\-]*\)/\2/&amp;quot; \&lt;br /&gt;
    -e &amp;quot;s/^[ \x09]*//;s/[ \x09]*$//&amp;quot; $1 \&lt;br /&gt;
    -e &amp;quot;s/\(.*\)/\L\1/&amp;quot; hosts.txt &amp;gt; temp1.txt&lt;br /&gt;
&lt;br /&gt;
# Remove any duplicate hosts&lt;br /&gt;
&lt;br /&gt;
sort temp1.txt | uniq &amp;gt;temp2.txt&lt;br /&gt;
&lt;br /&gt;
# Remove any hosts starting with &amp;quot;.&amp;quot;&lt;br /&gt;
# Create the two required lines for each host.&lt;br /&gt;
&lt;br /&gt;
sed -e &amp;quot;/^\..*/ d&amp;quot; \&lt;br /&gt;
    -e &amp;quot;s/\(^.*\)/local-zone: \x22\1\x22 redirect\nlocal-data: \x22\1 A 0.0.0.1\x22/&amp;quot; \&lt;br /&gt;
       temp2.txt &amp;gt; filter.conf&lt;br /&gt;
&lt;br /&gt;
# Clean up&lt;br /&gt;
rm temp1.txt&lt;br /&gt;
rm temp2.txt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/unbound/filter.conf ==&lt;br /&gt;
&amp;lt;pre&amp;gt;local-zone: &amp;quot;a-0001.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0001.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0001.dc-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0001.dc-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0002.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0002.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0003.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0003.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0004.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0004.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0005.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0005.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0006.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0006.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0007.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0007.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0008.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0008.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0009.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0009.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0010.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0010.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0011.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0011.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0012.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0012.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a.ads1.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a.ads1.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a.ads2.msads.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a.ads2.msads.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a.ads2.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a.ads2.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ac3.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ac3.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;activity.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;activity.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;adnexus.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;adnexus.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;adnxs.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;adnxs.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ads1.msads.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ads1.msads.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ads1.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ads1.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ads.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ads.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;aidps.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;aidps.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;aka-cdn-ns.adtech.de&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;aka-cdn-ns.adtech.de A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a.rad.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a.rad.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array101-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array101-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array102-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array102-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array103-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array103-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array104-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array104-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array201-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array201-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array202-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array202-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array203-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array203-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array204-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array204-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array401-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array401-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array402-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array402-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array403-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array403-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array404-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array404-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array405-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array405-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array406-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array406-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array407-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array407-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array408-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array408-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ars.smartscreen.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ars.smartscreen.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;az361816.vo.msecnd.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;az361816.vo.msecnd.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;az512334.vo.msecnd.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;az512334.vo.msecnd.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;b.ads1.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;b.ads1.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;b.ads2.msads.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;b.ads2.msads.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bingads.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bingads.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bl3301-a.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bl3301-a.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bl3301-c.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bl3301-c.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bl3301-g.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bl3301-g.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;blob.weather.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;blob.weather.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn1304-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn1304-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn1306-a.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn1306-a.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn1306-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn1306-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn1306-g.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn1306-g.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn2b-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn2b-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn2b-cor002.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn2b-cor002.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn2b-cor003.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn2b-cor003.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn2b-cor004.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn2b-cor004.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn2wns1.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn2wns1.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn3p-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn3p-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn3sch020022328.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn3sch020022328.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;b.rad.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;b.rad.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bs.serving-sys.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bs.serving-sys.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;by3301-a.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;by3301-a.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;by3301-c.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;by3301-c.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;by3301-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;by3301-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;c-0001.dc-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;c-0001.dc-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cache.datamart.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cache.datamart.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;candycrushsoda.king.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;candycrushsoda.king.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;c.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;c.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ca.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ca.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cdn.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cdn.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cdn.content.prod.cms.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cdn.content.prod.cms.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cdn.onenote.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cdn.onenote.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds1204.lon.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds1204.lon.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds1293.lon.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds1293.lon.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds20417.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds20417.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds20431.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds20431.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds20450.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds20450.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds20457.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds20457.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds20475.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds20475.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds21244.lon.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds21244.lon.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds26.ams9.msecn.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds26.ams9.msecn.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds425.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds425.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds459.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds459.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds494.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds494.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds965.lon.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds965.lon.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch1-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch1-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch1-cor002.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch1-cor002.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch3301-c.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch3301-c.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch3301-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch3301-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch3301-g.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch3301-g.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch3302-c.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch3302-c.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch3302-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch3302-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;choice.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;choice.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;choice.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;choice.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;clientconfig.passport.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;clientconfig.passport.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;client-s.gateway.messenger.live.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;client-s.gateway.messenger.live.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;client.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;client.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;c.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;c.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;compatexchange1.trafficmanager.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;compatexchange1.trafficmanager.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;compatexchange.cloudapp.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;compatexchange.cloudapp.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;continuum.dds.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;continuum.dds.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;corpext.msitadfs.glbdns2.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;corpext.msitadfs.glbdns2.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;corp.sts.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;corp.sts.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cp101-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cp101-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cp201-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cp201-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cp401-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cp401-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cs1.wpc.v0cdn.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cs1.wpc.v0cdn.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db3aqu.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db3aqu.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db3wns2011111.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db3wns2011111.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100122.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100122.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100127.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100127.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100831.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100831.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100835.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100835.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100917.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100917.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100925.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100925.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100928.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100928.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100938.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100938.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101001.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101001.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101022.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101022.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101024.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101024.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101031.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101031.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101034.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101034.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101042.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101042.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101044.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101044.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101122.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101122.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101123.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101123.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101125.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101125.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101128.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101128.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101129.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101129.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101133.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101133.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101145.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101145.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101209.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101209.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101221.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101221.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101228.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101228.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101231.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101231.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101237.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101237.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101317.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101317.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101324.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101324.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101329.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101329.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101333.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101333.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101334.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101334.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101338.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101338.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101419.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101419.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101424.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101424.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101426.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101426.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101427.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101427.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101430.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101430.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101445.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101445.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101511.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101511.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101519.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101519.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101529.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101529.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101535.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101535.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101541.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101541.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101543.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101543.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101608.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101608.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101618.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101618.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101629.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101629.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101631.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101631.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101633.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101633.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101640.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101640.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101711.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101711.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101722.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101722.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101739.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101739.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101745.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101745.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101813.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101813.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101820.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101820.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101826.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101826.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101835.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101835.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101837.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101837.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101844.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101844.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101907.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101907.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101914.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101914.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101929.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101929.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101939.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101939.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101941.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101941.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102015.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102015.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102017.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102017.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102019.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102019.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102023.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102023.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102025.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102025.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102032.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102032.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102033.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102033.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110108.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110108.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110109.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110109.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110114.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110114.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110135.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110135.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110142.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110142.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110204.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110204.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110206.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110206.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110214.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110214.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110225.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110225.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110232.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110232.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110245.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110245.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110315.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110315.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110323.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110323.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110325.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110325.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110328.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110328.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110331.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110331.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110341.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110341.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110343.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110343.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110345.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110345.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110403.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110403.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110419.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110419.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110438.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110438.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110442.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110442.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110501.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110501.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110527.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110527.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110533.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110533.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110618.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110618.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110622.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110622.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110624.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110624.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110626.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110626.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110634.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110634.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110705.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110705.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110724.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110724.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110740.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110740.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110810.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110810.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110816.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110816.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110821.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110821.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110822.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110822.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110825.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110825.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110828.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110828.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110835.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110835.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110919.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110919.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110921.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110921.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110923.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110923.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110929.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110929.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103081814.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103081814.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082011.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082011.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082111.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082111.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082308.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082308.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082406.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082406.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082409.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082409.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082609.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082609.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082611.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082611.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082709.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082709.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082712.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082712.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082806.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082806.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090115.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090115.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090415.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090415.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090513.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090513.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090515.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090515.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090608.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090608.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090806.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090806.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090814.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090814.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090906.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090906.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091011.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091011.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091012.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091012.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091106.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091106.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091108.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091108.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091212.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091212.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091311.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091311.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091414.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091414.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091511.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091511.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091617.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091617.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091715.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091715.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091817.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091817.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091908.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091908.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091911.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091911.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092010.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092010.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092108.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092108.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092109.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092109.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092209.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092209.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092210.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092210.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092509.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092509.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100117.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100117.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100121.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100121.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100221.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100221.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100313.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100313.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100314.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100314.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100510.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100510.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100511.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100511.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100611.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100611.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100712.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100712.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101105.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101105.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101208.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101208.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101212.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101212.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101314.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101314.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101411.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101411.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101413.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101413.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101513.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101513.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101610.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101610.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101611.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101611.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101705.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101705.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101711.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101711.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101909.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101909.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101914.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101914.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102009.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102009.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102112.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102112.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102203.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102203.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102209.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102209.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102310.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102310.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102404.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102404.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102609.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102609.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102610.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102610.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102805.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102805.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5wns1d.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5wns1d.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090104.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090104.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090112.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090112.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090116.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090116.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090122.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090122.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090203.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090203.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090206.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090206.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090208.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090208.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090209.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090209.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090211.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090211.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090305.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090305.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090306.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090306.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090308.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090308.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090311.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090311.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090313.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090313.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090410.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090410.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090412.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090412.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090504.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090504.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090510.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090510.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090512.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090512.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090513.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090513.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090514.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090514.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090519.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090519.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090613.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090613.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090619.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090619.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090810.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090810.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090811.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090811.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090902.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090902.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090905.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090905.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090907.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090907.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090908.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090908.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090910.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090910.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090911.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090911.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091003.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091003.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091007.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091007.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091008.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091008.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091009.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091009.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091011.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091011.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091103.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091103.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091105.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091105.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091204.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091204.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091209.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091209.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091305.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091305.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091307.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091307.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091308.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091308.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091309.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091309.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091314.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091314.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091412.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091412.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091503.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091503.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091507.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091507.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091602.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091602.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091603.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091603.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091606.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091606.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091607.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091607.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;deploy.static.akamaitechnologies.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;deploy.static.akamaitechnologies.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;device.auth.xboxlive.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;device.auth.xboxlive.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;dev.virtualearth.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;dev.virtualearth.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;df.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;df.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;diagnostics.support.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;diagnostics.support.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;disc101-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;disc101-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;disc201-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;disc201-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;disc401-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;disc401-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;dmd.metaservices.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;dmd.metaservices.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;dns.msftncsi.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;dns.msftncsi.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ec.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ec.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ecn.dev.virtualearth.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ecn.dev.virtualearth.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;eu.vortex.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;eu.vortex.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;feedback.microsoft-hohm.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;feedback.microsoft-hohm.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;feedback.search.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;feedback.search.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;feedback.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;feedback.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;flex.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;flex.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;fs.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;fs.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;geo-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;geo-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;geover-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;geover-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;g.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;g.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;h1.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;h1.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;h2.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;h2.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i1.services.social.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i1.services.social.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i1.services.social.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i1.services.social.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-bl6p-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-bl6p-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-by3p-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-by3p-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-by3p-cor002.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-by3p-cor002.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-ch1-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-ch1-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-ch1-cor002.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-ch1-cor002.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;img-s-msn-com.akamaized.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;img-s-msn-com.akamaized.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;inference.location.live.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;inference.location.live.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;insiderppe.cloudapp.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;insiderppe.cloudapp.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-sn2-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-sn2-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-sn2-cor002.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-sn2-cor002.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;kv101-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;kv101-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;kv201-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;kv201-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;kv401-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;kv401-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;lb1.www.ms.akadns.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;lb1.www.ms.akadns.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;licensing.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;licensing.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;live.rads.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;live.rads.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ls2web.redmond.corp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ls2web.redmond.corp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;m.adnxs.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;m.adnxs.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;mediaredirect.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;mediaredirect.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;mobile.pipe.aria.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;mobile.pipe.aria.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;msftncsi.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;msftncsi.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;msntest.serving-sys.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;msntest.serving-sys.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;oca.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;oca.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;oca.telemetry.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;oca.telemetry.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;officeclient.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;officeclient.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;oneclient.sfx.ms&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;oneclient.sfx.ms A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;pre.footprintpredict.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;pre.footprintpredict.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;preview.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;preview.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;pti.store.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;pti.store.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;query.prod.cms.rt.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;query.prod.cms.rt.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;rad.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;rad.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;redir.metaservices.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;redir.metaservices.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;register.cdpcs.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;register.cdpcs.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;reports.wes.df.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;reports.wes.df.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;s0.2mdn.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;s0.2mdn.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;schemas.microsoft.akadns.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;schemas.microsoft.akadns.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;search.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;search.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;secure.adnxs.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;secure.adnxs.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;secure.flashtalking.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;secure.flashtalking.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;services.wes.df.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;services.wes.df.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings.data.glbdns2.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings.data.glbdns2.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings-sandbox.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings-sandbox.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings-ssl.xboxlive.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings-ssl.xboxlive.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings-win.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings-win.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings-win-ppe.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings-win-ppe.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sn3301-c.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sn3301-c.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sn3301-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sn3301-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sn3301-g.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sn3301-g.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;so.2mdn.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;so.2mdn.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;spynet2.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;spynet2.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;spynetalt.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;spynetalt.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;spyneteurope.microsoft.akadns.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;spyneteurope.microsoft.akadns.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sqm.df.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sqm.df.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sqm.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sqm.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sqm.telemetry.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sqm.telemetry.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;static.2mdn.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;static.2mdn.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;storecatalogrevocation.storequality.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;storecatalogrevocation.storequality.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;storeedgefd.dsx.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;storeedgefd.dsx.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;store-images.s-microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;store-images.s-microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;support.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;support.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;survey.watson.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;survey.watson.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;t0.ssl.ak.dynamic.tiles.virtualearth.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;t0.ssl.ak.dynamic.tiles.virtualearth.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;t0.ssl.ak.tiles.virtualearth.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;t0.ssl.ak.tiles.virtualearth.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;telecommand.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;telecommand.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;telecommand.telemetry.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;telecommand.telemetry.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;telemetry.appex.bing.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;telemetry.appex.bing.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;telemetry.urs.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;telemetry.urs.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;test.activity.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;test.activity.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;tile-service.weather.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;tile-service.weather.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;time.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;time.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;tk2.plt.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;tk2.plt.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;tsfe.trafficshaping.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;tsfe.trafficshaping.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;urs.smartscreen.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;urs.smartscreen.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;v10.vortex-win.data.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;v10.vortex-win.data.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;v10.vortex-win.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;v10.vortex-win.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;version.hybrid.api.here.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;version.hybrid.api.here.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;view.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;view.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-bn2.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-bn2.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-cy2.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-cy2.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex.data.glbdns2.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex.data.glbdns2.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex.data.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex.data.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-db5.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-db5.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-hk2.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-hk2.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-sandbox.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-sandbox.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-win.data.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-win.data.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-win.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-win.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;watson.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;watson.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;watson.ppe.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;watson.ppe.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;watson.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;watson.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;watson.telemetry.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;watson.telemetry.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;wdcpalt.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;wdcpalt.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;wdcp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;wdcp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;web.vortex.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;web.vortex.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;wes.df.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;wes.df.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;win10.ipv6.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;win10.ipv6.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;win10-trt.msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;win10-trt.msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;win1710.ipv6.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;win1710.ipv6.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;wscont.apps.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;wscont.apps.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;www.msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;www.msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;www.msftconnecttest.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;www.msftconnecttest.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;www.msftncsi.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;www.msftncsi.com A 0.0.0.1&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DNSCrypt ==&lt;br /&gt;
Configuring DNSCrypt to send it&#039;s lookups through the VPN and not directly out your ppp interface is done using a socks proxy.&lt;br /&gt;
&lt;br /&gt;
You can test that you&#039;re not getting DNS leaks by using [https://www.dnsleaktest.com dnsleak.com] or this one from [https://www.grc.com/dns/dns.htm GRC]. Providers like CloudFlare and Google (1.1.1.1, 8.8.8.8) use [https://en.wikipedia.org/wiki/Anycast anycast] which should be pointing to a server located to where your VPN exits.&lt;br /&gt;
&lt;br /&gt;
=== /etc/dnscrypt-proxy/dnscrypt-proxy.toml ===&lt;br /&gt;
Using the sample dnscrypt config is fine, you will need to make these changes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;listen_addresses = [&#039;127.0.0.1:53000&#039;, &#039;[::1]:53000&#039;]&lt;br /&gt;
proxy = &amp;quot;socks5://127.0.0.1:1080&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Dante ==&lt;br /&gt;
First install dante, you&#039;ll need to pin the testing repository. See: [[Alpine Linux package management#Repository pinning]].&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add dante-server@testing}}&lt;br /&gt;
&lt;br /&gt;
Configure it like so:&lt;br /&gt;
&lt;br /&gt;
=== /etc/sockd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;logoutput: stderr&lt;br /&gt;
internal: 127.0.0.1 port = 1080&lt;br /&gt;
external: tun0&lt;br /&gt;
clientmethod: none&lt;br /&gt;
socksmethod: none&lt;br /&gt;
user.unprivileged: sockd&lt;br /&gt;
&lt;br /&gt;
# Allow connections from localhost to any host&lt;br /&gt;
client pass {&lt;br /&gt;
        from: 127.0.0.1/8 to: 0.0.0.0/0&lt;br /&gt;
	log: error # connect/disconnect&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Generic pass statement - bind/outgoing traffic&lt;br /&gt;
socks pass {&lt;br /&gt;
        from: 0.0.0.0/0 to: 0.0.0.0/0&lt;br /&gt;
        command: bind connect udpassociate&lt;br /&gt;
        log: error # connect disconnect iooperation&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Generic pass statement for incoming connections/packets&lt;br /&gt;
socks pass {&lt;br /&gt;
        from: 0.0.0.0/0 to: 0.0.0.0/0&lt;br /&gt;
        command: bindreply udpreply&lt;br /&gt;
        log: error # connect disconnect iooperation&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally the services to the the default run level:&lt;br /&gt;
{{cmd|rc-update add sockd default}}&lt;br /&gt;
{{cmd|rc-update add unbound default}}&lt;br /&gt;
{{cmd|rc-update add dnscrypt-proxy default}}&lt;br /&gt;
&lt;br /&gt;
= Random number generation =&lt;br /&gt;
There are two ways to assist with random number generation [[Entropy and randomness]]. This can be particularly useful if you&#039;re generating your own Diffie-Hellman nonce file, used in the [[FreeRadius EAP-TLS configuration]] section. Or for that matter any process which requires lots of random number generation such as generating certificates or public private keys.&lt;br /&gt;
&lt;br /&gt;
== Haveged ==&lt;br /&gt;
[http://www.issihosts.com/haveged Haveged] is a great way to improve random number generation speed. It uses the unpredictable random number generator based upon an adaptation of the [http://www.irisa.fr/caps/projects/hipsor/ HAVEGE] algorithm.&lt;br /&gt;
&lt;br /&gt;
Install haveged:&lt;br /&gt;
{{cmd|apk add haveged}}&lt;br /&gt;
&lt;br /&gt;
Start haveged service:&lt;br /&gt;
{{cmd|service haveged start}}&lt;br /&gt;
&lt;br /&gt;
Add service to boot&lt;br /&gt;
{{cmd|rc-update add haveged default}}&lt;br /&gt;
&lt;br /&gt;
Start rngd service:&lt;br /&gt;
{{cmd|service haveged start}}&lt;br /&gt;
&lt;br /&gt;
Add service to boot:&lt;br /&gt;
{{cmd|rc-update add haveged default}}&lt;br /&gt;
&lt;br /&gt;
== rng-tools with bcm2708-rng ==&lt;br /&gt;
&lt;br /&gt;
=== Pre Alpine Linux 3.8 (which includes rngd 5) ===&lt;br /&gt;
All Raspberry Pis come with the bcm2708-rng random number generator on board. If you are doing this project on a Raspberry Pi then you may choose to use this also.&lt;br /&gt;
&lt;br /&gt;
Add the kernel module to /etc/modules:&lt;br /&gt;
{{cmd|echo &amp;quot;bcm2708-rng&amp;quot; &amp;gt; /etc/modules}}&lt;br /&gt;
&lt;br /&gt;
Insert module:&lt;br /&gt;
{{cmd|modprobe bcm2708-rng}}&lt;br /&gt;
&lt;br /&gt;
Install rng-tools:&lt;br /&gt;
{{cmd|apk add rng-tools}}&lt;br /&gt;
&lt;br /&gt;
Set the random device (/dev/random) and rng device (/dev/hwrng) in /etc/conf.d/rngd&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;RNGD_OPTS=&amp;quot;--no-drng=1 --no-tpm=1 -o /dev/random -r /dev/hwrng&amp;quot;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== Post Alpine Linux 3.8 (which includes rngd 6) ===&lt;br /&gt;
&lt;br /&gt;
With AlpineLinux 3.8 you don&#039;t have to insert the module as it is already built in the kernel.&lt;br /&gt;
&lt;br /&gt;
Additionally the syntax has changed for rngd so for /etc/conf.d/rngd you&#039;ll need&lt;br /&gt;
&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;RNGD_OPTS=&amp;quot;-x1 -o /dev/random -r /dev/hwrng&amp;quot;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Start rngd service:&lt;br /&gt;
{{cmd|service rngd start}}&lt;br /&gt;
&lt;br /&gt;
Add service to boot:&lt;br /&gt;
{{cmd|rc-update add rngd default}}&lt;br /&gt;
&lt;br /&gt;
You can test it with:&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;cat /dev/hwrng | rngtest -c 1000&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
You should see something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rngtest 5&lt;br /&gt;
Copyright (c) 2004 by Henrique de Moraes Holschuh&lt;br /&gt;
This is free software; see the source for copying conditions.  There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&lt;br /&gt;
&lt;br /&gt;
rngtest: starting FIPS tests...&lt;br /&gt;
rngtest: bits received from input: 20000032&lt;br /&gt;
rngtest: FIPS 140-2 successes: 1000&lt;br /&gt;
rngtest: FIPS 140-2 failures: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Monobit: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Poker: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Runs: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Long run: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Continuous run: 0&lt;br /&gt;
rngtest: input channel speed: (min=117.709; avg=808.831; max=3255208.333)Kibits/s&lt;br /&gt;
rngtest: FIPS tests speed: (min=17.199; avg=22.207; max=22.653)Mibits/s&lt;br /&gt;
rngtest: Program run time: 25178079 microseconds&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s possible you might have a some failures. That&#039;s okay, two runs I did previously had a failure each.&lt;br /&gt;
&lt;br /&gt;
= WiFi 802.1x EAP and FreeRadius =&lt;br /&gt;
A more secure way than using pre-shared keys (WPA2) is to use [https://en.wikipedia.org/wiki/Extensible_Authentication_Protocol#EAP-TLS EAP-TLS] and use separate certificates for each device. See [[FreeRadius EAP-TLS configuration]]&lt;br /&gt;
&lt;br /&gt;
= VPN Tunnel on specific subnet =&lt;br /&gt;
As mentioned earlier in this article it might be useful to have a VPN subnet and a non-VPN subnet. Typically gaming consoles or computers might want low-latency connections. For this exercise we use fwmark.&lt;br /&gt;
&lt;br /&gt;
We expand the network to look like this:&lt;br /&gt;
&lt;br /&gt;
[[File:Network diagram ipv4 tunnel.svg|900px|center|Network Diagram with IPv4 tunnel]]&lt;br /&gt;
&lt;br /&gt;
Install the necessary packages:&lt;br /&gt;
{{cmd|apk add openvpn iproute2 iputils}}&lt;br /&gt;
&lt;br /&gt;
== /etc/modules ==&lt;br /&gt;
You&#039;ll want to add the tun module&lt;br /&gt;
&amp;lt;pre&amp;gt;tun&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/iproute2/rt_tables ==&lt;br /&gt;
Add the two routing tables to the bottom of rt_tables. It should look something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;#&lt;br /&gt;
# reserved values&lt;br /&gt;
#&lt;br /&gt;
255	local&lt;br /&gt;
254	main&lt;br /&gt;
253	default&lt;br /&gt;
0	unspec&lt;br /&gt;
#&lt;br /&gt;
# local&lt;br /&gt;
#&lt;br /&gt;
#1	inr.ruhep&lt;br /&gt;
1 ISP&lt;br /&gt;
2 VPN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/interfaces ==&lt;br /&gt;
Next up add the virtual interface (really just a IP address to eth0) eth0:2, just under eth0 will do.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Route to VPN subnet&lt;br /&gt;
auto eth0:2&lt;br /&gt;
iface eth0:2 inet static&lt;br /&gt;
  address 192.168.2.1&lt;br /&gt;
  netmask 255.255.255.0&lt;br /&gt;
  broadcast 192.168.2.255&lt;br /&gt;
  post-up /etc/network/fwmark_rules&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/sysctl.d/local.conf ==&lt;br /&gt;
If you want to use fwmark rules you need to change this setting. It causes the router to still do source validation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Needed to use fwmark&lt;br /&gt;
net.ipv4.conf.all.rp_filter = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fwmark won&#039;t work if you have this set to 1.&lt;br /&gt;
&lt;br /&gt;
== /etc/network/fwmark_rules ==&lt;br /&gt;
In this file we want to put the fwmark rules and set the correct priorities.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Normal packets to go direct out WAN&lt;br /&gt;
/sbin/ip rule add fwmark 1 table ISP prio 100&lt;br /&gt;
&lt;br /&gt;
# Put packets destined into VPN when VPN is up&lt;br /&gt;
/sbin/ip rule add fwmark 2 table VPN prio 200&lt;br /&gt;
&lt;br /&gt;
# Prevent packets from being routed out when VPN is down.&lt;br /&gt;
# This prevents packets from falling back to the main table&lt;br /&gt;
# that has a priority of 32766&lt;br /&gt;
/sbin/ip rule add prohibit fwmark 2 prio 300&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/ppp/ip-up ==&lt;br /&gt;
Next up we want to create the routes that should be run when PPP comes online. There are special hooks we can use in ip-up and ip-down to refer to the IP address, [https://ppp.samba.org/pppd.html#sect13 ppp man file - Scripts ] You can also read about them in your man file if you have ppp-doc installed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by pppd when there&#039;s a successful ppp connection.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Flush out any old rules that might be there&lt;br /&gt;
/sbin/ip route flush table ISP&lt;br /&gt;
&lt;br /&gt;
# Add route to table from subnets on LAN&lt;br /&gt;
/sbin/ip route add 192.168.1.0/24 dev eth0 table ISP&lt;br /&gt;
/sbin/ip route add 192.168.2.0/24 dev eth0 table ISP&lt;br /&gt;
&lt;br /&gt;
# Add route from IP given by ISP to the table&lt;br /&gt;
/sbin/ip rule add from ${IPREMOTE} table ISP prio 100&lt;br /&gt;
&lt;br /&gt;
# Add a default route&lt;br /&gt;
/sbin/ip route add table ISP default via ${IPREMOTE} dev ${IFNAME}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/ppp/ip-down ==&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by pppd after the connection has ended.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Delete the rules when we take the interface down&lt;br /&gt;
/sbin/ip rule del from ${IPREMOTE} table ISP prio 100&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/openvpn/route-up-fwmark.sh ==&lt;br /&gt;
OpenVPN needs similar routing scripts and it also has it&#039;s own special hooks that allow you to specify particular values. A full list is here [https://openvpn.net/index.php/open-source/documentation/manuals/65-openvpn-20x-manpage.html#lbAS OpenVPN man file - Environmental Variables]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by OpenVPN when there&#039;s a successful VPN connection.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Flush out any old rules that might be there&lt;br /&gt;
/sbin/ip route flush table VPN&lt;br /&gt;
&lt;br /&gt;
# Add route to table from 192.168.2.0/24 subnet on LAN&lt;br /&gt;
/sbin/ip route add 192.168.2.0/24 dev eth0 table VPN&lt;br /&gt;
&lt;br /&gt;
# Add route from VPN interface IP to the VPN table&lt;br /&gt;
/sbin/ip rule add from ${ifconfig_local} table VPN prio 200&lt;br /&gt;
&lt;br /&gt;
# Add a default route&lt;br /&gt;
/sbin/ip route add default via ${ifconfig_local} dev ${dev} table VPN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/openvpn/route-pre-down-fwmark.sh ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by OpenVPN after the connection has ended&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Delete the rules when we take the interface down&lt;br /&gt;
/sbin/ip rule del from ${ifconfig_local} table VPN prio 200&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What I did find was when starting and stopping the OpenVPN service if you used:&lt;br /&gt;
&lt;br /&gt;
{{cmd|service openvpn stop}}&lt;br /&gt;
&lt;br /&gt;
The rules in route-pre-down-fwmark.sh were not executed.&lt;br /&gt;
&lt;br /&gt;
However:&lt;br /&gt;
&lt;br /&gt;
{{cmd|/etc/init.d/openvpn stop}}&lt;br /&gt;
&lt;br /&gt;
seemed to work correctly.&lt;br /&gt;
&lt;br /&gt;
== Advanced IPtables rules that allow us to route into our two routing tables ==&lt;br /&gt;
This is an expansion of the previous set of rules. It sets up NAT masquerading for the 192.168.2.0 to go through the VPN using marked packets.&lt;br /&gt;
&lt;br /&gt;
I used these guides to write complete this: &lt;br /&gt;
&lt;br /&gt;
* [http://nerdboys.com/2006/05/05/conning-the-mark-multiwan-connections-using-iptables-mark-connmark-and-iproute2 Conning the Mark: Multiwan connections using IPTables, MARK, CONNMARK and iproute2 ]&lt;br /&gt;
* [http://nerdboys.com/2006/05/08/multiwan-connections-addendum Multiwan connections addendum]&lt;br /&gt;
* [http://inai.de/images/nf-packet-flow.png Netfilter packet flow]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#########################################################################&lt;br /&gt;
# Advanced routing rule set&lt;br /&gt;
# Uses 192.168.1.0 via ISP&lt;br /&gt;
#      192.168.2.0 via VPN&lt;br /&gt;
#&lt;br /&gt;
# Packets to/from 192.168.1.0/24 are marked with 0x1 and routed to ISP&lt;br /&gt;
# Packets to/from 192.168.2.0/24 are marked with 0x2 and routed to VPN&lt;br /&gt;
#&lt;br /&gt;
#########################################################################&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# NAT Table&lt;br /&gt;
# This is where translation of packets happens and &amp;quot;forwarding&amp;quot; of ports&lt;br /&gt;
# to specific hosts.&lt;br /&gt;
#&lt;br /&gt;
*nat&lt;br /&gt;
&lt;br /&gt;
# Set default policies for table&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Port forwarding for Bittorrent&lt;br /&gt;
-A PREROUTING -i tun0 -p tcp -m tcp --dport 6881:6889 -j DNAT --to-destination 192.168.2.20&lt;br /&gt;
-A PREROUTING -i tun0 -p udp -m udp --dport 6881:6889 -j DNAT --to-destination 192.168.2.20&lt;br /&gt;
&lt;br /&gt;
# Allows routing to our modem subnet so we can access the web interface&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
-A POSTROUTING -s 192.168.2.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the VPN tunnel&lt;br /&gt;
-A POSTROUTING -o tun0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the PPP tunnel&lt;br /&gt;
-A POSTROUTING -o ppp0 -j MASQUERADE&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Filter Table&lt;br /&gt;
# This is where we decide to ACCEPT, DROP or REJECT things&lt;br /&gt;
#&lt;br /&gt;
*filter&lt;br /&gt;
:INPUT DROP [0:0]&lt;br /&gt;
:FORWARD DROP [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for forwarding packets&lt;br /&gt;
:FWD_ETH0 - [0:0]&lt;br /&gt;
:FWD_ETH1 - [0:0]&lt;br /&gt;
:FWD_PPP0 - [0:0]&lt;br /&gt;
:FWD_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for input packets (for host itself)&lt;br /&gt;
:IN_ETH0 - [0:0]&lt;br /&gt;
:IN_ETH1 - [0:0]&lt;br /&gt;
:IN_PPP0 - [0:0]&lt;br /&gt;
:IN_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a log drop chain&lt;br /&gt;
:LOG_DROP - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a reject chain&lt;br /&gt;
:LOG_REJECT - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Pass input packet to corresponding rule chain&lt;br /&gt;
-A INPUT -i lo -j ACCEPT&lt;br /&gt;
-A INPUT -i eth0 -j IN_ETH0&lt;br /&gt;
-A INPUT -i eth1 -j IN_ETH1&lt;br /&gt;
-A INPUT -i ppp0 -j IN_PPP0&lt;br /&gt;
-A INPUT -i tun0 -j IN_TUN0&lt;br /&gt;
&lt;br /&gt;
# Track forwarded packets&lt;br /&gt;
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass forwarded packet to corresponding rule chain&lt;br /&gt;
-A FORWARD -i eth0 -j FWD_ETH0&lt;br /&gt;
-A FORWARD -i eth1 -j FWD_ETH1&lt;br /&gt;
-A FORWARD -i ppp0 -j FWD_PPP0&lt;br /&gt;
-A FORWARD -i tun0 -j FWD_TUN0&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to ISP&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to VPN&lt;br /&gt;
-A FWD_ETH0 -s 192.168.2.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow excepted server to be FORWARD to ppp0&lt;br /&gt;
#-A FWD_ETH0 -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -o ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward SSH packets from network to modem&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.1.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.2.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward HTTP packets from network to modem&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.1.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.2.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward Bittorrent Port to workstation&lt;br /&gt;
-A FWD_TUN0 -d 192.168.2.20/32 -p tcp -m tcp --dport 6881:6889 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_TUN0 -d 192.168.2.20/32 -p udp -m udp --dport 6881:6889 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# DNS to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# FreeRadius Client (eg a UniFi AP)&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Ubiquiti UAP Device Discovery Broadcast&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 10001 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# NTP to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept traffic to router on both subnets&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow excepted server to be INPUT to eth0 from LAN&lt;br /&gt;
#-A IN_ETH0 -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -o ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# HTTP To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked PPP0 connection&lt;br /&gt;
-A IN_PPP0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on PPP0&lt;br /&gt;
-A IN_PPP0 -j LOG --log-prefix &amp;quot;DROP:INPUT &amp;quot; --log-level 6&lt;br /&gt;
-A IN_PPP0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked TUN0 connection&lt;br /&gt;
-A IN_TUN0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on TUN0&lt;br /&gt;
-A IN_TUN0 -j LOG --log-prefix &amp;quot;DROP:INPUT &amp;quot; --log-level 6&lt;br /&gt;
-A IN_TUN0 -j LOG_DROP&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mangle Table&lt;br /&gt;
# This is the place where our markings happen, whether they be 0x1 or 0x2&lt;br /&gt;
#&lt;br /&gt;
*mangle&lt;br /&gt;
&lt;br /&gt;
# Set default policies for table&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:FORWARD ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Restore CONNMARK to the MARK (If one doesn&#039;t exist then no mark is set)&lt;br /&gt;
-A PREROUTING -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff&lt;br /&gt;
&lt;br /&gt;
# If packet MARK is 2, then it means there is already a connection mark and the&lt;br /&gt;
# original packet came in on VPN&lt;br /&gt;
-A PREROUTING -s 192.168.2.0/24 -m mark --mark 0x2 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Check exception (this is a server which when accessed on a 192.168.2.0/24 address will go out the ISP table) are 0x1&lt;br /&gt;
#-A PREROUTING -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -m mark --mark 0x1 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Mark packets coming from 192.168.2.0/24 are 0x2&lt;br /&gt;
-A PREROUTING -s 192.168.2.0/24 -j MARK --set-xmark 0x2/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# If packet MARK is 1, then it means there is already a connection mark and the&lt;br /&gt;
# original packet came in on ISP&lt;br /&gt;
-A PREROUTING -s 192.168.1.0/24 -m mark --mark 0x1 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Mark packets 192.168.1.0/24 are 0x1&lt;br /&gt;
-A PREROUTING -s 192.168.1.0/24 -j MARK --set-xmark 0x1/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Mark exception (this is a server which when accessed on a 192.168.2.0/24 address will go out the ISP table) as 0x1&lt;br /&gt;
#-A PREROUTING -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -j MARK --set-xmark 0x1/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Set mark to 0 - This is for the modem. Otherwise it will mark with 0x1 or 0x2&lt;br /&gt;
-A PREROUTING -d 192.168.0.1/32 -j MARK --set-xmark 0x0/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Save MARK to CONNMARK (remember iproute can&#039;t see CONNMARKs)&lt;br /&gt;
-A PREROUTING -j CONNMARK --save-mark --nfmask 0xffffffff --ctmask 0xffffffff&lt;br /&gt;
COMMIT&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may want to delete certain rules here that do not apply to you, eg the FreeRadius rules. That is covered later in this article.&lt;br /&gt;
&lt;br /&gt;
== OpenVPN Routing ==&lt;br /&gt;
Usually when you connect with OpenVPN the remote VPN server will push routes down to your system. We don&#039;t want this as we still want to be able to access the internet without the VPN. We have also created our own routes that we want to use earlier in this guide.&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need to add this to the bottom of your OpenVPN configuration file:&lt;br /&gt;
&amp;lt;pre&amp;gt;# Prevents default gateway from being set on the default routing table&lt;br /&gt;
route-noexec&lt;br /&gt;
&lt;br /&gt;
# Allows route-up script to be executed&lt;br /&gt;
script-security 2&lt;br /&gt;
&lt;br /&gt;
# Calls custom shell script after connection to add necessary routes&lt;br /&gt;
route-up /etc/openvpn/route-up-fwmark.sh&lt;br /&gt;
route-pre-down /etc/openvpn/route-pre-down-fwmark.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
My VPNs are arranged like this in /etc/openvpn:&lt;br /&gt;
&lt;br /&gt;
OpenVPN configuration file for that server:&lt;br /&gt;
&amp;lt;pre&amp;gt;countrycode.serverNumber.openvpn.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenVPN certs for that server:&lt;br /&gt;
&amp;lt;pre&amp;gt;countrycode.serverNumber.openvpn/countrycode.serverNumber.openvpn.crt&lt;br /&gt;
countrycode.serverNumber.openvpn/countrycode.serverNumber.openvpn.key&lt;br /&gt;
countrycode.serverNumber.openvpn/myKey.crt&lt;br /&gt;
countrycode.serverNumber.openvpn/myKey.key&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So I use this helpful script to automate the process of changing between servers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
vpn_server_filename=$1&lt;br /&gt;
&lt;br /&gt;
rm /etc/openvpn/openvpn.conf&lt;br /&gt;
ln -s $vpn_server_filename /etc/openvpn/openvpn.conf&lt;br /&gt;
chown -R openvpn:openvpn /etc/openvpn&lt;br /&gt;
chmod -R a=-rwx,u=+rX /etc/openvpn&lt;br /&gt;
chmod u=x /etc/openvpn/*.sh*&lt;br /&gt;
&lt;br /&gt;
if grep -Fxq &amp;quot;#CustomStuffHere&amp;quot; openvpn.conf&lt;br /&gt;
then&lt;br /&gt;
    echo &amp;quot;Not adding custom routes, this server has been used previously&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Adding custom route rules&amp;quot;&lt;br /&gt;
cat &amp;lt;&amp;lt;EOF &amp;gt;&amp;gt; /etc/openvpn/openvpn.conf&lt;br /&gt;
&lt;br /&gt;
#CustomStuffHere&lt;br /&gt;
# Prevents default gateway from being set on the default routing table&lt;br /&gt;
route-noexec&lt;br /&gt;
&lt;br /&gt;
# Allows route-up script to be executed&lt;br /&gt;
script-security 2&lt;br /&gt;
&lt;br /&gt;
# Calls custom shell script after connection to add necessary routes&lt;br /&gt;
route-up /etc/openvpn/route-up-fwmark.sh&lt;br /&gt;
route-pre-down /etc/openvpn/route-pre-down-fwmark.sh&lt;br /&gt;
&lt;br /&gt;
# Logging of OpenVPN to file&lt;br /&gt;
#log /etc/openvpn/openvpn.log&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
fi&lt;br /&gt;
echo &amp;quot;Remember to set BitTorrent port forward in VPN control panel&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That way I can simply change between servers by running:&lt;br /&gt;
{{cmd|changevpn.sh countrycode.serverNumber.openvpn}}&lt;br /&gt;
&lt;br /&gt;
and then restart openvpn. I am also reminded to put the port forward through on the VPN control panel so my BitTorrent client is connectable:&lt;br /&gt;
&lt;br /&gt;
{{cmd|service openvpn restart}}&lt;br /&gt;
&lt;br /&gt;
Finally add openvpn to the default run level&lt;br /&gt;
{{cmd|rc-update add openvpn default}}&lt;br /&gt;
&lt;br /&gt;
= Creating a LAN only Subnet =&lt;br /&gt;
In this section, we&#039;ll be creating a LAN only subnet. This subnet will be 192.168.3.0/24. The idea of this subnet is nodes in it cannot have their packets forwarded to the Internet, however they can be accessed via the other LAN subnets 192.168.1.0/24 and 192.168.2.0/24. This approach doesn&#039;t use VLANs although that would be recommended if you had a managed switch. The idea of this subnet is for things like WiFi access points, IP Phones which contact a local Asterisk server and of course printers.&lt;br /&gt;
&lt;br /&gt;
At the end of this section we will have something like:&lt;br /&gt;
&lt;br /&gt;
[[File:Network diagram ipv4 tunnel LANONLY ROUTE.svg|900px|center|Network Diagram LAN ONLY Route with IPv4]]&lt;br /&gt;
&lt;br /&gt;
== /etc/iproute2/rt_tables ==&lt;br /&gt;
First up we&#039;ll add a third routing table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;3 LAN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/interfaces ==&lt;br /&gt;
Add a an extra virtual interface (really just a IP address to eth0).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# LAN Only&lt;br /&gt;
auto eth0:3&lt;br /&gt;
iface eth0:3 inet static&lt;br /&gt;
  address 192.168.3.1&lt;br /&gt;
  netmask 255.255.255.0&lt;br /&gt;
  broadcast 192.168.3.255&lt;br /&gt;
  post-up /etc/network/route_LAN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/route_LAN ==&lt;br /&gt;
This file will have our route added to it&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Add routes from ISP to LAN&lt;br /&gt;
/sbin/ip route add 192.168.1.0/24 dev eth0 table LAN&lt;br /&gt;
&lt;br /&gt;
# Add route from VPN to LAN&lt;br /&gt;
/sbin/ip route add 192.168.2.0/24 dev eth0 table LAN&lt;br /&gt;
&lt;br /&gt;
# Add route from LAN to it&#039;s own table&lt;br /&gt;
/sbin/ip route add 192.168.3.0/24 dev eth0 table LAN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/ppp/ip-up ==&lt;br /&gt;
Append a route from the LAN subnet to the ISP table&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Add route to LAN subnet&lt;br /&gt;
/sbin/ip route add 192.168.3.0/24 dev eth0 table ISP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/openvpn/route-up-fwmark.sh ==&lt;br /&gt;
Append a route from the LAN subnet to the VPN table&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Add route to LAN only subnet&lt;br /&gt;
/sbin/ip route add 192.168.3.0/24 dev eth0 table VPN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/ntpd.conf ==&lt;br /&gt;
Add a listen address for ntp (OpenNTPD).&lt;br /&gt;
&lt;br /&gt;
You should now have:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Addresses to listen on (ntpd does not listen by default)&lt;br /&gt;
listen on 192.168.1.1&lt;br /&gt;
listen on 192.168.2.1&lt;br /&gt;
listen on 192.168.3.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Devices needing the correct time will need to use this NTP server because they will not be able to get it from the Internet.&lt;br /&gt;
&lt;br /&gt;
== Blocking bogons ==&lt;br /&gt;
Our LAN now has 4 subnets in total that are possible:&lt;br /&gt;
&lt;br /&gt;
* 192.168.0.0/30 (connection between modem and router)&lt;br /&gt;
* 192.168.1.0/24 (ISP table, directly routed out WAN)&lt;br /&gt;
* 192.168.2.0/24 (VPN table, routed out VPN)&lt;br /&gt;
* 192.168.3.0/24 (Null routed subnet for LAN only hosts)&lt;br /&gt;
* 172.16.32.0/20 (VPN provider&#039;s network, so we can access things on the VPN&#039;s network).&lt;br /&gt;
&lt;br /&gt;
Everything else should be rejected. No packets should ever be forwarded on 192.168.5.2 or 10.0.0.5 for example.&lt;br /&gt;
&lt;br /&gt;
=== Installing ipset ===&lt;br /&gt;
Install ipset:&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add ipset}}&lt;br /&gt;
&lt;br /&gt;
Add it to start up:&lt;br /&gt;
{{cmd|rc-update add ipset default}}&lt;br /&gt;
&lt;br /&gt;
Now we need to load the lists of addresses into ipset [http://blog.ls20.com/securing-your-server-using-ipset-and-dynamic-blocklists Securing Your Server using IPset and Dynamic Blocklists] mentions a [https://gist.github.com/hwdsl2/6dce75072274abfd2781 script] which was particularly useful. This script could be run on a cron job if you wanted to regularly update it and for the full bogon list you should as they change when that address space has been allocated.&lt;br /&gt;
&lt;br /&gt;
For the purpose of this we will be using just the [https://files.pfsense.org/lists/bogon-bn-nonagg.txt bogon-bn-nonagg.txt] list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;0.0.0.0/8&lt;br /&gt;
10.0.0.0/8&lt;br /&gt;
100.64.0.0/10&lt;br /&gt;
127.0.0.0/8&lt;br /&gt;
169.254.0.0/16&lt;br /&gt;
172.16.0.0/12&lt;br /&gt;
192.0.0.0/24&lt;br /&gt;
192.0.2.0/24&lt;br /&gt;
192.168.0.0/16&lt;br /&gt;
198.18.0.0/15&lt;br /&gt;
198.51.100.0/24&lt;br /&gt;
203.0.113.0/24&lt;br /&gt;
224.0.0.0/4&lt;br /&gt;
240.0.0.0/4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is unlikely to change as it&#039;s the IPV4 [https://en.wikipedia.org/wiki/Reserved_IP_addresses Reserved IP addresses] space. The script: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#! /bin/bash&lt;br /&gt;
&lt;br /&gt;
# /usr/local/sbin/fullbogons-ipv4&lt;br /&gt;
# BoneKracker&lt;br /&gt;
# Rev. 11 October 2012&lt;br /&gt;
# Tested with ipset 6.13&lt;br /&gt;
&lt;br /&gt;
# Purpose: Periodically update an ipset used in a running firewall to block&lt;br /&gt;
# bogons. Bogons are addresses that nobody should be using on the public&lt;br /&gt;
# Internet because they are either private, not to be assigned, or have&lt;br /&gt;
# not yet been assigned.&lt;br /&gt;
#&lt;br /&gt;
# Notes: Call this from crontab. Feed updated every 4 hours.&lt;br /&gt;
&lt;br /&gt;
# target=&amp;quot;http://www.team-cymru.org/Services/Bogons/fullbogons-ipv4.txt&amp;quot;&lt;br /&gt;
# Use alternative URL from pfSense, due to 404 error with URL above&lt;br /&gt;
target=&amp;quot;https://files.pfsense.org/lists/bogon-bn-nonagg.txt&amp;quot;&lt;br /&gt;
ipset_params=&amp;quot;hash:net&amp;quot;&lt;br /&gt;
&lt;br /&gt;
filename=$(basename ${target})&lt;br /&gt;
firewall_ipset=${filename%.*}           # ipset will be filename minus ext&lt;br /&gt;
data_dir=&amp;quot;/var/tmp/${firewall_ipset}&amp;quot;   # data directory will be same&lt;br /&gt;
data_file=&amp;quot;${data_dir}/${filename}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# if data directory does not exist, create it&lt;br /&gt;
mkdir -pm 0750 ${data_dir}&lt;br /&gt;
&lt;br /&gt;
# function to get modification time of the file in log-friendly format&lt;br /&gt;
get_timestamp() {&lt;br /&gt;
    date -r $1 +%m/%d&#039; &#039;%R&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# file modification time on server is preserved during wget download&lt;br /&gt;
[ -w ${data_file} ] &amp;amp;&amp;amp; old_timestamp=$(get_timestamp ${data_file})&lt;br /&gt;
&lt;br /&gt;
# fetch file only if newer than the version we already have&lt;br /&gt;
wget -qNP ${data_dir} ${target}&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$?&amp;quot; -ne &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
    logger -p cron.err &amp;quot;IPSet: ${firewall_ipset} wget failed.&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
timestamp=$(get_timestamp ${data_file})&lt;br /&gt;
&lt;br /&gt;
# compare timestamps because wget returns success even if no newer file&lt;br /&gt;
if [ &amp;quot;${timestamp}&amp;quot; != &amp;quot;${old_timestamp}&amp;quot; ]; then&lt;br /&gt;
&lt;br /&gt;
    temp_ipset=&amp;quot;${firewall_ipset}_temp&amp;quot;&lt;br /&gt;
    ipset create ${temp_ipset} ${ipset_params}&lt;br /&gt;
&lt;br /&gt;
    #sed -i &#039;/^#/d&#039; ${data_file}            # strip comments&lt;br /&gt;
    sed -ri &#039;/^[#&amp;lt; \t]|^$/d&#039; ${data_file}   # occasionally the file has been xhtml&lt;br /&gt;
&lt;br /&gt;
    while read network; do&lt;br /&gt;
        ipset add ${temp_ipset} ${network}&lt;br /&gt;
    done &amp;lt; ${data_file}&lt;br /&gt;
&lt;br /&gt;
    # if ipset does not exist, create it&lt;br /&gt;
    ipset create -exist ${firewall_ipset} ${ipset_params}&lt;br /&gt;
&lt;br /&gt;
    # swap the temp ipset for the live one&lt;br /&gt;
    ipset swap ${temp_ipset} ${firewall_ipset}&lt;br /&gt;
    ipset destroy ${temp_ipset}&lt;br /&gt;
&lt;br /&gt;
    # log the file modification time for use in minimizing lag in cron schedule&lt;br /&gt;
    logger -p cron.notice &amp;quot;IPSet: ${firewall_ipset} updated (as of: ${timestamp}).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
fi&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you should see the list loaded into memory when you do:&lt;br /&gt;
&lt;br /&gt;
{{cmd|ipset list}}&lt;br /&gt;
&lt;br /&gt;
We want to save it so our router can refer to it next time it starts up so for that:&lt;br /&gt;
&lt;br /&gt;
{{cmd|/etc/init.d/ipset save}}&lt;br /&gt;
&lt;br /&gt;
=== Adding our allowed networks ===&lt;br /&gt;
&lt;br /&gt;
==== IPv4 ====&lt;br /&gt;
{{cmd|ipset create allowed-nets-ipv4 hash:net,iface family inet}}&lt;br /&gt;
&lt;br /&gt;
Then you can add each of your allowed networks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ipset add allowed-nets-ipv4 192.168.0.0/30,eth1&lt;br /&gt;
ipset add allowed-nets-ipv4 192.168.1.0/24,eth0&lt;br /&gt;
ipset add allowed-nets-ipv4 192.168.2.0/24,eth0&lt;br /&gt;
ipset add allowed-nets-ipv4 192.168.3.0/24,eth0&lt;br /&gt;
ipset add allowed-nets-ipv4 127.0.0.0/8,lo&lt;br /&gt;
ipset add allowed-nets-ipv4 172.16.32.0/20,tun0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IPv6 ====&lt;br /&gt;
For IPv6 if you&#039;ve got any [https://en.wikipedia.org/wiki/Unique_local_address Unique local address] ranges you may choose to add them:&lt;br /&gt;
&lt;br /&gt;
{{cmd|ipset create allowed-nets-ipv6 hash:net,iface family inet6}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ipset add allowed-nets-ipv6 fde4:8dba:82e1::/48,tun0&lt;br /&gt;
ipset add allowed-nets-ipv6 fde4:8dba:82e1:ffff::/64,eth0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finally save the sets with this command so they can be loaded next boot:&lt;br /&gt;
&lt;br /&gt;
{{cmd|/etc/init.d/ipset save}}&lt;br /&gt;
&lt;br /&gt;
== Restricting our LAN subnet with iptables, and blocking the bogons ==&lt;br /&gt;
Finally we can apply our iptables rules, to filter both 192.168.3.0/24 and make sure that subnets like 192.168.5.0/24 are not forwarded or accessible by our router. You will need to review these rules, and remove the ones that do not apply to you.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to change your RADIUS rules if you moved your WiFi APs into the 192.168.3.0/24 subnet. You&#039;ll also need to edit /etc/raddb/clients.conf&lt;br /&gt;
&lt;br /&gt;
I used a new table here called &amp;quot;raw&amp;quot;. This table is more primitive than the filter table. It cannot have FORWARD rules or INPUT rules. Therefore you will still need a FORWARD rule in your filter table to block bogons originating from your LAN.&lt;br /&gt;
&lt;br /&gt;
The only kind of rules we may use here are PREROUTING and OUTPUT. The OUTPUT rules will only filter traffic originating from our router&#039;s local processes, such as if we ran the ping command to a bogon range on the router&#039;s command prompt.&lt;br /&gt;
&lt;br /&gt;
Traffic passes over the raw table, before connecting marking as indicated by this packet flow map: [http://inai.de/images/nf-packet-flow.png Netfilter packet flow graph] this means we don&#039;t have to strip the mark off the bogon range in the mangle table anymore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#########################################################################&lt;br /&gt;
# Advanced routing rule set&lt;br /&gt;
# Uses 192.168.1.0 via ISP&lt;br /&gt;
#      192.168.2.0 via VPN&lt;br /&gt;
#      192.168.3.0 via LAN&lt;br /&gt;
#&lt;br /&gt;
# Packets to/from 192.168.1.0/24 are marked with 0x1 and routed to ISP&lt;br /&gt;
# Packets to/from 192.168.2.0/24 are marked with 0x2 and routed to VPN&lt;br /&gt;
# Packets to/from 192.168.3.0/24 are routed to LAN and not forwarded onto&lt;br /&gt;
#                                    the internet&lt;br /&gt;
#&lt;br /&gt;
#########################################################################&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Raw Table&lt;br /&gt;
# This table is the place where we drop all illegal packets from networks that&lt;br /&gt;
# do not exist&lt;br /&gt;
#&lt;br /&gt;
*raw&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a log drop chain&lt;br /&gt;
:LOG_DROP_BOGON - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create an output chain&lt;br /&gt;
:OUT_PPP0 - [0:0]&lt;br /&gt;
:OUT_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Allows traffic from VPN tunnel&lt;br /&gt;
-A PREROUTING -s 172.16.32.0/20 -i tun0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allows traffic to VPN tunnel&lt;br /&gt;
-A PREROUTING -d 172.16.32.0/20 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Block specified bogons coming in from ISP and VPN&lt;br /&gt;
# (unlikely to happen as they filter them on their router)&lt;br /&gt;
-A PREROUTING -i ppp0 -m set --match-set bogon-bn-nonagg src -j LOG_DROP_BOGON&lt;br /&gt;
-A PREROUTING -i tun0 -m set --match-set bogon-bn-nonagg src -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Allows my excepted ranges.&lt;br /&gt;
-A PREROUTING -m set --match-set allowed-nets-ipv4 src,src -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass output interface to corresponding chain&lt;br /&gt;
-A OUTPUT -o ppp0 -j OUT_PPP0&lt;br /&gt;
-A OUTPUT -o tun0 -j OUT_TUN0&lt;br /&gt;
&lt;br /&gt;
# Log drop chain&lt;br /&gt;
-A LOG_DROP_BOGON -j LOG --log-prefix &amp;quot;Dropped Bogon (ipv4) : &amp;quot; --log-level 6&lt;br /&gt;
-A LOG_DROP_BOGON -j DROP&lt;br /&gt;
&lt;br /&gt;
# Block packets originating from the router destined to bogon ranges&lt;br /&gt;
-A OUT_PPP0 -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Blocks packets originating from the router destined to bogon ranges&lt;br /&gt;
-A OUT_TUN0 -d 172.16.32.0/20 -j ACCEPT&lt;br /&gt;
-A OUT_TUN0 -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# NAT Table&lt;br /&gt;
# This is where translation of packets happens and &amp;quot;forwarding&amp;quot; of ports&lt;br /&gt;
# to specific hosts.&lt;br /&gt;
#&lt;br /&gt;
*nat&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Port forwarding for Bittorrent&lt;br /&gt;
-A PREROUTING -i tun0 -p tcp -m tcp --dport 6881:6889 -j DNAT --to-destination 192.168.2.20&lt;br /&gt;
-A PREROUTING -i tun0 -p udp -m udp --dport 6881:6889 -j DNAT --to-destination 192.168.2.20&lt;br /&gt;
&lt;br /&gt;
# Allows routing to our modem subnet so we can access the web interface&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
-A POSTROUTING -s 192.168.2.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the VPN tunnel&lt;br /&gt;
-A POSTROUTING -o tun0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the PPP tunnel&lt;br /&gt;
-A POSTROUTING -o ppp0 -j MASQUERADE&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Filter Table&lt;br /&gt;
# This is where we decide to ACCEPT, DROP or REJECT things&lt;br /&gt;
#&lt;br /&gt;
*filter&lt;br /&gt;
:INPUT DROP [0:0]&lt;br /&gt;
:FORWARD DROP [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for forwarding packets&lt;br /&gt;
:FWD_ETH0 - [0:0]&lt;br /&gt;
:FWD_ETH1 - [0:0]&lt;br /&gt;
:FWD_PPP0 - [0:0]&lt;br /&gt;
:FWD_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for input packets (for host itself)&lt;br /&gt;
:IN_ETH0 - [0:0]&lt;br /&gt;
:IN_ETH1 - [0:0]&lt;br /&gt;
:IN_PPP0 - [0:0]&lt;br /&gt;
:IN_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a drop chain&lt;br /&gt;
:LOG_DROP - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a log drop chain&lt;br /&gt;
:LOG_DROP_BOGON - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a reject chain&lt;br /&gt;
:LOG_REJECT_LANONLY - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create an output chain&lt;br /&gt;
:OUT_PPP0 - [0:0]&lt;br /&gt;
:OUT_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Pass input packet to corresponding rule chain&lt;br /&gt;
-A INPUT -i lo -j ACCEPT&lt;br /&gt;
-A INPUT -i eth0 -j IN_ETH0&lt;br /&gt;
-A INPUT -i eth1 -j IN_ETH1&lt;br /&gt;
-A INPUT -i ppp0 -j IN_PPP0&lt;br /&gt;
-A INPUT -i tun0 -j IN_TUN0&lt;br /&gt;
&lt;br /&gt;
# Track forwarded packets&lt;br /&gt;
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass forwarded packet to corresponding rule chain&lt;br /&gt;
-A FORWARD -i eth0 -j FWD_ETH0&lt;br /&gt;
-A FORWARD -i eth1 -j FWD_ETH1&lt;br /&gt;
-A FORWARD -i ppp0 -j FWD_PPP0&lt;br /&gt;
-A FORWARD -i tun0 -j FWD_TUN0&lt;br /&gt;
&lt;br /&gt;
# Pass output interface to corresponding chain&lt;br /&gt;
-A OUTPUT -o ppp0 -j OUT_PPP0&lt;br /&gt;
-A OUTPUT -o tun0 -j OUT_TUN0&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to Modem&lt;br /&gt;
-A FWD_ETH0 -d 192.168.0.1/32 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow routing to remote address on VPN&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -d 172.16.32.1/32 -o tun0 -j ACCEPT&lt;br /&gt;
-A FWD_ETH0 -s 192.168.2.0/24 -d 172.16.32.1/32 -o tun0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow forwarding from LAN hosts to LAN ONLY subnet&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -d 192.168.3.0/24 -j ACCEPT&lt;br /&gt;
-A FWD_ETH0 -s 192.168.2.0/24 -d 192.168.3.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow LAN ONLY subnet to contact other LAN hosts&lt;br /&gt;
-A FWD_ETH0 -s 192.168.3.0/24 -d 192.168.1.0/24 -j ACCEPT&lt;br /&gt;
-A FWD_ETH0 -s 192.168.3.0/24 -d 192.168.2.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Refuse to forward bogons to the internet!&lt;br /&gt;
-A FWD_ETH0 -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to ISP&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to VPN&lt;br /&gt;
-A FWD_ETH0 -s 192.168.2.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Prevent 192.168.3.0/24 from accessing internet&lt;br /&gt;
-A FWD_ETH0 -s 192.168.3.0/24 -j LOG_REJECT_LANONLY&lt;br /&gt;
&lt;br /&gt;
# Allow excepted server to be FORWARD to ppp0&lt;br /&gt;
#-A FWD_ETH0 -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -o ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward SSH packets from network to modem&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.1.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.2.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward HTTP packets from network to mode&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.1.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.2.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward Bittorrent Port to workstation&lt;br /&gt;
-A FWD_TUN0 -d 192.168.2.20/32 -p tcp -m tcp --dport 6881:6889 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_TUN0 -d 192.168.2.20/32 -p udp -m udp --dport 6881:6889 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# DNS to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# FreeRadius Client (eg a UniFi AP)&lt;br /&gt;
-A IN_ETH0 -s 192.168.3.10/32 -p tcp -m tcp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.3.10/32 -p udp -m udp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Ubiquiti UAP Device Discovery Broadcast&lt;br /&gt;
-A IN_ETH0 -s 192.168.3.10/32 -p udp -m udp --dport 10001 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# NTP to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.3.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept traffic to router on both subnets&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow excepted server to be INPUT to eth0 from LAN&lt;br /&gt;
#-A IN_ETH0 -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -o ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# HTTP To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked PPP0 connection&lt;br /&gt;
-A IN_PPP0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on PPP0&lt;br /&gt;
-A IN_PPP0 -j LOG --log-prefix &amp;quot;DROP:INPUT (ipv4) &amp;quot; --log-level 6&lt;br /&gt;
-A IN_PPP0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked TUN0 connection&lt;br /&gt;
-A IN_TUN0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on TUN0&lt;br /&gt;
-A IN_TUN0 -j LOG --log-prefix &amp;quot;DROP:INPUT (ipv4) &amp;quot; --log-level 6&lt;br /&gt;
-A IN_TUN0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Log dropped bogons that never got forwarded&lt;br /&gt;
-A LOG_DROP_BOGON -j LOG --log-prefix &amp;quot;Dropped Bogon forward (ipv4) &amp;quot; --log-level 6&lt;br /&gt;
-A LOG_DROP_BOGON -j DROP&lt;br /&gt;
&lt;br /&gt;
# Log rejected packets&lt;br /&gt;
-A LOG_REJECT_LANONLY -j LOG --log-prefix &amp;quot;Rejected packet from LAN only range : &amp;quot; --log-level 6&lt;br /&gt;
-A LOG_REJECT_LANONLY -j REJECT --reject-with icmp-port-unreachable&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mangle Table&lt;br /&gt;
# This is the place where our markings happen, whether they be 0x1 or 0x2&lt;br /&gt;
#&lt;br /&gt;
*mangle&lt;br /&gt;
&lt;br /&gt;
# Set default policies for table&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:FORWARD ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Restore CONNMARK to the MARK (If one doesn&#039;t exist then no mark is set)&lt;br /&gt;
-A PREROUTING -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff&lt;br /&gt;
&lt;br /&gt;
# If packet MARK is 2, then it means there is already a connection mark and the&lt;br /&gt;
# original packet came in on VPN&lt;br /&gt;
-A PREROUTING -s 192.168.2.0/24 -m mark --mark 0x2 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Check exception (this is a server which when accessed on a 192.168.2.0/24 address will go out the ISP table) are 0x1&lt;br /&gt;
#-A PREROUTING -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -m mark --mark 0x1 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Mark packets coming from 192.168.2.0/24 are 0x2&lt;br /&gt;
-A PREROUTING -s 192.168.2.0/24 -j MARK --set-xmark 0x2/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# If packet MARK is 1, then it means there is already a connection mark and the&lt;br /&gt;
# original packet came in on ISP&lt;br /&gt;
-A PREROUTING -s 192.168.1.0/24 -m mark --mark 0x1 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Mark packets 192.168.1.0/24 are 0x1&lt;br /&gt;
-A PREROUTING -s 192.168.1.0/24 -j MARK --set-xmark 0x1/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Mark exception (this is a server which when accessed on a 192.168.2.0/24 address will go out the ISP table) as 0x1&lt;br /&gt;
#-A PREROUTING -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -j MARK --set-xmark 0x1/0xffffff&lt;br /&gt;
&lt;br /&gt;
# Strip mark if packet is destined for modem&lt;br /&gt;
-A PREROUTING -d 192.168.0.1/32 -j MARK --set-xmark 0x0/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Save MARK to CONNMARK (remember iproute can&#039;t see CONNMARKs)&lt;br /&gt;
-A PREROUTING -j CONNMARK --save-mark --nfmask 0xffffffff --ctmask 0xffffffff&lt;br /&gt;
COMMIT&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Other Tips =&lt;br /&gt;
&lt;br /&gt;
== Diagnosing firewall problems ==&lt;br /&gt;
&lt;br /&gt;
=== netcat, netcat6 ===&lt;br /&gt;
Netcat can be useful for testing if a port is open or closed or filtered.&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add netcat-openbsd}}&lt;br /&gt;
&lt;br /&gt;
After installing netcat we can use it like this:&lt;br /&gt;
&lt;br /&gt;
Say we wanted to test for IPv6, UDP, Port 547 we would do this on the router:&lt;br /&gt;
&lt;br /&gt;
{{cmd|nc -6 -u -l 547}}&lt;br /&gt;
&lt;br /&gt;
and then this on the client to connect to it:&lt;br /&gt;
&lt;br /&gt;
{{cmd|nc -u -v -6 2001:0db8:1234:0001::1 547}}&lt;br /&gt;
&lt;br /&gt;
=== tcpdump ===&lt;br /&gt;
&lt;br /&gt;
tcpdump can also be useful for dumping the contents of packets coming in on an interface:&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add tcpdump}}&lt;br /&gt;
&lt;br /&gt;
Then we can run it. This example captures all DNS traffic originating from 192.168.2.20.&lt;br /&gt;
&lt;br /&gt;
{{cmd|tcpdump -i eth0 udp and src 192.168.2.20 and port 53}}&lt;br /&gt;
&lt;br /&gt;
You can write the file out with the -w option, and view it in Wireshark locally on your computer. You can increase the verbosity with the -v option. Using -vv will be even more verbose. -vvv will show even more.&lt;br /&gt;
&lt;br /&gt;
== lbu cache ==&lt;br /&gt;
Configure lbu cache so that you don&#039;t need to download packages when you restart your router eg [[Local APK cache]]&lt;br /&gt;
&lt;br /&gt;
This is particularly important as some of the images do not contain ppp-pppoe. This might mean you&#039;re unable to get an internet connection to download the other packages on boot.&lt;br /&gt;
&lt;br /&gt;
== lbu encryption /etc/lbu/lbu.conf ==&lt;br /&gt;
In /etc/lbu/lbu.conf you might want to enable encryption to protect your VPN keys.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# what cipher to use with -e option&lt;br /&gt;
DEFAULT_CIPHER=aes-256-cbc&lt;br /&gt;
&lt;br /&gt;
# Uncomment the row below to encrypt config by default&lt;br /&gt;
ENCRYPTION=$DEFAULT_CIPHER&lt;br /&gt;
&lt;br /&gt;
# Uncomment below to avoid &amp;lt;media&amp;gt; option to &#039;lbu commit&#039;&lt;br /&gt;
# Can also be set to &#039;floppy&#039;&lt;br /&gt;
LBU_MEDIA=mmcblk0p1&lt;br /&gt;
&lt;br /&gt;
# Set the LBU_BACKUPDIR variable in case you prefer to save the apkovls&lt;br /&gt;
# in a normal directory instead of mounting an external media.&lt;br /&gt;
# LBU_BACKUPDIR=/root/config-backups&lt;br /&gt;
&lt;br /&gt;
# Uncomment below to let lbu make up to 3 backups&lt;br /&gt;
# BACKUP_LIMIT=3&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remember to set a root password, by default Alpine Linux&#039;s root account is passwordless.&lt;br /&gt;
{{cmd|passwd root}}&lt;br /&gt;
&lt;br /&gt;
== Backup apkprov ==&lt;br /&gt;
It&#039;s a good idea to back up your apk provision file. You can pull it off your router to your local workstation with:&lt;br /&gt;
&lt;br /&gt;
{{cmd|scp -r root@192.168.2.1:/media/mmcblk0p1/&amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz.aes-256-cbc ./}}&lt;br /&gt;
&lt;br /&gt;
And decrypt it with:&lt;br /&gt;
{{cmd|openssl enc -d -aes-256-cbc -in &amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz.aes-256-cbc -out &amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz}}&lt;br /&gt;
&lt;br /&gt;
It can be encrypted with:&lt;br /&gt;
{{cmd|openssl aes-256-cbc -salt -in &amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz -out &amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz.aes-256-cbc}}&lt;br /&gt;
&lt;br /&gt;
== Harden SSH ==&lt;br /&gt;
&lt;br /&gt;
=== Generate a SSH key ===&lt;br /&gt;
{{cmd|ssh-keygen -t rsa -b 4096}}&lt;br /&gt;
&lt;br /&gt;
You will want to put the contents of id_rsa.pub in /etc/ssh/authorized_keys&lt;br /&gt;
&lt;br /&gt;
You can put multiple public keys on multiple lines if more than one person has access to the router.&lt;br /&gt;
&lt;br /&gt;
=== /etc/ssh/sshd_config ===&lt;br /&gt;
A couple of good options to set in here can be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ListenAddress 192.168.1.1&lt;br /&gt;
ListenAddress 192.168.2.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
While this isn&#039;t usually a good idea, a router doesn&#039;t need more than one user.&lt;br /&gt;
&amp;lt;pre&amp;gt;PermitRootLogin yes&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The most important options:&lt;br /&gt;
&amp;lt;pre&amp;gt;RSAAuthentication yes&lt;br /&gt;
PubkeyAuthentication yes&lt;br /&gt;
AuthorizedKeysFile  /etc/ssh/authorized_keys&lt;br /&gt;
PasswordAuthentication no&lt;br /&gt;
PermitEmptyPasswords no&lt;br /&gt;
AllowTcpForwarding no&lt;br /&gt;
X11Forwarding no&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== /etc/conf.d/sshd ===&lt;br /&gt;
You will want to add &amp;lt;pre&amp;gt;rc_need=&amp;quot;net&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This instructs OpenRC to make sure the network is up before starting ssh.&lt;br /&gt;
&lt;br /&gt;
Finally add sshd to the default run level&lt;br /&gt;
{{cmd|rc-update add sshd default}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at [https://stribika.github.io/2015/01/04/secure-secure-shell.html Secure Secure Shell] and tighten OpenSSH&#039;s cryptography options.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
* https://wiki.gentoo.org/wiki/Home_Router&lt;br /&gt;
* https://help.ubuntu.com/community/ADSLPPPoE&lt;br /&gt;
* https://wiki.archlinux.org/index.php/Router&lt;br /&gt;
* https://wiki.gentoo.org/wiki/IPv6_router_guide&lt;br /&gt;
* [https://vk5tu.livejournal.com/37206.html IPv6 at home, under the hood with Debian Wheezy and Internode]&lt;br /&gt;
* [http://vk5tu.livejournal.com/43059.html Raspberry Pi random number generator]&lt;br /&gt;
* [https://www.raspberrypi.org/forums/viewtopic.php?f=56&amp;amp;t=60569 rng-tools post by ktb]&lt;br /&gt;
&lt;br /&gt;
[[category: VPN]]&lt;br /&gt;
[[category: Raspberry]]&lt;/div&gt;</summary>
		<author><name>Dngray</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Linux_Router_with_VPN_on_a_Raspberry_Pi_(IPv6)&amp;diff=16943</id>
		<title>Linux Router with VPN on a Raspberry Pi (IPv6)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Linux_Router_with_VPN_on_a_Raspberry_Pi_(IPv6)&amp;diff=16943"/>
		<updated>2020-02-25T09:44:12Z</updated>

		<summary type="html">&lt;p&gt;Dngray: Missing space&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
I have split this off the main article [[Linux Router with VPN on a Raspberry Pi]] IPv6 implementation requires a few changes to the initial article to work. I haven&#039;t duplicated everything here however, just the stuff that relates to IPv6.&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
IPv6 introduces a number of new complexities into our network. If you&#039;ve completed previous IPv4 only guide [[Linux Router with VPN on a Raspberry Pi]] then read on.&lt;br /&gt;
&lt;br /&gt;
Your VPN provider may only offers you a single stack connection (no IPv6). You won&#039;t be able to implement IPv6 addressing on VLAN 3 to carry your IPv6 traffic out of the VPN. If your ISP gives you IPv6 addressing you may still implement addressing on VLAN2 to carry traffic directly to your ISP. In this example I do both.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t know much about IPv6 then these pages might be of interest to get you up to speed.&lt;br /&gt;
&lt;br /&gt;
* [http://tldp.org/HOWTO/Linux+IPv6-HOWTO Linux IPv6 HOWTO (en)] - in particular the &amp;quot;basics&amp;quot; and &amp;quot;address types&amp;quot;.&lt;br /&gt;
* [https://en.wikipedia.org/wiki/IPv6 IPv6]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/IPv6_address IPv6 Address]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Prefix_delegation Prefix delegation] we use this with dhcpcd when doing DHCPv6-PD to inform our ISP of our network devices.&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Neighbor_Discovery_Protocol Neighbor Discovery Protocol] we use this with radvd to distribute our routes.&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol_version_6 Internet Control Message Protocol version 6] ICMPv6 differs from ICMPv4 and is used for many critical parts of IPv6 infrastructure.&lt;br /&gt;
* [http://ipv6-test.com IPv6-test.com] Useful for diagnosing if IPv6 is working.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Network_Diagram_ipv4_ipv6_with_vlans.svg|900px|center|Network Diagram IPv4 and IPv6]]&lt;br /&gt;
&lt;br /&gt;
= Enabling IPv6 support =&lt;br /&gt;
&lt;br /&gt;
Assuming you&#039;re using the Alpine Linux kernel, IPv6 support is available separately as a module.&lt;br /&gt;
&lt;br /&gt;
{{cmd|modprobe ipv6}}&lt;br /&gt;
To add the module to our startup configuration.&lt;br /&gt;
{{cmd|echo &amp;quot;ipv6&amp;quot; &amp;gt;&amp;gt; /etc/modules}}&lt;br /&gt;
&lt;br /&gt;
== /etc/sysctl.d/local.conf ==&lt;br /&gt;
Modify the sysctl section to include IPv6 support:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Controls IP packet forwarding&lt;br /&gt;
net.ipv4.ip_forward = 1&lt;br /&gt;
&lt;br /&gt;
# Needed to use fwmark&lt;br /&gt;
net.ipv4.conf.all.rp_filter = 2&lt;br /&gt;
&lt;br /&gt;
# http://vk5tu.livejournal.com/37206.html&lt;br /&gt;
# What&#039;s this special value &amp;quot;2&amp;quot;? Originally the value was &amp;quot;1&amp;quot;, but this &lt;br /&gt;
# disabled autoconfiguration on all interfaces. That is, you couldn&#039;t appear &lt;br /&gt;
# to be a router on some interfaces and appear to be a host on other &lt;br /&gt;
# interfaces. But that&#039;s exactly the mental model of a ADSL router. &lt;br /&gt;
&lt;br /&gt;
# Controls IP packet forwarding&lt;br /&gt;
net.ipv6.conf.all.forwarding = 2&lt;br /&gt;
net.ipv6.conf.default.forwarding = 2&lt;br /&gt;
&lt;br /&gt;
# Accept Router Advertisments&lt;br /&gt;
net.ipv6.conf.all.accept_ra = 2&lt;br /&gt;
net.ipv6.conf.default.accept_ra = 2&lt;br /&gt;
&lt;br /&gt;
# We are a router so disable temporary addresses&lt;br /&gt;
net.ipv6.conf.all.use_tempaddr = 0&lt;br /&gt;
net.ipv6.conf.default.use_tempaddr = 0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/interfaces ==&lt;br /&gt;
Add an IPv6 interface for each VLAN. Note we don&#039;t need to add one for VLAN2 because dhcpcd will take care of that for us using our ISPs router advertisements. Also note the . (dot notation) represents a VLAN interface where as : (colon notation) used in the previous article represented an IP address aliased on an interface. &lt;br /&gt;
&lt;br /&gt;
The reason we need VLANs here is because each VLAN has it&#039;s own broadcast and we don&#039;t want our router advertisements to be putting routes and addresses on all the interfaces. It also helps us with a more secure design, but requires a managed switch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# VLAN 2 - DESTINED FOR ISP&lt;br /&gt;
auto eth0.2&lt;br /&gt;
iface eth0.2 inet static&lt;br /&gt;
    address 192.168.2.1&lt;br /&gt;
    netmask 255.255.255.0&lt;br /&gt;
    broadcast 192.168.2.255&lt;br /&gt;
    post-up /etc/network/fwmark_rules&lt;br /&gt;
&lt;br /&gt;
# VLAN 3 - DESTINED FOR VPN&lt;br /&gt;
auto eth0.3&lt;br /&gt;
iface eth0.3 inet static&lt;br /&gt;
    address 192.168.3.1&lt;br /&gt;
    netmask 255.255.255.0&lt;br /&gt;
    broadcast 192.168.3.255&lt;br /&gt;
&lt;br /&gt;
iface eth0.3 inet6 static&lt;br /&gt;
    address fde4:8dba:82e1:fff3::1&lt;br /&gt;
    netmask 64&lt;br /&gt;
    autoconf 0&lt;br /&gt;
    accept_ra 0&lt;br /&gt;
    privext 0&lt;br /&gt;
&lt;br /&gt;
# VLAN 4 - LAN ONLY&lt;br /&gt;
auto eth0.4&lt;br /&gt;
iface eth0.4 inet static&lt;br /&gt;
    address 192.168.4.1&lt;br /&gt;
    netmask 255.255.255.0&lt;br /&gt;
    broadcast 192.168.4.255&lt;br /&gt;
    post-up /etc/network/route_LAN&lt;br /&gt;
&lt;br /&gt;
iface eth0.4 inet6 static&lt;br /&gt;
    address fde4:8dba:82e1:fff4::1&lt;br /&gt;
    netmask 64&lt;br /&gt;
    autoconf 0&lt;br /&gt;
    accept_ra 0&lt;br /&gt;
    privext 0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Configuring PPP =&lt;br /&gt;
Next up we need to configure our router to be able to dial a PPP connection with our modem. &lt;br /&gt;
&lt;br /&gt;
See [[PPP]], you will want to make sure you set your WAN interface, in this example we used eth1.&lt;br /&gt;
&lt;br /&gt;
== Check system log ==&lt;br /&gt;
Restart ppp.&lt;br /&gt;
&lt;br /&gt;
{{cmd|poff yourISP}}&lt;br /&gt;
{{cmd|pon yourISP}}&lt;br /&gt;
&lt;br /&gt;
In /var/log/messages you should see something like&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;pppd[]: Plugin rp-pppoe.so loaded.&lt;br /&gt;
pppd[]: RP-PPPoE plugin version 3.8p compiled against pppd 2.4.7&lt;br /&gt;
pppd[]: pppd 2.4.7 started by root, uid 0&lt;br /&gt;
pppd[]: PPP session is 49969&lt;br /&gt;
pppd[]: Connected to 00:53:00:ff:ff:f0 via interface eth1&lt;br /&gt;
pppd[]: Using interface ppp0&lt;br /&gt;
pppd[]: Connect: ppp0 &amp;lt;--&amp;gt; eth1&lt;br /&gt;
pppd[]: CHAP authentication succeeded&lt;br /&gt;
pppd[]: CHAP authentication succeeded&lt;br /&gt;
pppd[]: peer from calling number 00:53:00:FF:FF:F0 authorized&lt;br /&gt;
pppd[]: local  LL address fe80::0db8:ffff:ffff:fff1&lt;br /&gt;
pppd[]: remote LL address fe80::0db8:ffff:ffff:fff0&lt;br /&gt;
pppd[]: local  IP address 192.0.2.1&lt;br /&gt;
pppd[]: remote IP address 192.0.2.0&lt;br /&gt;
pppd[]: primary   DNS address 192.0.2.10&lt;br /&gt;
pppd[]: secondary DNS address 192.0.2.20&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should be able to now ping things such as&lt;br /&gt;
&lt;br /&gt;
{{cmd|ping6 ipv6.google.com}}&lt;br /&gt;
&lt;br /&gt;
from your router.&lt;br /&gt;
&lt;br /&gt;
= Prefix Delegation =&lt;br /&gt;
&lt;br /&gt;
The next step will be to configure DHCPv6 Prefix Delegation with your ISP. Install dhcpcd. While many guides do use the wide-dhcpv6-client [http://bugs.alpinelinux.org/issues/564 it should be noted this is unmaintained] and not included in Alpine Linux.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t use the ISC&#039;s dhclient either as [https://bugs.gentoo.org/show_bug.cgi?id=432652 this does not support Prefix Delegations on PPP links] without a patch.&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add dhcpcd}}&lt;br /&gt;
&lt;br /&gt;
You can check out the manual for [http://roy.marples.name/man/html5/dhcpcd.conf.html dhcpcd.conf]. Installing dhcpcd-doc will allow you to read the man file. Eg:&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add dhcpcd-doc}}&lt;br /&gt;
&lt;br /&gt;
=== /etc/dhcpcd.conf ===&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add dhcpcd}}&lt;br /&gt;
&lt;br /&gt;
If the main repositories have dhcpcd below version 7.0.7 (at time of writing AlpineLinux 3.8 and below) you will need to use the latest version from edge as it fixes a bug with unique link local addresses on our VLANs [https://roy.marples.name/blog/dhcpcd-7-0-7-released dhcpcd ChangeLog] this [https://patchwork.alpinelinux.org/patch/4016/ patch] already applied in v7.0.7&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add dhcpcd@edge}}&lt;br /&gt;
&lt;br /&gt;
If you haven&#039;t you may need to add the edge repository for pinning [[Alpine Linux package management#Repository_pinning]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Enable extra debugging&lt;br /&gt;
#debug&lt;br /&gt;
#logfile /var/log/dhcpcd.log&lt;br /&gt;
&lt;br /&gt;
# Allow users of this group to interact with dhcpcd via the control&lt;br /&gt;
# socket.&lt;br /&gt;
#controlgroup wheel&lt;br /&gt;
&lt;br /&gt;
# Inform the DHCP server of our hostname for DDNS.&lt;br /&gt;
hostname gateway&lt;br /&gt;
&lt;br /&gt;
# Use the hardware address of the interface for the Client ID.&lt;br /&gt;
#clientid&lt;br /&gt;
# or&lt;br /&gt;
# Use the same DUID + IAID as set in DHCPv6 for DHCPv4 ClientID as&lt;br /&gt;
# per RFC4361. Some non-RFC compliant DHCP servers do not reply with&lt;br /&gt;
# this set. In this case, comment out duid and enable clientid above.&lt;br /&gt;
duid&lt;br /&gt;
&lt;br /&gt;
# Persist interface configuration when dhcpcd exits.&lt;br /&gt;
persistent&lt;br /&gt;
&lt;br /&gt;
# Rapid commit support.&lt;br /&gt;
# Safe to enable by default because it requires the equivalent option&lt;br /&gt;
# set on the server to actually work.&lt;br /&gt;
option rapid_commit&lt;br /&gt;
&lt;br /&gt;
# A list of options to request from the DHCP server.&lt;br /&gt;
option domain_name_servers, domain_name, domain_search, host_name&lt;br /&gt;
option classless_static_routes&lt;br /&gt;
&lt;br /&gt;
# Most distributions have NTP support.&lt;br /&gt;
option ntp_servers&lt;br /&gt;
&lt;br /&gt;
# Respect the network MTU.&lt;br /&gt;
# Some interface drivers reset when changing the MTU so disabled by&lt;br /&gt;
# default.&lt;br /&gt;
#option interface_mtu&lt;br /&gt;
&lt;br /&gt;
# A ServerID is required by RFC2131.&lt;br /&gt;
require dhcp_server_identifier&lt;br /&gt;
&lt;br /&gt;
# Generate Stable Private IPv6 Addresses instead of hardware based&lt;br /&gt;
# ones&lt;br /&gt;
slaac private&lt;br /&gt;
&lt;br /&gt;
# A hook script is provided to lookup the hostname if not set by the&lt;br /&gt;
# DHCP server, but it should not be run by default.&lt;br /&gt;
nohook lookup-hostname&lt;br /&gt;
&lt;br /&gt;
# IPv6 Only&lt;br /&gt;
ipv6only&lt;br /&gt;
&lt;br /&gt;
# Disable solicitations on all interfaces&lt;br /&gt;
noipv6rs&lt;br /&gt;
&lt;br /&gt;
# Wait for IP before forking to background&lt;br /&gt;
waitip 6&lt;br /&gt;
&lt;br /&gt;
# Don&#039;t touch DNS&lt;br /&gt;
nohook resolv.conf&lt;br /&gt;
&lt;br /&gt;
# Use the interface connected to WAN&lt;br /&gt;
interface ppp0&lt;br /&gt;
    ipv6rs # enable routing solicitation get the default IPv6 route&lt;br /&gt;
    iaid 1&lt;br /&gt;
    ia_pd 1/::/56 eth0.2/2/64&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add dhcpcd to the default run level:&lt;br /&gt;
&lt;br /&gt;
{{cmd|rc-update add dhcpcd default}}&lt;br /&gt;
&lt;br /&gt;
= Configuring firewall for IPv4 and IPv6 traffic =&lt;br /&gt;
&lt;br /&gt;
== iptables ==&lt;br /&gt;
Here are some rules for iptables that I am currently using, yours may look something similar.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#########################################################################&lt;br /&gt;
# Uses 192.168.1.0 VLAN1 Management Untagged - no route&lt;br /&gt;
#      192.168.2.0 VLAN2                     - route to ISP&lt;br /&gt;
#      192.168.3.0 VLAN3                     - route to VPN&lt;br /&gt;
#      192.168.4.0 VLAN4                     - no route&lt;br /&gt;
# &lt;br /&gt;
# Packets to/from 192.168.1.0/24 not in any VLAN ie tagged&lt;br /&gt;
# Packets to/from 192.168.2.0/24 are marked with 0x1 and routed to ISP&lt;br /&gt;
# Packets to/from 192.168.3.0/24 are marked with 0x2 and routed to VPN&lt;br /&gt;
# Packets to/from 192.168.4.0/24 are routed to LAN and not forwarded onto&lt;br /&gt;
#                                    the internet&lt;br /&gt;
#&lt;br /&gt;
# These destinations will always be marked with 0x1 from VLAN3:&lt;br /&gt;
#&lt;br /&gt;
# &amp;lt;ip_of_exception&amp;gt;       some exception&lt;br /&gt;
#########################################################################&lt;br /&gt;
&lt;br /&gt;
# &lt;br /&gt;
# Raw Table&lt;br /&gt;
#&lt;br /&gt;
*raw&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a log drop chain&lt;br /&gt;
:LOG_DROP_BOGON - [0:0]&lt;br /&gt;
:LOG_DROP_MSFT - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create output chains&lt;br /&gt;
:OUT_PPP0 - [0:0]&lt;br /&gt;
:OUT_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Allows traffic from VPN&#039;s DNS server&lt;br /&gt;
-A PREROUTING -s 172.16.32.1/32 -i tun0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Block specified bogons coming in from ISP and VPN&lt;br /&gt;
# (unlikely to happen as they filter them on their router)&lt;br /&gt;
-A PREROUTING -i ppp0 -m set --match-set bogon-bn-nonagg src -j LOG_DROP_BOGON&lt;br /&gt;
-A PREROUTING -i tun0 -m set --match-set bogon-bn-nonagg src -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Block MSFT known tracking IPs from https://github.com/Nummer/Destroy-Windows-10-Spying&lt;br /&gt;
-A PREROUTING -i ppp0 -m set --match-set dropped-msft-ip-ipv4  src -j LOG_DROP_MSFT&lt;br /&gt;
-A PREROUTING -i tun0 -m set --match-set dropped-msft-ip-ipv4  src -j LOG_DROP_MSFT&lt;br /&gt;
&lt;br /&gt;
# Allows my excepted ranges&lt;br /&gt;
-A PREROUTING -m set --match-set allowed-nets-ipv4 src,src -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allows traffic originating from router to remote address on VPN&lt;br /&gt;
-A OUT_TUN0 -d 172.16.32.1 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass output interface to corresponding chain&lt;br /&gt;
-A OUTPUT -o ppp0 -j OUT_PPP0&lt;br /&gt;
-A OUTPUT -o tun0 -j OUT_TUN0&lt;br /&gt;
&lt;br /&gt;
# Log drop chain&lt;br /&gt;
-A LOG_DROP_BOGON -j LOG --log-prefix &amp;quot;Dropped Bogon (ipv4) : &amp;quot; --log-level 6&lt;br /&gt;
-A LOG_DROP_BOGON -j DROP&lt;br /&gt;
-A LOG_DROP_MSFT -j LOG --log-prefix &amp;quot;Dropped MSFT (ipv4) : &amp;quot; --log-level 6&lt;br /&gt;
-A LOG_DROP_MSFT -j DROP&lt;br /&gt;
&lt;br /&gt;
# Block packets originating from the router destined to bogon ranges&lt;br /&gt;
-A OUT_PPP0 -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Blocks packets originating from the router destined to bogon ranges&lt;br /&gt;
-A OUT_TUN0 -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Block packets originating from the router destined to msft ranges&lt;br /&gt;
-A OUT_PPP0 -m set --match-set dropped-msft-ip-ipv4 dst -j LOG_DROP_MSFT&lt;br /&gt;
&lt;br /&gt;
# Blocks packets originating from the router destined to msft ranges&lt;br /&gt;
-A OUT_TUN0 -m set --match-set dropped-msft-ip-ipv4 dst -j LOG_DROP_MSFT&lt;br /&gt;
&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# NAT Table&lt;br /&gt;
# This is where translation of packets happens and &amp;quot;forwarding&amp;quot; of ports&lt;br /&gt;
# to specific hosts.&lt;br /&gt;
#&lt;br /&gt;
*nat&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Port forwarding for Bittorrent through VPN&lt;br /&gt;
-A PREROUTING -i tun0 -p tcp -m tcp --dport 20001 -j DNAT --to-destination 192.168.3.30&lt;br /&gt;
-A PREROUTING -i tun0 -p udp -m udp --dport 20001 -j DNAT --to-destination 192.168.3.30&lt;br /&gt;
&lt;br /&gt;
# Allows routing to our modem subnet so we can access the web interface&lt;br /&gt;
-A POSTROUTING -s 192.168.2.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
-A POSTROUTING -s 192.168.3.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows routing to Printer&lt;br /&gt;
-A POSTROUTING -s 192.168.2.0/24 -d 192.168.4.9/32 -o eth0 -j MASQUERADE&lt;br /&gt;
-A POSTROUTING -s 192.168.3.0/24 -d 192.168.4.9/32 -o eth0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the VPN tunnel&lt;br /&gt;
-A POSTROUTING -o tun0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the PPP tunnel&lt;br /&gt;
-A POSTROUTING -o ppp0 -j MASQUERADE&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Filter Table&lt;br /&gt;
# This is where we decide to ACCEPT, DROP or REJECT things&lt;br /&gt;
#&lt;br /&gt;
*filter&lt;br /&gt;
:INPUT DROP [0:0]&lt;br /&gt;
:FORWARD DROP [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for forwarding packets&lt;br /&gt;
:FWD_ETH1 - [0:0]&lt;br /&gt;
:FWD_PPP0 - [0:0]&lt;br /&gt;
:FWD_TUN0 - [0:0]&lt;br /&gt;
:FWD_V1_MGMT - [0:0]&lt;br /&gt;
:FWD_V2_ISP - [0:0]&lt;br /&gt;
:FWD_V3_VPN - [0:0]&lt;br /&gt;
:FWD_V4_LANONLY - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for input packets (for host itself)&lt;br /&gt;
:IN_ETH1 - [0:0]&lt;br /&gt;
:IN_PPP0 - [0:0]&lt;br /&gt;
:IN_TUN0 - [0:0]&lt;br /&gt;
:IN_V1_MGMT - [0:0]&lt;br /&gt;
:IN_V2_ISP - [0:0]&lt;br /&gt;
:IN_V3_VPN - [0:0]&lt;br /&gt;
:IN_V4_LANONLY - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a drop/reject chains&lt;br /&gt;
:LOG_DROP - [0:0]&lt;br /&gt;
:LOG_DROP_BOGON - [0:0]&lt;br /&gt;
:LOG_DROP_MSFT - [0:0]&lt;br /&gt;
:LOG_REJECT_LANONLY - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create an output chains&lt;br /&gt;
:OUT_PPP0 - [0:0]&lt;br /&gt;
:OUT_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Pass input packet to corresponding rule chain&lt;br /&gt;
-A INPUT -i lo -j ACCEPT&lt;br /&gt;
-A INPUT -i eth0 -j IN_V1_MGMT&lt;br /&gt;
-A INPUT -i eth0.2 -j IN_V2_ISP&lt;br /&gt;
-A INPUT -i eth0.3 -j IN_V3_VPN&lt;br /&gt;
-A INPUT -i eth0.4 -j IN_V4_LANONLY&lt;br /&gt;
-A INPUT -i eth1 -j IN_ETH1&lt;br /&gt;
-A INPUT -i ppp0 -j IN_PPP0&lt;br /&gt;
-A INPUT -i tun0 -j IN_TUN0&lt;br /&gt;
&lt;br /&gt;
# Track forwarded packets&lt;br /&gt;
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass forwarded packet to corresponding rule chain&lt;br /&gt;
-A FORWARD -i eth0 -j FWD_V1_MGMT&lt;br /&gt;
-A FORWARD -i eth0.2 -j FWD_V2_ISP&lt;br /&gt;
-A FORWARD -i eth0.3 -j FWD_V3_VPN&lt;br /&gt;
-A FORWARD -i eth0.4 -j FWD_V4_LANONLY&lt;br /&gt;
-A FORWARD -i eth1 -j FWD_ETH1&lt;br /&gt;
-A FORWARD -i ppp0 -j FWD_PPP0&lt;br /&gt;
-A FORWARD -i tun0 -j FWD_TUN0&lt;br /&gt;
-A OUTPUT -o ppp0 -j OUT_PPP0&lt;br /&gt;
-A OUTPUT -o tun0 -j OUT_TUN0&lt;br /&gt;
&lt;br /&gt;
# Forward HTTP packets from network to modem&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.2.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.3.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward Bittorrent Port&lt;br /&gt;
-A FWD_TUN0 -d 192.168.3.30/32 -p tcp -m tcp --dport 20001 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_TUN0 -d 192.168.3.30/32 -p udp -m udp --dport 20001 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward established packets to hosts in VLAN2/3 from Printer&lt;br /&gt;
-A FWD_V1_MGMT -s 192.168.4.9/32 -d 192.168.2.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_V1_MGMT -s 192.168.4.9/32 -d 192.168.3.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Refuse to forward bogons from VLAN1 (Untagged Management)&lt;br /&gt;
-A FWD_V1_MGMT -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Refuse to forward msft from VLAN1 (Untagged Management)&lt;br /&gt;
-A FWD_V1_MGMT -m set --match-set dropped-msft-ip-ipv4 dst -j LOG_DROP_MSFT&lt;br /&gt;
&lt;br /&gt;
# Forward traffic from VLAN2 to Modem&lt;br /&gt;
-A FWD_V2_ISP -d 192.168.0.1/32 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward traffic from VLAN2 to Printer&lt;br /&gt;
-A FWD_V2_ISP -d 192.168.4.9/32 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Drop bogons from VLAN2&lt;br /&gt;
-A FWD_V2_ISP -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Drop msft from VLAN2&lt;br /&gt;
-A FWD_V2_ISP -m set --match-set dropped-msft-ip-ipv4 dst -j LOG_DROP_MSFT&lt;br /&gt;
&lt;br /&gt;
# Allow rest from VLAN2&lt;br /&gt;
-A FWD_V2_ISP -s 192.168.2.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward traffic from VLAN3 to Modem&lt;br /&gt;
-A FWD_V3_VPN -d 192.168.0.1/32 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward traffic from VLAN3 to Printer&lt;br /&gt;
-A FWD_V3_VPN -d 192.168.4.9/32 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow rest from VLAN3&lt;br /&gt;
-A FWD_V3_VPN -s 192.168.3.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Drop bogons from VLAN3&lt;br /&gt;
-A FWD_V3_VPN -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Drop msft from VLAN3&lt;br /&gt;
-A FWD_V3_VPN -m set --match-set dropped-msft-ip-ipv4 dst -j LOG_DROP_MSFT&lt;br /&gt;
&lt;br /&gt;
# Forward some exception to ppp0 from VLAN3&lt;br /&gt;
-A FWD_V3_VPN -s 192.168.3.0/24 -d &amp;lt;ip_of_exception&amp;gt;/32 -o ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow in NTP from Router (this machine)&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow in HTTP from Router (this machine)&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked PPP0 connection&lt;br /&gt;
-A IN_PPP0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on PPP0&lt;br /&gt;
# -A IN_PPP0 -j LOG --log-prefix &amp;quot;DROP:INPUT (ipv4) &amp;quot; --log-level 6&lt;br /&gt;
-A IN_PPP0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked TUN0 connection&lt;br /&gt;
-A IN_TUN0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on TUN0&lt;br /&gt;
# -A IN_TUN0 -j LOG --log-prefix &amp;quot;DROP:INPUT (ipv4) &amp;quot; --log-level 6&lt;br /&gt;
-A IN_TUN0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Allow in established packets from Printer to hosts in VLAN2/3&lt;br /&gt;
-A IN_V1_MGMT -s 192.168.4.9/32 -d 192.168.2.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_V1_MGMT -s 192.168.4.9/32 -d 192.168.3.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# FreeRadius Clients (access point A &amp;amp; B)&lt;br /&gt;
-A IN_V1_MGMT -s 192.168.1.10/32 -p tcp -m tcp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_V1_MGMT -s 192.168.1.10/32 -p udp -m udp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_V1_MGMT -s 192.168.1.11/32 -p tcp -m tcp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_V1_MGMT -s 192.168.1.11/32 -p udp -m udp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Ubiquiti UAP Device Discovery Broadcast&lt;br /&gt;
-A IN_V1_MGMT -s 192.168.1.10/32 -p udp -m udp --dport 10001 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_V1_MGMT -s 192.168.1.11/32 -p udp -m udp --dport 10001 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_V1_MGMT -s 192.168.1.10/32 -p udp -m udp --dport 3478 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_V1_MGMT -s 192.168.1.11/32 -p udp -m udp --dport 3478 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow rest in from VLAN1&lt;br /&gt;
-A IN_V1_MGMT -s 192.168.1.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow ssh in from VLAN2&lt;br /&gt;
-A IN_V2_ISP -s 192.168.2.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow DNS in from VLAN2&lt;br /&gt;
-A IN_V2_ISP -s 192.168.2.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# ALLOW NTP in from VLAN2&lt;br /&gt;
-A IN_V2_ISP -s 192.168.2.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow rest from VLAN2&lt;br /&gt;
-A IN_V2_ISP -s 192.168.2.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow ssh in from VLAN3&lt;br /&gt;
-A IN_V3_VPN -s 192.168.3.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow DNS in from VLAN3&lt;br /&gt;
-A IN_V3_VPN -s 192.168.3.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow NTP in from VLAN3&lt;br /&gt;
-A IN_V3_VPN -s 192.168.3.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow rest from VLAN3&lt;br /&gt;
-A IN_V3_VPN -s 192.168.3.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow some exception direct from ppp0 to VLAN3&lt;br /&gt;
-A IN_V3_VPN -s 192.168.3.0/24 -d &amp;lt;ip_of_exception&amp;gt;/32 -o ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped bogons that never got forwarded&lt;br /&gt;
-A LOG_DROP_BOGON -j LOG --log-prefix &amp;quot;Dropped Bogon forward (ipv4) &amp;quot; --log-level 6&lt;br /&gt;
-A LOG_DROP_BOGON -j DROP&lt;br /&gt;
&lt;br /&gt;
# Log dropped msft tracking that never got forwarded&lt;br /&gt;
-A LOG_DROP_MSFT -j LOG --log-prefix &amp;quot;Dropped MSFT forward(ipv4) &amp;quot; --log-level 6&lt;br /&gt;
-A LOG_DROP_MSFT -j DROP&lt;br /&gt;
&lt;br /&gt;
# Log rejected packets&lt;br /&gt;
-A LOG_REJECT_LANONLY -j LOG --log-prefix &amp;quot;Rejected packet from LAN only&amp;quot; --log-level 6&lt;br /&gt;
-A LOG_REJECT_LANONLY -j REJECT --reject-with icmp-port-unreachable&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mangle Table&lt;br /&gt;
# This is the place where our markings happen, whether they be 0x1 or 0x2&lt;br /&gt;
#&lt;br /&gt;
*mangle&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:FORWARD ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Restore CONNMARK to the MARK (If one doesn&#039;t exist then no mark is set)&lt;br /&gt;
-A PREROUTING -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff&lt;br /&gt;
&lt;br /&gt;
# If packet MARK is 2, then it means there is already a connection mark and the&lt;br /&gt;
# original packet came in on VPN&lt;br /&gt;
-A PREROUTING -s 192.168.3.0/24 -m mark --mark 0x2&lt;br /&gt;
&lt;br /&gt;
# Check some exception are 0x1&lt;br /&gt;
-A PREROUTING -s 192.168.3.0/24 -d &amp;lt;ip_of_exception&amp;gt;/32 -m mark --mark 0x1&lt;br /&gt;
&lt;br /&gt;
# Mark packets coming from 192.168.3.0/24 are 0x2&lt;br /&gt;
-A PREROUTING -s 192.168.3.0/24 -j MARK --set-xmark 0x2/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# If packet MARK is 1, then it means there is already a connection mark and the&lt;br /&gt;
# original packet came in on ISP&lt;br /&gt;
-A PREROUTING -s 192.168.2.0/24 -m mark --mark 0x1&lt;br /&gt;
&lt;br /&gt;
# Mark packets 192.168.2.0/24 are 0x1&lt;br /&gt;
-A PREROUTING -s 192.168.2.0/24 -j MARK --set-xmark 0x1/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Mark some exception as 0x1&lt;br /&gt;
-A PREROUTING -s 192.168.3.0/24 -d &amp;lt;ip_of_exception&amp;gt;/32 -j MARK --set-xmark 0x1/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Strip mark if packet is destined for modem&lt;br /&gt;
-A PREROUTING -d 192.168.0.1/32 -j MARK --set-xmark 0x0/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Strip mark if packet is destined for printer&lt;br /&gt;
-A PREROUTING -d 192.168.4.9/32 -j MARK --set-xmark 0x0/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Save MARK to CONNMARK (remember iproute can&#039;t see CONNMARKs)&lt;br /&gt;
-A PREROUTING -j CONNMARK --save-mark --nfmask 0xffffffff --ctmask 0xffffffff&lt;br /&gt;
COMMIT&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ip6tables ==&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need to modify your prefix in one of the rules.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#########################################################################&lt;br /&gt;
# Uses 2001:0db8:1234:ffff::1/64 VLAN2 - route to ISP&lt;br /&gt;
#      fde4:8dba:82e1:fff3::1/64  VLAN3 - route to VPN&lt;br /&gt;
#########################################################################&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Raw Table&lt;br /&gt;
#&lt;br /&gt;
*raw&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a log drop chain&lt;br /&gt;
:LOG_DROP_BOGON - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create output chains&lt;br /&gt;
:OUT_PPP0 - [0:0]&lt;br /&gt;
:OUT_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Allows my excepted ranges&lt;br /&gt;
-A PREROUTING -m set --match-set allowed-nets-ipv6 src,src -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass output interface to corresponding chain&lt;br /&gt;
-A OUTPUT -o ppp0 -j OUT_PPP0&lt;br /&gt;
-A OUTPUT -o tun0 -j OUT_TUN0&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# NAT Table&lt;br /&gt;
# This is where translation of packets happens and &amp;quot;forwarding&amp;quot; of ports&lt;br /&gt;
# to specific hosts.&lt;br /&gt;
#&lt;br /&gt;
*nat&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the VPN tunnel for IPv6&lt;br /&gt;
-A POSTROUTING -o tun0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mangle Table&lt;br /&gt;
#&lt;br /&gt;
*mangle&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:FORWARD ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Drop unusually large ping packets&lt;br /&gt;
-A PREROUTING -p ipv6-icmp -m icmp6 --icmpv6-type 128 -m length --length 170:65535 -j DROP&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Filter Table&lt;br /&gt;
# This is where we decide to ACCEPT, DROP or REJECT things&lt;br /&gt;
#&lt;br /&gt;
*filter&lt;br /&gt;
:INPUT DROP [0:0]&lt;br /&gt;
:FORWARD DROP [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for forwarding packets&lt;br /&gt;
:FWD_ETH1 - [0:0]&lt;br /&gt;
:FWD_PPP0 - [0:0]&lt;br /&gt;
:FWD_TUN0 - [0:0]&lt;br /&gt;
:FWD_V1_MGMT - [0:0]&lt;br /&gt;
:FWD_V2_ISP - [0:0]&lt;br /&gt;
:FWD_V3_VPN - [0:0]&lt;br /&gt;
:FWD_V4_LANONLY - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for input packets (for host itself)&lt;br /&gt;
:IN_ETH1 - [0:0]&lt;br /&gt;
:IN_PPP0 - [0:0]&lt;br /&gt;
:IN_TUN0 - [0:0]&lt;br /&gt;
:IN_V1_MGMT - [0:0]&lt;br /&gt;
:IN_V2_ISP - [0:0]&lt;br /&gt;
:IN_V3_VPN - [0:0]&lt;br /&gt;
:IN_V4_LANONLY - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a drop/reject chains&lt;br /&gt;
:LOG_DROP - [0:0]&lt;br /&gt;
:LOG_DROP_BOGON - [0:0]&lt;br /&gt;
:LOG_REJECT_LANONLY - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create an output chains&lt;br /&gt;
:OUT_PPP0 - [0:0]&lt;br /&gt;
:OUT_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Pass input packet to corresponding rule chain&lt;br /&gt;
-A INPUT -i lo -j ACCEPT&lt;br /&gt;
-A INPUT -i eth0 -j IN_V1_MGMT&lt;br /&gt;
-A INPUT -i eth0.2 -j IN_V2_ISP&lt;br /&gt;
-A INPUT -i eth0.3 -j IN_V3_VPN&lt;br /&gt;
-A INPUT -i eth0.4 -j IN_V4_LANONLY&lt;br /&gt;
-A INPUT -i eth1 -j IN_ETH1&lt;br /&gt;
-A INPUT -i ppp0 -j IN_PPP0&lt;br /&gt;
-A INPUT -i tun0 -j IN_TUN0&lt;br /&gt;
&lt;br /&gt;
# Track forwarded packets&lt;br /&gt;
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass forwarded packet to corresponding rule chain&lt;br /&gt;
-A FORWARD -i eth0 -j FWD_V1_MGMT&lt;br /&gt;
-A FORWARD -i eth0.2 -j FWD_V2_ISP&lt;br /&gt;
-A FORWARD -i eth0.3 -j FWD_V3_VPN&lt;br /&gt;
-A FORWARD -i eth0.4 -j FWD_V4_LANONLY&lt;br /&gt;
-A FORWARD -i eth1 -j FWD_ETH1&lt;br /&gt;
-A FORWARD -i ppp0 -j FWD_PPP0&lt;br /&gt;
-A FORWARD -i tun0 -j FWD_TUN0&lt;br /&gt;
&lt;br /&gt;
# Rate limit ICMPv6 PING&lt;br /&gt;
-A FORWARD -p ipv6-icmp -m icmp6 --icmpv6-type 128 -m limit --limit 30/min -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass output interface to corresponding chain&lt;br /&gt;
-A OUTPUT -o ppp0 -j OUT_PPP0&lt;br /&gt;
-A OUTPUT -o tun0 -j OUT_TUN0&lt;br /&gt;
&lt;br /&gt;
# Forward VLAN2 to ISP&lt;br /&gt;
-A FWD_V2_ISP -s 2001:0db8:1234:ffff::/64 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward VLAN3 to VPN&lt;br /&gt;
-A FWD_V3_VPN -o tun0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked PPP0 connection&lt;br /&gt;
-A IN_PPP0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on PPP0&lt;br /&gt;
-A IN_PPP0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Allow and rate limit ICMP&lt;br /&gt;
-A IN_PPP0 -p ipv6-icmp -m icmp6 --icmpv6-type 2 -j ACCEPT&lt;br /&gt;
-A IN_PPP0 -p ipv6-icmp -m limit --limit 30/sec -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow DHCPv6 PD on Link Local from ISP&lt;br /&gt;
-A IN_PPP0 -s fe80::/10 -p udp -m udp --sport 547 --dport 546 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on PPP0&lt;br /&gt;
-A IN_PPP0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked TUN0 connection&lt;br /&gt;
-A IN_TUN0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets on VPN&lt;br /&gt;
-A IN_TUN0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Allow tracked connections in from ppp0 to VLAN2&lt;br /&gt;
-A IN_V2_ISP -s 2001:0db8:1234:ffff::/64 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow ICMP in from VLAN2&lt;br /&gt;
-A IN_V2_ISP -p ipv6-icmp -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow tracked connections in from tun0 to VLAN3&lt;br /&gt;
-A IN_V3_VPN -s fde4:8dba:82e1:fff3::/64 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow ICMP in from VLAN3&lt;br /&gt;
-A IN_V3_VPN -p ipv6-icmp -j ACCEPT&lt;br /&gt;
COMMIT&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add ip6tables to the default run level:&lt;br /&gt;
&lt;br /&gt;
{{cmd|rc-update add ip6tables default}}&lt;br /&gt;
&lt;br /&gt;
== nftables ==&lt;br /&gt;
&lt;br /&gt;
Optionally one might decide to use nftables instead of old legacy iptables. nftables has a few improvements such as a cleaner rule syntax, ipv4 and ipv6 is all in one table, and the ability to use [https://wiki.nftables.org/wiki-nftables/index.php/Scripting#Defining_variables variables], [https://wiki.nftables.org/wiki-nftables/index.php/Sets sets], [https://wiki.nftables.org/wiki-nftables/index.php/Dictionaries dictionaries] and [https://wiki.nftables.org/wiki-nftables/index.php/Maps maps]. This also means you no longer need to worry about using [[Linux Router with VPN on a Raspberry Pi#Installing_ipset | ipset]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/usr/sbin/nft -f&lt;br /&gt;
&lt;br /&gt;
flush ruleset&lt;br /&gt;
&lt;br /&gt;
###################################################################################&lt;br /&gt;
#&lt;br /&gt;
#| Address                            | Route To        | Interface | VLAN | Mark |&lt;br /&gt;
#|------------------------------------|-----------------|-----------|------|------|&lt;br /&gt;
#| 192.168.0.0/24                     | Modem           | eth1      | 1    |      |&lt;br /&gt;
#| 192.168.1.0/24                     | Nowhere         | eth0      | 1    |      |&lt;br /&gt;
#| 192.168.2.0/24                     | ISP             | eth0.2    | 2    | 0x1  |&lt;br /&gt;
#| 2001:0db8:1234:ffff::/64           | ISP             | eth0.2    | 2    | 0x1  |&lt;br /&gt;
#| 192.168.3.0/24                     | VPN             | eth0.3    | 3    | 0x2  |&lt;br /&gt;
#| fde4:8dba:82e1:fff3::/64           | VPN             | eth0.3    | 3    | 0x2  |&lt;br /&gt;
#| 192.168.4.0/24                     | Nowhere         | eth0.4    | 4    |      |&lt;br /&gt;
#| &amp;lt;ip_of_exception&amp;gt;                  | Exception (ISP) | eth0.2    | 4    | 0x1  |&lt;br /&gt;
#&lt;br /&gt;
###################################################################################&lt;br /&gt;
&lt;br /&gt;
define net_v0_ip4 = 192.168.0.0/24&lt;br /&gt;
define net_v1_ip4 = 192.168.1.0/24&lt;br /&gt;
define net_v2_ip4 = 192.168.2.0/24&lt;br /&gt;
define net_v3_ip4 = 192.168.3.0/24&lt;br /&gt;
define network_v4_ip4 = 192.168.4.0/24&lt;br /&gt;
define mailserver = &amp;lt;ip_of_exception&amp;gt;&lt;br /&gt;
define modem = 192.168.0.2&lt;br /&gt;
define router = 192.168.1.1&lt;br /&gt;
define printer = 192.168.4.9&lt;br /&gt;
define workstation = 192.168.3.30&lt;br /&gt;
define wifi_aps = { 192.168.1.10, 192.168.1.11 }&lt;br /&gt;
define net_ula_v1_ip6 = fde4:8dba:82e1:fff1::/64&lt;br /&gt;
define net_gua_v2_ip6 = 2001:0db8:1234:ffff::/64&lt;br /&gt;
define net_ula_v3_ip6 = fde4:8dba:82e1:fff3::/64&lt;br /&gt;
define net_ula_v4_ip6 = fde4:8dba:82e1:fff4::/64&lt;br /&gt;
define vpn_gateway = 172.16.32.1&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mangle Table (IPv4)&lt;br /&gt;
# Markings happen: whether they be 0x1 or 0x2&lt;br /&gt;
#&lt;br /&gt;
table ip mangle {&lt;br /&gt;
	chain PREROUTING {&lt;br /&gt;
		type filter hook prerouting priority mangle; policy accept;&lt;br /&gt;
&lt;br /&gt;
		# Restore CONNMARK to the MARK (If one doesn&#039;t exist then no mark is set)&lt;br /&gt;
		mark set ct mark&lt;br /&gt;
&lt;br /&gt;
		# If packet MARK is 2, then it means there is already a&lt;br /&gt;
		# connection mark and theoriginal packet came in on VPN&lt;br /&gt;
		ip saddr $net_v3_ip4 mark 0x00000002&lt;br /&gt;
&lt;br /&gt;
		# Check mail server are 0x1&lt;br /&gt;
		ip saddr $net_v3_ip4 ip daddr $mailserver mark 0x00000001&lt;br /&gt;
&lt;br /&gt;
		# Mark packets coming from VLAN3 as 0x2&lt;br /&gt;
		ip saddr $net_v3_ip4 mark set 0x00000002&lt;br /&gt;
&lt;br /&gt;
		# If packet MARK is 1, then it means there is already a&lt;br /&gt;
		# connection mark and the original packet came in on ISP&lt;br /&gt;
		ip saddr $net_v2_ip4 mark 0x00000001&lt;br /&gt;
&lt;br /&gt;
		# Mark packets coming from VLAN2 as 0x1&lt;br /&gt;
		ip saddr $net_v2_ip4 mark set 0x00000001&lt;br /&gt;
&lt;br /&gt;
		# Mark mail server as 0x1&lt;br /&gt;
		ip saddr $net_v3_ip4 ip daddr $mailserver mark set 0x00000001&lt;br /&gt;
&lt;br /&gt;
		# Strip mark if packet is destined for modem&lt;br /&gt;
		ip daddr $modem mark set 0x00000000&lt;br /&gt;
&lt;br /&gt;
		# Strip mark if packet is destined for printer&lt;br /&gt;
		ip daddr $printer mark set 0x00000000&lt;br /&gt;
&lt;br /&gt;
		# Save MARK to CONNMARK (remember iproute can&#039;t see CONNMARKs)&lt;br /&gt;
		ct mark set mark&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Filter Table (IPv4)&lt;br /&gt;
# Filtering things coming IN and OUT of the router&lt;br /&gt;
#&lt;br /&gt;
table ip filter {&lt;br /&gt;
	# Create rule chain per input interface for input packets (for host itself)&lt;br /&gt;
	chain INPUT {&lt;br /&gt;
		type filter hook input priority filter; policy drop;&lt;br /&gt;
		iifname &amp;quot;lo&amp;quot; accept&lt;br /&gt;
		iifname &amp;quot;eth0&amp;quot; jump IN_V1_MGMT&lt;br /&gt;
		iifname &amp;quot;eth0.2&amp;quot; jump IN_V2_ISP&lt;br /&gt;
		iifname &amp;quot;eth0.3&amp;quot; jump IN_V3_VPN&lt;br /&gt;
		iifname &amp;quot;eth1&amp;quot; jump IN_ETH1&lt;br /&gt;
		iifname &amp;quot;tun0&amp;quot; jump IN_TUN0&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	# Create rule chain per input interface for forwarding packets&lt;br /&gt;
	chain FORWARD {&lt;br /&gt;
		type filter hook forward priority filter; policy drop;&lt;br /&gt;
		ct state established,related accept&lt;br /&gt;
		iifname &amp;quot;eth0&amp;quot; jump FWD_V1_MGMT&lt;br /&gt;
		iifname &amp;quot;eth0.2&amp;quot; jump FWD_V2_ISP&lt;br /&gt;
		iifname &amp;quot;eth0.3&amp;quot; jump FWD_V3_VPN&lt;br /&gt;
		iifname &amp;quot;eth1&amp;quot; jump FWD_ETH1&lt;br /&gt;
		iifname &amp;quot;tun0&amp;quot; jump FWD_TUN0&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain FWD_ETH1 {&lt;br /&gt;
		ip saddr $modem ip daddr $net_v2_ip4 tcp sport http ct state established,new accept&lt;br /&gt;
		ip saddr $modem ip daddr $net_v3_ip4 tcp sport http ct state established,new accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain FWD_TUN0 {&lt;br /&gt;
		# Forward bittorrent&lt;br /&gt;
		ip daddr $workstation tcp dport 20001 ct state established,new accept&lt;br /&gt;
		ip daddr $workstation udp dport 20001 ct state established,new accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain FWD_V1_MGMT {&lt;br /&gt;
		# Forward established packets to hosts in VLAN2/3 from printer&lt;br /&gt;
		ip saddr $printer ip daddr $net_v2_ip4 ct state established,new accept&lt;br /&gt;
		ip saddr $printer ip daddr $net_v3_ip4 ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Forward established packets to hosts in VLAN2/3 from modem&lt;br /&gt;
		ip saddr $modem ip daddr $net_v3_ip4 tcp sport http ct state established,new accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain FWD_V2_ISP {&lt;br /&gt;
		# Forward traffic from VLAN2 to Modem&lt;br /&gt;
		ip daddr $modem tcp dport http accept&lt;br /&gt;
&lt;br /&gt;
		# Forward traffic from VLAN2 to printer&lt;br /&gt;
		ip daddr $printer accept&lt;br /&gt;
&lt;br /&gt;
		# Allow rest from VLAN2&lt;br /&gt;
		ip saddr $net_v2_ip4 accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain FWD_V3_VPN {&lt;br /&gt;
		# Forward traffic from VLAN3 to Modem&lt;br /&gt;
		ip daddr $modem tcp dport http accept&lt;br /&gt;
&lt;br /&gt;
		# Forward traffic from VLAN3 to printer&lt;br /&gt;
		ip daddr $printer accept&lt;br /&gt;
&lt;br /&gt;
		# Allow rest from VLAN3&lt;br /&gt;
		ip saddr $net_v3_ip4 accept&lt;br /&gt;
&lt;br /&gt;
		# Allow mailserver direct from VLAN3 out&lt;br /&gt;
		oifname &amp;quot;eth1&amp;quot; ip saddr $net_v3_ip4 ip daddr $mailserver accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain IN_ETH1 {&lt;br /&gt;
		# Accept incoming tracked connection from eth1&lt;br /&gt;
		ip saddr $router ip daddr $modem tcp sport http ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow incoming NTP in from VLAN1&lt;br /&gt;
		ip saddr $net_v0_ip4 udp dport ntp ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Log dropped packets coming in on eth1&lt;br /&gt;
		ct state established,related accept&lt;br /&gt;
		jump LOG_DROP&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain IN_TUN0 {&lt;br /&gt;
		# Log dropped packets coming in on tun0&lt;br /&gt;
		ct state established,related accept&lt;br /&gt;
		jump LOG_DROP&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain IN_V1_MGMT {&lt;br /&gt;
		# Allow in established packets from printer to VLAN2 and VLAN3&lt;br /&gt;
		ip saddr $printer ip daddr $net_v2_ip4 ct state established,new accept&lt;br /&gt;
		ip saddr $printer ip daddr $net_v3_ip4 ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow NTP in from VLAN1&lt;br /&gt;
		ip saddr $net_v1_ip4 udp dport ntp ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# FreeRadius Clients&lt;br /&gt;
		ip saddr $wifi_aps tcp dport radius ct state established,new accept&lt;br /&gt;
		ip saddr $wifi_aps udp dport radius ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Ubiquiti UAP Device Discovery Broadcast&lt;br /&gt;
		ip saddr $wifi_aps udp dport 10001 ct state established,new accept&lt;br /&gt;
		ip saddr $wifi_aps udp dport 3478 ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow rest in from VLAN1&lt;br /&gt;
		ip saddr $net_v1_ip4 ct state established,new accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain IN_V2_ISP {&lt;br /&gt;
		# Allow ssh in from VLAN2&lt;br /&gt;
		ip saddr $net_v2_ip4 tcp dport ssh ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow DNS in from VLAN2&lt;br /&gt;
		ip saddr $net_v2_ip4 udp dport domain ct state new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow NTP in from VLAN2&lt;br /&gt;
		ip saddr $net_v2_ip4 udp dport ntp ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow rest from VLAN2&lt;br /&gt;
		ip saddr $net_v2_ip4 ct state established,new accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain IN_V3_VPN {&lt;br /&gt;
		# Allow ssh in from VLAN3&lt;br /&gt;
		ip saddr $net_v3_ip4 tcp dport ssh ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow DNS in from VLAN3&lt;br /&gt;
		ip saddr $net_v3_ip4 udp dport domain ct state new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow NTP in from VLAN3&lt;br /&gt;
		ip saddr $net_v3_ip4 udp dport ntp ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow rest from VLAN3&lt;br /&gt;
		ip saddr $net_v3_ip4 ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow mailserver direct from eth1 from VLAN3&lt;br /&gt;
		oifname &amp;quot;eth1&amp;quot; ip saddr $net_v3_ip4 ip daddr $mailserver accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain LOG_DROP {&lt;br /&gt;
		log prefix &amp;quot;Dropped v4: &amp;quot; drop&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# NAT Table (IPv4)&lt;br /&gt;
# Translation of packets happens to our single external address&lt;br /&gt;
# Forwarding of ports through our public interfaces&lt;br /&gt;
#&lt;br /&gt;
table ip nat {&lt;br /&gt;
	chain PREROUTING {&lt;br /&gt;
		type nat hook prerouting priority dstnat; policy accept;&lt;br /&gt;
		# Port forwarding for Bittorrent on workstation through VPN&lt;br /&gt;
		iifname &amp;quot;tun0&amp;quot; tcp dport 20001 dnat to $workstation&lt;br /&gt;
		iifname &amp;quot;tun0&amp;quot; udp dport 20001 dnat to $workstation&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain POSTROUTING {&lt;br /&gt;
		type nat hook postrouting priority srcnat; policy accept;&lt;br /&gt;
&lt;br /&gt;
		# Allows routing to our modem subnet so we can access the web interface&lt;br /&gt;
		oifname &amp;quot;eth0&amp;quot; ip saddr $net_v2_ip4 ip daddr $modem tcp dport http masquerade&lt;br /&gt;
		oifname &amp;quot;eth0&amp;quot; ip saddr $net_v3_ip4 ip daddr $modem tcp dport http masquerade&lt;br /&gt;
&lt;br /&gt;
		# Allows routing to printer&lt;br /&gt;
		oifname &amp;quot;eth0&amp;quot; ip saddr $net_v2_ip4 ip daddr $printer masquerade&lt;br /&gt;
		oifname &amp;quot;eth0&amp;quot; ip saddr $net_v3_ip4 ip daddr $printer masquerade&lt;br /&gt;
&lt;br /&gt;
		# Masquerade behind NAT&lt;br /&gt;
		oifname &amp;quot;tun0&amp;quot; masquerade&lt;br /&gt;
		oifname &amp;quot;eth1&amp;quot; masquerade&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Filter Table (IPv6)&lt;br /&gt;
# Filtering things coming IN and OUT of the router&lt;br /&gt;
#&lt;br /&gt;
table ip6 filter {&lt;br /&gt;
	chain INPUT {&lt;br /&gt;
		# Create rule chain per input interface for input packets (for host itself)&lt;br /&gt;
		type filter hook input priority filter; policy drop;&lt;br /&gt;
		iifname &amp;quot;lo&amp;quot; accept&lt;br /&gt;
		iifname &amp;quot;eth0.2&amp;quot; jump IN_V2_ISP&lt;br /&gt;
		iifname &amp;quot;eth0.3&amp;quot; jump IN_V3_VPN&lt;br /&gt;
		iifname &amp;quot;eth1&amp;quot; jump IN_ETH1&lt;br /&gt;
		iifname &amp;quot;tun0&amp;quot; jump IN_TUN0&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain FORWARD {&lt;br /&gt;
		# Track forwarded packets&lt;br /&gt;
		type filter hook forward priority filter; policy drop;&lt;br /&gt;
		ct state established,related accept&lt;br /&gt;
&lt;br /&gt;
		# Create rule chain per input interface for forwarding packets&lt;br /&gt;
		iifname &amp;quot;eth0.2&amp;quot; jump FWD_V2_ISP&lt;br /&gt;
		iifname &amp;quot;eth0.3&amp;quot; jump FWD_V3_VPN&lt;br /&gt;
		# iifname &amp;quot;tun0&amp;quot; jump FWD_TUN0&lt;br /&gt;
&lt;br /&gt;
		# Rate limit ICMPv6 PING&lt;br /&gt;
		icmpv6 type echo-request limit rate 30/minute accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain OUTPUT {&lt;br /&gt;
		type filter hook output priority filter; policy accept;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	# chain FWD_TUN0 {&lt;br /&gt;
	# We could forward ports IPv6 ports through the VPN here&lt;br /&gt;
	# }&lt;br /&gt;
&lt;br /&gt;
	chain FWD_V2_ISP {&lt;br /&gt;
		# Forward VLAN2 to ISP&lt;br /&gt;
		ip6 saddr $net_gua_v2_ip6 accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain FWD_V3_VPN {&lt;br /&gt;
		# Forward VLAN3 to VPN&lt;br /&gt;
		ip6 saddr $net_ula_v3_ip6 accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain IN_ETH1 {&lt;br /&gt;
		# Accept incoming tracked ETH1 connection&lt;br /&gt;
		ct state established,related accept&lt;br /&gt;
&lt;br /&gt;
		# Allow and rate limit ICMP&lt;br /&gt;
		icmpv6 type packet-too-big accept&lt;br /&gt;
		meta l4proto ipv6-icmp limit rate 30/second accept&lt;br /&gt;
&lt;br /&gt;
		# Allow DHCPv6 PD on Link Local from ISP&lt;br /&gt;
		ip6 saddr fe80::/10 udp sport dhcpv6-server udp dport dhcpv6-client ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow Router advetisements/solict form ISP&lt;br /&gt;
		ip6 saddr fe80::/10 icmpv6 type nd-router-advert accept&lt;br /&gt;
		ip6 saddr fe80::/10 icmpv6 type nd-neighbor-solicit accept&lt;br /&gt;
		ip6 saddr fe80::/10 icmpv6 type nd-neighbor-advert accept&lt;br /&gt;
&lt;br /&gt;
		# Log dropped packets coming in on ETH1&lt;br /&gt;
		jump LOG_DROP&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain IN_TUN0 {&lt;br /&gt;
		# Accept incoming tracked TUN0 connection&lt;br /&gt;
		ct state established,related accept&lt;br /&gt;
&lt;br /&gt;
		# Allow and rate limit ICMP&lt;br /&gt;
		icmpv6 type packet-too-big accept&lt;br /&gt;
		meta l4proto ipv6-icmp limit rate 30/second accept&lt;br /&gt;
&lt;br /&gt;
		# Log dropped packets on VPN&lt;br /&gt;
		jump LOG_DROP&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain IN_V2_ISP {&lt;br /&gt;
		# Allow tracked connections in from ETH1 to VLAN2&lt;br /&gt;
		ip6 saddr $net_gua_v2_ip6 ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow ICMP in from VLAN2&lt;br /&gt;
		meta l4proto ipv6-icmp accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain IN_V3_VPN {&lt;br /&gt;
		# Allow tracked connections in from tun0 to VLAN3&lt;br /&gt;
		ip6 saddr $net_ula_v3_ip6 ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow ICMP in from VLAN3&lt;br /&gt;
		meta l4proto ipv6-icmp accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain LOG_DROP {&lt;br /&gt;
		log prefix &amp;quot;Dropped v6: &amp;quot; drop&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mangle Table (IPv6)&lt;br /&gt;
#&lt;br /&gt;
table ip6 mangle {&lt;br /&gt;
	chain PREROUTING {&lt;br /&gt;
		type filter hook prerouting priority mangle; policy accept;&lt;br /&gt;
&lt;br /&gt;
		# Drop unusually large ping packets&lt;br /&gt;
		icmpv6 type echo-request meta length 170-65535 drop&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# NAT Table (IPv6)&lt;br /&gt;
# Translation of packets happens to our single external address&lt;br /&gt;
# only used for the VPN as our ISP give us a /56 range to split up&lt;br /&gt;
#&lt;br /&gt;
table ip6 nat {&lt;br /&gt;
	chain POSTROUTING {&lt;br /&gt;
		type nat hook postrouting priority srcnat; policy accept;&lt;br /&gt;
		oifname &amp;quot;tun0&amp;quot; masquerade&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Raw Table - IPv4/IPv6&lt;br /&gt;
#&lt;br /&gt;
table inet raw {&lt;br /&gt;
 	set bogon-bn-nonagg-set {&lt;br /&gt;
		type ipv4_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { 0.0.0.0/8, 10.0.0.0/8,&lt;br /&gt;
			     100.64.0.0/10, 127.0.0.0/8,&lt;br /&gt;
			     169.254.0.0/16, 172.16.0.0/12,&lt;br /&gt;
			     192.0.0.0/24, 192.0.2.0/24,&lt;br /&gt;
			     192.168.0.0/16, 198.18.0.0/15,&lt;br /&gt;
			     198.51.100.0/24, 203.0.113.0/24,&lt;br /&gt;
			     224.0.0.0/4, 240.0.0.0-255.255.255.255 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	set lo-allowed-net-ip4-set {&lt;br /&gt;
		type ipv4_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { 127.0.0.0/8 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	set eth0-allowed-net-ip4-set {&lt;br /&gt;
		type ipv4_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { $net_v1_ip4 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	set eth0.2-allowed-net-ip4-set {&lt;br /&gt;
		type ipv4_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { 192.168.2.0/24, 192.168.3.0/24,&lt;br /&gt;
			     192.168.4.0/24 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	set eth0.3-allowed-net-ip4-set {&lt;br /&gt;
		type ipv4_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { 192.168.2.0/24, 192.168.3.0/24,&lt;br /&gt;
			     192.168.4.0/24 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	set eth0.4-allowed-net-ip4-set {&lt;br /&gt;
		type ipv4_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { 192.168.2.0/24, 192.168.3.0/24,&lt;br /&gt;
			     192.168.4.0/24 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	set eth1-allowed-net-ip4-set {&lt;br /&gt;
		type ipv4_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { 192.168.0.0/30, 255.255.255.255 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	set tun0-allowed-net-ip4-set {&lt;br /&gt;
		type ipv4_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { 172.16.32.0/20, 172.16.48.0/20 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	set lo-allowed-net-ip6-set {&lt;br /&gt;
		type ipv6_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { ::1/128 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	set eth0-allowed-net-ip6-set {&lt;br /&gt;
		type ipv6_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { fde4:8dba:82e1:fff1::/64,&lt;br /&gt;
			     fe80::/10 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	set eth0.2-allowed-net-ip6-set {&lt;br /&gt;
		type ipv6_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { 2001:0db8:1234:ffff::/64,&lt;br /&gt;
			     fe80::/10 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	set eth0.3-allowed-net-ip6-set {&lt;br /&gt;
		type ipv6_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { fde4:8dba:82e1:fff3::/64,&lt;br /&gt;
			     fe80::/10 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	set eth0.4-allowed-net-ip6-set {&lt;br /&gt;
		type ipv6_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { fde4:8dba:82e1:fff4::/64,&lt;br /&gt;
			     fe80::/10 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain PREROUTING {&lt;br /&gt;
		type filter hook prerouting priority raw; policy accept;&lt;br /&gt;
&lt;br /&gt;
		# Allows traffic from NNTP/DNS ovpn.to&lt;br /&gt;
		iifname &amp;quot;tun0&amp;quot; ip saddr $gateway_ovpn_to accept;&lt;br /&gt;
&lt;br /&gt;
		# Allows traffic originating from router to gateway.ovpn.to&lt;br /&gt;
		ip daddr $gateway_ovpn_to accept&lt;br /&gt;
&lt;br /&gt;
		# Allows traffic originating from router to modem&lt;br /&gt;
		ip daddr $modem accept&lt;br /&gt;
&lt;br /&gt;
		# Block specified bogons coming in from ISP and VPN&lt;br /&gt;
		# (unlikely to happen as they filter them on their router)&lt;br /&gt;
		#iifname &amp;quot;eth1&amp;quot; ip saddr @bogon-bn-nonagg-set jump LOG_DROP_BOGON_PR;&lt;br /&gt;
		#iifname &amp;quot;tun0&amp;quot; ip saddr @bogon-bn-nonagg-set jump LOG_DROP_BOGON_PR;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain OUTPUT {&lt;br /&gt;
		type filter hook output priority raw; policy accept;&lt;br /&gt;
&lt;br /&gt;
		# Allows my excepted ranges&lt;br /&gt;
		iifname vmap { lo : jump lo-allowed-net, eth0 : jump eth0-allowed-net,&lt;br /&gt;
		    eth0.2 : jump eth0.2-allowed-net, eth0.3 : jump eth0.3-allowed-net,&lt;br /&gt;
		    eth0.4 : jump eth0.4-allowed-net, eth1 : jump eth1-allowed-net,&lt;br /&gt;
		    tun0 : jump tun0-allowed-net };&lt;br /&gt;
&lt;br /&gt;
		oifname vmap { lo : jump lo-allowed-net, eth0 : jump eth0-allowed-net,&lt;br /&gt;
		    eth0.2 : jump eth0.2-allowed-net, eth0.3 : jump eth0.3-allowed-net,&lt;br /&gt;
		    eth0.4 : jump eth0.4-allowed-net, eth1 : jump eth1-allowed-net,&lt;br /&gt;
		    tun0 : jump tun0-allowed-net };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
		# Drop any remaining bogons that try to leave the router&lt;br /&gt;
		oifname &amp;quot;eth1&amp;quot; ip daddr @bogon-bn-nonagg-set jump LOG_DROP_BOGON_IN;&lt;br /&gt;
		oifname &amp;quot;tun0&amp;quot; ip daddr @bogon-bn-nonagg-set jump LOG_DROP_BOGON_IN;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain lo-allowed-net {&lt;br /&gt;
		ip saddr @lo-allowed-net-ip4-set accept&lt;br /&gt;
		ip6 saddr @lo-allowed-net-ip6-set accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain eth0-allowed-net {&lt;br /&gt;
		ip saddr @eth0-allowed-net-ip4-set accept&lt;br /&gt;
		ip6 saddr @eth0-allowed-net-ip6-set accept&lt;br /&gt;
		#log prefix &amp;quot;Allowed packet allow net 0: &amp;quot; level info&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain eth0.2-allowed-net {&lt;br /&gt;
		ip saddr @eth0.2-allowed-net-ip4-set accept&lt;br /&gt;
		ip6 saddr @eth0.2-allowed-net-ip6-set accept&lt;br /&gt;
		#log prefix &amp;quot;Allowed packet allow net 2: &amp;quot; level info&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain eth0.3-allowed-net {&lt;br /&gt;
		ip saddr @eth0.3-allowed-net-ip4-set accept&lt;br /&gt;
		ip6 saddr @eth0.3-allowed-net-ip6-set accept&lt;br /&gt;
		#log prefix &amp;quot;Allowed packet allow net 3: &amp;quot; level info&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain eth0.4-allowed-net {&lt;br /&gt;
		ip saddr @eth0.4-allowed-net-ip4-set accept&lt;br /&gt;
		ip6 saddr @eth0.4-allowed-net-ip6-set accept&lt;br /&gt;
		#log prefix &amp;quot;Allowed packet allow net 4: &amp;quot; level info&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain eth1-allowed-net {&lt;br /&gt;
		ip saddr @eth1-allowed-net-ip4-set accept&lt;br /&gt;
		#log prefix &amp;quot;Allowed packet allow eth1: &amp;quot; level info&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
    chain tun0-allowed-net {&lt;br /&gt;
		ip saddr @tun0-allowed-net-ip4-set accept&lt;br /&gt;
		#log prefix &amp;quot;Allowed packet allow tun0: &amp;quot; level info&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain LOG_DROP_BOGON_IN {&lt;br /&gt;
		log prefix &amp;quot;Dropped Bogon outgoing &amp;quot; drop&lt;br /&gt;
	}&lt;br /&gt;
	chain LOG_DROP_BOGON_OUT {&lt;br /&gt;
		log prefix &amp;quot;Dropped Bogon incoming &amp;quot; drop&lt;br /&gt;
	}&lt;br /&gt;
	chain LOG_DROP_BOGON_PR {&lt;br /&gt;
		log prefix &amp;quot;Dropped Bogon prerouting &amp;quot; drop&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add nftables to the default run level:&lt;br /&gt;
&lt;br /&gt;
{{cmd|rc-update add nftables default}}&lt;br /&gt;
&lt;br /&gt;
= Router Advertisements =&lt;br /&gt;
&lt;br /&gt;
Now we need to configure radvd to give router advertisements to out VLANs for addressing and routing.&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add radvd}}&lt;br /&gt;
&lt;br /&gt;
Once radvd is installed, you may configure it:&lt;br /&gt;
&lt;br /&gt;
== /etc/radvd.conf ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;interface eth0.2 {&lt;br /&gt;
&lt;br /&gt;
  # We are sending advertisements (route)&lt;br /&gt;
  AdvSendAdvert on;&lt;br /&gt;
&lt;br /&gt;
  # When set, host use the administered (stateful) protocol&lt;br /&gt;
  # for address autoconfiguration. The use of this flag is&lt;br /&gt;
  # described in RFC 4862&lt;br /&gt;
  AdvManagedFlag on;&lt;br /&gt;
&lt;br /&gt;
  # When set, host use the administered (stateful) protocol&lt;br /&gt;
  # for address autoconfiguration. For other (non-address)&lt;br /&gt;
  # information.&lt;br /&gt;
  # The use of this flag is described in RFC 4862&lt;br /&gt;
  AdvOtherConfigFlag on;&lt;br /&gt;
&lt;br /&gt;
  # Suggested Maximum Transmission setting for using the&lt;br /&gt;
  # Hurricane Electric Tunnel Broker.&lt;br /&gt;
  # AdvLinkMTU 1480;&lt;br /&gt;
&lt;br /&gt;
  # We have native Dual Stack IPv6 so we can use the regular MTU&lt;br /&gt;
  # http://blogs.cisco.com/enterprise/ipv6-mtu-gotchas-and-other-icmp-issues&lt;br /&gt;
  AdvLinkMTU 1500;&lt;br /&gt;
  &lt;br /&gt;
  prefix ::/64 {&lt;br /&gt;
    AdvOnLink on;&lt;br /&gt;
    AdvAutonomous on; ## SLAAC based on EUI&lt;br /&gt;
    AdvRouterAddr on;&lt;br /&gt;
  };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
interface eth0.3 {&lt;br /&gt;
&lt;br /&gt;
  AdvSendAdvert on;&lt;br /&gt;
  AdvManagedFlag on;&lt;br /&gt;
  AdvOtherConfigFlag on;&lt;br /&gt;
  AdvLinkMTU 1500;&lt;br /&gt;
&lt;br /&gt;
  # Helps the route not get lost when on WiFi with packet loss&lt;br /&gt;
  MaxRtrAdvInterval 30;&lt;br /&gt;
  AdvDefaultLifetime 9000;&lt;br /&gt;
&lt;br /&gt;
  prefix fde4:8dba:82e1:fff3::/64 {&lt;br /&gt;
    AdvOnLink on;&lt;br /&gt;
    AdvAutonomous on; ## SLAAC based on EUI&lt;br /&gt;
  };&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add radvd to the default run level:&lt;br /&gt;
&lt;br /&gt;
{{cmd|rc-update add radvd default}}&lt;br /&gt;
&lt;br /&gt;
= DHCP =&lt;br /&gt;
You may decide you want more control over your network address assignment. I like to have certain hosts get certain addresses when they connect on a particular VLAN, note v2 and v3. You can do this with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;authoritative;&lt;br /&gt;
ddns-update-style interim;&lt;br /&gt;
&lt;br /&gt;
subnet 192.168.1.0 netmask 255.255.255.0 {&lt;br /&gt;
    range 192.168.1.21 192.168.1.240;&lt;br /&gt;
    option subnet-mask 255.255.255.0;&lt;br /&gt;
    option broadcast-address 192.168.1.255;&lt;br /&gt;
    option routers 192.168.1.1;&lt;br /&gt;
    option ntp-servers 192.168.1.1;&lt;br /&gt;
    option domain-name-servers 192.168.1.1;&lt;br /&gt;
    allow unknown-clients;&lt;br /&gt;
&lt;br /&gt;
        host wifi_ap {&lt;br /&gt;
            hardware ethernet &amp;lt;mac_addess&amp;gt;;&lt;br /&gt;
            fixed-address 192.168.1.11;&lt;br /&gt;
            option subnet-mask 255.255.255.0;&lt;br /&gt;
            option routers 192.168.1.1;&lt;br /&gt;
            option host-name &amp;quot;&amp;lt;hostname&amp;gt;&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
subnet 192.168.2.0 netmask 255.255.255.0 {&lt;br /&gt;
    range 192.168.2.40 192.168.2.240;&lt;br /&gt;
    option subnet-mask 255.255.255.0;&lt;br /&gt;
    option broadcast-address 192.168.2.255;&lt;br /&gt;
    option routers 192.168.2.1;&lt;br /&gt;
    option ntp-servers 192.168.2.1;&lt;br /&gt;
    option domain-name-servers 192.168.2.1;&lt;br /&gt;
    allow unknown-clients;&lt;br /&gt;
&lt;br /&gt;
        host host-v2 {&lt;br /&gt;
            hardware ethernet &amp;lt;mac_address&amp;gt;;&lt;br /&gt;
            fixed-address 192.168.2.30;&lt;br /&gt;
            option subnet-mask 255.255.255.0;&lt;br /&gt;
            option broadcast-address 192.168.2.255;&lt;br /&gt;
            option routers 192.168.2.1;&lt;br /&gt;
            option host-name &amp;quot;&amp;lt;hostname&amp;gt;&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
subnet 192.168.3.0 netmask 255.255.255.0 {&lt;br /&gt;
    range 192.168.3.20 192.168.3.240;&lt;br /&gt;
    option subnet-mask 255.255.255.0;&lt;br /&gt;
    option broadcast-address 192.168.3.255;&lt;br /&gt;
    option routers 192.168.3.1;&lt;br /&gt;
    option ntp-servers 192.168.3.1;&lt;br /&gt;
    option domain-name-servers 192.168.3.1;&lt;br /&gt;
    ignore unknown-clients;&lt;br /&gt;
&lt;br /&gt;
        host host-v3 {&lt;br /&gt;
            hardware ethernet &amp;lt;mac_address&amp;gt;;&lt;br /&gt;
            fixed-address 192.168.3.30;&lt;br /&gt;
            option subnet-mask 255.255.255.0;&lt;br /&gt;
            option broadcast-address 192.168.3.255;&lt;br /&gt;
            option routers 192.168.3.1;&lt;br /&gt;
            option host-name &amp;quot;&amp;lt;hostname&amp;gt;&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
subnet 192.168.4.0 netmask 255.255.255.0 {&lt;br /&gt;
    range 192.168.4.40 192.168.4.240;&lt;br /&gt;
    option subnet-mask 255.255.255.0;&lt;br /&gt;
    option broadcast-address 192.168.4.255;&lt;br /&gt;
    option routers 192.168.4.1;&lt;br /&gt;
    option ntp-servers 192.168.4.1;&lt;br /&gt;
    option domain-name-servers 192.168.4.1;&lt;br /&gt;
&lt;br /&gt;
    host printer {&lt;br /&gt;
            hardware ethernet &amp;lt;PRINTER_MAC_ADDRESS&amp;gt;;&lt;br /&gt;
            fixed-address 192.168.4.9;&lt;br /&gt;
            option subnet-mask 255.255.255.0;&lt;br /&gt;
            option broadcast-address 192.168.4.255;&lt;br /&gt;
            option routers 192.168.4.1;&lt;br /&gt;
            option host-name &amp;quot;My_Printer&amp;quot;;&lt;br /&gt;
        }   ignore unknown-clients;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For IPv6 I don&#039;t use DHCPv6 because Android doesn&#039;t support it. I just let SLAAC assign addresses.&lt;br /&gt;
&lt;br /&gt;
= VPN Tunnel VLAN3 =&lt;br /&gt;
&lt;br /&gt;
Install the necessary packages:&lt;br /&gt;
{{cmd|apk add openvpn iproute2 iputils}}&lt;br /&gt;
&lt;br /&gt;
== /etc/modules ==&lt;br /&gt;
You&#039;ll want to add the tun module&lt;br /&gt;
&amp;lt;pre&amp;gt;tun&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/iproute2/rt_tables ==&lt;br /&gt;
Add the two routing tables to the bottom of rt_tables. It should look something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;#&lt;br /&gt;
# reserved values&lt;br /&gt;
#&lt;br /&gt;
255	local&lt;br /&gt;
254	main&lt;br /&gt;
253	default&lt;br /&gt;
0	unspec&lt;br /&gt;
#&lt;br /&gt;
# local&lt;br /&gt;
#&lt;br /&gt;
#1	inr.ruhep&lt;br /&gt;
1 ISP&lt;br /&gt;
2 VPN&lt;br /&gt;
3 LAN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/fwmark_rules ==&lt;br /&gt;
In this file we want to put the fwmark rules and set the correct priorities.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Normal packets to go direct out WAN&lt;br /&gt;
/sbin/ip rule add fwmark 1 table ISP prio 100&lt;br /&gt;
/sbin/ip -6 rule add fwmark 1 table ISP prio 100&lt;br /&gt;
&lt;br /&gt;
# Put packets destined into VPN when VPN is up&lt;br /&gt;
/sbin/ip rule add fwmark 2 table VPN prio 200&lt;br /&gt;
/sbin/ip -6 rule add fwmark 2 table VPN prio 200&lt;br /&gt;
&lt;br /&gt;
# Prevent packets from being routed out when VPN is down.&lt;br /&gt;
# This prevents packets from falling back to the main table&lt;br /&gt;
# that has a priority of 32766&lt;br /&gt;
/sbin/ip rule add prohibit fwmark 2 prio 300&lt;br /&gt;
/sbin/ip -6 rule add prohibit fwmark 2 prio 300&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/route_LAN ==&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script adds the LAN routes.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Add routes from ISP to LAN&lt;br /&gt;
/sbin/ip route add 192.168.2.0/24 dev eth0.2 table LAN&lt;br /&gt;
&lt;br /&gt;
# Add route from VPN to LAN&lt;br /&gt;
/sbin/ip route add 192.168.3.0/24 dev eth0.3 table LAN&lt;br /&gt;
&lt;br /&gt;
# Add route from LAN to it&#039;s own table&lt;br /&gt;
/sbin/ip route add 192.168.4.0/24 dev eth0.4 table LAN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/ppp/ip-up ==&lt;br /&gt;
Next up we want to create the routes that should be run when PPP comes online. There are special hooks we can use in ip-up and ip-down to refer to the IP address, [https://ppp.samba.org/pppd.html#sect13 ppp man file - Scripts] You can also read about them in your man file if you have ppp-doc installed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by pppd when there&#039;s a successful ppp connection.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Flush out any old rules that might be there&lt;br /&gt;
/sbin/ip route flush table ISP&lt;br /&gt;
&lt;br /&gt;
# Add route to table from subnets on LAN&lt;br /&gt;
/sbin/ip route add 192.168.2.0/24 dev eth0.2 table ISP&lt;br /&gt;
/sbin/ip route add 192.168.3.0/24 dev eth0.3 table ISP&lt;br /&gt;
&lt;br /&gt;
# Add route from IP given by ISP to the table&lt;br /&gt;
/sbin/ip rule add from ${IPREMOTE} table ISP prio 100&lt;br /&gt;
&lt;br /&gt;
# Add a default route&lt;br /&gt;
/sbin/ip route add table ISP default via ${IPREMOTE} dev ${IFNAME}&lt;br /&gt;
&lt;br /&gt;
# Add route to LAN subnet&lt;br /&gt;
/sbin/ip route add 192.168.4.0/24 dev eth0.4 table ISP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/ppp/ip-down ==&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by pppd after the connection has ended.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Delete the rules when we take the interface down&lt;br /&gt;
/sbin/ip rule del from ${IPREMOTE} table ISP prio 100&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/openvpn/route-up-fwmark.sh ==&lt;br /&gt;
OpenVPN needs similar routing scripts and it also has it&#039;s own special hooks that allow you to specify particular values. A full list is here [https://openvpn.net/index.php/open-source/documentation/manuals/65-openvpn-20x-manpage.html#lbAS OpenVPN man file - Environmental Variables]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by OpenVPN when there&#039;s a successful VPN connection.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Flush out any old rules that might be there&lt;br /&gt;
/sbin/ip route flush table VPN&lt;br /&gt;
&lt;br /&gt;
# Add route to table from 192.168.3.0/24 subnet on LAN&lt;br /&gt;
/sbin/ip route add 192.168.3.0/24 dev eth0.3 table VPN&lt;br /&gt;
/sbin/ip -6 route add fde4:8dba:82e1:fff3::/64 dev eth0.3 table VPN&lt;br /&gt;
&lt;br /&gt;
# Add route from VPN interface IP to the VPN table&lt;br /&gt;
/sbin/ip rule add from ${ifconfig_local} table VPN prio 200&lt;br /&gt;
/sbin/ip -6 rule add from fde4:8dba:82e1:fff3::/64 table VPN prio 200&lt;br /&gt;
&lt;br /&gt;
# Add a default route&lt;br /&gt;
/sbin/ip route add default via ${ifconfig_local} dev ${dev} table VPN&lt;br /&gt;
/sbin/ip -6 route add default dev tun0 table VPN &lt;br /&gt;
&lt;br /&gt;
# Add route to LAN only subnet&lt;br /&gt;
/sbin/ip route add 192.168.4.0/24 dev eth0.4 table VPN&lt;br /&gt;
&lt;br /&gt;
# Add route to IP on VPN for traffic originating from the router&lt;br /&gt;
/sbin/ip route add 172.16.32.1 dev tun0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/openvpn/route-down-fwmark.sh ==&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by OpenVPN after the connection has ended&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Delete the rules when we take the interface down&lt;br /&gt;
/sbin/ip rule del from ${ifconfig_local} table VPN prio 200&lt;br /&gt;
/sbin/ip -6 rule del from fde4:8dba:82e1:fff3::/64 table VPN prio 200&lt;br /&gt;
&lt;br /&gt;
# Delete route to IP on VPN for traffic originating from the router&lt;br /&gt;
/sbin/ip route del 172.16.32.1 dev tun0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OpenVPN Routing ==&lt;br /&gt;
Usually when you connect with OpenVPN the remote VPN server will push routes down to your system. We don&#039;t want this as we still want to be able to access the internet without the VPN. We have also created our own routes that we want to use earlier in this guide.&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need to add this to the bottom of your OpenVPN configuration file:&lt;br /&gt;
&amp;lt;pre&amp;gt;# Prevents default gateway from being set on the default routing table&lt;br /&gt;
route-noexec&lt;br /&gt;
&lt;br /&gt;
# Allows route-up script to be executed&lt;br /&gt;
script-security 2&lt;br /&gt;
&lt;br /&gt;
# Calls custom shell script after connection to add necessary routes&lt;br /&gt;
route-up /etc/openvpn/route-up-fwmark.sh&lt;br /&gt;
route-pre-down /etc/openvpn/route-pre-down-fwmark.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
My VPNs are arranged like this in /etc/openvpn:&lt;br /&gt;
&lt;br /&gt;
OpenVPN configuration file for that server:&lt;br /&gt;
&amp;lt;pre&amp;gt;countrycode.serverNumber.openvpn.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenVPN certs for that server:&lt;br /&gt;
&amp;lt;pre&amp;gt;countrycode.serverNumber.openvpn/countrycode.serverNumber.openvpn.crt&lt;br /&gt;
countrycode.serverNumber.openvpn/countrycode.serverNumber.openvpn.key&lt;br /&gt;
countrycode.serverNumber.openvpn/myKey.crt&lt;br /&gt;
countrycode.serverNumber.openvpn/myKey.key&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So I use this helpful script to automate the process of changing between servers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
vpn_server_filename=$1&lt;br /&gt;
&lt;br /&gt;
rm /etc/openvpn/openvpn.conf&lt;br /&gt;
ln -s $vpn_server_filename /etc/openvpn/openvpn.conf&lt;br /&gt;
chown -R openvpn:openvpn /etc/openvpn&lt;br /&gt;
chmod -R a=-rwx,u=+rX /etc/openvpn&lt;br /&gt;
chmod u=x /etc/openvpn/*.sh*&lt;br /&gt;
&lt;br /&gt;
if grep -Fxq &amp;quot;#CustomStuffHere&amp;quot; openvpn.conf&lt;br /&gt;
then&lt;br /&gt;
    echo &amp;quot;Not adding custom routes, this server has been used previously&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Adding custom route rules&amp;quot;&lt;br /&gt;
cat &amp;lt;&amp;lt;EOF &amp;gt;&amp;gt; /etc/openvpn/openvpn.conf&lt;br /&gt;
&lt;br /&gt;
#CustomStuffHere&lt;br /&gt;
# Prevents default gateway from being set on the default routing table&lt;br /&gt;
route-noexec&lt;br /&gt;
&lt;br /&gt;
# Allows route-up script to be executed&lt;br /&gt;
script-security 2&lt;br /&gt;
&lt;br /&gt;
# Calls custom shell script after connection to add necessary routes&lt;br /&gt;
route-up /etc/openvpn/route-up-fwmark.sh&lt;br /&gt;
route-pre-down /etc/openvpn/route-pre-down-fwmark.sh&lt;br /&gt;
&lt;br /&gt;
# Logging of OpenVPN to file&lt;br /&gt;
#log /etc/openvpn/openvpn.log&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
fi&lt;br /&gt;
echo &amp;quot;Remember to set BitTorrent port forward in your VPN control panel&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That way I can simply change between servers by running:&lt;br /&gt;
{{cmd|changevpn.sh countrycode.serverNumber.openvpn}}&lt;br /&gt;
&lt;br /&gt;
and then restart openvpn. I am also reminded to put the port forward through on the VPN control panel so my BitTorrent client is connectable:&lt;br /&gt;
&lt;br /&gt;
{{cmd|service openvpn restart}}&lt;br /&gt;
&lt;br /&gt;
Finally add openvpn to the default run level&lt;br /&gt;
{{cmd|rc-update add openvpn default}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[category: Raspberry]]&lt;br /&gt;
[[category: VPN]]&lt;/div&gt;</summary>
		<author><name>Dngray</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Linux_Router_with_VPN_on_a_Raspberry_Pi_(IPv6)&amp;diff=16942</id>
		<title>Linux Router with VPN on a Raspberry Pi (IPv6)</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Linux_Router_with_VPN_on_a_Raspberry_Pi_(IPv6)&amp;diff=16942"/>
		<updated>2020-02-25T09:43:19Z</updated>

		<summary type="html">&lt;p&gt;Dngray: Add nftables rulesets&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC right}}&lt;br /&gt;
&lt;br /&gt;
I have split this off the main article [[Linux Router with VPN on a Raspberry Pi]] IPv6 implementation requires a few changes to the initial article to work. I haven&#039;t duplicated everything here however, just the stuff that relates to IPv6.&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
IPv6 introduces a number of new complexities into our network. If you&#039;ve completed previous IPv4 only guide [[Linux Router with VPN on a Raspberry Pi]] then read on.&lt;br /&gt;
&lt;br /&gt;
Your VPN provider may only offers you a single stack connection (no IPv6). You won&#039;t be able to implement IPv6 addressing on VLAN 3 to carry your IPv6 traffic out of the VPN. If your ISP gives you IPv6 addressing you may still implement addressing on VLAN2 to carry traffic directly to your ISP. In this example I do both.&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t know much about IPv6 then these pages might be of interest to get you up to speed.&lt;br /&gt;
&lt;br /&gt;
* [http://tldp.org/HOWTO/Linux+IPv6-HOWTO Linux IPv6 HOWTO (en)] - in particular the &amp;quot;basics&amp;quot; and &amp;quot;address types&amp;quot;.&lt;br /&gt;
* [https://en.wikipedia.org/wiki/IPv6 IPv6]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/IPv6_address IPv6 Address]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Prefix_delegation Prefix delegation] we use this with dhcpcd when doing DHCPv6-PD to inform our ISP of our network devices.&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Neighbor_Discovery_Protocol Neighbor Discovery Protocol] we use this with radvd to distribute our routes.&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol_version_6 Internet Control Message Protocol version 6] ICMPv6 differs from ICMPv4 and is used for many critical parts of IPv6 infrastructure.&lt;br /&gt;
* [http://ipv6-test.com IPv6-test.com] Useful for diagnosing if IPv6 is working.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Network_Diagram_ipv4_ipv6_with_vlans.svg|900px|center|Network Diagram IPv4 and IPv6]]&lt;br /&gt;
&lt;br /&gt;
= Enabling IPv6 support =&lt;br /&gt;
&lt;br /&gt;
Assuming you&#039;re using the Alpine Linux kernel, IPv6 support is available separately as a module.&lt;br /&gt;
&lt;br /&gt;
{{cmd|modprobe ipv6}}&lt;br /&gt;
To add the module to our startup configuration.&lt;br /&gt;
{{cmd|echo &amp;quot;ipv6&amp;quot; &amp;gt;&amp;gt; /etc/modules}}&lt;br /&gt;
&lt;br /&gt;
== /etc/sysctl.d/local.conf ==&lt;br /&gt;
Modify the sysctl section to include IPv6 support:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Controls IP packet forwarding&lt;br /&gt;
net.ipv4.ip_forward = 1&lt;br /&gt;
&lt;br /&gt;
# Needed to use fwmark&lt;br /&gt;
net.ipv4.conf.all.rp_filter = 2&lt;br /&gt;
&lt;br /&gt;
# http://vk5tu.livejournal.com/37206.html&lt;br /&gt;
# What&#039;s this special value &amp;quot;2&amp;quot;? Originally the value was &amp;quot;1&amp;quot;, but this &lt;br /&gt;
# disabled autoconfiguration on all interfaces. That is, you couldn&#039;t appear &lt;br /&gt;
# to be a router on some interfaces and appear to be a host on other &lt;br /&gt;
# interfaces. But that&#039;s exactly the mental model of a ADSL router. &lt;br /&gt;
&lt;br /&gt;
# Controls IP packet forwarding&lt;br /&gt;
net.ipv6.conf.all.forwarding = 2&lt;br /&gt;
net.ipv6.conf.default.forwarding = 2&lt;br /&gt;
&lt;br /&gt;
# Accept Router Advertisments&lt;br /&gt;
net.ipv6.conf.all.accept_ra = 2&lt;br /&gt;
net.ipv6.conf.default.accept_ra = 2&lt;br /&gt;
&lt;br /&gt;
# We are a router so disable temporary addresses&lt;br /&gt;
net.ipv6.conf.all.use_tempaddr = 0&lt;br /&gt;
net.ipv6.conf.default.use_tempaddr = 0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/interfaces ==&lt;br /&gt;
Add an IPv6 interface for each VLAN. Note we don&#039;t need to add one for VLAN2 because dhcpcd will take care of that for us using our ISPs router advertisements. Also note the . (dot notation) represents a VLAN interface where as : (colon notation) used in the previous article represented an IP address aliased on an interface. &lt;br /&gt;
&lt;br /&gt;
The reason we need VLANs here is because each VLAN has it&#039;s own broadcast and we don&#039;t want our router advertisements to be putting routes and addresses on all the interfaces. It also helps us with a more secure design, but requires a managed switch.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# VLAN 2 - DESTINED FOR ISP&lt;br /&gt;
auto eth0.2&lt;br /&gt;
iface eth0.2 inet static&lt;br /&gt;
    address 192.168.2.1&lt;br /&gt;
    netmask 255.255.255.0&lt;br /&gt;
    broadcast 192.168.2.255&lt;br /&gt;
    post-up /etc/network/fwmark_rules&lt;br /&gt;
&lt;br /&gt;
# VLAN 3 - DESTINED FOR VPN&lt;br /&gt;
auto eth0.3&lt;br /&gt;
iface eth0.3 inet static&lt;br /&gt;
    address 192.168.3.1&lt;br /&gt;
    netmask 255.255.255.0&lt;br /&gt;
    broadcast 192.168.3.255&lt;br /&gt;
&lt;br /&gt;
iface eth0.3 inet6 static&lt;br /&gt;
    address fde4:8dba:82e1:fff3::1&lt;br /&gt;
    netmask 64&lt;br /&gt;
    autoconf 0&lt;br /&gt;
    accept_ra 0&lt;br /&gt;
    privext 0&lt;br /&gt;
&lt;br /&gt;
# VLAN 4 - LAN ONLY&lt;br /&gt;
auto eth0.4&lt;br /&gt;
iface eth0.4 inet static&lt;br /&gt;
    address 192.168.4.1&lt;br /&gt;
    netmask 255.255.255.0&lt;br /&gt;
    broadcast 192.168.4.255&lt;br /&gt;
    post-up /etc/network/route_LAN&lt;br /&gt;
&lt;br /&gt;
iface eth0.4 inet6 static&lt;br /&gt;
    address fde4:8dba:82e1:fff4::1&lt;br /&gt;
    netmask 64&lt;br /&gt;
    autoconf 0&lt;br /&gt;
    accept_ra 0&lt;br /&gt;
    privext 0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Configuring PPP =&lt;br /&gt;
Next up we need to configure our router to be able to dial a PPP connection with our modem. &lt;br /&gt;
&lt;br /&gt;
See [[PPP]], you will want to make sure you set your WAN interface, in this example we used eth1.&lt;br /&gt;
&lt;br /&gt;
== Check system log ==&lt;br /&gt;
Restart ppp.&lt;br /&gt;
&lt;br /&gt;
{{cmd|poff yourISP}}&lt;br /&gt;
{{cmd|pon yourISP}}&lt;br /&gt;
&lt;br /&gt;
In /var/log/messages you should see something like&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;pppd[]: Plugin rp-pppoe.so loaded.&lt;br /&gt;
pppd[]: RP-PPPoE plugin version 3.8p compiled against pppd 2.4.7&lt;br /&gt;
pppd[]: pppd 2.4.7 started by root, uid 0&lt;br /&gt;
pppd[]: PPP session is 49969&lt;br /&gt;
pppd[]: Connected to 00:53:00:ff:ff:f0 via interface eth1&lt;br /&gt;
pppd[]: Using interface ppp0&lt;br /&gt;
pppd[]: Connect: ppp0 &amp;lt;--&amp;gt; eth1&lt;br /&gt;
pppd[]: CHAP authentication succeeded&lt;br /&gt;
pppd[]: CHAP authentication succeeded&lt;br /&gt;
pppd[]: peer from calling number 00:53:00:FF:FF:F0 authorized&lt;br /&gt;
pppd[]: local  LL address fe80::0db8:ffff:ffff:fff1&lt;br /&gt;
pppd[]: remote LL address fe80::0db8:ffff:ffff:fff0&lt;br /&gt;
pppd[]: local  IP address 192.0.2.1&lt;br /&gt;
pppd[]: remote IP address 192.0.2.0&lt;br /&gt;
pppd[]: primary   DNS address 192.0.2.10&lt;br /&gt;
pppd[]: secondary DNS address 192.0.2.20&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should be able to now ping things such as&lt;br /&gt;
&lt;br /&gt;
{{cmd|ping6 ipv6.google.com}}&lt;br /&gt;
&lt;br /&gt;
from your router.&lt;br /&gt;
&lt;br /&gt;
= Prefix Delegation =&lt;br /&gt;
&lt;br /&gt;
The next step will be to configure DHCPv6 Prefix Delegation with your ISP. Install dhcpcd. While many guides do use the wide-dhcpv6-client [http://bugs.alpinelinux.org/issues/564 it should be noted this is unmaintained] and not included in Alpine Linux.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t use the ISC&#039;s dhclient either as [https://bugs.gentoo.org/show_bug.cgi?id=432652 this does not support Prefix Delegations on PPP links] without a patch.&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add dhcpcd}}&lt;br /&gt;
&lt;br /&gt;
You can check out the manual for [http://roy.marples.name/man/html5/dhcpcd.conf.html dhcpcd.conf]. Installing dhcpcd-doc will allow you to read the man file. Eg:&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add dhcpcd-doc}}&lt;br /&gt;
&lt;br /&gt;
=== /etc/dhcpcd.conf ===&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add dhcpcd}}&lt;br /&gt;
&lt;br /&gt;
If the main repositories have dhcpcd below version 7.0.7 (at time of writing AlpineLinux 3.8 and below) you will need to use the latest version from edge as it fixes a bug with unique link local addresses on our VLANs [https://roy.marples.name/blog/dhcpcd-7-0-7-released dhcpcd ChangeLog] this [https://patchwork.alpinelinux.org/patch/4016/ patch] already applied in v7.0.7&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add dhcpcd@edge}}&lt;br /&gt;
&lt;br /&gt;
If you haven&#039;t you may need to add the edge repository for pinning [[Alpine Linux package management#Repository_pinning]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Enable extra debugging&lt;br /&gt;
#debug&lt;br /&gt;
#logfile /var/log/dhcpcd.log&lt;br /&gt;
&lt;br /&gt;
# Allow users of this group to interact with dhcpcd via the control&lt;br /&gt;
# socket.&lt;br /&gt;
#controlgroup wheel&lt;br /&gt;
&lt;br /&gt;
# Inform the DHCP server of our hostname for DDNS.&lt;br /&gt;
hostname gateway&lt;br /&gt;
&lt;br /&gt;
# Use the hardware address of the interface for the Client ID.&lt;br /&gt;
#clientid&lt;br /&gt;
# or&lt;br /&gt;
# Use the same DUID + IAID as set in DHCPv6 for DHCPv4 ClientID as&lt;br /&gt;
# per RFC4361. Some non-RFC compliant DHCP servers do not reply with&lt;br /&gt;
# this set. In this case, comment out duid and enable clientid above.&lt;br /&gt;
duid&lt;br /&gt;
&lt;br /&gt;
# Persist interface configuration when dhcpcd exits.&lt;br /&gt;
persistent&lt;br /&gt;
&lt;br /&gt;
# Rapid commit support.&lt;br /&gt;
# Safe to enable by default because it requires the equivalent option&lt;br /&gt;
# set on the server to actually work.&lt;br /&gt;
option rapid_commit&lt;br /&gt;
&lt;br /&gt;
# A list of options to request from the DHCP server.&lt;br /&gt;
option domain_name_servers, domain_name, domain_search, host_name&lt;br /&gt;
option classless_static_routes&lt;br /&gt;
&lt;br /&gt;
# Most distributions have NTP support.&lt;br /&gt;
option ntp_servers&lt;br /&gt;
&lt;br /&gt;
# Respect the network MTU.&lt;br /&gt;
# Some interface drivers reset when changing the MTU so disabled by&lt;br /&gt;
# default.&lt;br /&gt;
#option interface_mtu&lt;br /&gt;
&lt;br /&gt;
# A ServerID is required by RFC2131.&lt;br /&gt;
require dhcp_server_identifier&lt;br /&gt;
&lt;br /&gt;
# Generate Stable Private IPv6 Addresses instead of hardware based&lt;br /&gt;
# ones&lt;br /&gt;
slaac private&lt;br /&gt;
&lt;br /&gt;
# A hook script is provided to lookup the hostname if not set by the&lt;br /&gt;
# DHCP server, but it should not be run by default.&lt;br /&gt;
nohook lookup-hostname&lt;br /&gt;
&lt;br /&gt;
# IPv6 Only&lt;br /&gt;
ipv6only&lt;br /&gt;
&lt;br /&gt;
# Disable solicitations on all interfaces&lt;br /&gt;
noipv6rs&lt;br /&gt;
&lt;br /&gt;
# Wait for IP before forking to background&lt;br /&gt;
waitip 6&lt;br /&gt;
&lt;br /&gt;
# Don&#039;t touch DNS&lt;br /&gt;
nohook resolv.conf&lt;br /&gt;
&lt;br /&gt;
# Use the interface connected to WAN&lt;br /&gt;
interface ppp0&lt;br /&gt;
    ipv6rs # enable routing solicitation get the default IPv6 route&lt;br /&gt;
    iaid 1&lt;br /&gt;
    ia_pd 1/::/56 eth0.2/2/64&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add dhcpcd to the default run level:&lt;br /&gt;
&lt;br /&gt;
{{cmd|rc-update add dhcpcd default}}&lt;br /&gt;
&lt;br /&gt;
= Configuring firewall for IPv4 and IPv6 traffic =&lt;br /&gt;
&lt;br /&gt;
== iptables ==&lt;br /&gt;
Here are some rules for iptables that I am currently using, yours may look something similar.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#########################################################################&lt;br /&gt;
# Uses 192.168.1.0 VLAN1 Management Untagged - no route&lt;br /&gt;
#      192.168.2.0 VLAN2                     - route to ISP&lt;br /&gt;
#      192.168.3.0 VLAN3                     - route to VPN&lt;br /&gt;
#      192.168.4.0 VLAN4                     - no route&lt;br /&gt;
# &lt;br /&gt;
# Packets to/from 192.168.1.0/24 not in any VLAN ie tagged&lt;br /&gt;
# Packets to/from 192.168.2.0/24 are marked with 0x1 and routed to ISP&lt;br /&gt;
# Packets to/from 192.168.3.0/24 are marked with 0x2 and routed to VPN&lt;br /&gt;
# Packets to/from 192.168.4.0/24 are routed to LAN and not forwarded onto&lt;br /&gt;
#                                    the internet&lt;br /&gt;
#&lt;br /&gt;
# These destinations will always be marked with 0x1 from VLAN3:&lt;br /&gt;
#&lt;br /&gt;
# &amp;lt;ip_of_exception&amp;gt;       some exception&lt;br /&gt;
#########################################################################&lt;br /&gt;
&lt;br /&gt;
# &lt;br /&gt;
# Raw Table&lt;br /&gt;
#&lt;br /&gt;
*raw&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a log drop chain&lt;br /&gt;
:LOG_DROP_BOGON - [0:0]&lt;br /&gt;
:LOG_DROP_MSFT - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create output chains&lt;br /&gt;
:OUT_PPP0 - [0:0]&lt;br /&gt;
:OUT_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Allows traffic from VPN&#039;s DNS server&lt;br /&gt;
-A PREROUTING -s 172.16.32.1/32 -i tun0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Block specified bogons coming in from ISP and VPN&lt;br /&gt;
# (unlikely to happen as they filter them on their router)&lt;br /&gt;
-A PREROUTING -i ppp0 -m set --match-set bogon-bn-nonagg src -j LOG_DROP_BOGON&lt;br /&gt;
-A PREROUTING -i tun0 -m set --match-set bogon-bn-nonagg src -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Block MSFT known tracking IPs from https://github.com/Nummer/Destroy-Windows-10-Spying&lt;br /&gt;
-A PREROUTING -i ppp0 -m set --match-set dropped-msft-ip-ipv4  src -j LOG_DROP_MSFT&lt;br /&gt;
-A PREROUTING -i tun0 -m set --match-set dropped-msft-ip-ipv4  src -j LOG_DROP_MSFT&lt;br /&gt;
&lt;br /&gt;
# Allows my excepted ranges&lt;br /&gt;
-A PREROUTING -m set --match-set allowed-nets-ipv4 src,src -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allows traffic originating from router to remote address on VPN&lt;br /&gt;
-A OUT_TUN0 -d 172.16.32.1 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass output interface to corresponding chain&lt;br /&gt;
-A OUTPUT -o ppp0 -j OUT_PPP0&lt;br /&gt;
-A OUTPUT -o tun0 -j OUT_TUN0&lt;br /&gt;
&lt;br /&gt;
# Log drop chain&lt;br /&gt;
-A LOG_DROP_BOGON -j LOG --log-prefix &amp;quot;Dropped Bogon (ipv4) : &amp;quot; --log-level 6&lt;br /&gt;
-A LOG_DROP_BOGON -j DROP&lt;br /&gt;
-A LOG_DROP_MSFT -j LOG --log-prefix &amp;quot;Dropped MSFT (ipv4) : &amp;quot; --log-level 6&lt;br /&gt;
-A LOG_DROP_MSFT -j DROP&lt;br /&gt;
&lt;br /&gt;
# Block packets originating from the router destined to bogon ranges&lt;br /&gt;
-A OUT_PPP0 -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Blocks packets originating from the router destined to bogon ranges&lt;br /&gt;
-A OUT_TUN0 -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Block packets originating from the router destined to msft ranges&lt;br /&gt;
-A OUT_PPP0 -m set --match-set dropped-msft-ip-ipv4 dst -j LOG_DROP_MSFT&lt;br /&gt;
&lt;br /&gt;
# Blocks packets originating from the router destined to msft ranges&lt;br /&gt;
-A OUT_TUN0 -m set --match-set dropped-msft-ip-ipv4 dst -j LOG_DROP_MSFT&lt;br /&gt;
&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# NAT Table&lt;br /&gt;
# This is where translation of packets happens and &amp;quot;forwarding&amp;quot; of ports&lt;br /&gt;
# to specific hosts.&lt;br /&gt;
#&lt;br /&gt;
*nat&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Port forwarding for Bittorrent through VPN&lt;br /&gt;
-A PREROUTING -i tun0 -p tcp -m tcp --dport 20001 -j DNAT --to-destination 192.168.3.30&lt;br /&gt;
-A PREROUTING -i tun0 -p udp -m udp --dport 20001 -j DNAT --to-destination 192.168.3.30&lt;br /&gt;
&lt;br /&gt;
# Allows routing to our modem subnet so we can access the web interface&lt;br /&gt;
-A POSTROUTING -s 192.168.2.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
-A POSTROUTING -s 192.168.3.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows routing to Printer&lt;br /&gt;
-A POSTROUTING -s 192.168.2.0/24 -d 192.168.4.9/32 -o eth0 -j MASQUERADE&lt;br /&gt;
-A POSTROUTING -s 192.168.3.0/24 -d 192.168.4.9/32 -o eth0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the VPN tunnel&lt;br /&gt;
-A POSTROUTING -o tun0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the PPP tunnel&lt;br /&gt;
-A POSTROUTING -o ppp0 -j MASQUERADE&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Filter Table&lt;br /&gt;
# This is where we decide to ACCEPT, DROP or REJECT things&lt;br /&gt;
#&lt;br /&gt;
*filter&lt;br /&gt;
:INPUT DROP [0:0]&lt;br /&gt;
:FORWARD DROP [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for forwarding packets&lt;br /&gt;
:FWD_ETH1 - [0:0]&lt;br /&gt;
:FWD_PPP0 - [0:0]&lt;br /&gt;
:FWD_TUN0 - [0:0]&lt;br /&gt;
:FWD_V1_MGMT - [0:0]&lt;br /&gt;
:FWD_V2_ISP - [0:0]&lt;br /&gt;
:FWD_V3_VPN - [0:0]&lt;br /&gt;
:FWD_V4_LANONLY - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for input packets (for host itself)&lt;br /&gt;
:IN_ETH1 - [0:0]&lt;br /&gt;
:IN_PPP0 - [0:0]&lt;br /&gt;
:IN_TUN0 - [0:0]&lt;br /&gt;
:IN_V1_MGMT - [0:0]&lt;br /&gt;
:IN_V2_ISP - [0:0]&lt;br /&gt;
:IN_V3_VPN - [0:0]&lt;br /&gt;
:IN_V4_LANONLY - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a drop/reject chains&lt;br /&gt;
:LOG_DROP - [0:0]&lt;br /&gt;
:LOG_DROP_BOGON - [0:0]&lt;br /&gt;
:LOG_DROP_MSFT - [0:0]&lt;br /&gt;
:LOG_REJECT_LANONLY - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create an output chains&lt;br /&gt;
:OUT_PPP0 - [0:0]&lt;br /&gt;
:OUT_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Pass input packet to corresponding rule chain&lt;br /&gt;
-A INPUT -i lo -j ACCEPT&lt;br /&gt;
-A INPUT -i eth0 -j IN_V1_MGMT&lt;br /&gt;
-A INPUT -i eth0.2 -j IN_V2_ISP&lt;br /&gt;
-A INPUT -i eth0.3 -j IN_V3_VPN&lt;br /&gt;
-A INPUT -i eth0.4 -j IN_V4_LANONLY&lt;br /&gt;
-A INPUT -i eth1 -j IN_ETH1&lt;br /&gt;
-A INPUT -i ppp0 -j IN_PPP0&lt;br /&gt;
-A INPUT -i tun0 -j IN_TUN0&lt;br /&gt;
&lt;br /&gt;
# Track forwarded packets&lt;br /&gt;
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass forwarded packet to corresponding rule chain&lt;br /&gt;
-A FORWARD -i eth0 -j FWD_V1_MGMT&lt;br /&gt;
-A FORWARD -i eth0.2 -j FWD_V2_ISP&lt;br /&gt;
-A FORWARD -i eth0.3 -j FWD_V3_VPN&lt;br /&gt;
-A FORWARD -i eth0.4 -j FWD_V4_LANONLY&lt;br /&gt;
-A FORWARD -i eth1 -j FWD_ETH1&lt;br /&gt;
-A FORWARD -i ppp0 -j FWD_PPP0&lt;br /&gt;
-A FORWARD -i tun0 -j FWD_TUN0&lt;br /&gt;
-A OUTPUT -o ppp0 -j OUT_PPP0&lt;br /&gt;
-A OUTPUT -o tun0 -j OUT_TUN0&lt;br /&gt;
&lt;br /&gt;
# Forward HTTP packets from network to modem&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.2.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.3.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward Bittorrent Port&lt;br /&gt;
-A FWD_TUN0 -d 192.168.3.30/32 -p tcp -m tcp --dport 20001 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_TUN0 -d 192.168.3.30/32 -p udp -m udp --dport 20001 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward established packets to hosts in VLAN2/3 from Printer&lt;br /&gt;
-A FWD_V1_MGMT -s 192.168.4.9/32 -d 192.168.2.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_V1_MGMT -s 192.168.4.9/32 -d 192.168.3.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Refuse to forward bogons from VLAN1 (Untagged Management)&lt;br /&gt;
-A FWD_V1_MGMT -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Refuse to forward msft from VLAN1 (Untagged Management)&lt;br /&gt;
-A FWD_V1_MGMT -m set --match-set dropped-msft-ip-ipv4 dst -j LOG_DROP_MSFT&lt;br /&gt;
&lt;br /&gt;
# Forward traffic from VLAN2 to Modem&lt;br /&gt;
-A FWD_V2_ISP -d 192.168.0.1/32 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward traffic from VLAN2 to Printer&lt;br /&gt;
-A FWD_V2_ISP -d 192.168.4.9/32 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Drop bogons from VLAN2&lt;br /&gt;
-A FWD_V2_ISP -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Drop msft from VLAN2&lt;br /&gt;
-A FWD_V2_ISP -m set --match-set dropped-msft-ip-ipv4 dst -j LOG_DROP_MSFT&lt;br /&gt;
&lt;br /&gt;
# Allow rest from VLAN2&lt;br /&gt;
-A FWD_V2_ISP -s 192.168.2.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward traffic from VLAN3 to Modem&lt;br /&gt;
-A FWD_V3_VPN -d 192.168.0.1/32 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward traffic from VLAN3 to Printer&lt;br /&gt;
-A FWD_V3_VPN -d 192.168.4.9/32 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow rest from VLAN3&lt;br /&gt;
-A FWD_V3_VPN -s 192.168.3.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Drop bogons from VLAN3&lt;br /&gt;
-A FWD_V3_VPN -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Drop msft from VLAN3&lt;br /&gt;
-A FWD_V3_VPN -m set --match-set dropped-msft-ip-ipv4 dst -j LOG_DROP_MSFT&lt;br /&gt;
&lt;br /&gt;
# Forward some exception to ppp0 from VLAN3&lt;br /&gt;
-A FWD_V3_VPN -s 192.168.3.0/24 -d &amp;lt;ip_of_exception&amp;gt;/32 -o ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow in NTP from Router (this machine)&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow in HTTP from Router (this machine)&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked PPP0 connection&lt;br /&gt;
-A IN_PPP0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on PPP0&lt;br /&gt;
# -A IN_PPP0 -j LOG --log-prefix &amp;quot;DROP:INPUT (ipv4) &amp;quot; --log-level 6&lt;br /&gt;
-A IN_PPP0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked TUN0 connection&lt;br /&gt;
-A IN_TUN0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on TUN0&lt;br /&gt;
# -A IN_TUN0 -j LOG --log-prefix &amp;quot;DROP:INPUT (ipv4) &amp;quot; --log-level 6&lt;br /&gt;
-A IN_TUN0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Allow in established packets from Printer to hosts in VLAN2/3&lt;br /&gt;
-A IN_V1_MGMT -s 192.168.4.9/32 -d 192.168.2.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_V1_MGMT -s 192.168.4.9/32 -d 192.168.3.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# FreeRadius Clients (access point A &amp;amp; B)&lt;br /&gt;
-A IN_V1_MGMT -s 192.168.1.10/32 -p tcp -m tcp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_V1_MGMT -s 192.168.1.10/32 -p udp -m udp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_V1_MGMT -s 192.168.1.11/32 -p tcp -m tcp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_V1_MGMT -s 192.168.1.11/32 -p udp -m udp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Ubiquiti UAP Device Discovery Broadcast&lt;br /&gt;
-A IN_V1_MGMT -s 192.168.1.10/32 -p udp -m udp --dport 10001 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_V1_MGMT -s 192.168.1.11/32 -p udp -m udp --dport 10001 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_V1_MGMT -s 192.168.1.10/32 -p udp -m udp --dport 3478 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_V1_MGMT -s 192.168.1.11/32 -p udp -m udp --dport 3478 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow rest in from VLAN1&lt;br /&gt;
-A IN_V1_MGMT -s 192.168.1.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow ssh in from VLAN2&lt;br /&gt;
-A IN_V2_ISP -s 192.168.2.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow DNS in from VLAN2&lt;br /&gt;
-A IN_V2_ISP -s 192.168.2.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# ALLOW NTP in from VLAN2&lt;br /&gt;
-A IN_V2_ISP -s 192.168.2.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow rest from VLAN2&lt;br /&gt;
-A IN_V2_ISP -s 192.168.2.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow ssh in from VLAN3&lt;br /&gt;
-A IN_V3_VPN -s 192.168.3.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow DNS in from VLAN3&lt;br /&gt;
-A IN_V3_VPN -s 192.168.3.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow NTP in from VLAN3&lt;br /&gt;
-A IN_V3_VPN -s 192.168.3.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow rest from VLAN3&lt;br /&gt;
-A IN_V3_VPN -s 192.168.3.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow some exception direct from ppp0 to VLAN3&lt;br /&gt;
-A IN_V3_VPN -s 192.168.3.0/24 -d &amp;lt;ip_of_exception&amp;gt;/32 -o ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped bogons that never got forwarded&lt;br /&gt;
-A LOG_DROP_BOGON -j LOG --log-prefix &amp;quot;Dropped Bogon forward (ipv4) &amp;quot; --log-level 6&lt;br /&gt;
-A LOG_DROP_BOGON -j DROP&lt;br /&gt;
&lt;br /&gt;
# Log dropped msft tracking that never got forwarded&lt;br /&gt;
-A LOG_DROP_MSFT -j LOG --log-prefix &amp;quot;Dropped MSFT forward(ipv4) &amp;quot; --log-level 6&lt;br /&gt;
-A LOG_DROP_MSFT -j DROP&lt;br /&gt;
&lt;br /&gt;
# Log rejected packets&lt;br /&gt;
-A LOG_REJECT_LANONLY -j LOG --log-prefix &amp;quot;Rejected packet from LAN only&amp;quot; --log-level 6&lt;br /&gt;
-A LOG_REJECT_LANONLY -j REJECT --reject-with icmp-port-unreachable&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mangle Table&lt;br /&gt;
# This is the place where our markings happen, whether they be 0x1 or 0x2&lt;br /&gt;
#&lt;br /&gt;
*mangle&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:FORWARD ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Restore CONNMARK to the MARK (If one doesn&#039;t exist then no mark is set)&lt;br /&gt;
-A PREROUTING -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff&lt;br /&gt;
&lt;br /&gt;
# If packet MARK is 2, then it means there is already a connection mark and the&lt;br /&gt;
# original packet came in on VPN&lt;br /&gt;
-A PREROUTING -s 192.168.3.0/24 -m mark --mark 0x2&lt;br /&gt;
&lt;br /&gt;
# Check some exception are 0x1&lt;br /&gt;
-A PREROUTING -s 192.168.3.0/24 -d &amp;lt;ip_of_exception&amp;gt;/32 -m mark --mark 0x1&lt;br /&gt;
&lt;br /&gt;
# Mark packets coming from 192.168.3.0/24 are 0x2&lt;br /&gt;
-A PREROUTING -s 192.168.3.0/24 -j MARK --set-xmark 0x2/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# If packet MARK is 1, then it means there is already a connection mark and the&lt;br /&gt;
# original packet came in on ISP&lt;br /&gt;
-A PREROUTING -s 192.168.2.0/24 -m mark --mark 0x1&lt;br /&gt;
&lt;br /&gt;
# Mark packets 192.168.2.0/24 are 0x1&lt;br /&gt;
-A PREROUTING -s 192.168.2.0/24 -j MARK --set-xmark 0x1/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Mark some exception as 0x1&lt;br /&gt;
-A PREROUTING -s 192.168.3.0/24 -d &amp;lt;ip_of_exception&amp;gt;/32 -j MARK --set-xmark 0x1/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Strip mark if packet is destined for modem&lt;br /&gt;
-A PREROUTING -d 192.168.0.1/32 -j MARK --set-xmark 0x0/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Strip mark if packet is destined for printer&lt;br /&gt;
-A PREROUTING -d 192.168.4.9/32 -j MARK --set-xmark 0x0/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Save MARK to CONNMARK (remember iproute can&#039;t see CONNMARKs)&lt;br /&gt;
-A PREROUTING -j CONNMARK --save-mark --nfmask 0xffffffff --ctmask 0xffffffff&lt;br /&gt;
COMMIT&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ip6tables ==&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need to modify your prefix in one of the rules.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#########################################################################&lt;br /&gt;
# Uses 2001:0db8:1234:ffff::1/64 VLAN2 - route to ISP&lt;br /&gt;
#      fde4:8dba:82e1:fff3::1/64  VLAN3 - route to VPN&lt;br /&gt;
#########################################################################&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Raw Table&lt;br /&gt;
#&lt;br /&gt;
*raw&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a log drop chain&lt;br /&gt;
:LOG_DROP_BOGON - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create output chains&lt;br /&gt;
:OUT_PPP0 - [0:0]&lt;br /&gt;
:OUT_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Allows my excepted ranges&lt;br /&gt;
-A PREROUTING -m set --match-set allowed-nets-ipv6 src,src -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass output interface to corresponding chain&lt;br /&gt;
-A OUTPUT -o ppp0 -j OUT_PPP0&lt;br /&gt;
-A OUTPUT -o tun0 -j OUT_TUN0&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# NAT Table&lt;br /&gt;
# This is where translation of packets happens and &amp;quot;forwarding&amp;quot; of ports&lt;br /&gt;
# to specific hosts.&lt;br /&gt;
#&lt;br /&gt;
*nat&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the VPN tunnel for IPv6&lt;br /&gt;
-A POSTROUTING -o tun0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mangle Table&lt;br /&gt;
#&lt;br /&gt;
*mangle&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:FORWARD ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Drop unusually large ping packets&lt;br /&gt;
-A PREROUTING -p ipv6-icmp -m icmp6 --icmpv6-type 128 -m length --length 170:65535 -j DROP&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Filter Table&lt;br /&gt;
# This is where we decide to ACCEPT, DROP or REJECT things&lt;br /&gt;
#&lt;br /&gt;
*filter&lt;br /&gt;
:INPUT DROP [0:0]&lt;br /&gt;
:FORWARD DROP [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for forwarding packets&lt;br /&gt;
:FWD_ETH1 - [0:0]&lt;br /&gt;
:FWD_PPP0 - [0:0]&lt;br /&gt;
:FWD_TUN0 - [0:0]&lt;br /&gt;
:FWD_V1_MGMT - [0:0]&lt;br /&gt;
:FWD_V2_ISP - [0:0]&lt;br /&gt;
:FWD_V3_VPN - [0:0]&lt;br /&gt;
:FWD_V4_LANONLY - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for input packets (for host itself)&lt;br /&gt;
:IN_ETH1 - [0:0]&lt;br /&gt;
:IN_PPP0 - [0:0]&lt;br /&gt;
:IN_TUN0 - [0:0]&lt;br /&gt;
:IN_V1_MGMT - [0:0]&lt;br /&gt;
:IN_V2_ISP - [0:0]&lt;br /&gt;
:IN_V3_VPN - [0:0]&lt;br /&gt;
:IN_V4_LANONLY - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a drop/reject chains&lt;br /&gt;
:LOG_DROP - [0:0]&lt;br /&gt;
:LOG_DROP_BOGON - [0:0]&lt;br /&gt;
:LOG_REJECT_LANONLY - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create an output chains&lt;br /&gt;
:OUT_PPP0 - [0:0]&lt;br /&gt;
:OUT_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Pass input packet to corresponding rule chain&lt;br /&gt;
-A INPUT -i lo -j ACCEPT&lt;br /&gt;
-A INPUT -i eth0 -j IN_V1_MGMT&lt;br /&gt;
-A INPUT -i eth0.2 -j IN_V2_ISP&lt;br /&gt;
-A INPUT -i eth0.3 -j IN_V3_VPN&lt;br /&gt;
-A INPUT -i eth0.4 -j IN_V4_LANONLY&lt;br /&gt;
-A INPUT -i eth1 -j IN_ETH1&lt;br /&gt;
-A INPUT -i ppp0 -j IN_PPP0&lt;br /&gt;
-A INPUT -i tun0 -j IN_TUN0&lt;br /&gt;
&lt;br /&gt;
# Track forwarded packets&lt;br /&gt;
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass forwarded packet to corresponding rule chain&lt;br /&gt;
-A FORWARD -i eth0 -j FWD_V1_MGMT&lt;br /&gt;
-A FORWARD -i eth0.2 -j FWD_V2_ISP&lt;br /&gt;
-A FORWARD -i eth0.3 -j FWD_V3_VPN&lt;br /&gt;
-A FORWARD -i eth0.4 -j FWD_V4_LANONLY&lt;br /&gt;
-A FORWARD -i eth1 -j FWD_ETH1&lt;br /&gt;
-A FORWARD -i ppp0 -j FWD_PPP0&lt;br /&gt;
-A FORWARD -i tun0 -j FWD_TUN0&lt;br /&gt;
&lt;br /&gt;
# Rate limit ICMPv6 PING&lt;br /&gt;
-A FORWARD -p ipv6-icmp -m icmp6 --icmpv6-type 128 -m limit --limit 30/min -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass output interface to corresponding chain&lt;br /&gt;
-A OUTPUT -o ppp0 -j OUT_PPP0&lt;br /&gt;
-A OUTPUT -o tun0 -j OUT_TUN0&lt;br /&gt;
&lt;br /&gt;
# Forward VLAN2 to ISP&lt;br /&gt;
-A FWD_V2_ISP -s 2001:0db8:1234:ffff::/64 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward VLAN3 to VPN&lt;br /&gt;
-A FWD_V3_VPN -o tun0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked PPP0 connection&lt;br /&gt;
-A IN_PPP0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on PPP0&lt;br /&gt;
-A IN_PPP0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Allow and rate limit ICMP&lt;br /&gt;
-A IN_PPP0 -p ipv6-icmp -m icmp6 --icmpv6-type 2 -j ACCEPT&lt;br /&gt;
-A IN_PPP0 -p ipv6-icmp -m limit --limit 30/sec -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow DHCPv6 PD on Link Local from ISP&lt;br /&gt;
-A IN_PPP0 -s fe80::/10 -p udp -m udp --sport 547 --dport 546 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on PPP0&lt;br /&gt;
-A IN_PPP0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked TUN0 connection&lt;br /&gt;
-A IN_TUN0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets on VPN&lt;br /&gt;
-A IN_TUN0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Allow tracked connections in from ppp0 to VLAN2&lt;br /&gt;
-A IN_V2_ISP -s 2001:0db8:1234:ffff::/64 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow ICMP in from VLAN2&lt;br /&gt;
-A IN_V2_ISP -p ipv6-icmp -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow tracked connections in from tun0 to VLAN3&lt;br /&gt;
-A IN_V3_VPN -s fde4:8dba:82e1:fff3::/64 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow ICMP in from VLAN3&lt;br /&gt;
-A IN_V3_VPN -p ipv6-icmp -j ACCEPT&lt;br /&gt;
COMMIT&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add ip6tables to the default run level:&lt;br /&gt;
&lt;br /&gt;
{{cmd|rc-update add ip6tables default}}&lt;br /&gt;
&lt;br /&gt;
== nftables ==&lt;br /&gt;
&lt;br /&gt;
Optionally one might decide to use nftables instead of old legacy iptables. nftables has a few improvements such as a cleaner rule syntax, ipv4 and ipv6 is all in one table, and the ability to use [https://wiki.nftables.org/wiki-nftables/index.php/Scripting#Defining_variables variables], [https://wiki.nftables.org/wiki-nftables/index.php/Sets sets], [https://wiki.nftables.org/wiki-nftables/index.php/Dictionaries dictionaries] and [https://wiki.nftables.org/wiki-nftables/index.php/Maps maps]. This also means you no longer need to worry about using [[Linux Router with VPN on a Raspberry Pi#Installing_ipset | ipset]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/usr/sbin/nft -f&lt;br /&gt;
&lt;br /&gt;
flush ruleset&lt;br /&gt;
&lt;br /&gt;
###################################################################################&lt;br /&gt;
#&lt;br /&gt;
#| Address                            | Route To        | Interface | VLAN | Mark |&lt;br /&gt;
#|------------------------------------|-----------------|-----------|------|------|&lt;br /&gt;
#| 192.168.0.0/24                     | Modem           | eth1      | 1    |      |&lt;br /&gt;
#| 192.168.1.0/24                     | Nowhere         | eth0      | 1    |      |&lt;br /&gt;
#| 192.168.2.0/24                     | ISP             | eth0.2    | 2    | 0x1  |&lt;br /&gt;
#| 2001:0db8:1234:ffff::/64           | ISP             | eth0.2    | 2    | 0x1  |&lt;br /&gt;
#| 192.168.3.0/24                     | VPN             | eth0.3    | 3    | 0x2  |&lt;br /&gt;
#| fde4:8dba:82e1:fff3::/64           | VPN             | eth0.3    | 3    | 0x2  |&lt;br /&gt;
#| 192.168.4.0/24                     | Nowhere         | eth0.4    | 4    |      |&lt;br /&gt;
#| &amp;lt;ip_of_exception&amp;gt;                  | Exception (ISP) | eth0.2    | 4    | 0x1  |&lt;br /&gt;
#&lt;br /&gt;
###################################################################################&lt;br /&gt;
&lt;br /&gt;
define net_v0_ip4 = 192.168.0.0/24&lt;br /&gt;
define net_v1_ip4 = 192.168.1.0/24&lt;br /&gt;
define net_v2_ip4 = 192.168.2.0/24&lt;br /&gt;
define net_v3_ip4 = 192.168.3.0/24&lt;br /&gt;
define network_v4_ip4 = 192.168.4.0/24&lt;br /&gt;
define mailserver = &amp;lt;ip_of_exception&amp;gt;&lt;br /&gt;
define modem = 192.168.0.2&lt;br /&gt;
define router= 192.168.1.1&lt;br /&gt;
define printer = 192.168.4.9&lt;br /&gt;
define workstation = 192.168.3.30&lt;br /&gt;
define wifi_aps = { 192.168.1.10, 192.168.1.11 }&lt;br /&gt;
define net_ula_v1_ip6 = fde4:8dba:82e1:fff1::/64&lt;br /&gt;
define net_gua_v2_ip6 = 2001:0db8:1234:ffff::/64&lt;br /&gt;
define net_ula_v3_ip6 = fde4:8dba:82e1:fff3::/64&lt;br /&gt;
define net_ula_v4_ip6 = fde4:8dba:82e1:fff4::/64&lt;br /&gt;
define vpn_gateway = 172.16.32.1&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mangle Table (IPv4)&lt;br /&gt;
# Markings happen: whether they be 0x1 or 0x2&lt;br /&gt;
#&lt;br /&gt;
table ip mangle {&lt;br /&gt;
	chain PREROUTING {&lt;br /&gt;
		type filter hook prerouting priority mangle; policy accept;&lt;br /&gt;
&lt;br /&gt;
		# Restore CONNMARK to the MARK (If one doesn&#039;t exist then no mark is set)&lt;br /&gt;
		mark set ct mark&lt;br /&gt;
&lt;br /&gt;
		# If packet MARK is 2, then it means there is already a&lt;br /&gt;
		# connection mark and theoriginal packet came in on VPN&lt;br /&gt;
		ip saddr $net_v3_ip4 mark 0x00000002&lt;br /&gt;
&lt;br /&gt;
		# Check mail server are 0x1&lt;br /&gt;
		ip saddr $net_v3_ip4 ip daddr $mailserver mark 0x00000001&lt;br /&gt;
&lt;br /&gt;
		# Mark packets coming from VLAN3 as 0x2&lt;br /&gt;
		ip saddr $net_v3_ip4 mark set 0x00000002&lt;br /&gt;
&lt;br /&gt;
		# If packet MARK is 1, then it means there is already a&lt;br /&gt;
		# connection mark and the original packet came in on ISP&lt;br /&gt;
		ip saddr $net_v2_ip4 mark 0x00000001&lt;br /&gt;
&lt;br /&gt;
		# Mark packets coming from VLAN2 as 0x1&lt;br /&gt;
		ip saddr $net_v2_ip4 mark set 0x00000001&lt;br /&gt;
&lt;br /&gt;
		# Mark mail server as 0x1&lt;br /&gt;
		ip saddr $net_v3_ip4 ip daddr $mailserver mark set 0x00000001&lt;br /&gt;
&lt;br /&gt;
		# Strip mark if packet is destined for modem&lt;br /&gt;
		ip daddr $modem mark set 0x00000000&lt;br /&gt;
&lt;br /&gt;
		# Strip mark if packet is destined for printer&lt;br /&gt;
		ip daddr $printer mark set 0x00000000&lt;br /&gt;
&lt;br /&gt;
		# Save MARK to CONNMARK (remember iproute can&#039;t see CONNMARKs)&lt;br /&gt;
		ct mark set mark&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Filter Table (IPv4)&lt;br /&gt;
# Filtering things coming IN and OUT of the router&lt;br /&gt;
#&lt;br /&gt;
table ip filter {&lt;br /&gt;
	# Create rule chain per input interface for input packets (for host itself)&lt;br /&gt;
	chain INPUT {&lt;br /&gt;
		type filter hook input priority filter; policy drop;&lt;br /&gt;
		iifname &amp;quot;lo&amp;quot; accept&lt;br /&gt;
		iifname &amp;quot;eth0&amp;quot; jump IN_V1_MGMT&lt;br /&gt;
		iifname &amp;quot;eth0.2&amp;quot; jump IN_V2_ISP&lt;br /&gt;
		iifname &amp;quot;eth0.3&amp;quot; jump IN_V3_VPN&lt;br /&gt;
		iifname &amp;quot;eth1&amp;quot; jump IN_ETH1&lt;br /&gt;
		iifname &amp;quot;tun0&amp;quot; jump IN_TUN0&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	# Create rule chain per input interface for forwarding packets&lt;br /&gt;
	chain FORWARD {&lt;br /&gt;
		type filter hook forward priority filter; policy drop;&lt;br /&gt;
		ct state established,related accept&lt;br /&gt;
		iifname &amp;quot;eth0&amp;quot; jump FWD_V1_MGMT&lt;br /&gt;
		iifname &amp;quot;eth0.2&amp;quot; jump FWD_V2_ISP&lt;br /&gt;
		iifname &amp;quot;eth0.3&amp;quot; jump FWD_V3_VPN&lt;br /&gt;
		iifname &amp;quot;eth1&amp;quot; jump FWD_ETH1&lt;br /&gt;
		iifname &amp;quot;tun0&amp;quot; jump FWD_TUN0&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain FWD_ETH1 {&lt;br /&gt;
		ip saddr $modem ip daddr $net_v2_ip4 tcp sport http ct state established,new accept&lt;br /&gt;
		ip saddr $modem ip daddr $net_v3_ip4 tcp sport http ct state established,new accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain FWD_TUN0 {&lt;br /&gt;
		# Forward bittorrent&lt;br /&gt;
		ip daddr $workstation tcp dport 20001 ct state established,new accept&lt;br /&gt;
		ip daddr $workstation udp dport 20001 ct state established,new accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain FWD_V1_MGMT {&lt;br /&gt;
		# Forward established packets to hosts in VLAN2/3 from printer&lt;br /&gt;
		ip saddr $printer ip daddr $net_v2_ip4 ct state established,new accept&lt;br /&gt;
		ip saddr $printer ip daddr $net_v3_ip4 ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Forward established packets to hosts in VLAN2/3 from modem&lt;br /&gt;
		ip saddr $modem ip daddr $net_v3_ip4 tcp sport http ct state established,new accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain FWD_V2_ISP {&lt;br /&gt;
		# Forward traffic from VLAN2 to Modem&lt;br /&gt;
		ip daddr $modem tcp dport http accept&lt;br /&gt;
&lt;br /&gt;
		# Forward traffic from VLAN2 to printer&lt;br /&gt;
		ip daddr $printer accept&lt;br /&gt;
&lt;br /&gt;
		# Allow rest from VLAN2&lt;br /&gt;
		ip saddr $net_v2_ip4 accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain FWD_V3_VPN {&lt;br /&gt;
		# Forward traffic from VLAN3 to Modem&lt;br /&gt;
		ip daddr $modem tcp dport http accept&lt;br /&gt;
&lt;br /&gt;
		# Forward traffic from VLAN3 to printer&lt;br /&gt;
		ip daddr $printer accept&lt;br /&gt;
&lt;br /&gt;
		# Allow rest from VLAN3&lt;br /&gt;
		ip saddr $net_v3_ip4 accept&lt;br /&gt;
&lt;br /&gt;
		# Allow mailserver direct from VLAN3 out&lt;br /&gt;
		oifname &amp;quot;eth1&amp;quot; ip saddr $net_v3_ip4 ip daddr $mailserver accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain IN_ETH1 {&lt;br /&gt;
		# Accept incoming tracked connection from eth1&lt;br /&gt;
		ip saddr $router ip daddr $modem tcp sport http ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow incoming NTP in from VLAN1&lt;br /&gt;
		ip saddr $net_v0_ip4 udp dport ntp ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Log dropped packets coming in on eth1&lt;br /&gt;
		ct state established,related accept&lt;br /&gt;
		jump LOG_DROP&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain IN_TUN0 {&lt;br /&gt;
		# Log dropped packets coming in on tun0&lt;br /&gt;
		ct state established,related accept&lt;br /&gt;
		jump LOG_DROP&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain IN_V1_MGMT {&lt;br /&gt;
		# Allow in established packets from printer to VLAN2 and VLAN3&lt;br /&gt;
		ip saddr $printer ip daddr $net_v2_ip4 ct state established,new accept&lt;br /&gt;
		ip saddr $printer ip daddr $net_v3_ip4 ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow NTP in from VLAN1&lt;br /&gt;
		ip saddr $net_v1_ip4 udp dport ntp ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# FreeRadius Clients&lt;br /&gt;
		ip saddr $wifi_aps tcp dport radius ct state established,new accept&lt;br /&gt;
		ip saddr $wifi_aps udp dport radius ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Ubiquiti UAP Device Discovery Broadcast&lt;br /&gt;
		ip saddr $wifi_aps udp dport 10001 ct state established,new accept&lt;br /&gt;
		ip saddr $wifi_aps udp dport 3478 ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow rest in from VLAN1&lt;br /&gt;
		ip saddr $net_v1_ip4 ct state established,new accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain IN_V2_ISP {&lt;br /&gt;
		# Allow ssh in from VLAN2&lt;br /&gt;
		ip saddr $net_v2_ip4 tcp dport ssh ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow DNS in from VLAN2&lt;br /&gt;
		ip saddr $net_v2_ip4 udp dport domain ct state new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow NTP in from VLAN2&lt;br /&gt;
		ip saddr $net_v2_ip4 udp dport ntp ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow rest from VLAN2&lt;br /&gt;
		ip saddr $net_v2_ip4 ct state established,new accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain IN_V3_VPN {&lt;br /&gt;
		# Allow ssh in from VLAN3&lt;br /&gt;
		ip saddr $net_v3_ip4 tcp dport ssh ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow DNS in from VLAN3&lt;br /&gt;
		ip saddr $net_v3_ip4 udp dport domain ct state new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow NTP in from VLAN3&lt;br /&gt;
		ip saddr $net_v3_ip4 udp dport ntp ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow rest from VLAN3&lt;br /&gt;
		ip saddr $net_v3_ip4 ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow mailserver direct from eth1 from VLAN3&lt;br /&gt;
		oifname &amp;quot;eth1&amp;quot; ip saddr $net_v3_ip4 ip daddr $mailserver accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain LOG_DROP {&lt;br /&gt;
		log prefix &amp;quot;Dropped v4: &amp;quot; drop&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# NAT Table (IPv4)&lt;br /&gt;
# Translation of packets happens to our single external address&lt;br /&gt;
# Forwarding of ports through our public interfaces&lt;br /&gt;
#&lt;br /&gt;
table ip nat {&lt;br /&gt;
	chain PREROUTING {&lt;br /&gt;
		type nat hook prerouting priority dstnat; policy accept;&lt;br /&gt;
		# Port forwarding for Bittorrent on workstation through VPN&lt;br /&gt;
		iifname &amp;quot;tun0&amp;quot; tcp dport 20001 dnat to $workstation&lt;br /&gt;
		iifname &amp;quot;tun0&amp;quot; udp dport 20001 dnat to $workstation&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain POSTROUTING {&lt;br /&gt;
		type nat hook postrouting priority srcnat; policy accept;&lt;br /&gt;
&lt;br /&gt;
		# Allows routing to our modem subnet so we can access the web interface&lt;br /&gt;
		oifname &amp;quot;eth0&amp;quot; ip saddr $net_v2_ip4 ip daddr $modem tcp dport http masquerade&lt;br /&gt;
		oifname &amp;quot;eth0&amp;quot; ip saddr $net_v3_ip4 ip daddr $modem tcp dport http masquerade&lt;br /&gt;
&lt;br /&gt;
		# Allows routing to printer&lt;br /&gt;
		oifname &amp;quot;eth0&amp;quot; ip saddr $net_v2_ip4 ip daddr $printer masquerade&lt;br /&gt;
		oifname &amp;quot;eth0&amp;quot; ip saddr $net_v3_ip4 ip daddr $printer masquerade&lt;br /&gt;
&lt;br /&gt;
		# Masquerade behind NAT&lt;br /&gt;
		oifname &amp;quot;tun0&amp;quot; masquerade&lt;br /&gt;
		oifname &amp;quot;eth1&amp;quot; masquerade&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Filter Table (IPv6)&lt;br /&gt;
# Filtering things coming IN and OUT of the router&lt;br /&gt;
#&lt;br /&gt;
table ip6 filter {&lt;br /&gt;
	chain INPUT {&lt;br /&gt;
		# Create rule chain per input interface for input packets (for host itself)&lt;br /&gt;
		type filter hook input priority filter; policy drop;&lt;br /&gt;
		iifname &amp;quot;lo&amp;quot; accept&lt;br /&gt;
		iifname &amp;quot;eth0.2&amp;quot; jump IN_V2_ISP&lt;br /&gt;
		iifname &amp;quot;eth0.3&amp;quot; jump IN_V3_VPN&lt;br /&gt;
		iifname &amp;quot;eth1&amp;quot; jump IN_ETH1&lt;br /&gt;
		iifname &amp;quot;tun0&amp;quot; jump IN_TUN0&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain FORWARD {&lt;br /&gt;
		# Track forwarded packets&lt;br /&gt;
		type filter hook forward priority filter; policy drop;&lt;br /&gt;
		ct state established,related accept&lt;br /&gt;
&lt;br /&gt;
		# Create rule chain per input interface for forwarding packets&lt;br /&gt;
		iifname &amp;quot;eth0.2&amp;quot; jump FWD_V2_ISP&lt;br /&gt;
		iifname &amp;quot;eth0.3&amp;quot; jump FWD_V3_VPN&lt;br /&gt;
		# iifname &amp;quot;tun0&amp;quot; jump FWD_TUN0&lt;br /&gt;
&lt;br /&gt;
		# Rate limit ICMPv6 PING&lt;br /&gt;
		icmpv6 type echo-request limit rate 30/minute accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain OUTPUT {&lt;br /&gt;
		type filter hook output priority filter; policy accept;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	# chain FWD_TUN0 {&lt;br /&gt;
	# We could forward ports IPv6 ports through the VPN here&lt;br /&gt;
	# }&lt;br /&gt;
&lt;br /&gt;
	chain FWD_V2_ISP {&lt;br /&gt;
		# Forward VLAN2 to ISP&lt;br /&gt;
		ip6 saddr $net_gua_v2_ip6 accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain FWD_V3_VPN {&lt;br /&gt;
		# Forward VLAN3 to VPN&lt;br /&gt;
		ip6 saddr $net_ula_v3_ip6 accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain IN_ETH1 {&lt;br /&gt;
		# Accept incoming tracked ETH1 connection&lt;br /&gt;
		ct state established,related accept&lt;br /&gt;
&lt;br /&gt;
		# Allow and rate limit ICMP&lt;br /&gt;
		icmpv6 type packet-too-big accept&lt;br /&gt;
		meta l4proto ipv6-icmp limit rate 30/second accept&lt;br /&gt;
&lt;br /&gt;
		# Allow DHCPv6 PD on Link Local from ISP&lt;br /&gt;
		ip6 saddr fe80::/10 udp sport dhcpv6-server udp dport dhcpv6-client ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow Router advetisements/solict form ISP&lt;br /&gt;
		ip6 saddr fe80::/10 icmpv6 type nd-router-advert accept&lt;br /&gt;
		ip6 saddr fe80::/10 icmpv6 type nd-neighbor-solicit accept&lt;br /&gt;
		ip6 saddr fe80::/10 icmpv6 type nd-neighbor-advert accept&lt;br /&gt;
&lt;br /&gt;
		# Log dropped packets coming in on ETH1&lt;br /&gt;
		jump LOG_DROP&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain IN_TUN0 {&lt;br /&gt;
		# Accept incoming tracked TUN0 connection&lt;br /&gt;
		ct state established,related accept&lt;br /&gt;
&lt;br /&gt;
		# Allow and rate limit ICMP&lt;br /&gt;
		icmpv6 type packet-too-big accept&lt;br /&gt;
		meta l4proto ipv6-icmp limit rate 30/second accept&lt;br /&gt;
&lt;br /&gt;
		# Log dropped packets on VPN&lt;br /&gt;
		jump LOG_DROP&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain IN_V2_ISP {&lt;br /&gt;
		# Allow tracked connections in from ETH1 to VLAN2&lt;br /&gt;
		ip6 saddr $net_gua_v2_ip6 ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow ICMP in from VLAN2&lt;br /&gt;
		meta l4proto ipv6-icmp accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain IN_V3_VPN {&lt;br /&gt;
		# Allow tracked connections in from tun0 to VLAN3&lt;br /&gt;
		ip6 saddr $net_ula_v3_ip6 ct state established,new accept&lt;br /&gt;
&lt;br /&gt;
		# Allow ICMP in from VLAN3&lt;br /&gt;
		meta l4proto ipv6-icmp accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain LOG_DROP {&lt;br /&gt;
		log prefix &amp;quot;Dropped v6: &amp;quot; drop&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mangle Table (IPv6)&lt;br /&gt;
#&lt;br /&gt;
table ip6 mangle {&lt;br /&gt;
	chain PREROUTING {&lt;br /&gt;
		type filter hook prerouting priority mangle; policy accept;&lt;br /&gt;
&lt;br /&gt;
		# Drop unusually large ping packets&lt;br /&gt;
		icmpv6 type echo-request meta length 170-65535 drop&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# NAT Table (IPv6)&lt;br /&gt;
# Translation of packets happens to our single external address&lt;br /&gt;
# only used for the VPN as our ISP give us a /56 range to split up&lt;br /&gt;
#&lt;br /&gt;
table ip6 nat {&lt;br /&gt;
	chain POSTROUTING {&lt;br /&gt;
		type nat hook postrouting priority srcnat; policy accept;&lt;br /&gt;
		oifname &amp;quot;tun0&amp;quot; masquerade&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Raw Table - IPv4/IPv6&lt;br /&gt;
#&lt;br /&gt;
table inet raw {&lt;br /&gt;
 	set bogon-bn-nonagg-set {&lt;br /&gt;
		type ipv4_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { 0.0.0.0/8, 10.0.0.0/8,&lt;br /&gt;
			     100.64.0.0/10, 127.0.0.0/8,&lt;br /&gt;
			     169.254.0.0/16, 172.16.0.0/12,&lt;br /&gt;
			     192.0.0.0/24, 192.0.2.0/24,&lt;br /&gt;
			     192.168.0.0/16, 198.18.0.0/15,&lt;br /&gt;
			     198.51.100.0/24, 203.0.113.0/24,&lt;br /&gt;
			     224.0.0.0/4, 240.0.0.0-255.255.255.255 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	set lo-allowed-net-ip4-set {&lt;br /&gt;
		type ipv4_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { 127.0.0.0/8 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	set eth0-allowed-net-ip4-set {&lt;br /&gt;
		type ipv4_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { $net_v1_ip4 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	set eth0.2-allowed-net-ip4-set {&lt;br /&gt;
		type ipv4_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { 192.168.2.0/24, 192.168.3.0/24,&lt;br /&gt;
			     192.168.4.0/24 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	set eth0.3-allowed-net-ip4-set {&lt;br /&gt;
		type ipv4_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { 192.168.2.0/24, 192.168.3.0/24,&lt;br /&gt;
			     192.168.4.0/24 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	set eth0.4-allowed-net-ip4-set {&lt;br /&gt;
		type ipv4_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { 192.168.2.0/24, 192.168.3.0/24,&lt;br /&gt;
			     192.168.4.0/24 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	set eth1-allowed-net-ip4-set {&lt;br /&gt;
		type ipv4_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { 192.168.0.0/30, 255.255.255.255 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	set tun0-allowed-net-ip4-set {&lt;br /&gt;
		type ipv4_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { 172.16.32.0/20, 172.16.48.0/20 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	set lo-allowed-net-ip6-set {&lt;br /&gt;
		type ipv6_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { ::1/128 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	set eth0-allowed-net-ip6-set {&lt;br /&gt;
		type ipv6_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { fde4:8dba:82e1:fff1::/64,&lt;br /&gt;
			     fe80::/10 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	set eth0.2-allowed-net-ip6-set {&lt;br /&gt;
		type ipv6_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { 2001:0db8:1234:ffff::/64,&lt;br /&gt;
			     fe80::/10 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	set eth0.3-allowed-net-ip6-set {&lt;br /&gt;
		type ipv6_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { fde4:8dba:82e1:fff3::/64,&lt;br /&gt;
			     fe80::/10 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	set eth0.4-allowed-net-ip6-set {&lt;br /&gt;
		type ipv6_addr&lt;br /&gt;
		flags interval&lt;br /&gt;
		elements = { fde4:8dba:82e1:fff4::/64,&lt;br /&gt;
			     fe80::/10 }&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain PREROUTING {&lt;br /&gt;
		type filter hook prerouting priority raw; policy accept;&lt;br /&gt;
&lt;br /&gt;
		# Allows traffic from NNTP/DNS ovpn.to&lt;br /&gt;
		iifname &amp;quot;tun0&amp;quot; ip saddr $gateway_ovpn_to accept;&lt;br /&gt;
&lt;br /&gt;
		# Allows traffic originating from router to gateway.ovpn.to&lt;br /&gt;
		ip daddr $gateway_ovpn_to accept&lt;br /&gt;
&lt;br /&gt;
		# Allows traffic originating from router to modem&lt;br /&gt;
		ip daddr $modem accept&lt;br /&gt;
&lt;br /&gt;
		# Block specified bogons coming in from ISP and VPN&lt;br /&gt;
		# (unlikely to happen as they filter them on their router)&lt;br /&gt;
		#iifname &amp;quot;eth1&amp;quot; ip saddr @bogon-bn-nonagg-set jump LOG_DROP_BOGON_PR;&lt;br /&gt;
		#iifname &amp;quot;tun0&amp;quot; ip saddr @bogon-bn-nonagg-set jump LOG_DROP_BOGON_PR;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain OUTPUT {&lt;br /&gt;
		type filter hook output priority raw; policy accept;&lt;br /&gt;
&lt;br /&gt;
		# Allows my excepted ranges&lt;br /&gt;
		iifname vmap { lo : jump lo-allowed-net, eth0 : jump eth0-allowed-net,&lt;br /&gt;
		    eth0.2 : jump eth0.2-allowed-net, eth0.3 : jump eth0.3-allowed-net,&lt;br /&gt;
		    eth0.4 : jump eth0.4-allowed-net, eth1 : jump eth1-allowed-net,&lt;br /&gt;
		    tun0 : jump tun0-allowed-net };&lt;br /&gt;
&lt;br /&gt;
		oifname vmap { lo : jump lo-allowed-net, eth0 : jump eth0-allowed-net,&lt;br /&gt;
		    eth0.2 : jump eth0.2-allowed-net, eth0.3 : jump eth0.3-allowed-net,&lt;br /&gt;
		    eth0.4 : jump eth0.4-allowed-net, eth1 : jump eth1-allowed-net,&lt;br /&gt;
		    tun0 : jump tun0-allowed-net };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
		# Drop any remaining bogons that try to leave the router&lt;br /&gt;
		oifname &amp;quot;eth1&amp;quot; ip daddr @bogon-bn-nonagg-set jump LOG_DROP_BOGON_IN;&lt;br /&gt;
		oifname &amp;quot;tun0&amp;quot; ip daddr @bogon-bn-nonagg-set jump LOG_DROP_BOGON_IN;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain lo-allowed-net {&lt;br /&gt;
		ip saddr @lo-allowed-net-ip4-set accept&lt;br /&gt;
		ip6 saddr @lo-allowed-net-ip6-set accept&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain eth0-allowed-net {&lt;br /&gt;
		ip saddr @eth0-allowed-net-ip4-set accept&lt;br /&gt;
		ip6 saddr @eth0-allowed-net-ip6-set accept&lt;br /&gt;
		#log prefix &amp;quot;Allowed packet allow net 0: &amp;quot; level info&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain eth0.2-allowed-net {&lt;br /&gt;
		ip saddr @eth0.2-allowed-net-ip4-set accept&lt;br /&gt;
		ip6 saddr @eth0.2-allowed-net-ip6-set accept&lt;br /&gt;
		#log prefix &amp;quot;Allowed packet allow net 2: &amp;quot; level info&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain eth0.3-allowed-net {&lt;br /&gt;
		ip saddr @eth0.3-allowed-net-ip4-set accept&lt;br /&gt;
		ip6 saddr @eth0.3-allowed-net-ip6-set accept&lt;br /&gt;
		#log prefix &amp;quot;Allowed packet allow net 3: &amp;quot; level info&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain eth0.4-allowed-net {&lt;br /&gt;
		ip saddr @eth0.4-allowed-net-ip4-set accept&lt;br /&gt;
		ip6 saddr @eth0.4-allowed-net-ip6-set accept&lt;br /&gt;
		#log prefix &amp;quot;Allowed packet allow net 4: &amp;quot; level info&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain eth1-allowed-net {&lt;br /&gt;
		ip saddr @eth1-allowed-net-ip4-set accept&lt;br /&gt;
		#log prefix &amp;quot;Allowed packet allow eth1: &amp;quot; level info&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
    chain tun0-allowed-net {&lt;br /&gt;
		ip saddr @tun0-allowed-net-ip4-set accept&lt;br /&gt;
		#log prefix &amp;quot;Allowed packet allow tun0: &amp;quot; level info&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	chain LOG_DROP_BOGON_IN {&lt;br /&gt;
		log prefix &amp;quot;Dropped Bogon outgoing &amp;quot; drop&lt;br /&gt;
	}&lt;br /&gt;
	chain LOG_DROP_BOGON_OUT {&lt;br /&gt;
		log prefix &amp;quot;Dropped Bogon incoming &amp;quot; drop&lt;br /&gt;
	}&lt;br /&gt;
	chain LOG_DROP_BOGON_PR {&lt;br /&gt;
		log prefix &amp;quot;Dropped Bogon prerouting &amp;quot; drop&lt;br /&gt;
	}&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add nftables to the default run level:&lt;br /&gt;
&lt;br /&gt;
{{cmd|rc-update add nftables default}}&lt;br /&gt;
&lt;br /&gt;
= Router Advertisements =&lt;br /&gt;
&lt;br /&gt;
Now we need to configure radvd to give router advertisements to out VLANs for addressing and routing.&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add radvd}}&lt;br /&gt;
&lt;br /&gt;
Once radvd is installed, you may configure it:&lt;br /&gt;
&lt;br /&gt;
== /etc/radvd.conf ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;interface eth0.2 {&lt;br /&gt;
&lt;br /&gt;
  # We are sending advertisements (route)&lt;br /&gt;
  AdvSendAdvert on;&lt;br /&gt;
&lt;br /&gt;
  # When set, host use the administered (stateful) protocol&lt;br /&gt;
  # for address autoconfiguration. The use of this flag is&lt;br /&gt;
  # described in RFC 4862&lt;br /&gt;
  AdvManagedFlag on;&lt;br /&gt;
&lt;br /&gt;
  # When set, host use the administered (stateful) protocol&lt;br /&gt;
  # for address autoconfiguration. For other (non-address)&lt;br /&gt;
  # information.&lt;br /&gt;
  # The use of this flag is described in RFC 4862&lt;br /&gt;
  AdvOtherConfigFlag on;&lt;br /&gt;
&lt;br /&gt;
  # Suggested Maximum Transmission setting for using the&lt;br /&gt;
  # Hurricane Electric Tunnel Broker.&lt;br /&gt;
  # AdvLinkMTU 1480;&lt;br /&gt;
&lt;br /&gt;
  # We have native Dual Stack IPv6 so we can use the regular MTU&lt;br /&gt;
  # http://blogs.cisco.com/enterprise/ipv6-mtu-gotchas-and-other-icmp-issues&lt;br /&gt;
  AdvLinkMTU 1500;&lt;br /&gt;
  &lt;br /&gt;
  prefix ::/64 {&lt;br /&gt;
    AdvOnLink on;&lt;br /&gt;
    AdvAutonomous on; ## SLAAC based on EUI&lt;br /&gt;
    AdvRouterAddr on;&lt;br /&gt;
  };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
interface eth0.3 {&lt;br /&gt;
&lt;br /&gt;
  AdvSendAdvert on;&lt;br /&gt;
  AdvManagedFlag on;&lt;br /&gt;
  AdvOtherConfigFlag on;&lt;br /&gt;
  AdvLinkMTU 1500;&lt;br /&gt;
&lt;br /&gt;
  # Helps the route not get lost when on WiFi with packet loss&lt;br /&gt;
  MaxRtrAdvInterval 30;&lt;br /&gt;
  AdvDefaultLifetime 9000;&lt;br /&gt;
&lt;br /&gt;
  prefix fde4:8dba:82e1:fff3::/64 {&lt;br /&gt;
    AdvOnLink on;&lt;br /&gt;
    AdvAutonomous on; ## SLAAC based on EUI&lt;br /&gt;
  };&lt;br /&gt;
};&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add radvd to the default run level:&lt;br /&gt;
&lt;br /&gt;
{{cmd|rc-update add radvd default}}&lt;br /&gt;
&lt;br /&gt;
= DHCP =&lt;br /&gt;
You may decide you want more control over your network address assignment. I like to have certain hosts get certain addresses when they connect on a particular VLAN, note v2 and v3. You can do this with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;authoritative;&lt;br /&gt;
ddns-update-style interim;&lt;br /&gt;
&lt;br /&gt;
subnet 192.168.1.0 netmask 255.255.255.0 {&lt;br /&gt;
    range 192.168.1.21 192.168.1.240;&lt;br /&gt;
    option subnet-mask 255.255.255.0;&lt;br /&gt;
    option broadcast-address 192.168.1.255;&lt;br /&gt;
    option routers 192.168.1.1;&lt;br /&gt;
    option ntp-servers 192.168.1.1;&lt;br /&gt;
    option domain-name-servers 192.168.1.1;&lt;br /&gt;
    allow unknown-clients;&lt;br /&gt;
&lt;br /&gt;
        host wifi_ap {&lt;br /&gt;
            hardware ethernet &amp;lt;mac_addess&amp;gt;;&lt;br /&gt;
            fixed-address 192.168.1.11;&lt;br /&gt;
            option subnet-mask 255.255.255.0;&lt;br /&gt;
            option routers 192.168.1.1;&lt;br /&gt;
            option host-name &amp;quot;&amp;lt;hostname&amp;gt;&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
subnet 192.168.2.0 netmask 255.255.255.0 {&lt;br /&gt;
    range 192.168.2.40 192.168.2.240;&lt;br /&gt;
    option subnet-mask 255.255.255.0;&lt;br /&gt;
    option broadcast-address 192.168.2.255;&lt;br /&gt;
    option routers 192.168.2.1;&lt;br /&gt;
    option ntp-servers 192.168.2.1;&lt;br /&gt;
    option domain-name-servers 192.168.2.1;&lt;br /&gt;
    allow unknown-clients;&lt;br /&gt;
&lt;br /&gt;
        host host-v2 {&lt;br /&gt;
            hardware ethernet &amp;lt;mac_address&amp;gt;;&lt;br /&gt;
            fixed-address 192.168.2.30;&lt;br /&gt;
            option subnet-mask 255.255.255.0;&lt;br /&gt;
            option broadcast-address 192.168.2.255;&lt;br /&gt;
            option routers 192.168.2.1;&lt;br /&gt;
            option host-name &amp;quot;&amp;lt;hostname&amp;gt;&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
subnet 192.168.3.0 netmask 255.255.255.0 {&lt;br /&gt;
    range 192.168.3.20 192.168.3.240;&lt;br /&gt;
    option subnet-mask 255.255.255.0;&lt;br /&gt;
    option broadcast-address 192.168.3.255;&lt;br /&gt;
    option routers 192.168.3.1;&lt;br /&gt;
    option ntp-servers 192.168.3.1;&lt;br /&gt;
    option domain-name-servers 192.168.3.1;&lt;br /&gt;
    ignore unknown-clients;&lt;br /&gt;
&lt;br /&gt;
        host host-v3 {&lt;br /&gt;
            hardware ethernet &amp;lt;mac_address&amp;gt;;&lt;br /&gt;
            fixed-address 192.168.3.30;&lt;br /&gt;
            option subnet-mask 255.255.255.0;&lt;br /&gt;
            option broadcast-address 192.168.3.255;&lt;br /&gt;
            option routers 192.168.3.1;&lt;br /&gt;
            option host-name &amp;quot;&amp;lt;hostname&amp;gt;&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
subnet 192.168.4.0 netmask 255.255.255.0 {&lt;br /&gt;
    range 192.168.4.40 192.168.4.240;&lt;br /&gt;
    option subnet-mask 255.255.255.0;&lt;br /&gt;
    option broadcast-address 192.168.4.255;&lt;br /&gt;
    option routers 192.168.4.1;&lt;br /&gt;
    option ntp-servers 192.168.4.1;&lt;br /&gt;
    option domain-name-servers 192.168.4.1;&lt;br /&gt;
&lt;br /&gt;
    host printer {&lt;br /&gt;
            hardware ethernet &amp;lt;PRINTER_MAC_ADDRESS&amp;gt;;&lt;br /&gt;
            fixed-address 192.168.4.9;&lt;br /&gt;
            option subnet-mask 255.255.255.0;&lt;br /&gt;
            option broadcast-address 192.168.4.255;&lt;br /&gt;
            option routers 192.168.4.1;&lt;br /&gt;
            option host-name &amp;quot;My_Printer&amp;quot;;&lt;br /&gt;
        }   ignore unknown-clients;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For IPv6 I don&#039;t use DHCPv6 because Android doesn&#039;t support it. I just let SLAAC assign addresses.&lt;br /&gt;
&lt;br /&gt;
= VPN Tunnel VLAN3 =&lt;br /&gt;
&lt;br /&gt;
Install the necessary packages:&lt;br /&gt;
{{cmd|apk add openvpn iproute2 iputils}}&lt;br /&gt;
&lt;br /&gt;
== /etc/modules ==&lt;br /&gt;
You&#039;ll want to add the tun module&lt;br /&gt;
&amp;lt;pre&amp;gt;tun&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/iproute2/rt_tables ==&lt;br /&gt;
Add the two routing tables to the bottom of rt_tables. It should look something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;#&lt;br /&gt;
# reserved values&lt;br /&gt;
#&lt;br /&gt;
255	local&lt;br /&gt;
254	main&lt;br /&gt;
253	default&lt;br /&gt;
0	unspec&lt;br /&gt;
#&lt;br /&gt;
# local&lt;br /&gt;
#&lt;br /&gt;
#1	inr.ruhep&lt;br /&gt;
1 ISP&lt;br /&gt;
2 VPN&lt;br /&gt;
3 LAN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/fwmark_rules ==&lt;br /&gt;
In this file we want to put the fwmark rules and set the correct priorities.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Normal packets to go direct out WAN&lt;br /&gt;
/sbin/ip rule add fwmark 1 table ISP prio 100&lt;br /&gt;
/sbin/ip -6 rule add fwmark 1 table ISP prio 100&lt;br /&gt;
&lt;br /&gt;
# Put packets destined into VPN when VPN is up&lt;br /&gt;
/sbin/ip rule add fwmark 2 table VPN prio 200&lt;br /&gt;
/sbin/ip -6 rule add fwmark 2 table VPN prio 200&lt;br /&gt;
&lt;br /&gt;
# Prevent packets from being routed out when VPN is down.&lt;br /&gt;
# This prevents packets from falling back to the main table&lt;br /&gt;
# that has a priority of 32766&lt;br /&gt;
/sbin/ip rule add prohibit fwmark 2 prio 300&lt;br /&gt;
/sbin/ip -6 rule add prohibit fwmark 2 prio 300&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/route_LAN ==&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script adds the LAN routes.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Add routes from ISP to LAN&lt;br /&gt;
/sbin/ip route add 192.168.2.0/24 dev eth0.2 table LAN&lt;br /&gt;
&lt;br /&gt;
# Add route from VPN to LAN&lt;br /&gt;
/sbin/ip route add 192.168.3.0/24 dev eth0.3 table LAN&lt;br /&gt;
&lt;br /&gt;
# Add route from LAN to it&#039;s own table&lt;br /&gt;
/sbin/ip route add 192.168.4.0/24 dev eth0.4 table LAN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/ppp/ip-up ==&lt;br /&gt;
Next up we want to create the routes that should be run when PPP comes online. There are special hooks we can use in ip-up and ip-down to refer to the IP address, [https://ppp.samba.org/pppd.html#sect13 ppp man file - Scripts] You can also read about them in your man file if you have ppp-doc installed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by pppd when there&#039;s a successful ppp connection.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Flush out any old rules that might be there&lt;br /&gt;
/sbin/ip route flush table ISP&lt;br /&gt;
&lt;br /&gt;
# Add route to table from subnets on LAN&lt;br /&gt;
/sbin/ip route add 192.168.2.0/24 dev eth0.2 table ISP&lt;br /&gt;
/sbin/ip route add 192.168.3.0/24 dev eth0.3 table ISP&lt;br /&gt;
&lt;br /&gt;
# Add route from IP given by ISP to the table&lt;br /&gt;
/sbin/ip rule add from ${IPREMOTE} table ISP prio 100&lt;br /&gt;
&lt;br /&gt;
# Add a default route&lt;br /&gt;
/sbin/ip route add table ISP default via ${IPREMOTE} dev ${IFNAME}&lt;br /&gt;
&lt;br /&gt;
# Add route to LAN subnet&lt;br /&gt;
/sbin/ip route add 192.168.4.0/24 dev eth0.4 table ISP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/ppp/ip-down ==&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by pppd after the connection has ended.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Delete the rules when we take the interface down&lt;br /&gt;
/sbin/ip rule del from ${IPREMOTE} table ISP prio 100&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/openvpn/route-up-fwmark.sh ==&lt;br /&gt;
OpenVPN needs similar routing scripts and it also has it&#039;s own special hooks that allow you to specify particular values. A full list is here [https://openvpn.net/index.php/open-source/documentation/manuals/65-openvpn-20x-manpage.html#lbAS OpenVPN man file - Environmental Variables]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by OpenVPN when there&#039;s a successful VPN connection.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Flush out any old rules that might be there&lt;br /&gt;
/sbin/ip route flush table VPN&lt;br /&gt;
&lt;br /&gt;
# Add route to table from 192.168.3.0/24 subnet on LAN&lt;br /&gt;
/sbin/ip route add 192.168.3.0/24 dev eth0.3 table VPN&lt;br /&gt;
/sbin/ip -6 route add fde4:8dba:82e1:fff3::/64 dev eth0.3 table VPN&lt;br /&gt;
&lt;br /&gt;
# Add route from VPN interface IP to the VPN table&lt;br /&gt;
/sbin/ip rule add from ${ifconfig_local} table VPN prio 200&lt;br /&gt;
/sbin/ip -6 rule add from fde4:8dba:82e1:fff3::/64 table VPN prio 200&lt;br /&gt;
&lt;br /&gt;
# Add a default route&lt;br /&gt;
/sbin/ip route add default via ${ifconfig_local} dev ${dev} table VPN&lt;br /&gt;
/sbin/ip -6 route add default dev tun0 table VPN &lt;br /&gt;
&lt;br /&gt;
# Add route to LAN only subnet&lt;br /&gt;
/sbin/ip route add 192.168.4.0/24 dev eth0.4 table VPN&lt;br /&gt;
&lt;br /&gt;
# Add route to IP on VPN for traffic originating from the router&lt;br /&gt;
/sbin/ip route add 172.16.32.1 dev tun0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/openvpn/route-down-fwmark.sh ==&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by OpenVPN after the connection has ended&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Delete the rules when we take the interface down&lt;br /&gt;
/sbin/ip rule del from ${ifconfig_local} table VPN prio 200&lt;br /&gt;
/sbin/ip -6 rule del from fde4:8dba:82e1:fff3::/64 table VPN prio 200&lt;br /&gt;
&lt;br /&gt;
# Delete route to IP on VPN for traffic originating from the router&lt;br /&gt;
/sbin/ip route del 172.16.32.1 dev tun0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OpenVPN Routing ==&lt;br /&gt;
Usually when you connect with OpenVPN the remote VPN server will push routes down to your system. We don&#039;t want this as we still want to be able to access the internet without the VPN. We have also created our own routes that we want to use earlier in this guide.&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need to add this to the bottom of your OpenVPN configuration file:&lt;br /&gt;
&amp;lt;pre&amp;gt;# Prevents default gateway from being set on the default routing table&lt;br /&gt;
route-noexec&lt;br /&gt;
&lt;br /&gt;
# Allows route-up script to be executed&lt;br /&gt;
script-security 2&lt;br /&gt;
&lt;br /&gt;
# Calls custom shell script after connection to add necessary routes&lt;br /&gt;
route-up /etc/openvpn/route-up-fwmark.sh&lt;br /&gt;
route-pre-down /etc/openvpn/route-pre-down-fwmark.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
My VPNs are arranged like this in /etc/openvpn:&lt;br /&gt;
&lt;br /&gt;
OpenVPN configuration file for that server:&lt;br /&gt;
&amp;lt;pre&amp;gt;countrycode.serverNumber.openvpn.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenVPN certs for that server:&lt;br /&gt;
&amp;lt;pre&amp;gt;countrycode.serverNumber.openvpn/countrycode.serverNumber.openvpn.crt&lt;br /&gt;
countrycode.serverNumber.openvpn/countrycode.serverNumber.openvpn.key&lt;br /&gt;
countrycode.serverNumber.openvpn/myKey.crt&lt;br /&gt;
countrycode.serverNumber.openvpn/myKey.key&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So I use this helpful script to automate the process of changing between servers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
vpn_server_filename=$1&lt;br /&gt;
&lt;br /&gt;
rm /etc/openvpn/openvpn.conf&lt;br /&gt;
ln -s $vpn_server_filename /etc/openvpn/openvpn.conf&lt;br /&gt;
chown -R openvpn:openvpn /etc/openvpn&lt;br /&gt;
chmod -R a=-rwx,u=+rX /etc/openvpn&lt;br /&gt;
chmod u=x /etc/openvpn/*.sh*&lt;br /&gt;
&lt;br /&gt;
if grep -Fxq &amp;quot;#CustomStuffHere&amp;quot; openvpn.conf&lt;br /&gt;
then&lt;br /&gt;
    echo &amp;quot;Not adding custom routes, this server has been used previously&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Adding custom route rules&amp;quot;&lt;br /&gt;
cat &amp;lt;&amp;lt;EOF &amp;gt;&amp;gt; /etc/openvpn/openvpn.conf&lt;br /&gt;
&lt;br /&gt;
#CustomStuffHere&lt;br /&gt;
# Prevents default gateway from being set on the default routing table&lt;br /&gt;
route-noexec&lt;br /&gt;
&lt;br /&gt;
# Allows route-up script to be executed&lt;br /&gt;
script-security 2&lt;br /&gt;
&lt;br /&gt;
# Calls custom shell script after connection to add necessary routes&lt;br /&gt;
route-up /etc/openvpn/route-up-fwmark.sh&lt;br /&gt;
route-pre-down /etc/openvpn/route-pre-down-fwmark.sh&lt;br /&gt;
&lt;br /&gt;
# Logging of OpenVPN to file&lt;br /&gt;
#log /etc/openvpn/openvpn.log&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
fi&lt;br /&gt;
echo &amp;quot;Remember to set BitTorrent port forward in your VPN control panel&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That way I can simply change between servers by running:&lt;br /&gt;
{{cmd|changevpn.sh countrycode.serverNumber.openvpn}}&lt;br /&gt;
&lt;br /&gt;
and then restart openvpn. I am also reminded to put the port forward through on the VPN control panel so my BitTorrent client is connectable:&lt;br /&gt;
&lt;br /&gt;
{{cmd|service openvpn restart}}&lt;br /&gt;
&lt;br /&gt;
Finally add openvpn to the default run level&lt;br /&gt;
{{cmd|rc-update add openvpn default}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[category: Raspberry]]&lt;br /&gt;
[[category: VPN]]&lt;/div&gt;</summary>
		<author><name>Dngray</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Linux_Router_with_VPN_on_a_Raspberry_Pi&amp;diff=16445</id>
		<title>Linux Router with VPN on a Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Linux_Router_with_VPN_on_a_Raspberry_Pi&amp;diff=16445"/>
		<updated>2019-09-17T10:26:28Z</updated>

		<summary type="html">&lt;p&gt;Dngray: /* Configuring Dante */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Networking]]&lt;br /&gt;
= Rationale =&lt;br /&gt;
&lt;br /&gt;
This guide demonstrates how to set up a Linux router with a VPN tunnel. You will need a second ethernet adapter. If you are using a Raspberry Pi like I did, then you can use something like this [http://store.apple.com/us/product/MC704LL/A/apple-usb-ethernet-adapter Apple USB Ethernet Adapter] as it contains a ASIX AX88772 which has good Linux support.&lt;br /&gt;
&lt;br /&gt;
You may choose to also buy an [http://www.element14.com/community/docs/DOC-68907/l/shim-rtc-realtime-clock-accessory-board-for-raspberry-pi RTC clock]. If you don&#039;t have an RTC clock, the time is lost when your Pi is shut down. When it is rebooted, the time will be set back to Thursday, 1 January 1970. As this is earlier than the creation time of your VPN certificates OpenVPN will refuse to start, which may mean you cannot do DNS lookups over VPN.&lt;br /&gt;
&lt;br /&gt;
For wireless, a separate access point was purchased ([http://wiki.openwrt.org/toh/ubiquiti/unifi Ubiquiti UniFi AP]) because it contains a Atheros AR9287 which is supported by [https://wireless.wiki.kernel.org/en/users/drivers/ath9k ath9k].&lt;br /&gt;
&lt;br /&gt;
I only chose a Raspberry Pi due to the fact it was inexpensive. My WAN link is pathetic so I was not concerned with getting high PPS ([https://en.wikipedia.org/wiki/Throughput Packets Per Second]). You could choose to use an old x86/amd64 system instead. If I had better internet I&#039;d probably go with an offering from [https://soekris.com Soekris] such as the [https://soekris.com/products/net6501-1.html net6501] as it would have a much lower power consumption than a generic x86_64 desktop processor.&lt;br /&gt;
&lt;br /&gt;
If you want to route speeds above 100 Mbit/s you&#039;ll want to make use of hardware encryption like [https://en.wikipedia.org/wiki/AES_instruction_set AES-NI]. The [https://soekris.com Soekris] offerings have the option of an additional hardware encryption module ([https://soekris.com/products/vpn-1411.html vpn1411]). Another option is to use a [https://en.wikipedia.org/wiki/Mini-ITX Mini ITX motherboard], with a managed switch. I chose the [https://www.ubnt.com/edgemax/edgeswitch Ubiquiti ES-16-150W].&lt;br /&gt;
&lt;br /&gt;
If you wish to use IPv6 you should consider looking at [[Linux Router with VPN on a Raspberry Pi (IPv6)]] as the implementation does differ slightly to this tutorial.&lt;br /&gt;
&lt;br /&gt;
The network in this tutorial looks like this: &lt;br /&gt;
&lt;br /&gt;
[[File:Network diagram ipv4 basic.svg|900px|center|Network Diagram Single IPv4]]&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
This guide assumes you&#039;re using Alpine Linux from a micro SD card in ramdisk mode. It assumes you&#039;ve read the basics of how to use [[Alpine local backup]].  The [[Raspberry Pi]] article contains information on how to install Alpine Linux on a Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
= Modem in full bridge mode =&lt;br /&gt;
This particular page uses an example where you have a modem that uses PPPoE. You will need to modify parts which do not apply to you. &lt;br /&gt;
&lt;br /&gt;
In this example I have a modem which has been configured in full bridge mode. PPP sessions are initiated on the router.&lt;br /&gt;
&lt;br /&gt;
The modem I am using is a [http://www.cisco.com/c/en/us/products/routers/877-integrated-services-router-isr/index.html Cisco 877 Integrated Services Router]. It has no web interface and is controlled over SSH. More information can be found [[Configuring a Cisco 877 in full bridge mode]].&lt;br /&gt;
&lt;br /&gt;
= Configuring PPP =&lt;br /&gt;
Next up we need to configure our router to be able to dial a PPP connection with our modem. &lt;br /&gt;
&lt;br /&gt;
See [[PPP]], you will want to make sure you set your WAN interface, in this example we used eth1.&lt;br /&gt;
&lt;br /&gt;
= Network =&lt;br /&gt;
&lt;br /&gt;
== /etc/hostname ==&lt;br /&gt;
Set this to your hostname eg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;HOST_NAME&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/hosts ==&lt;br /&gt;
Set your host and hostname&lt;br /&gt;
&amp;lt;pre&amp;gt;127.0.0.1	&amp;lt;HOST_NAME&amp;gt; &amp;lt;HOST_NAME&amp;gt;.&amp;lt;DOMAIN_NAME&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::1		&amp;lt;HOST_NAME&amp;gt; ipv6-gateway ipv6-loopback&lt;br /&gt;
ff00::0		ipv6-localnet&lt;br /&gt;
ff00::0		ipv6-mcastprefix&lt;br /&gt;
ff02::1		ipv6-allnodes&lt;br /&gt;
ff02::2		ipv6-allrouters&lt;br /&gt;
ff02::3		ipv6-allhosts&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/interfaces ==&lt;br /&gt;
Configure your network interfaces. Change &amp;quot;yourISP&amp;quot; to the file name of the file in /etc/ppp/peers/yourISP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#&lt;br /&gt;
# Network Interfaces&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Loopback interfaces&lt;br /&gt;
auto lo&lt;br /&gt;
iface lo inet loopback&lt;br /&gt;
  address 127.0.0.1&lt;br /&gt;
  netmask 255.0.0.0&lt;br /&gt;
&lt;br /&gt;
# Internal Interface - facing LAN&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
  address 192.168.1.1&lt;br /&gt;
  netmask 255.255.255.0&lt;br /&gt;
  broadcast 192.168.1.255&lt;br /&gt;
&lt;br /&gt;
# External Interface - facing Modem&lt;br /&gt;
allow-hotplug eth1&lt;br /&gt;
auto eth1&lt;br /&gt;
iface eth1 inet static&lt;br /&gt;
  address 192.168.0.2&lt;br /&gt;
  netmask 255.255.255.252&lt;br /&gt;
  broadcast 192.168.0.3&lt;br /&gt;
  pre-up /sbin/ip link set eth1 up&lt;br /&gt;
  up ifup ppp0=yourISP&lt;br /&gt;
  down ifdown ppp0=yourISP&lt;br /&gt;
  post-down /sbin/ip link set eth1 up&lt;br /&gt;
&lt;br /&gt;
# Link to ISP&lt;br /&gt;
iface yourISP inet ppp&lt;br /&gt;
  provider yourISP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Basic IPtables firewall with routing ==&lt;br /&gt;
This demonstrates how to set up basic routing with a permissive outgoing firewall. Incoming packets are blocked. The rest is commented in the rule set.&lt;br /&gt;
&lt;br /&gt;
First install iptables:&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add iptables ip6tables}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#########################################################################&lt;br /&gt;
# Basic iptables IPv4 routing rule set&lt;br /&gt;
#&lt;br /&gt;
# 192.168.1.0/24 routed directly to PPP0 via NAT&lt;br /&gt;
# &lt;br /&gt;
#########################################################################&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mangle Table&lt;br /&gt;
# We leave this empty for the moment.&lt;br /&gt;
#&lt;br /&gt;
*mangle&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:FORWARD ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Filter Table&lt;br /&gt;
# This is where we decide to ACCEPT, DROP or REJECT things&lt;br /&gt;
#&lt;br /&gt;
*filter&lt;br /&gt;
:INPUT DROP [0:0]&lt;br /&gt;
:FORWARD DROP [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
*filter&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for forwarding packets&lt;br /&gt;
:FWD_ETH0 - [0:0]&lt;br /&gt;
:FWD_ETH1 - [0:0]&lt;br /&gt;
:FWD_PPP0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for input packets (for host itself)&lt;br /&gt;
:IN_ETH0 - [0:0]&lt;br /&gt;
:IN_ETH1 - [0:0]&lt;br /&gt;
:IN_PPP0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a log drop chain&lt;br /&gt;
:LOG_DROP - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Pass input packet to corresponding rule chain&lt;br /&gt;
-A INPUT -i lo -j ACCEPT&lt;br /&gt;
-A INPUT -i eth0 -j IN_ETH0&lt;br /&gt;
-A INPUT -i eth1 -j IN_ETH1&lt;br /&gt;
-A INPUT -i ppp0 -j IN_PPP0&lt;br /&gt;
&lt;br /&gt;
# Pass forwarded packet to corresponding rule chain&lt;br /&gt;
-A FORWARD -i eth0 -j FWD_ETH0&lt;br /&gt;
-A FORWARD -i eth1 -j FWD_ETH1&lt;br /&gt;
-A FORWARD -i ppp0 -j FWD_PPP0&lt;br /&gt;
&lt;br /&gt;
# Forward LAN traffic out&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward SSH packets from network to modem&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.0/30 -d 192.168.1.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward HTTP to modem&#039;s webserver&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.0/30 -d 192.168.1.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to ISP&lt;br /&gt;
-A FWD_PPP0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# DNS to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# FreeRadius Client (eg a UniFi AP)&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# NTP to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept traffic&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# HTTP to modem&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked PPP0 connection&lt;br /&gt;
-A IN_PPP0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# NAT Table&lt;br /&gt;
# This is where translation of packets happens and &amp;quot;forwarding&amp;quot; of ports&lt;br /&gt;
# to specific hosts.&lt;br /&gt;
#&lt;br /&gt;
*nat&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Port forwarding for Bittorrent&lt;br /&gt;
-A PREROUTING -i ppp0 -p tcp -m tcp --dport 6881:6889 -j DNAT --to-destination 192.168.1.20&lt;br /&gt;
-A PREROUTING -i ppp0 -p udp -m udp --dport 6881:6889 -j DNAT --to-destination 192.168.1.20&lt;br /&gt;
&lt;br /&gt;
# Allows routing to our modem subnet so we can access the web interface or SSH&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 22 -j MASQUERADE&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the PPP tunnel&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE&lt;br /&gt;
COMMIT&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I&#039;d also highly suggest reading these resources if you are new to iptables: &lt;br /&gt;
&lt;br /&gt;
* [https://www.frozentux.net/category/linux/iptables Frozen Tux Iptables-tutorial]&lt;br /&gt;
* [http://inai.de/links/iptables/ Words of wisdom for #netfilter]&lt;br /&gt;
* [http://sfvlug.editthis.info/wiki/Things_You_Should_Know_About_Netfilter Things You Should Know About Netfilter]&lt;br /&gt;
* [http://inai.de/documents/Perfect_Ruleset.pdf Towards the perfect ruleset]&lt;br /&gt;
&lt;br /&gt;
== /etc/sysctl.d/local.conf ==&lt;br /&gt;
&amp;lt;pre&amp;gt;# Controls IP packet forwarding&lt;br /&gt;
net.ipv4.ip_forward = 1&lt;br /&gt;
&lt;br /&gt;
# Needed to use fwmark, only required if you want to set up the VPN subnet later in this article&lt;br /&gt;
net.ipv4.conf.all.rp_filter = 2&lt;br /&gt;
&lt;br /&gt;
# Disable IPv6&lt;br /&gt;
net.ipv6.conf.all.disable_ipv6 = 1&lt;br /&gt;
net.ipv6.conf.lo.disable_ipv6 = 1&lt;br /&gt;
net.ipv6.conf.default.disable_ipv6 = 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note IPv6 is disabled here if you want that see the other tutorial [[Linux Router with VPN on a Raspberry Pi (IPv6)]]. You may also wish to look at [https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt ip-sysctl.txt] to read about the other keys.&lt;br /&gt;
&lt;br /&gt;
= DHCP =&lt;br /&gt;
{{cmd|apk add dhcp}}&lt;br /&gt;
&lt;br /&gt;
== /etc/conf.d/dhcpd ==&lt;br /&gt;
Specify the configuration file location, interface to run on and that you want DHCPD to run in IPv4 mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# /etc/conf.d/dhcpd: config file for /etc/init.d/dhcpd&lt;br /&gt;
&lt;br /&gt;
# If you require more than one instance of dhcpd you can create symbolic&lt;br /&gt;
# links to dhcpd service like so&lt;br /&gt;
#   cd /etc/init.d&lt;br /&gt;
#   ln -s dhcpd dhcpd.foo&lt;br /&gt;
#   cd ../conf.d&lt;br /&gt;
#   cp dhcpd dhcpd.foo&lt;br /&gt;
# Now you can edit dhcpd.foo and specify a different configuration file.&lt;br /&gt;
# You&#039;ll also need to specify a pidfile in that dhcpd.conf file.&lt;br /&gt;
# See the pid-file-name option in the dhcpd.conf man page for details.&lt;br /&gt;
&lt;br /&gt;
# If you wish to run dhcpd in a chroot, uncomment the following line&lt;br /&gt;
# DHCPD_CHROOT=&amp;quot;/var/lib/dhcp/chroot&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# All file paths below are relative to the chroot.&lt;br /&gt;
# You can specify a different chroot directory but MAKE SURE it&#039;s empty.&lt;br /&gt;
&lt;br /&gt;
# Specify a configuration file - the default is /etc/dhcp/dhcpd.conf&lt;br /&gt;
DHCPD_CONF=&amp;quot;/etc/dhcp/dhcpd.conf&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Configure which interface or interfaces to for dhcpd to listen on.&lt;br /&gt;
# List all interfaces space separated. If this is not specified then&lt;br /&gt;
# we listen on all interfaces.&lt;br /&gt;
DHCPD_IFACE=&amp;quot;eth0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Insert any other dhcpd options - see the man page for a full list.&lt;br /&gt;
DHCPD_OPTS=&amp;quot;-4&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/dhcp/dhcpd.conf ==&lt;br /&gt;
Configure your DHCP configuration server. For my DHCP server I&#039;m going to have three subnets. Each has a specific purpose. You may choose to have any number of subnets like below. The broadcast-address would be different if you used VLANs. However in this case we are not.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;authoritative;&lt;br /&gt;
ddns-update-style interim;&lt;br /&gt;
&lt;br /&gt;
shared-network home {&lt;br /&gt;
  subnet 192.168.1.0 netmask 255.255.255.0 {&lt;br /&gt;
    range 192.168.1.10 192.168.1.240;&lt;br /&gt;
    option subnet-mask 255.255.255.0;&lt;br /&gt;
    option broadcast-address 192.168.1.255;&lt;br /&gt;
    option routers 192.168.1.1;&lt;br /&gt;
    option ntp-servers 192.168.1.1;&lt;br /&gt;
    option domain-name-servers 192.168.1.1;&lt;br /&gt;
    allow unknown-clients;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  subnet 192.168.2.0 netmask 255.255.255.0 {&lt;br /&gt;
    range 192.168.2.10 192.168.2.240;&lt;br /&gt;
    option subnet-mask 255.255.255.0;&lt;br /&gt;
    option broadcast-address 192.168.2.255;&lt;br /&gt;
    option routers 192.168.2.1;&lt;br /&gt;
    option ntp-servers 192.168.2.1;&lt;br /&gt;
    option domain-name-servers 192.168.1.1;&lt;br /&gt;
    ignore unknown-clients;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  subnet 192.168.3.0 netmask 255.255.255.0 {&lt;br /&gt;
    range 192.168.3.10 192.168.3.240;&lt;br /&gt;
    option subnet-mask 255.255.255.0;&lt;br /&gt;
    option broadcast-address 192.168.3.255;&lt;br /&gt;
    option routers 192.168.3.1;&lt;br /&gt;
    option ntp-servers 192.168.3.1;&lt;br /&gt;
    option domain-name-servers 192.168.1.1;&lt;br /&gt;
    ignore unknown-clients;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
host Gaming_Computer {&lt;br /&gt;
  hardware ethernet 00:53:00:FF:FF:11;&lt;br /&gt;
  fixed-address 192.168.1.20;&lt;br /&gt;
  option subnet-mask 255.255.255.0;&lt;br /&gt;
  option broadcast-address 192.168.1.255;&lt;br /&gt;
  option routers 192.168.1.1;&lt;br /&gt;
  option host-name &amp;quot;gaming_computer&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
host Linux_Workstation {&lt;br /&gt;
  hardware ethernet 00:53:00:FF:FF:22;&lt;br /&gt;
  fixed-address 192.168.2.21;&lt;br /&gt;
  option subnet-mask 255.255.255.0;&lt;br /&gt;
  option broadcast-address 192.168.2.255;&lt;br /&gt;
  option routers 192.168.2.1;&lt;br /&gt;
  option host-name &amp;quot;linux_workstation&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
host printer {&lt;br /&gt;
  hardware ethernet 00:53:00:FF:FF:33;&lt;br /&gt;
  fixed-address 192.168.3.9;&lt;br /&gt;
  option subnet-mask 255.255.255.0;&lt;br /&gt;
  option broadcast-address 192.168.3.255;&lt;br /&gt;
  option routers 192.168.3.1;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure to add this to the default run level once configured:&lt;br /&gt;
{{cmd|rc-update add dhcpd default}}&lt;br /&gt;
&lt;br /&gt;
= Synchronizing the clock =&lt;br /&gt;
&lt;br /&gt;
You can choose to use BusyBox&#039;s ntpd or you can choose a more fully fledged option like [http://www.openntpd.org OpenNTPD] or [https://chrony.tuxfamily.org Chrony]&lt;br /&gt;
&lt;br /&gt;
== Busybox /etc/conf.d/ntpd ==&lt;br /&gt;
Allow clients to synchronize their clocks with the router.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# By default ntpd runs as a client. Add -l to run as a server on port 123.&lt;br /&gt;
NTPD_OPTS=&amp;quot;-l -N -p &amp;lt;REMOTE TIME SERVER&amp;gt;&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure to add this to the default run level once configured:&lt;br /&gt;
{{cmd|rc-update add ntpd default}}&lt;br /&gt;
&lt;br /&gt;
Or if you prefer to synchronize with multiple servers...&lt;br /&gt;
&lt;br /&gt;
== Chrony /etc/chrony.conf ==&lt;br /&gt;
{{cmd|apk add chrony}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;logdir /var/log/chrony&lt;br /&gt;
log measurements statistics tracking&lt;br /&gt;
&lt;br /&gt;
allow 192.168.0.0/30&lt;br /&gt;
allow 192.168.1.0/24&lt;br /&gt;
allow 192.168.2.0/24&lt;br /&gt;
allow 192.168.3.0/24&lt;br /&gt;
allow 192.168.4.0/24&lt;br /&gt;
broadcast 30 192.168.0.3&lt;br /&gt;
broadcast 30 192.168.1.255&lt;br /&gt;
broadcast 30 192.168.2.255&lt;br /&gt;
broadcast 30 192.168.3.255&lt;br /&gt;
broadcast 30 192.168.4.255&lt;br /&gt;
&lt;br /&gt;
server 0.pool.ntp.org iburst&lt;br /&gt;
server 1.pool.ntp.org iburst&lt;br /&gt;
server 2.pool.ntp.org iburst&lt;br /&gt;
server 3.pool.ntp.org iburst&lt;br /&gt;
&lt;br /&gt;
initstepslew 10 pool.ntp.org&lt;br /&gt;
driftfile /var/lib/chrony/chrony.drift&lt;br /&gt;
hwclockfile /etc/adjtime&lt;br /&gt;
rtcdevice /dev/rtc0&lt;br /&gt;
rtcsync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OpenNTPD /etc/ntpd.conf ==&lt;br /&gt;
&lt;br /&gt;
Install OpenNTPD&lt;br /&gt;
{{cmd|apk add openntpd}}&lt;br /&gt;
&lt;br /&gt;
Add to default run level.&lt;br /&gt;
{{cmd|rc-update add openntpd default}}&lt;br /&gt;
&lt;br /&gt;
=== /etc/ntpd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;# sample ntpd configuration file, see ntpd.conf(5)&lt;br /&gt;
&lt;br /&gt;
# Addresses to listen on (ntpd does not listen by default)&lt;br /&gt;
listen on 192.168.1.1&lt;br /&gt;
listen on 192.168.2.1&lt;br /&gt;
&lt;br /&gt;
# sync to a single server&lt;br /&gt;
#server ntp.example.org&lt;br /&gt;
&lt;br /&gt;
# use a random selection of NTP Pool Time Servers&lt;br /&gt;
# see http://support.ntp.org/bin/view/Servers/NTPPoolServers&lt;br /&gt;
server 0.pool.ntp.org&lt;br /&gt;
server 1.pool.ntp.org&lt;br /&gt;
server 2.pool.ntp.org&lt;br /&gt;
server 3.pool.ntp.org&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== tlsdate ==&lt;br /&gt;
The time can also be extracted from a https handshake. If the certificate is self-signed you will need to use skip-verification:&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add tlsdate}}&lt;br /&gt;
{{cmd|tlsdate -V --skip-verification -p 80 -H example.com}}&lt;br /&gt;
&lt;br /&gt;
== timezone ==&lt;br /&gt;
You might also want to set a timezone, see [[Setting the timezone]].&lt;br /&gt;
&lt;br /&gt;
= Saving Time =&lt;br /&gt;
There are two ways to do this. If you didn&#039;t buy an RTC clock see [[Saving time with Software Clock]]. If you did like the PiFace Real Time Clock see [[Saving time with Hardware Clock]]&lt;br /&gt;
&lt;br /&gt;
= Unbound DNS forwarder with dnscrypt =&lt;br /&gt;
We want to be able to do our lookups using [https://dnscrypt.info/ dnscrypt] without installing DNSCrypt on every client on the network. DNSCrypt can use it&#039;s [https://dnscrypt.info/protocol own protocol] or [https://en.wikipedia.org/wiki/DNS_over_HTTPS DNS over HTTPS].&lt;br /&gt;
&lt;br /&gt;
The router will also run a DNS forwarder and request unknown domains over DNSCrypt for our clients. Borrowed from the ArchLinux wiki article on [https://wiki.archlinux.org/index.php/dnscrypt-proxy dnscrypt-proxy].&lt;br /&gt;
&lt;br /&gt;
== Unbound ==&lt;br /&gt;
First install {{cmd|apk add unbound}}&lt;br /&gt;
&lt;br /&gt;
=== /etc/unbound/unbound.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;server:&lt;br /&gt;
    # Use this to include other text into the file.&lt;br /&gt;
    include: &amp;quot;/etc/unbound/filter.conf&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # verbosity number, 0 is least verbose. 1 is default.&lt;br /&gt;
    verbosity: 1&lt;br /&gt;
&lt;br /&gt;
    # specify the interfaces to answer queries from by ip-address.&lt;br /&gt;
    # The default is to listen to localhost (127.0.0.1 and ::1).&lt;br /&gt;
    # specify 0.0.0.0 and ::0 to bind to all available interfaces.&lt;br /&gt;
    # specify every interface[@port] on a new &#039;interface:&#039; labelled line.&lt;br /&gt;
    # The listen interfaces are not changed on reload, only on restart.&lt;br /&gt;
    interface: 192.168.2.1&lt;br /&gt;
    interface: 192.168.3.1&lt;br /&gt;
&lt;br /&gt;
    # Enable IPv4, &amp;quot;yes&amp;quot; or &amp;quot;no&amp;quot;.&lt;br /&gt;
    do-ip4: yes&lt;br /&gt;
&lt;br /&gt;
    # Enable IPv6, &amp;quot;yes&amp;quot; or &amp;quot;no&amp;quot;.&lt;br /&gt;
    do-ip6: yes&lt;br /&gt;
&lt;br /&gt;
    # Enable UDP, &amp;quot;yes&amp;quot; or &amp;quot;no&amp;quot;.&lt;br /&gt;
    do-udp: yes&lt;br /&gt;
&lt;br /&gt;
    # Enable TCP, &amp;quot;yes&amp;quot; or &amp;quot;no&amp;quot;.&lt;br /&gt;
    do-tcp: yes&lt;br /&gt;
&lt;br /&gt;
    # control which clients are allowed to make (recursive) queries&lt;br /&gt;
    # to this server. Specify classless netblocks with /size and action.&lt;br /&gt;
    # By default everything is refused, except for localhost.&lt;br /&gt;
    # Choose deny (drop message), refuse (polite error reply),&lt;br /&gt;
    # allow (recursive ok), allow_setrd (recursive ok, rd bit is forced on),&lt;br /&gt;
    # allow_snoop (recursive and nonrecursive ok)&lt;br /&gt;
    # deny_non_local (drop queries unless can be answered from local-data)&lt;br /&gt;
    # refuse_non_local (like deny_non_local but polite error reply).&lt;br /&gt;
    # access-control: 0.0.0.0/0 refuse&lt;br /&gt;
    # access-control: 127.0.0.0/8 allow&lt;br /&gt;
    # access-control: ::0/0 refuse&lt;br /&gt;
    # access-control: ::1 allow&lt;br /&gt;
    # access-control: ::ffff:127.0.0.1 allow&lt;br /&gt;
    access-control: 192.168.1.0/24 allow&lt;br /&gt;
    access-control: 192.168.2.0/24 allow&lt;br /&gt;
    access-control: 192.168.3.0/24 allow&lt;br /&gt;
&lt;br /&gt;
    # the log file, &amp;quot;&amp;quot; means log to stderr.&lt;br /&gt;
    # Use of this option sets use-syslog to &amp;quot;no&amp;quot;.&lt;br /&gt;
    logfile: &amp;quot;/var/log/unbound/unbound.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # Log to syslog(3) if yes. The log facility LOG_DAEMON is used to&lt;br /&gt;
    # log to. If yes, it overrides the logfile.&lt;br /&gt;
    use-syslog: no&lt;br /&gt;
&lt;br /&gt;
    # print one line with time, IP, name, type, class for every query.&lt;br /&gt;
    # log-queries: no&lt;br /&gt;
&lt;br /&gt;
    # print one line per reply, with time, IP, name, type, class, rcode,&lt;br /&gt;
    # timetoresolve, fromcache and responsesize.&lt;br /&gt;
    # log-replies: no&lt;br /&gt;
&lt;br /&gt;
    # enable to not answer id.server and hostname.bind queries.&lt;br /&gt;
    hide-identity: yes&lt;br /&gt;
&lt;br /&gt;
    # enable to not answer version.server and version.bind queries.&lt;br /&gt;
    # hide-version: yes&lt;br /&gt;
&lt;br /&gt;
    # enable to not answer trustanchor.unbound queries.&lt;br /&gt;
    hide-trustanchor: yes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # Harden against very small EDNS buffer sizes.&lt;br /&gt;
    harden-short-bufsize: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden against unseemly large queries.&lt;br /&gt;
    harden-large-queries: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden against out of zone rrsets, to avoid spoofing attempts.&lt;br /&gt;
    harden-glue: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden against receiving dnssec-stripped data. If you turn it&lt;br /&gt;
    # off, failing to validate dnskey data for a trustanchor will&lt;br /&gt;
    # trigger insecure mode for that zone (like without a trustanchor).&lt;br /&gt;
    # Default on, which insists on dnssec data for trust-anchored zones.&lt;br /&gt;
    harden-dnssec-stripped: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden against queries that fall under dnssec-signed nxdomain names.&lt;br /&gt;
    harden-below-nxdomain: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden the referral path by performing additional queries for&lt;br /&gt;
    # infrastructure data.  Validates the replies (if possible).&lt;br /&gt;
    # Default off, because the lookups burden the server.  Experimental&lt;br /&gt;
    # implementation of draft-wijngaards-dnsext-resolver-side-mitigation.&lt;br /&gt;
    # harden-referral-path: no&lt;br /&gt;
&lt;br /&gt;
    # Harden against algorithm downgrade when multiple algorithms are&lt;br /&gt;
    # advertised in the DS record.  If no, allows the weakest algorithm&lt;br /&gt;
    # to validate the zone.&lt;br /&gt;
    harden-algo-downgrade: yes&lt;br /&gt;
&lt;br /&gt;
    # Use 0x20-encoded random bits in the query to foil spoof attempts.&lt;br /&gt;
    # This feature is an experimental implementation of draft dns-0x20.&lt;br /&gt;
    use-caps-for-id: yes&lt;br /&gt;
&lt;br /&gt;
    # Allow the domain (and its subdomains) to contain private addresses.&lt;br /&gt;
    # local-data statements are allowed to contain private addresses too.&lt;br /&gt;
    private-domain: &amp;quot;&amp;lt;HOSTNAME&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # if yes, the above default do-not-query-address entries are present.&lt;br /&gt;
    # if no, localhost can be queried (for testing and debugging).&lt;br /&gt;
    do-not-query-localhost: no&lt;br /&gt;
&lt;br /&gt;
    # File with trusted keys, kept uptodate using RFC5011 probes,&lt;br /&gt;
    # initial file like trust-anchor-file, then it stores metadata.&lt;br /&gt;
    # Use several entries, one per domain name, to track multiple zones.&lt;br /&gt;
    #&lt;br /&gt;
    # If you want to perform DNSSEC validation, run unbound-anchor before&lt;br /&gt;
    # you start unbound (i.e. in the system boot scripts).  And enable:&lt;br /&gt;
    # Please note usage of unbound-anchor root anchor is at your own risk&lt;br /&gt;
    # and under the terms of our LICENSE (see that file in the source).&lt;br /&gt;
    # auto-trust-anchor-file: &amp;quot;@UNBOUND_ROOTKEY_FILE@&amp;quot;&lt;br /&gt;
    auto-trust-anchor-file: &amp;quot;/etc/unbound/root.key&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # If unbound is running service for the local host then it is useful&lt;br /&gt;
    # to perform lan-wide lookups to the upstream, and unblock the&lt;br /&gt;
    # long list of local-zones above.  If this unbound is a dns server&lt;br /&gt;
    # for a network of computers, disabled is better and stops information&lt;br /&gt;
    # leakage of local lan information.&lt;br /&gt;
    unblock-lan-zones: no&lt;br /&gt;
&lt;br /&gt;
    # If you configure local-data without specifying local-zone, by&lt;br /&gt;
    # default a transparent local-zone is created for the data.&lt;br /&gt;
    #&lt;br /&gt;
    # You can add locally served data with&lt;br /&gt;
    # local-zone: &amp;quot;local.&amp;quot; static&lt;br /&gt;
    # local-data: &amp;quot;mycomputer.local. IN A 192.0.2.51&amp;quot;&lt;br /&gt;
    # local-data: &#039;mytext.local TXT &amp;quot;content of text record&amp;quot;&#039;&lt;br /&gt;
&lt;br /&gt;
    # request upstream over TLS (with plain DNS inside the TLS stream).&lt;br /&gt;
    # Default is no.  Can be turned on and off with unbound-control.&lt;br /&gt;
    # tls-upstream: no&lt;br /&gt;
&lt;br /&gt;
    # Forward zones&lt;br /&gt;
    # Create entries like below, to make all queries for &#039;example.com&#039; and&lt;br /&gt;
    # &#039;example.org&#039; go to the given list of servers. These servers have to handle&lt;br /&gt;
    # recursion to other nameservers. List zero or more nameservers by hostname&lt;br /&gt;
    # or by ipaddress. Use an entry with name &amp;quot;.&amp;quot; to forward all queries.&lt;br /&gt;
    # If you enable forward-first, it attempts without the forward if it fails.&lt;br /&gt;
    # forward-zone:&lt;br /&gt;
    #    name: &amp;quot;example.com&amp;quot;&lt;br /&gt;
    #    forward-addr: 192.0.2.68&lt;br /&gt;
    #    forward-addr: 192.0.2.73@5355  # forward to port 5355.&lt;br /&gt;
    #    forward-first: no&lt;br /&gt;
    #    forward-tls-upstream: no&lt;br /&gt;
    #    forward-no-cache: no&lt;br /&gt;
    # forward-zone:&lt;br /&gt;
    #    name: &amp;quot;example.org&amp;quot;&lt;br /&gt;
    #    forward-host: fwd.example.com&lt;br /&gt;
&lt;br /&gt;
forward-zone:&lt;br /&gt;
    name: &amp;quot;.&amp;quot;&lt;br /&gt;
    forward-addr: 172.16.32.1@53&lt;br /&gt;
    forward-addr: ::1@53000&lt;br /&gt;
    forward-addr: 127.0.0.1@53000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Blocking Microsoft Telemetry on the network by domain ==&lt;br /&gt;
Microsoft has added telemetry analytics to Windows which you may want to block at a network level. More information about that can be found [https://www.privacytools.io/operating-systems/#win10 here].&lt;br /&gt;
&lt;br /&gt;
This script takes in a list of domains and produces a filter file. We are directing all lookups to &amp;quot;0.0.0.1&amp;quot; which is an invalid IP and should fail immediately, unlike localhost. There are lists of the addresses in various places such as the tools people use to do this locally on Windows, ie [https://github.com/Nummer/Destroy-Windows-10-Spying/blob/master/DWS/DWSResources.cs#L210 Destroy-Windows-10-Spying], [https://github.com/10se1ucgo/DisableWinTracking/blob/master/dwt.py#L333 DisableWinTracking], [https://github.com/W4RH4WK/Debloat-Windows-10/blob/master/scripts/block-telemetry.ps1#L19 Debloat-Windows-10] and [https://github.com/pragmatrix/Dominator/blob/master/Dominator.Windows10/Settings/telemetry.txt Dominator.Windows10]. I have prepared the list further down: [[Linux Router with VPN on a Raspberry Pi#/etc/unbound/filter.conf]].&lt;br /&gt;
&lt;br /&gt;
You could also use this to block advertising, but that&#039;s probably easier to do in a web browser with something like [https://en.wikipedia.org/wiki/uBlock_Origin uBlock Origin].&lt;br /&gt;
&lt;br /&gt;
Another way is to disable this stuff with a group policy see [https://docs.microsoft.com/en-us/windows/privacy/manage-connections-from-windows-operating-system-components-to-microsoft-services Manage connections from Windows operating system components to Microsoft services] only for Windows 10 Enterprise, version 1607 and newer and Windows Server 2016.&lt;br /&gt;
&lt;br /&gt;
=== /etc/unbound/unbound.conf ===&lt;br /&gt;
In your main unbound configuration add&lt;br /&gt;
&amp;lt;pre&amp;gt;include: /etc/unbound/filter.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Script to prepare/sort domains for Unbound  ===&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
##################################################&lt;br /&gt;
# Script taken from http://npr.me.uk/unbound.html&lt;br /&gt;
# Note you need GNU sed&lt;br /&gt;
##################################################&lt;br /&gt;
&lt;br /&gt;
# Remove &amp;quot;#&amp;quot; comments&lt;br /&gt;
# Remove space and tab&lt;br /&gt;
# Remove blank lines&lt;br /&gt;
# Remove localhost and broadcasthost lines&lt;br /&gt;
# Keep just the hosts&lt;br /&gt;
# Remove leading and trailing space and tab (again)&lt;br /&gt;
# Make everything lower case&lt;br /&gt;
&lt;br /&gt;
sed -e &amp;quot;s/#.*//&amp;quot; \&lt;br /&gt;
    -e &amp;quot;s/[ \x09]*$//&amp;quot;\&lt;br /&gt;
    -e &amp;quot;/^$/ d&amp;quot; \&lt;br /&gt;
    -e &amp;quot;/^.*local.*/ d&amp;quot; \&lt;br /&gt;
    -e &amp;quot;/^.*broadcasthost.*/ d&amp;quot; \&lt;br /&gt;
    -e &amp;quot;s/\(^.*\) \([a-zA-Z0-9\.\-]*\)/\2/&amp;quot; \&lt;br /&gt;
    -e &amp;quot;s/^[ \x09]*//;s/[ \x09]*$//&amp;quot; $1 \&lt;br /&gt;
    -e &amp;quot;s/\(.*\)/\L\1/&amp;quot; hosts.txt &amp;gt; temp1.txt&lt;br /&gt;
&lt;br /&gt;
# Remove any duplicate hosts&lt;br /&gt;
&lt;br /&gt;
sort temp1.txt | uniq &amp;gt;temp2.txt&lt;br /&gt;
&lt;br /&gt;
# Remove any hosts starting with &amp;quot;.&amp;quot;&lt;br /&gt;
# Create the two required lines for each host.&lt;br /&gt;
&lt;br /&gt;
sed -e &amp;quot;/^\..*/ d&amp;quot; \&lt;br /&gt;
    -e &amp;quot;s/\(^.*\)/local-zone: \x22\1\x22 redirect\nlocal-data: \x22\1 A 0.0.0.1\x22/&amp;quot; \&lt;br /&gt;
       temp2.txt &amp;gt; filter.conf&lt;br /&gt;
&lt;br /&gt;
# Clean up&lt;br /&gt;
rm temp1.txt&lt;br /&gt;
rm temp2.txt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/unbound/filter.conf ==&lt;br /&gt;
&amp;lt;pre&amp;gt;local-zone: &amp;quot;a-0001.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0001.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0001.dc-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0001.dc-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0002.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0002.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0003.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0003.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0004.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0004.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0005.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0005.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0006.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0006.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0007.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0007.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0008.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0008.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0009.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0009.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0010.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0010.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0011.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0011.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0012.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0012.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a.ads1.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a.ads1.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a.ads2.msads.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a.ads2.msads.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a.ads2.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a.ads2.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ac3.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ac3.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;activity.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;activity.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;adnexus.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;adnexus.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;adnxs.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;adnxs.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ads1.msads.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ads1.msads.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ads1.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ads1.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ads.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ads.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;aidps.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;aidps.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;aka-cdn-ns.adtech.de&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;aka-cdn-ns.adtech.de A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a.rad.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a.rad.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array101-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array101-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array102-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array102-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array103-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array103-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array104-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array104-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array201-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array201-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array202-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array202-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array203-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array203-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array204-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array204-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array401-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array401-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array402-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array402-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array403-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array403-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array404-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array404-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array405-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array405-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array406-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array406-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array407-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array407-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array408-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array408-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ars.smartscreen.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ars.smartscreen.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;az361816.vo.msecnd.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;az361816.vo.msecnd.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;az512334.vo.msecnd.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;az512334.vo.msecnd.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;b.ads1.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;b.ads1.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;b.ads2.msads.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;b.ads2.msads.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bingads.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bingads.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bl3301-a.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bl3301-a.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bl3301-c.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bl3301-c.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bl3301-g.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bl3301-g.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;blob.weather.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;blob.weather.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn1304-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn1304-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn1306-a.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn1306-a.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn1306-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn1306-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn1306-g.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn1306-g.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn2b-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn2b-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn2b-cor002.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn2b-cor002.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn2b-cor003.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn2b-cor003.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn2b-cor004.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn2b-cor004.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn2wns1.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn2wns1.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn3p-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn3p-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn3sch020022328.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn3sch020022328.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;b.rad.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;b.rad.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bs.serving-sys.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bs.serving-sys.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;by3301-a.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;by3301-a.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;by3301-c.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;by3301-c.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;by3301-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;by3301-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;c-0001.dc-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;c-0001.dc-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cache.datamart.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cache.datamart.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;candycrushsoda.king.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;candycrushsoda.king.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;c.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;c.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ca.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ca.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cdn.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cdn.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cdn.content.prod.cms.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cdn.content.prod.cms.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cdn.onenote.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cdn.onenote.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds1204.lon.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds1204.lon.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds1293.lon.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds1293.lon.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds20417.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds20417.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds20431.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds20431.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds20450.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds20450.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds20457.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds20457.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds20475.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds20475.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds21244.lon.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds21244.lon.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds26.ams9.msecn.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds26.ams9.msecn.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds425.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds425.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds459.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds459.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds494.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds494.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds965.lon.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds965.lon.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch1-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch1-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch1-cor002.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch1-cor002.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch3301-c.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch3301-c.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch3301-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch3301-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch3301-g.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch3301-g.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch3302-c.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch3302-c.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch3302-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch3302-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;choice.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;choice.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;choice.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;choice.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;clientconfig.passport.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;clientconfig.passport.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;client-s.gateway.messenger.live.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;client-s.gateway.messenger.live.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;client.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;client.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;c.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;c.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;compatexchange1.trafficmanager.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;compatexchange1.trafficmanager.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;compatexchange.cloudapp.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;compatexchange.cloudapp.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;continuum.dds.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;continuum.dds.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;corpext.msitadfs.glbdns2.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;corpext.msitadfs.glbdns2.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;corp.sts.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;corp.sts.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cp101-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cp101-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cp201-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cp201-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cp401-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cp401-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cs1.wpc.v0cdn.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cs1.wpc.v0cdn.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db3aqu.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db3aqu.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db3wns2011111.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db3wns2011111.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100122.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100122.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100127.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100127.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100831.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100831.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100835.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100835.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100917.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100917.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100925.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100925.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100928.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100928.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100938.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100938.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101001.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101001.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101022.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101022.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101024.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101024.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101031.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101031.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101034.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101034.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101042.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101042.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101044.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101044.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101122.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101122.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101123.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101123.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101125.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101125.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101128.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101128.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101129.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101129.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101133.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101133.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101145.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101145.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101209.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101209.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101221.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101221.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101228.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101228.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101231.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101231.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101237.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101237.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101317.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101317.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101324.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101324.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101329.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101329.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101333.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101333.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101334.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101334.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101338.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101338.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101419.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101419.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101424.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101424.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101426.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101426.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101427.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101427.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101430.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101430.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101445.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101445.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101511.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101511.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101519.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101519.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101529.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101529.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101535.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101535.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101541.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101541.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101543.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101543.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101608.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101608.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101618.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101618.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101629.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101629.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101631.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101631.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101633.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101633.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101640.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101640.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101711.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101711.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101722.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101722.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101739.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101739.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101745.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101745.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101813.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101813.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101820.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101820.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101826.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101826.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101835.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101835.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101837.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101837.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101844.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101844.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101907.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101907.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101914.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101914.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101929.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101929.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101939.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101939.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101941.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101941.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102015.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102015.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102017.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102017.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102019.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102019.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102023.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102023.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102025.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102025.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102032.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102032.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102033.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102033.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110108.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110108.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110109.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110109.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110114.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110114.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110135.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110135.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110142.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110142.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110204.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110204.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110206.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110206.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110214.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110214.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110225.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110225.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110232.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110232.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110245.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110245.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110315.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110315.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110323.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110323.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110325.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110325.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110328.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110328.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110331.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110331.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110341.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110341.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110343.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110343.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110345.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110345.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110403.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110403.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110419.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110419.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110438.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110438.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110442.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110442.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110501.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110501.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110527.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110527.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110533.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110533.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110618.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110618.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110622.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110622.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110624.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110624.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110626.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110626.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110634.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110634.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110705.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110705.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110724.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110724.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110740.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110740.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110810.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110810.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110816.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110816.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110821.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110821.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110822.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110822.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110825.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110825.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110828.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110828.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110835.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110835.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110919.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110919.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110921.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110921.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110923.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110923.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110929.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110929.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103081814.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103081814.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082011.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082011.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082111.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082111.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082308.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082308.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082406.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082406.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082409.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082409.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082609.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082609.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082611.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082611.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082709.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082709.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082712.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082712.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082806.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082806.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090115.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090115.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090415.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090415.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090513.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090513.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090515.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090515.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090608.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090608.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090806.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090806.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090814.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090814.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090906.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090906.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091011.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091011.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091012.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091012.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091106.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091106.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091108.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091108.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091212.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091212.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091311.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091311.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091414.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091414.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091511.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091511.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091617.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091617.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091715.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091715.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091817.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091817.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091908.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091908.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091911.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091911.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092010.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092010.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092108.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092108.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092109.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092109.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092209.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092209.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092210.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092210.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092509.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092509.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100117.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100117.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100121.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100121.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100221.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100221.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100313.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100313.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100314.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100314.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100510.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100510.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100511.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100511.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100611.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100611.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100712.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100712.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101105.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101105.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101208.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101208.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101212.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101212.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101314.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101314.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101411.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101411.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101413.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101413.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101513.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101513.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101610.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101610.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101611.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101611.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101705.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101705.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101711.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101711.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101909.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101909.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101914.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101914.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102009.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102009.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102112.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102112.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102203.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102203.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102209.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102209.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102310.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102310.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102404.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102404.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102609.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102609.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102610.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102610.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102805.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102805.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5wns1d.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5wns1d.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090104.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090104.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090112.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090112.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090116.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090116.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090122.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090122.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090203.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090203.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090206.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090206.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090208.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090208.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090209.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090209.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090211.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090211.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090305.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090305.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090306.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090306.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090308.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090308.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090311.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090311.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090313.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090313.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090410.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090410.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090412.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090412.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090504.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090504.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090510.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090510.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090512.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090512.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090513.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090513.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090514.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090514.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090519.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090519.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090613.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090613.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090619.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090619.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090810.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090810.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090811.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090811.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090902.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090902.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090905.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090905.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090907.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090907.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090908.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090908.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090910.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090910.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090911.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090911.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091003.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091003.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091007.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091007.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091008.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091008.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091009.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091009.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091011.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091011.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091103.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091103.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091105.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091105.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091204.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091204.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091209.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091209.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091305.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091305.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091307.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091307.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091308.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091308.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091309.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091309.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091314.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091314.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091412.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091412.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091503.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091503.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091507.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091507.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091602.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091602.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091603.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091603.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091606.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091606.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091607.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091607.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;deploy.static.akamaitechnologies.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;deploy.static.akamaitechnologies.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;device.auth.xboxlive.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;device.auth.xboxlive.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;dev.virtualearth.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;dev.virtualearth.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;df.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;df.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;diagnostics.support.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;diagnostics.support.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;disc101-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;disc101-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;disc201-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;disc201-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;disc401-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;disc401-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;dmd.metaservices.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;dmd.metaservices.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;dns.msftncsi.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;dns.msftncsi.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ec.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ec.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ecn.dev.virtualearth.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ecn.dev.virtualearth.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;eu.vortex.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;eu.vortex.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;feedback.microsoft-hohm.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;feedback.microsoft-hohm.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;feedback.search.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;feedback.search.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;feedback.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;feedback.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;flex.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;flex.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;fs.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;fs.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;geo-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;geo-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;geover-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;geover-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;g.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;g.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;h1.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;h1.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;h2.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;h2.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i1.services.social.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i1.services.social.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i1.services.social.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i1.services.social.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-bl6p-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-bl6p-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-by3p-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-by3p-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-by3p-cor002.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-by3p-cor002.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-ch1-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-ch1-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-ch1-cor002.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-ch1-cor002.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;img-s-msn-com.akamaized.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;img-s-msn-com.akamaized.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;inference.location.live.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;inference.location.live.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;insiderppe.cloudapp.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;insiderppe.cloudapp.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-sn2-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-sn2-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-sn2-cor002.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-sn2-cor002.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;kv101-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;kv101-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;kv201-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;kv201-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;kv401-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;kv401-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;lb1.www.ms.akadns.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;lb1.www.ms.akadns.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;licensing.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;licensing.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;live.rads.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;live.rads.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ls2web.redmond.corp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ls2web.redmond.corp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;m.adnxs.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;m.adnxs.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;mediaredirect.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;mediaredirect.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;mobile.pipe.aria.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;mobile.pipe.aria.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;msftncsi.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;msftncsi.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;msntest.serving-sys.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;msntest.serving-sys.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;oca.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;oca.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;oca.telemetry.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;oca.telemetry.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;officeclient.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;officeclient.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;oneclient.sfx.ms&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;oneclient.sfx.ms A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;pre.footprintpredict.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;pre.footprintpredict.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;preview.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;preview.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;pti.store.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;pti.store.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;query.prod.cms.rt.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;query.prod.cms.rt.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;rad.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;rad.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;redir.metaservices.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;redir.metaservices.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;register.cdpcs.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;register.cdpcs.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;reports.wes.df.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;reports.wes.df.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;s0.2mdn.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;s0.2mdn.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;schemas.microsoft.akadns.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;schemas.microsoft.akadns.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;search.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;search.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;secure.adnxs.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;secure.adnxs.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;secure.flashtalking.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;secure.flashtalking.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;services.wes.df.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;services.wes.df.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings.data.glbdns2.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings.data.glbdns2.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings-sandbox.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings-sandbox.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings-ssl.xboxlive.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings-ssl.xboxlive.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings-win.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings-win.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings-win-ppe.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings-win-ppe.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sn3301-c.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sn3301-c.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sn3301-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sn3301-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sn3301-g.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sn3301-g.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;so.2mdn.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;so.2mdn.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;spynet2.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;spynet2.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;spynetalt.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;spynetalt.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;spyneteurope.microsoft.akadns.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;spyneteurope.microsoft.akadns.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sqm.df.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sqm.df.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sqm.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sqm.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sqm.telemetry.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sqm.telemetry.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;static.2mdn.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;static.2mdn.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;storecatalogrevocation.storequality.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;storecatalogrevocation.storequality.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;storeedgefd.dsx.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;storeedgefd.dsx.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;store-images.s-microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;store-images.s-microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;support.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;support.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;survey.watson.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;survey.watson.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;t0.ssl.ak.dynamic.tiles.virtualearth.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;t0.ssl.ak.dynamic.tiles.virtualearth.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;t0.ssl.ak.tiles.virtualearth.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;t0.ssl.ak.tiles.virtualearth.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;telecommand.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;telecommand.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;telecommand.telemetry.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;telecommand.telemetry.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;telemetry.appex.bing.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;telemetry.appex.bing.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;telemetry.urs.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;telemetry.urs.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;test.activity.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;test.activity.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;tile-service.weather.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;tile-service.weather.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;time.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;time.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;tk2.plt.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;tk2.plt.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;tsfe.trafficshaping.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;tsfe.trafficshaping.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;urs.smartscreen.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;urs.smartscreen.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;v10.vortex-win.data.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;v10.vortex-win.data.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;v10.vortex-win.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;v10.vortex-win.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;version.hybrid.api.here.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;version.hybrid.api.here.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;view.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;view.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-bn2.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-bn2.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-cy2.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-cy2.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex.data.glbdns2.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex.data.glbdns2.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex.data.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex.data.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-db5.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-db5.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-hk2.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-hk2.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-sandbox.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-sandbox.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-win.data.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-win.data.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-win.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-win.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;watson.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;watson.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;watson.ppe.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;watson.ppe.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;watson.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;watson.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;watson.telemetry.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;watson.telemetry.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;wdcpalt.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;wdcpalt.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;wdcp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;wdcp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;web.vortex.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;web.vortex.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;wes.df.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;wes.df.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;win10.ipv6.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;win10.ipv6.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;win10-trt.msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;win10-trt.msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;win1710.ipv6.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;win1710.ipv6.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;wscont.apps.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;wscont.apps.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;www.msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;www.msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;www.msftconnecttest.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;www.msftconnecttest.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;www.msftncsi.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;www.msftncsi.com A 0.0.0.1&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DNSCrypt ==&lt;br /&gt;
Configuring DNSCrypt to send it&#039;s lookups through the VPN and not directly out your ppp interface is done using a socks proxy.&lt;br /&gt;
&lt;br /&gt;
You can test that you&#039;re not getting DNS leaks by using [https://www.dnsleaktest.com dnsleak.com] or this one from [https://www.grc.com/dns/dns.htm GRC]. Providers like CloudFlare and Google (1.1.1.1, 8.8.8.8) use [https://en.wikipedia.org/wiki/Anycast anycast] which should be pointing to a server located to where your VPN exits.&lt;br /&gt;
&lt;br /&gt;
=== /etc/dnscrypt-proxy/dnscrypt-proxy.toml ===&lt;br /&gt;
Using the sample dnscrypt config is fine, you will need to make these changes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;listen_addresses = [&#039;127.0.0.1:53000&#039;, &#039;[::1]:53000&#039;]&lt;br /&gt;
proxy = &amp;quot;socks5://127.0.0.1:1080&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Dante ==&lt;br /&gt;
First install dante, you&#039;ll need to pin the testing repository. See: [[Alpine Linux package management#Repository pinning]].&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add dante-server@testing}}&lt;br /&gt;
&lt;br /&gt;
Configure it like so:&lt;br /&gt;
&lt;br /&gt;
=== /etc/sockd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;logoutput: stderr&lt;br /&gt;
internal: 127.0.0.1 port = 1080&lt;br /&gt;
external: tun0&lt;br /&gt;
clientmethod: none&lt;br /&gt;
socksmethod: none&lt;br /&gt;
user.unprivileged: sockd&lt;br /&gt;
&lt;br /&gt;
# Allow connections from localhost to any host&lt;br /&gt;
client pass {&lt;br /&gt;
        from: 127.0.0.1/8 to: 0.0.0.0/0&lt;br /&gt;
	log: error # connect/disconnect&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Generic pass statement - bind/outgoing traffic&lt;br /&gt;
socks pass {&lt;br /&gt;
        from: 0.0.0.0/0 to: 0.0.0.0/0&lt;br /&gt;
        command: bind connect udpassociate&lt;br /&gt;
        log: error # connect disconnect iooperation&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Generic pass statement for incoming connections/packets&lt;br /&gt;
socks pass {&lt;br /&gt;
        from: 0.0.0.0/0 to: 0.0.0.0/0&lt;br /&gt;
        command: bindreply udpreply&lt;br /&gt;
        log: error # connect disconnect iooperation&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally the services to the the default run level:&lt;br /&gt;
{{cmd|rc-update add sockd default}}&lt;br /&gt;
{{cmd|rc-update add unbound default}}&lt;br /&gt;
{{cmd|rc-update add dnscrypt-proxy default}}&lt;br /&gt;
&lt;br /&gt;
= Random number generation =&lt;br /&gt;
There are two ways to assist with random number generation [[Entropy and randomness]]. This can be particularly useful if you&#039;re generating your own Diffie-Hellman nonce file, used in the [[FreeRadius EAP-TLS configuration]] section. Or for that matter any process which requires lots of random number generation such as generating certificates or public private keys.&lt;br /&gt;
&lt;br /&gt;
== Haveged ==&lt;br /&gt;
[http://www.issihosts.com/haveged Haveged] is a great way to improve random number generation speed. It uses the unpredictable random number generator based upon an adaptation of the [http://www.irisa.fr/caps/projects/hipsor/ HAVEGE] algorithm.&lt;br /&gt;
&lt;br /&gt;
Install haveged:&lt;br /&gt;
{{cmd|apk add haveged}}&lt;br /&gt;
&lt;br /&gt;
Start haveged service:&lt;br /&gt;
{{cmd|service haveged start}}&lt;br /&gt;
&lt;br /&gt;
Add service to boot&lt;br /&gt;
{{cmd|rc-update add haveged default}}&lt;br /&gt;
&lt;br /&gt;
Start rngd service:&lt;br /&gt;
{{cmd|service haveged start}}&lt;br /&gt;
&lt;br /&gt;
Add service to boot:&lt;br /&gt;
{{cmd|rc-update add haveged default}}&lt;br /&gt;
&lt;br /&gt;
== rng-tools with bcm2708-rng ==&lt;br /&gt;
&lt;br /&gt;
=== Pre Alpine Linux 3.8 (which includes rngd 5) ===&lt;br /&gt;
All Raspberry Pis come with the bcm2708-rng random number generator on board. If you are doing this project on a Raspberry Pi then you may choose to use this also.&lt;br /&gt;
&lt;br /&gt;
Add the kernel module to /etc/modules:&lt;br /&gt;
{{cmd|echo &amp;quot;bcm2708-rng&amp;quot; &amp;gt; /etc/modules}}&lt;br /&gt;
&lt;br /&gt;
Insert module:&lt;br /&gt;
{{cmd|modprobe bcm2708-rng}}&lt;br /&gt;
&lt;br /&gt;
Install rng-tools:&lt;br /&gt;
{{cmd|apk add rng-tools}}&lt;br /&gt;
&lt;br /&gt;
Set the random device (/dev/random) and rng device (/dev/hwrng) in /etc/conf.d/rngd&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;RNGD_OPTS=&amp;quot;--no-drng=1 --no-tpm=1 -o /dev/random -r /dev/hwrng&amp;quot;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== Post Alpine Linux 3.8 (which includes rngd 6) ===&lt;br /&gt;
&lt;br /&gt;
With AlpineLinux 3.8 you don&#039;t have to insert the module as it is already built in the kernel.&lt;br /&gt;
&lt;br /&gt;
Additionally the syntax has changed for rngd so for /etc/conf.d/rngd you&#039;ll need&lt;br /&gt;
&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;RNGD_OPTS=&amp;quot;-x1 -o /dev/random -r /dev/hwrng&amp;quot;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Start rngd service:&lt;br /&gt;
{{cmd|service rngd start}}&lt;br /&gt;
&lt;br /&gt;
Add service to boot:&lt;br /&gt;
{{cmd|rc-update add rngd default}}&lt;br /&gt;
&lt;br /&gt;
You can test it with:&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;cat /dev/hwrng | rngtest -c 1000&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
You should see something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rngtest 5&lt;br /&gt;
Copyright (c) 2004 by Henrique de Moraes Holschuh&lt;br /&gt;
This is free software; see the source for copying conditions.  There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&lt;br /&gt;
&lt;br /&gt;
rngtest: starting FIPS tests...&lt;br /&gt;
rngtest: bits received from input: 20000032&lt;br /&gt;
rngtest: FIPS 140-2 successes: 1000&lt;br /&gt;
rngtest: FIPS 140-2 failures: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Monobit: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Poker: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Runs: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Long run: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Continuous run: 0&lt;br /&gt;
rngtest: input channel speed: (min=117.709; avg=808.831; max=3255208.333)Kibits/s&lt;br /&gt;
rngtest: FIPS tests speed: (min=17.199; avg=22.207; max=22.653)Mibits/s&lt;br /&gt;
rngtest: Program run time: 25178079 microseconds&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s possible you might have a some failures. That&#039;s okay, two runs I did previously had a failure each.&lt;br /&gt;
&lt;br /&gt;
= WiFi 802.1x EAP and FreeRadius =&lt;br /&gt;
A more secure way than using pre-shared keys (WPA2) is to use [https://en.wikipedia.org/wiki/Extensible_Authentication_Protocol#EAP-TLS EAP-TLS] and use separate certificates for each device. See [[FreeRadius EAP-TLS configuration]]&lt;br /&gt;
&lt;br /&gt;
= VPN Tunnel on specific subnet =&lt;br /&gt;
As mentioned earlier in this article it might be useful to have a VPN subnet and a non-VPN subnet. Typically gaming consoles or computers might want low-latency connections. For this exercise we use fwmark.&lt;br /&gt;
&lt;br /&gt;
We expand the network to look like this:&lt;br /&gt;
&lt;br /&gt;
[[File:Network diagram ipv4 tunnel.svg|900px|center|Network Diagram with IPv4 tunnel]]&lt;br /&gt;
&lt;br /&gt;
Install the necessary packages:&lt;br /&gt;
{{cmd|apk add openvpn iproute2 iputils}}&lt;br /&gt;
&lt;br /&gt;
== /etc/modules ==&lt;br /&gt;
You&#039;ll want to add the tun module&lt;br /&gt;
&amp;lt;pre&amp;gt;tun&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/iproute2/rt_tables ==&lt;br /&gt;
Add the two routing tables to the bottom of rt_tables. It should look something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;#&lt;br /&gt;
# reserved values&lt;br /&gt;
#&lt;br /&gt;
255	local&lt;br /&gt;
254	main&lt;br /&gt;
253	default&lt;br /&gt;
0	unspec&lt;br /&gt;
#&lt;br /&gt;
# local&lt;br /&gt;
#&lt;br /&gt;
#1	inr.ruhep&lt;br /&gt;
1 ISP&lt;br /&gt;
2 VPN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/interfaces ==&lt;br /&gt;
Next up add the virtual interface (really just a IP address to eth0) eth0:2, just under eth0 will do.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Route to VPN subnet&lt;br /&gt;
auto eth0:2&lt;br /&gt;
iface eth0:2 inet static&lt;br /&gt;
  address 192.168.2.1&lt;br /&gt;
  netmask 255.255.255.0&lt;br /&gt;
  broadcast 192.168.2.255&lt;br /&gt;
  post-up /etc/network/fwmark_rules&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/sysctl.d/local.conf ==&lt;br /&gt;
If you want to use fwmark rules you need to change this setting. It causes the router to still do source validation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Needed to use fwmark&lt;br /&gt;
net.ipv4.conf.all.rp_filter = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fwmark won&#039;t work if you have this set to 1.&lt;br /&gt;
&lt;br /&gt;
== /etc/network/fwmark_rules ==&lt;br /&gt;
In this file we want to put the fwmark rules and set the correct priorities.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Normal packets to go direct out WAN&lt;br /&gt;
/sbin/ip rule add fwmark 1 table ISP prio 100&lt;br /&gt;
&lt;br /&gt;
# Put packets destined into VPN when VPN is up&lt;br /&gt;
/sbin/ip rule add fwmark 2 table VPN prio 200&lt;br /&gt;
&lt;br /&gt;
# Prevent packets from being routed out when VPN is down.&lt;br /&gt;
# This prevents packets from falling back to the main table&lt;br /&gt;
# that has a priority of 32766&lt;br /&gt;
/sbin/ip rule add prohibit fwmark 2 prio 300&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/ppp/ip-up ==&lt;br /&gt;
Next up we want to create the routes that should be run when PPP comes online. There are special hooks we can use in ip-up and ip-down to refer to the IP address, [https://ppp.samba.org/pppd.html#sect13 ppp man file - Scripts ] You can also read about them in your man file if you have ppp-doc installed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by pppd when there&#039;s a successful ppp connection.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Flush out any old rules that might be there&lt;br /&gt;
/sbin/ip route flush table ISP&lt;br /&gt;
&lt;br /&gt;
# Add route to table from subnets on LAN&lt;br /&gt;
/sbin/ip route add 192.168.1.0/24 dev eth0 table ISP&lt;br /&gt;
/sbin/ip route add 192.168.2.0/24 dev eth0 table ISP&lt;br /&gt;
&lt;br /&gt;
# Add route from IP given by ISP to the table&lt;br /&gt;
/sbin/ip rule add from ${IPREMOTE} table ISP prio 100&lt;br /&gt;
&lt;br /&gt;
# Add a default route&lt;br /&gt;
/sbin/ip route add table ISP default via ${IPREMOTE} dev ${IFNAME}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/ppp/ip-down ==&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by pppd after the connection has ended.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Delete the rules when we take the interface down&lt;br /&gt;
/sbin/ip rule del from ${IPREMOTE} table ISP prio 100&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/openvpn/route-up-fwmark.sh ==&lt;br /&gt;
OpenVPN needs similar routing scripts and it also has it&#039;s own special hooks that allow you to specify particular values. A full list is here [https://openvpn.net/index.php/open-source/documentation/manuals/65-openvpn-20x-manpage.html#lbAS OpenVPN man file - Environmental Variables]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by OpenVPN when there&#039;s a successful VPN connection.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Flush out any old rules that might be there&lt;br /&gt;
/sbin/ip route flush table VPN&lt;br /&gt;
&lt;br /&gt;
# Add route to table from 192.168.2.0/24 subnet on LAN&lt;br /&gt;
/sbin/ip route add 192.168.2.0/24 dev eth0 table VPN&lt;br /&gt;
&lt;br /&gt;
# Add route from VPN interface IP to the VPN table&lt;br /&gt;
/sbin/ip rule add from ${ifconfig_local} table VPN prio 200&lt;br /&gt;
&lt;br /&gt;
# Add a default route&lt;br /&gt;
/sbin/ip route add default via ${ifconfig_local} dev ${dev} table VPN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/openvpn/route-pre-down-fwmark.sh ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by OpenVPN after the connection has ended&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Delete the rules when we take the interface down&lt;br /&gt;
/sbin/ip rule del from ${ifconfig_local} table VPN prio 200&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What I did find was when starting and stopping the OpenVPN service if you used:&lt;br /&gt;
&lt;br /&gt;
{{cmd|service openvpn stop}}&lt;br /&gt;
&lt;br /&gt;
The rules in route-pre-down-fwmark.sh were not executed.&lt;br /&gt;
&lt;br /&gt;
However:&lt;br /&gt;
&lt;br /&gt;
{{cmd|/etc/init.d/openvpn stop}}&lt;br /&gt;
&lt;br /&gt;
seemed to work correctly.&lt;br /&gt;
&lt;br /&gt;
== Advanced IPtables rules that allow us to route into our two routing tables ==&lt;br /&gt;
This is an expansion of the previous set of rules. It sets up NAT masquerading for the 192.168.2.0 to go through the VPN using marked packets.&lt;br /&gt;
&lt;br /&gt;
I used these guides to write complete this: &lt;br /&gt;
&lt;br /&gt;
* [http://nerdboys.com/2006/05/05/conning-the-mark-multiwan-connections-using-iptables-mark-connmark-and-iproute2 Conning the Mark: Multiwan connections using IPTables, MARK, CONNMARK and iproute2 ]&lt;br /&gt;
* [http://nerdboys.com/2006/05/08/multiwan-connections-addendum Multiwan connections addendum]&lt;br /&gt;
* [http://inai.de/images/nf-packet-flow.png Netfilter packet flow]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#########################################################################&lt;br /&gt;
# Advanced routing rule set&lt;br /&gt;
# Uses 192.168.1.0 via ISP&lt;br /&gt;
#      192.168.2.0 via VPN&lt;br /&gt;
#&lt;br /&gt;
# Packets to/from 192.168.1.0/24 are marked with 0x1 and routed to ISP&lt;br /&gt;
# Packets to/from 192.168.2.0/24 are marked with 0x2 and routed to VPN&lt;br /&gt;
#&lt;br /&gt;
#########################################################################&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# NAT Table&lt;br /&gt;
# This is where translation of packets happens and &amp;quot;forwarding&amp;quot; of ports&lt;br /&gt;
# to specific hosts.&lt;br /&gt;
#&lt;br /&gt;
*nat&lt;br /&gt;
&lt;br /&gt;
# Set default policies for table&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Port forwarding for Bittorrent&lt;br /&gt;
-A PREROUTING -i tun0 -p tcp -m tcp --dport 6881:6889 -j DNAT --to-destination 192.168.2.20&lt;br /&gt;
-A PREROUTING -i tun0 -p udp -m udp --dport 6881:6889 -j DNAT --to-destination 192.168.2.20&lt;br /&gt;
&lt;br /&gt;
# Allows routing to our modem subnet so we can access the web interface&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
-A POSTROUTING -s 192.168.2.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the VPN tunnel&lt;br /&gt;
-A POSTROUTING -o tun0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the PPP tunnel&lt;br /&gt;
-A POSTROUTING -o ppp0 -j MASQUERADE&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Filter Table&lt;br /&gt;
# This is where we decide to ACCEPT, DROP or REJECT things&lt;br /&gt;
#&lt;br /&gt;
*filter&lt;br /&gt;
:INPUT DROP [0:0]&lt;br /&gt;
:FORWARD DROP [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for forwarding packets&lt;br /&gt;
:FWD_ETH0 - [0:0]&lt;br /&gt;
:FWD_ETH1 - [0:0]&lt;br /&gt;
:FWD_PPP0 - [0:0]&lt;br /&gt;
:FWD_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for input packets (for host itself)&lt;br /&gt;
:IN_ETH0 - [0:0]&lt;br /&gt;
:IN_ETH1 - [0:0]&lt;br /&gt;
:IN_PPP0 - [0:0]&lt;br /&gt;
:IN_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a log drop chain&lt;br /&gt;
:LOG_DROP - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a reject chain&lt;br /&gt;
:LOG_REJECT - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Pass input packet to corresponding rule chain&lt;br /&gt;
-A INPUT -i lo -j ACCEPT&lt;br /&gt;
-A INPUT -i eth0 -j IN_ETH0&lt;br /&gt;
-A INPUT -i eth1 -j IN_ETH1&lt;br /&gt;
-A INPUT -i ppp0 -j IN_PPP0&lt;br /&gt;
-A INPUT -i tun0 -j IN_TUN0&lt;br /&gt;
&lt;br /&gt;
# Track forwarded packets&lt;br /&gt;
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass forwarded packet to corresponding rule chain&lt;br /&gt;
-A FORWARD -i eth0 -j FWD_ETH0&lt;br /&gt;
-A FORWARD -i eth1 -j FWD_ETH1&lt;br /&gt;
-A FORWARD -i ppp0 -j FWD_PPP0&lt;br /&gt;
-A FORWARD -i tun0 -j FWD_TUN0&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to ISP&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to VPN&lt;br /&gt;
-A FWD_ETH0 -s 192.168.2.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow excepted server to be FORWARD to ppp0&lt;br /&gt;
#-A FWD_ETH0 -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -o ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward SSH packets from network to modem&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.1.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.2.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward HTTP packets from network to modem&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.1.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.2.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward Bittorrent Port to workstation&lt;br /&gt;
-A FWD_TUN0 -d 192.168.2.20/32 -p tcp -m tcp --dport 6881:6889 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_TUN0 -d 192.168.2.20/32 -p udp -m udp --dport 6881:6889 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# DNS to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# FreeRadius Client (eg a UniFi AP)&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Ubiquiti UAP Device Discovery Broadcast&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 10001 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# NTP to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept traffic to router on both subnets&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow excepted server to be INPUT to eth0 from LAN&lt;br /&gt;
#-A IN_ETH0 -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -o ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# HTTP To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked PPP0 connection&lt;br /&gt;
-A IN_PPP0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on PPP0&lt;br /&gt;
-A IN_PPP0 -j LOG --log-prefix &amp;quot;DROP:INPUT &amp;quot; --log-level 6&lt;br /&gt;
-A IN_PPP0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked TUN0 connection&lt;br /&gt;
-A IN_TUN0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on TUN0&lt;br /&gt;
-A IN_TUN0 -j LOG --log-prefix &amp;quot;DROP:INPUT &amp;quot; --log-level 6&lt;br /&gt;
-A IN_TUN0 -j LOG_DROP&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mangle Table&lt;br /&gt;
# This is the place where our markings happen, whether they be 0x1 or 0x2&lt;br /&gt;
#&lt;br /&gt;
*mangle&lt;br /&gt;
&lt;br /&gt;
# Set default policies for table&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:FORWARD ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Restore CONNMARK to the MARK (If one doesn&#039;t exist then no mark is set)&lt;br /&gt;
-A PREROUTING -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff&lt;br /&gt;
&lt;br /&gt;
# If packet MARK is 2, then it means there is already a connection mark and the&lt;br /&gt;
# original packet came in on VPN&lt;br /&gt;
-A PREROUTING -s 192.168.2.0/24 -m mark --mark 0x2 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Check exception (this is a server which when accessed on a 192.168.2.0/24 address will go out the ISP table) are 0x1&lt;br /&gt;
#-A PREROUTING -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -m mark --mark 0x1 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Mark packets coming from 192.168.2.0/24 are 0x2&lt;br /&gt;
-A PREROUTING -s 192.168.2.0/24 -j MARK --set-xmark 0x2/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# If packet MARK is 1, then it means there is already a connection mark and the&lt;br /&gt;
# original packet came in on ISP&lt;br /&gt;
-A PREROUTING -s 192.168.1.0/24 -m mark --mark 0x1 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Mark packets 192.168.1.0/24 are 0x1&lt;br /&gt;
-A PREROUTING -s 192.168.1.0/24 -j MARK --set-xmark 0x1/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Mark exception (this is a server which when accessed on a 192.168.2.0/24 address will go out the ISP table) as 0x1&lt;br /&gt;
#-A PREROUTING -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -j MARK --set-xmark 0x1/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Set mark to 0 - This is for the modem. Otherwise it will mark with 0x1 or 0x2&lt;br /&gt;
-A PREROUTING -d 192.168.0.1/32 -j MARK --set-xmark 0x0/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Save MARK to CONNMARK (remember iproute can&#039;t see CONNMARKs)&lt;br /&gt;
-A PREROUTING -j CONNMARK --save-mark --nfmask 0xffffffff --ctmask 0xffffffff&lt;br /&gt;
COMMIT&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may want to delete certain rules here that do not apply to you, eg the FreeRadius rules. That is covered later in this article.&lt;br /&gt;
&lt;br /&gt;
== OpenVPN Routing ==&lt;br /&gt;
Usually when you connect with OpenVPN the remote VPN server will push routes down to your system. We don&#039;t want this as we still want to be able to access the internet without the VPN. We have also created our own routes that we want to use earlier in this guide.&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need to add this to the bottom of your OpenVPN configuration file:&lt;br /&gt;
&amp;lt;pre&amp;gt;# Prevents default gateway from being set on the default routing table&lt;br /&gt;
route-noexec&lt;br /&gt;
&lt;br /&gt;
# Allows route-up script to be executed&lt;br /&gt;
script-security 2&lt;br /&gt;
&lt;br /&gt;
# Calls custom shell script after connection to add necessary routes&lt;br /&gt;
route-up /etc/openvpn/route-up-fwmark.sh&lt;br /&gt;
route-pre-down /etc/openvpn/route-pre-down-fwmark.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
My VPNs are arranged like this in /etc/openvpn:&lt;br /&gt;
&lt;br /&gt;
OpenVPN configuration file for that server:&lt;br /&gt;
&amp;lt;pre&amp;gt;countrycode.serverNumber.openvpn.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenVPN certs for that server:&lt;br /&gt;
&amp;lt;pre&amp;gt;countrycode.serverNumber.openvpn/countrycode.serverNumber.openvpn.crt&lt;br /&gt;
countrycode.serverNumber.openvpn/countrycode.serverNumber.openvpn.key&lt;br /&gt;
countrycode.serverNumber.openvpn/myKey.crt&lt;br /&gt;
countrycode.serverNumber.openvpn/myKey.key&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So I use this helpful script to automate the process of changing between servers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
vpn_server_filename=$1&lt;br /&gt;
&lt;br /&gt;
rm /etc/openvpn/openvpn.conf&lt;br /&gt;
ln -s $vpn_server_filename /etc/openvpn/openvpn.conf&lt;br /&gt;
chown -R openvpn:openvpn /etc/openvpn&lt;br /&gt;
chmod -R a=-rwx,u=+rX /etc/openvpn&lt;br /&gt;
chmod u=x /etc/openvpn/*.sh*&lt;br /&gt;
&lt;br /&gt;
if grep -Fxq &amp;quot;#CustomStuffHere&amp;quot; openvpn.conf&lt;br /&gt;
then&lt;br /&gt;
    echo &amp;quot;Not adding custom routes, this server has been used previously&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Adding custom route rules&amp;quot;&lt;br /&gt;
cat &amp;lt;&amp;lt;EOF &amp;gt;&amp;gt; /etc/openvpn/openvpn.conf&lt;br /&gt;
&lt;br /&gt;
#CustomStuffHere&lt;br /&gt;
# Prevents default gateway from being set on the default routing table&lt;br /&gt;
route-noexec&lt;br /&gt;
&lt;br /&gt;
# Allows route-up script to be executed&lt;br /&gt;
script-security 2&lt;br /&gt;
&lt;br /&gt;
# Calls custom shell script after connection to add necessary routes&lt;br /&gt;
route-up /etc/openvpn/route-up-fwmark.sh&lt;br /&gt;
route-pre-down /etc/openvpn/route-pre-down-fwmark.sh&lt;br /&gt;
&lt;br /&gt;
# Logging of OpenVPN to file&lt;br /&gt;
#log /etc/openvpn/openvpn.log&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
fi&lt;br /&gt;
echo &amp;quot;Remember to set BitTorrent port forward in VPN control panel&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That way I can simply change between servers by running:&lt;br /&gt;
{{cmd|changevpn.sh countrycode.serverNumber.openvpn}}&lt;br /&gt;
&lt;br /&gt;
and then restart openvpn. I am also reminded to put the port forward through on the VPN control panel so my BitTorrent client is connectable:&lt;br /&gt;
&lt;br /&gt;
{{cmd|service openvpn restart}}&lt;br /&gt;
&lt;br /&gt;
Finally add openvpn to the default run level&lt;br /&gt;
{{cmd|rc-update add openvpn default}}&lt;br /&gt;
&lt;br /&gt;
= Creating a LAN only Subnet =&lt;br /&gt;
In this section, we&#039;ll be creating a LAN only subnet. This subnet will be 192.168.3.0/24. The idea of this subnet is nodes in it cannot have their packets forwarded to the Internet, however they can be accessed via the other LAN subnets 192.168.1.0/24 and 192.168.2.0/24. This approach doesn&#039;t use VLANs although that would be recommended if you had a managed switch. The idea of this subnet is for things like WiFi access points, IP Phones which contact a local Asterisk server and of course printers.&lt;br /&gt;
&lt;br /&gt;
At the end of this section we will have something like:&lt;br /&gt;
&lt;br /&gt;
[[File:Network diagram ipv4 tunnel LANONLY ROUTE.svg|900px|center|Network Diagram LAN ONLY Route with IPv4]]&lt;br /&gt;
&lt;br /&gt;
== /etc/iproute2/rt_tables ==&lt;br /&gt;
First up we&#039;ll add a third routing table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;3 LAN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/interfaces ==&lt;br /&gt;
Add a an extra virtual interface (really just a IP address to eth0).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# LAN Only&lt;br /&gt;
auto eth0:3&lt;br /&gt;
iface eth0:3 inet static&lt;br /&gt;
  address 192.168.3.1&lt;br /&gt;
  netmask 255.255.255.0&lt;br /&gt;
  broadcast 192.168.3.255&lt;br /&gt;
  post-up /etc/network/route_LAN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/route_LAN ==&lt;br /&gt;
This file will have our route added to it&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Add routes from ISP to LAN&lt;br /&gt;
/sbin/ip route add 192.168.1.0/24 dev eth0 table LAN&lt;br /&gt;
&lt;br /&gt;
# Add route from VPN to LAN&lt;br /&gt;
/sbin/ip route add 192.168.2.0/24 dev eth0 table LAN&lt;br /&gt;
&lt;br /&gt;
# Add route from LAN to it&#039;s own table&lt;br /&gt;
/sbin/ip route add 192.168.3.0/24 dev eth0 table LAN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/ppp/ip-up ==&lt;br /&gt;
Append a route from the LAN subnet to the ISP table&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Add route to LAN subnet&lt;br /&gt;
/sbin/ip route add 192.168.3.0/24 dev eth0 table ISP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/openvpn/route-up-fwmark.sh ==&lt;br /&gt;
Append a route from the LAN subnet to the VPN table&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Add route to LAN only subnet&lt;br /&gt;
/sbin/ip route add 192.168.3.0/24 dev eth0 table VPN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/ntpd.conf ==&lt;br /&gt;
Add a listen address for ntp (OpenNTPD).&lt;br /&gt;
&lt;br /&gt;
You should now have:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Addresses to listen on (ntpd does not listen by default)&lt;br /&gt;
listen on 192.168.1.1&lt;br /&gt;
listen on 192.168.2.1&lt;br /&gt;
listen on 192.168.3.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Devices needing the correct time will need to use this NTP server because they will not be able to get it from the Internet.&lt;br /&gt;
&lt;br /&gt;
== Blocking bogons ==&lt;br /&gt;
Our LAN now has 4 subnets in total that are possible:&lt;br /&gt;
&lt;br /&gt;
* 192.168.0.0/30 (connection between modem and router)&lt;br /&gt;
* 192.168.1.0/24 (ISP table, directly routed out WAN)&lt;br /&gt;
* 192.168.2.0/24 (VPN table, routed out VPN)&lt;br /&gt;
* 192.168.3.0/24 (Null routed subnet for LAN only hosts)&lt;br /&gt;
* 172.16.32.0/20 (VPN provider&#039;s network, so we can access things on the VPN&#039;s network).&lt;br /&gt;
&lt;br /&gt;
Everything else should be rejected. No packets should ever be forwarded on 192.168.5.2 or 10.0.0.5 for example.&lt;br /&gt;
&lt;br /&gt;
=== Installing ipset ===&lt;br /&gt;
Install ipset:&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add ipset}}&lt;br /&gt;
&lt;br /&gt;
Add it to start up:&lt;br /&gt;
{{cmd|rc-update add ipset default}}&lt;br /&gt;
&lt;br /&gt;
Now we need to load the lists of addresses into ipset [http://blog.ls20.com/securing-your-server-using-ipset-and-dynamic-blocklists Securing Your Server using IPset and Dynamic Blocklists] mentions a [https://gist.github.com/hwdsl2/6dce75072274abfd2781 script] which was particularly useful. This script could be run on a cron job if you wanted to regularly update it and for the full bogon list you should as they change when that address space has been allocated.&lt;br /&gt;
&lt;br /&gt;
For the purpose of this we will be using just the [https://files.pfsense.org/lists/bogon-bn-nonagg.txt bogon-bn-nonagg.txt] list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;0.0.0.0/8&lt;br /&gt;
10.0.0.0/8&lt;br /&gt;
100.64.0.0/10&lt;br /&gt;
127.0.0.0/8&lt;br /&gt;
169.254.0.0/16&lt;br /&gt;
172.16.0.0/12&lt;br /&gt;
192.0.0.0/24&lt;br /&gt;
192.0.2.0/24&lt;br /&gt;
192.168.0.0/16&lt;br /&gt;
198.18.0.0/15&lt;br /&gt;
198.51.100.0/24&lt;br /&gt;
203.0.113.0/24&lt;br /&gt;
224.0.0.0/4&lt;br /&gt;
240.0.0.0/4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is unlikely to change as it&#039;s the IPV4 [https://en.wikipedia.org/wiki/Reserved_IP_addresses Reserved IP addresses] space. The script: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#! /bin/bash&lt;br /&gt;
&lt;br /&gt;
# /usr/local/sbin/fullbogons-ipv4&lt;br /&gt;
# BoneKracker&lt;br /&gt;
# Rev. 11 October 2012&lt;br /&gt;
# Tested with ipset 6.13&lt;br /&gt;
&lt;br /&gt;
# Purpose: Periodically update an ipset used in a running firewall to block&lt;br /&gt;
# bogons. Bogons are addresses that nobody should be using on the public&lt;br /&gt;
# Internet because they are either private, not to be assigned, or have&lt;br /&gt;
# not yet been assigned.&lt;br /&gt;
#&lt;br /&gt;
# Notes: Call this from crontab. Feed updated every 4 hours.&lt;br /&gt;
&lt;br /&gt;
# target=&amp;quot;http://www.team-cymru.org/Services/Bogons/fullbogons-ipv4.txt&amp;quot;&lt;br /&gt;
# Use alternative URL from pfSense, due to 404 error with URL above&lt;br /&gt;
target=&amp;quot;https://files.pfsense.org/lists/bogon-bn-nonagg.txt&amp;quot;&lt;br /&gt;
ipset_params=&amp;quot;hash:net&amp;quot;&lt;br /&gt;
&lt;br /&gt;
filename=$(basename ${target})&lt;br /&gt;
firewall_ipset=${filename%.*}           # ipset will be filename minus ext&lt;br /&gt;
data_dir=&amp;quot;/var/tmp/${firewall_ipset}&amp;quot;   # data directory will be same&lt;br /&gt;
data_file=&amp;quot;${data_dir}/${filename}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# if data directory does not exist, create it&lt;br /&gt;
mkdir -pm 0750 ${data_dir}&lt;br /&gt;
&lt;br /&gt;
# function to get modification time of the file in log-friendly format&lt;br /&gt;
get_timestamp() {&lt;br /&gt;
    date -r $1 +%m/%d&#039; &#039;%R&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# file modification time on server is preserved during wget download&lt;br /&gt;
[ -w ${data_file} ] &amp;amp;&amp;amp; old_timestamp=$(get_timestamp ${data_file})&lt;br /&gt;
&lt;br /&gt;
# fetch file only if newer than the version we already have&lt;br /&gt;
wget -qNP ${data_dir} ${target}&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$?&amp;quot; -ne &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
    logger -p cron.err &amp;quot;IPSet: ${firewall_ipset} wget failed.&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
timestamp=$(get_timestamp ${data_file})&lt;br /&gt;
&lt;br /&gt;
# compare timestamps because wget returns success even if no newer file&lt;br /&gt;
if [ &amp;quot;${timestamp}&amp;quot; != &amp;quot;${old_timestamp}&amp;quot; ]; then&lt;br /&gt;
&lt;br /&gt;
    temp_ipset=&amp;quot;${firewall_ipset}_temp&amp;quot;&lt;br /&gt;
    ipset create ${temp_ipset} ${ipset_params}&lt;br /&gt;
&lt;br /&gt;
    #sed -i &#039;/^#/d&#039; ${data_file}            # strip comments&lt;br /&gt;
    sed -ri &#039;/^[#&amp;lt; \t]|^$/d&#039; ${data_file}   # occasionally the file has been xhtml&lt;br /&gt;
&lt;br /&gt;
    while read network; do&lt;br /&gt;
        ipset add ${temp_ipset} ${network}&lt;br /&gt;
    done &amp;lt; ${data_file}&lt;br /&gt;
&lt;br /&gt;
    # if ipset does not exist, create it&lt;br /&gt;
    ipset create -exist ${firewall_ipset} ${ipset_params}&lt;br /&gt;
&lt;br /&gt;
    # swap the temp ipset for the live one&lt;br /&gt;
    ipset swap ${temp_ipset} ${firewall_ipset}&lt;br /&gt;
    ipset destroy ${temp_ipset}&lt;br /&gt;
&lt;br /&gt;
    # log the file modification time for use in minimizing lag in cron schedule&lt;br /&gt;
    logger -p cron.notice &amp;quot;IPSet: ${firewall_ipset} updated (as of: ${timestamp}).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
fi&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you should see the list loaded into memory when you do:&lt;br /&gt;
&lt;br /&gt;
{{cmd|ipset list}}&lt;br /&gt;
&lt;br /&gt;
We want to save it so our router can refer to it next time it starts up so for that:&lt;br /&gt;
&lt;br /&gt;
{{cmd|/etc/init.d/ipset save}}&lt;br /&gt;
&lt;br /&gt;
=== Adding our allowed networks ===&lt;br /&gt;
&lt;br /&gt;
==== IPv4 ====&lt;br /&gt;
{{cmd|ipset create allowed-nets-ipv4 hash:net,iface family inet}}&lt;br /&gt;
&lt;br /&gt;
Then you can add each of your allowed networks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ipset add allowed-nets-ipv4 192.168.0.0/30,eth1&lt;br /&gt;
ipset add allowed-nets-ipv4 192.168.1.0/24,eth0&lt;br /&gt;
ipset add allowed-nets-ipv4 192.168.2.0/24,eth0&lt;br /&gt;
ipset add allowed-nets-ipv4 192.168.3.0/24,eth0&lt;br /&gt;
ipset add allowed-nets-ipv4 127.0.0.0/8,lo&lt;br /&gt;
ipset add allowed-nets-ipv4 172.16.32.0/20,tun0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IPv6 ====&lt;br /&gt;
For IPv6 if you&#039;ve got any [https://en.wikipedia.org/wiki/Unique_local_address Unique local address] ranges you may choose to add them:&lt;br /&gt;
&lt;br /&gt;
{{cmd|ipset create allowed-nets-ipv6 hash:net,iface family inet6}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ipset add allowed-nets-ipv6 fde4:8dba:82e1::/48,tun0&lt;br /&gt;
ipset add allowed-nets-ipv6 fde4:8dba:82e1:ffff::/64,eth0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finally save the sets with this command so they can be loaded next boot:&lt;br /&gt;
&lt;br /&gt;
{{cmd|/etc/init.d/ipset save}}&lt;br /&gt;
&lt;br /&gt;
== Restricting our LAN subnet with iptables, and blocking the bogons ==&lt;br /&gt;
Finally we can apply our iptables rules, to filter both 192.168.3.0/24 and make sure that subnets like 192.168.5.0/24 are not forwarded or accessible by our router. You will need to review these rules, and remove the ones that do not apply to you.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to change your RADIUS rules if you moved your WiFi APs into the 192.168.3.0/24 subnet. You&#039;ll also need to edit /etc/raddb/clients.conf&lt;br /&gt;
&lt;br /&gt;
I used a new table here called &amp;quot;raw&amp;quot;. This table is more primitive than the filter table. It cannot have FORWARD rules or INPUT rules. Therefore you will still need a FORWARD rule in your filter table to block bogons originating from your LAN.&lt;br /&gt;
&lt;br /&gt;
The only kind of rules we may use here are PREROUTING and OUTPUT. The OUTPUT rules will only filter traffic originating from our router&#039;s local processes, such as if we ran the ping command to a bogon range on the router&#039;s command prompt.&lt;br /&gt;
&lt;br /&gt;
Traffic passes over the raw table, before connecting marking as indicated by this packet flow map: [http://inai.de/images/nf-packet-flow.png Netfilter packet flow graph] this means we don&#039;t have to strip the mark off the bogon range in the mangle table anymore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#########################################################################&lt;br /&gt;
# Advanced routing rule set&lt;br /&gt;
# Uses 192.168.1.0 via ISP&lt;br /&gt;
#      192.168.2.0 via VPN&lt;br /&gt;
#      192.168.3.0 via LAN&lt;br /&gt;
#&lt;br /&gt;
# Packets to/from 192.168.1.0/24 are marked with 0x1 and routed to ISP&lt;br /&gt;
# Packets to/from 192.168.2.0/24 are marked with 0x2 and routed to VPN&lt;br /&gt;
# Packets to/from 192.168.3.0/24 are routed to LAN and not forwarded onto&lt;br /&gt;
#                                    the internet&lt;br /&gt;
#&lt;br /&gt;
#########################################################################&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Raw Table&lt;br /&gt;
# This table is the place where we drop all illegal packets from networks that&lt;br /&gt;
# do not exist&lt;br /&gt;
#&lt;br /&gt;
*raw&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a log drop chain&lt;br /&gt;
:LOG_DROP_BOGON - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create an output chain&lt;br /&gt;
:OUT_PPP0 - [0:0]&lt;br /&gt;
:OUT_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Allows traffic from VPN tunnel&lt;br /&gt;
-A PREROUTING -s 172.16.32.0/20 -i tun0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allows traffic to VPN tunnel&lt;br /&gt;
-A PREROUTING -d 172.16.32.0/20 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Block specified bogons coming in from ISP and VPN&lt;br /&gt;
# (unlikely to happen as they filter them on their router)&lt;br /&gt;
-A PREROUTING -i ppp0 -m set --match-set bogon-bn-nonagg src -j LOG_DROP_BOGON&lt;br /&gt;
-A PREROUTING -i tun0 -m set --match-set bogon-bn-nonagg src -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Allows my excepted ranges.&lt;br /&gt;
-A PREROUTING -m set --match-set allowed-nets-ipv4 src,src -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass output interface to corresponding chain&lt;br /&gt;
-A OUTPUT -o ppp0 -j OUT_PPP0&lt;br /&gt;
-A OUTPUT -o tun0 -j OUT_TUN0&lt;br /&gt;
&lt;br /&gt;
# Log drop chain&lt;br /&gt;
-A LOG_DROP_BOGON -j LOG --log-prefix &amp;quot;Dropped Bogon (ipv4) : &amp;quot; --log-level 6&lt;br /&gt;
-A LOG_DROP_BOGON -j DROP&lt;br /&gt;
&lt;br /&gt;
# Block packets originating from the router destined to bogon ranges&lt;br /&gt;
-A OUT_PPP0 -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Blocks packets originating from the router destined to bogon ranges&lt;br /&gt;
-A OUT_TUN0 -d 172.16.32.0/20 -j ACCEPT&lt;br /&gt;
-A OUT_TUN0 -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# NAT Table&lt;br /&gt;
# This is where translation of packets happens and &amp;quot;forwarding&amp;quot; of ports&lt;br /&gt;
# to specific hosts.&lt;br /&gt;
#&lt;br /&gt;
*nat&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Port forwarding for Bittorrent&lt;br /&gt;
-A PREROUTING -i tun0 -p tcp -m tcp --dport 6881:6889 -j DNAT --to-destination 192.168.2.20&lt;br /&gt;
-A PREROUTING -i tun0 -p udp -m udp --dport 6881:6889 -j DNAT --to-destination 192.168.2.20&lt;br /&gt;
&lt;br /&gt;
# Allows routing to our modem subnet so we can access the web interface&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
-A POSTROUTING -s 192.168.2.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the VPN tunnel&lt;br /&gt;
-A POSTROUTING -o tun0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the PPP tunnel&lt;br /&gt;
-A POSTROUTING -o ppp0 -j MASQUERADE&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Filter Table&lt;br /&gt;
# This is where we decide to ACCEPT, DROP or REJECT things&lt;br /&gt;
#&lt;br /&gt;
*filter&lt;br /&gt;
:INPUT DROP [0:0]&lt;br /&gt;
:FORWARD DROP [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for forwarding packets&lt;br /&gt;
:FWD_ETH0 - [0:0]&lt;br /&gt;
:FWD_ETH1 - [0:0]&lt;br /&gt;
:FWD_PPP0 - [0:0]&lt;br /&gt;
:FWD_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for input packets (for host itself)&lt;br /&gt;
:IN_ETH0 - [0:0]&lt;br /&gt;
:IN_ETH1 - [0:0]&lt;br /&gt;
:IN_PPP0 - [0:0]&lt;br /&gt;
:IN_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a drop chain&lt;br /&gt;
:LOG_DROP - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a log drop chain&lt;br /&gt;
:LOG_DROP_BOGON - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a reject chain&lt;br /&gt;
:LOG_REJECT_LANONLY - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create an output chain&lt;br /&gt;
:OUT_PPP0 - [0:0]&lt;br /&gt;
:OUT_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Pass input packet to corresponding rule chain&lt;br /&gt;
-A INPUT -i lo -j ACCEPT&lt;br /&gt;
-A INPUT -i eth0 -j IN_ETH0&lt;br /&gt;
-A INPUT -i eth1 -j IN_ETH1&lt;br /&gt;
-A INPUT -i ppp0 -j IN_PPP0&lt;br /&gt;
-A INPUT -i tun0 -j IN_TUN0&lt;br /&gt;
&lt;br /&gt;
# Track forwarded packets&lt;br /&gt;
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass forwarded packet to corresponding rule chain&lt;br /&gt;
-A FORWARD -i eth0 -j FWD_ETH0&lt;br /&gt;
-A FORWARD -i eth1 -j FWD_ETH1&lt;br /&gt;
-A FORWARD -i ppp0 -j FWD_PPP0&lt;br /&gt;
-A FORWARD -i tun0 -j FWD_TUN0&lt;br /&gt;
&lt;br /&gt;
# Pass output interface to corresponding chain&lt;br /&gt;
-A OUTPUT -o ppp0 -j OUT_PPP0&lt;br /&gt;
-A OUTPUT -o tun0 -j OUT_TUN0&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to Modem&lt;br /&gt;
-A FWD_ETH0 -d 192.168.0.1/32 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow routing to remote address on VPN&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -d 172.16.32.1/32 -o tun0 -j ACCEPT&lt;br /&gt;
-A FWD_ETH0 -s 192.168.2.0/24 -d 172.16.32.1/32 -o tun0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow forwarding from LAN hosts to LAN ONLY subnet&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -d 192.168.3.0/24 -j ACCEPT&lt;br /&gt;
-A FWD_ETH0 -s 192.168.2.0/24 -d 192.168.3.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow LAN ONLY subnet to contact other LAN hosts&lt;br /&gt;
-A FWD_ETH0 -s 192.168.3.0/24 -d 192.168.1.0/24 -j ACCEPT&lt;br /&gt;
-A FWD_ETH0 -s 192.168.3.0/24 -d 192.168.2.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Refuse to forward bogons to the internet!&lt;br /&gt;
-A FWD_ETH0 -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to ISP&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to VPN&lt;br /&gt;
-A FWD_ETH0 -s 192.168.2.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Prevent 192.168.3.0/24 from accessing internet&lt;br /&gt;
-A FWD_ETH0 -s 192.168.3.0/24 -j LOG_REJECT_LANONLY&lt;br /&gt;
&lt;br /&gt;
# Allow excepted server to be FORWARD to ppp0&lt;br /&gt;
#-A FWD_ETH0 -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -o ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward SSH packets from network to modem&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.1.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.2.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward HTTP packets from network to mode&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.1.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.2.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward Bittorrent Port to workstation&lt;br /&gt;
-A FWD_TUN0 -d 192.168.2.20/32 -p tcp -m tcp --dport 6881:6889 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_TUN0 -d 192.168.2.20/32 -p udp -m udp --dport 6881:6889 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# DNS to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# FreeRadius Client (eg a UniFi AP)&lt;br /&gt;
-A IN_ETH0 -s 192.168.3.10/32 -p tcp -m tcp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.3.10/32 -p udp -m udp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Ubiquiti UAP Device Discovery Broadcast&lt;br /&gt;
-A IN_ETH0 -s 192.168.3.10/32 -p udp -m udp --dport 10001 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# NTP to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.3.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept traffic to router on both subnets&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow excepted server to be INPUT to eth0 from LAN&lt;br /&gt;
#-A IN_ETH0 -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -o ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# HTTP To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked PPP0 connection&lt;br /&gt;
-A IN_PPP0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on PPP0&lt;br /&gt;
-A IN_PPP0 -j LOG --log-prefix &amp;quot;DROP:INPUT (ipv4) &amp;quot; --log-level 6&lt;br /&gt;
-A IN_PPP0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked TUN0 connection&lt;br /&gt;
-A IN_TUN0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on TUN0&lt;br /&gt;
-A IN_TUN0 -j LOG --log-prefix &amp;quot;DROP:INPUT (ipv4) &amp;quot; --log-level 6&lt;br /&gt;
-A IN_TUN0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Log dropped bogons that never got forwarded&lt;br /&gt;
-A LOG_DROP_BOGON -j LOG --log-prefix &amp;quot;Dropped Bogon forward (ipv4) &amp;quot; --log-level 6&lt;br /&gt;
-A LOG_DROP_BOGON -j DROP&lt;br /&gt;
&lt;br /&gt;
# Log rejected packets&lt;br /&gt;
-A LOG_REJECT_LANONLY -j LOG --log-prefix &amp;quot;Rejected packet from LAN only range : &amp;quot; --log-level 6&lt;br /&gt;
-A LOG_REJECT_LANONLY -j REJECT --reject-with icmp-port-unreachable&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mangle Table&lt;br /&gt;
# This is the place where our markings happen, whether they be 0x1 or 0x2&lt;br /&gt;
#&lt;br /&gt;
*mangle&lt;br /&gt;
&lt;br /&gt;
# Set default policies for table&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:FORWARD ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Restore CONNMARK to the MARK (If one doesn&#039;t exist then no mark is set)&lt;br /&gt;
-A PREROUTING -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff&lt;br /&gt;
&lt;br /&gt;
# If packet MARK is 2, then it means there is already a connection mark and the&lt;br /&gt;
# original packet came in on VPN&lt;br /&gt;
-A PREROUTING -s 192.168.2.0/24 -m mark --mark 0x2 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Check exception (this is a server which when accessed on a 192.168.2.0/24 address will go out the ISP table) are 0x1&lt;br /&gt;
#-A PREROUTING -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -m mark --mark 0x1 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Mark packets coming from 192.168.2.0/24 are 0x2&lt;br /&gt;
-A PREROUTING -s 192.168.2.0/24 -j MARK --set-xmark 0x2/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# If packet MARK is 1, then it means there is already a connection mark and the&lt;br /&gt;
# original packet came in on ISP&lt;br /&gt;
-A PREROUTING -s 192.168.1.0/24 -m mark --mark 0x1 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Mark packets 192.168.1.0/24 are 0x1&lt;br /&gt;
-A PREROUTING -s 192.168.1.0/24 -j MARK --set-xmark 0x1/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Mark exception (this is a server which when accessed on a 192.168.2.0/24 address will go out the ISP table) as 0x1&lt;br /&gt;
#-A PREROUTING -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -j MARK --set-xmark 0x1/0xffffff&lt;br /&gt;
&lt;br /&gt;
# Strip mark if packet is destined for modem&lt;br /&gt;
-A PREROUTING -d 192.168.0.1/32 -j MARK --set-xmark 0x0/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Save MARK to CONNMARK (remember iproute can&#039;t see CONNMARKs)&lt;br /&gt;
-A PREROUTING -j CONNMARK --save-mark --nfmask 0xffffffff --ctmask 0xffffffff&lt;br /&gt;
COMMIT&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Other Tips =&lt;br /&gt;
&lt;br /&gt;
== Diagnosing firewall problems ==&lt;br /&gt;
&lt;br /&gt;
=== netcat, netcat6 ===&lt;br /&gt;
Netcat can be useful for testing if a port is open or closed or filtered.&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add netcat-openbsd}}&lt;br /&gt;
&lt;br /&gt;
After installing netcat we can use it like this:&lt;br /&gt;
&lt;br /&gt;
Say we wanted to test for IPv6, UDP, Port 547 we would do this on the router:&lt;br /&gt;
&lt;br /&gt;
{{cmd|nc -6 -u -l 547}}&lt;br /&gt;
&lt;br /&gt;
and then this on the client to connect to it:&lt;br /&gt;
&lt;br /&gt;
{{cmd|nc -u -v -6 2001:0db8:1234:0001::1 547}}&lt;br /&gt;
&lt;br /&gt;
=== tcpdump ===&lt;br /&gt;
&lt;br /&gt;
tcpdump can also be useful for dumping the contents of packets coming in on an interface:&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add tcpdump}}&lt;br /&gt;
&lt;br /&gt;
Then we can run it. This example captures all DNS traffic originating from 192.168.2.20.&lt;br /&gt;
&lt;br /&gt;
{{cmd|tcpdump -i eth0 udp and src 192.168.2.20 and port 53}}&lt;br /&gt;
&lt;br /&gt;
You can write the file out with the -w option, and view it in Wireshark locally on your computer. You can increase the verbosity with the -v option. Using -vv will be even more verbose. -vvv will show even more.&lt;br /&gt;
&lt;br /&gt;
== lbu cache ==&lt;br /&gt;
Configure lbu cache so that you don&#039;t need to download packages when you restart your router eg [[Local APK cache]]&lt;br /&gt;
&lt;br /&gt;
This is particularly important as some of the images do not contain ppp-pppoe. This might mean you&#039;re unable to get an internet connection to download the other packages on boot.&lt;br /&gt;
&lt;br /&gt;
== lbu encryption /etc/lbu/lbu.conf ==&lt;br /&gt;
In /etc/lbu/lbu.conf you might want to enable encryption to protect your VPN keys.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# what cipher to use with -e option&lt;br /&gt;
DEFAULT_CIPHER=aes-256-cbc&lt;br /&gt;
&lt;br /&gt;
# Uncomment the row below to encrypt config by default&lt;br /&gt;
ENCRYPTION=$DEFAULT_CIPHER&lt;br /&gt;
&lt;br /&gt;
# Uncomment below to avoid &amp;lt;media&amp;gt; option to &#039;lbu commit&#039;&lt;br /&gt;
# Can also be set to &#039;floppy&#039;&lt;br /&gt;
LBU_MEDIA=mmcblk0p1&lt;br /&gt;
&lt;br /&gt;
# Set the LBU_BACKUPDIR variable in case you prefer to save the apkovls&lt;br /&gt;
# in a normal directory instead of mounting an external media.&lt;br /&gt;
# LBU_BACKUPDIR=/root/config-backups&lt;br /&gt;
&lt;br /&gt;
# Uncomment below to let lbu make up to 3 backups&lt;br /&gt;
# BACKUP_LIMIT=3&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remember to set a root password, by default Alpine Linux&#039;s root account is passwordless.&lt;br /&gt;
{{cmd|passwd root}}&lt;br /&gt;
&lt;br /&gt;
== Backup apkprov ==&lt;br /&gt;
It&#039;s a good idea to back up your apk provision file. You can pull it off your router to your local workstation with:&lt;br /&gt;
&lt;br /&gt;
{{cmd|scp -r root@192.168.2.1:/media/mmcblk0p1/&amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz.aes-256-cbc ./}}&lt;br /&gt;
&lt;br /&gt;
And decrypt it with:&lt;br /&gt;
{{cmd|openssl enc -d -aes-256-cbc -in &amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz.aes-256-cbc -out &amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz}}&lt;br /&gt;
&lt;br /&gt;
It can be encrypted with:&lt;br /&gt;
{{cmd|openssl aes-256-cbc -salt -in &amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz -out &amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz.aes-256-cbc}}&lt;br /&gt;
&lt;br /&gt;
== Harden SSH ==&lt;br /&gt;
&lt;br /&gt;
=== Generate a SSH key ===&lt;br /&gt;
{{cmd|ssh-keygen -t rsa -b 4096}}&lt;br /&gt;
&lt;br /&gt;
You will want to put the contents of id_rsa.pub in /etc/ssh/authorized_keys&lt;br /&gt;
&lt;br /&gt;
You can put multiple public keys on multiple lines if more than one person has access to the router.&lt;br /&gt;
&lt;br /&gt;
=== /etc/ssh/sshd_config ===&lt;br /&gt;
A couple of good options to set in here can be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ListenAddress 192.168.1.1&lt;br /&gt;
ListenAddress 192.168.2.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
While this isn&#039;t usually a good idea, a router doesn&#039;t need more than one user.&lt;br /&gt;
&amp;lt;pre&amp;gt;PermitRootLogin yes&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The most important options:&lt;br /&gt;
&amp;lt;pre&amp;gt;RSAAuthentication yes&lt;br /&gt;
PubkeyAuthentication yes&lt;br /&gt;
AuthorizedKeysFile  /etc/ssh/authorized_keys&lt;br /&gt;
PasswordAuthentication no&lt;br /&gt;
PermitEmptyPasswords no&lt;br /&gt;
AllowTcpForwarding no&lt;br /&gt;
X11Forwarding no&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== /etc/conf.d/sshd ===&lt;br /&gt;
You will want to add &amp;lt;pre&amp;gt;rc_need=&amp;quot;net&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This instructs OpenRC to make sure the network is up before starting ssh.&lt;br /&gt;
&lt;br /&gt;
Finally add sshd to the default run level&lt;br /&gt;
{{cmd|rc-update add sshd default}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at [https://stribika.github.io/2015/01/04/secure-secure-shell.html Secure Secure Shell] and tighten OpenSSH&#039;s cryptography options.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
* https://wiki.gentoo.org/wiki/Home_Router&lt;br /&gt;
* https://help.ubuntu.com/community/ADSLPPPoE&lt;br /&gt;
* https://wiki.archlinux.org/index.php/Router&lt;br /&gt;
* https://wiki.gentoo.org/wiki/IPv6_router_guide&lt;br /&gt;
* [https://vk5tu.livejournal.com/37206.html IPv6 at home, under the hood with Debian Wheezy and Internode]&lt;br /&gt;
* [http://vk5tu.livejournal.com/43059.html Raspberry Pi random number generator]&lt;br /&gt;
* [https://www.raspberrypi.org/forums/viewtopic.php?f=56&amp;amp;t=60569 rng-tools post by ktb]&lt;/div&gt;</summary>
		<author><name>Dngray</name></author>
	</entry>
	<entry>
		<id>https://wiki.alpinelinux.org/w/index.php?title=Linux_Router_with_VPN_on_a_Raspberry_Pi&amp;diff=16444</id>
		<title>Linux Router with VPN on a Raspberry Pi</title>
		<link rel="alternate" type="text/html" href="https://wiki.alpinelinux.org/w/index.php?title=Linux_Router_with_VPN_on_a_Raspberry_Pi&amp;diff=16444"/>
		<updated>2019-09-17T10:25:59Z</updated>

		<summary type="html">&lt;p&gt;Dngray: /* Unbound DNS forwarder with dnscrypt */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Networking]]&lt;br /&gt;
= Rationale =&lt;br /&gt;
&lt;br /&gt;
This guide demonstrates how to set up a Linux router with a VPN tunnel. You will need a second ethernet adapter. If you are using a Raspberry Pi like I did, then you can use something like this [http://store.apple.com/us/product/MC704LL/A/apple-usb-ethernet-adapter Apple USB Ethernet Adapter] as it contains a ASIX AX88772 which has good Linux support.&lt;br /&gt;
&lt;br /&gt;
You may choose to also buy an [http://www.element14.com/community/docs/DOC-68907/l/shim-rtc-realtime-clock-accessory-board-for-raspberry-pi RTC clock]. If you don&#039;t have an RTC clock, the time is lost when your Pi is shut down. When it is rebooted, the time will be set back to Thursday, 1 January 1970. As this is earlier than the creation time of your VPN certificates OpenVPN will refuse to start, which may mean you cannot do DNS lookups over VPN.&lt;br /&gt;
&lt;br /&gt;
For wireless, a separate access point was purchased ([http://wiki.openwrt.org/toh/ubiquiti/unifi Ubiquiti UniFi AP]) because it contains a Atheros AR9287 which is supported by [https://wireless.wiki.kernel.org/en/users/drivers/ath9k ath9k].&lt;br /&gt;
&lt;br /&gt;
I only chose a Raspberry Pi due to the fact it was inexpensive. My WAN link is pathetic so I was not concerned with getting high PPS ([https://en.wikipedia.org/wiki/Throughput Packets Per Second]). You could choose to use an old x86/amd64 system instead. If I had better internet I&#039;d probably go with an offering from [https://soekris.com Soekris] such as the [https://soekris.com/products/net6501-1.html net6501] as it would have a much lower power consumption than a generic x86_64 desktop processor.&lt;br /&gt;
&lt;br /&gt;
If you want to route speeds above 100 Mbit/s you&#039;ll want to make use of hardware encryption like [https://en.wikipedia.org/wiki/AES_instruction_set AES-NI]. The [https://soekris.com Soekris] offerings have the option of an additional hardware encryption module ([https://soekris.com/products/vpn-1411.html vpn1411]). Another option is to use a [https://en.wikipedia.org/wiki/Mini-ITX Mini ITX motherboard], with a managed switch. I chose the [https://www.ubnt.com/edgemax/edgeswitch Ubiquiti ES-16-150W].&lt;br /&gt;
&lt;br /&gt;
If you wish to use IPv6 you should consider looking at [[Linux Router with VPN on a Raspberry Pi (IPv6)]] as the implementation does differ slightly to this tutorial.&lt;br /&gt;
&lt;br /&gt;
The network in this tutorial looks like this: &lt;br /&gt;
&lt;br /&gt;
[[File:Network diagram ipv4 basic.svg|900px|center|Network Diagram Single IPv4]]&lt;br /&gt;
&lt;br /&gt;
= Installation =&lt;br /&gt;
This guide assumes you&#039;re using Alpine Linux from a micro SD card in ramdisk mode. It assumes you&#039;ve read the basics of how to use [[Alpine local backup]].  The [[Raspberry Pi]] article contains information on how to install Alpine Linux on a Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
= Modem in full bridge mode =&lt;br /&gt;
This particular page uses an example where you have a modem that uses PPPoE. You will need to modify parts which do not apply to you. &lt;br /&gt;
&lt;br /&gt;
In this example I have a modem which has been configured in full bridge mode. PPP sessions are initiated on the router.&lt;br /&gt;
&lt;br /&gt;
The modem I am using is a [http://www.cisco.com/c/en/us/products/routers/877-integrated-services-router-isr/index.html Cisco 877 Integrated Services Router]. It has no web interface and is controlled over SSH. More information can be found [[Configuring a Cisco 877 in full bridge mode]].&lt;br /&gt;
&lt;br /&gt;
= Configuring PPP =&lt;br /&gt;
Next up we need to configure our router to be able to dial a PPP connection with our modem. &lt;br /&gt;
&lt;br /&gt;
See [[PPP]], you will want to make sure you set your WAN interface, in this example we used eth1.&lt;br /&gt;
&lt;br /&gt;
= Network =&lt;br /&gt;
&lt;br /&gt;
== /etc/hostname ==&lt;br /&gt;
Set this to your hostname eg:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;HOST_NAME&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/hosts ==&lt;br /&gt;
Set your host and hostname&lt;br /&gt;
&amp;lt;pre&amp;gt;127.0.0.1	&amp;lt;HOST_NAME&amp;gt; &amp;lt;HOST_NAME&amp;gt;.&amp;lt;DOMAIN_NAME&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::1		&amp;lt;HOST_NAME&amp;gt; ipv6-gateway ipv6-loopback&lt;br /&gt;
ff00::0		ipv6-localnet&lt;br /&gt;
ff00::0		ipv6-mcastprefix&lt;br /&gt;
ff02::1		ipv6-allnodes&lt;br /&gt;
ff02::2		ipv6-allrouters&lt;br /&gt;
ff02::3		ipv6-allhosts&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/interfaces ==&lt;br /&gt;
Configure your network interfaces. Change &amp;quot;yourISP&amp;quot; to the file name of the file in /etc/ppp/peers/yourISP&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#&lt;br /&gt;
# Network Interfaces&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Loopback interfaces&lt;br /&gt;
auto lo&lt;br /&gt;
iface lo inet loopback&lt;br /&gt;
  address 127.0.0.1&lt;br /&gt;
  netmask 255.0.0.0&lt;br /&gt;
&lt;br /&gt;
# Internal Interface - facing LAN&lt;br /&gt;
auto eth0&lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
  address 192.168.1.1&lt;br /&gt;
  netmask 255.255.255.0&lt;br /&gt;
  broadcast 192.168.1.255&lt;br /&gt;
&lt;br /&gt;
# External Interface - facing Modem&lt;br /&gt;
allow-hotplug eth1&lt;br /&gt;
auto eth1&lt;br /&gt;
iface eth1 inet static&lt;br /&gt;
  address 192.168.0.2&lt;br /&gt;
  netmask 255.255.255.252&lt;br /&gt;
  broadcast 192.168.0.3&lt;br /&gt;
  pre-up /sbin/ip link set eth1 up&lt;br /&gt;
  up ifup ppp0=yourISP&lt;br /&gt;
  down ifdown ppp0=yourISP&lt;br /&gt;
  post-down /sbin/ip link set eth1 up&lt;br /&gt;
&lt;br /&gt;
# Link to ISP&lt;br /&gt;
iface yourISP inet ppp&lt;br /&gt;
  provider yourISP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Basic IPtables firewall with routing ==&lt;br /&gt;
This demonstrates how to set up basic routing with a permissive outgoing firewall. Incoming packets are blocked. The rest is commented in the rule set.&lt;br /&gt;
&lt;br /&gt;
First install iptables:&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add iptables ip6tables}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#########################################################################&lt;br /&gt;
# Basic iptables IPv4 routing rule set&lt;br /&gt;
#&lt;br /&gt;
# 192.168.1.0/24 routed directly to PPP0 via NAT&lt;br /&gt;
# &lt;br /&gt;
#########################################################################&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mangle Table&lt;br /&gt;
# We leave this empty for the moment.&lt;br /&gt;
#&lt;br /&gt;
*mangle&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:FORWARD ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Filter Table&lt;br /&gt;
# This is where we decide to ACCEPT, DROP or REJECT things&lt;br /&gt;
#&lt;br /&gt;
*filter&lt;br /&gt;
:INPUT DROP [0:0]&lt;br /&gt;
:FORWARD DROP [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
*filter&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for forwarding packets&lt;br /&gt;
:FWD_ETH0 - [0:0]&lt;br /&gt;
:FWD_ETH1 - [0:0]&lt;br /&gt;
:FWD_PPP0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for input packets (for host itself)&lt;br /&gt;
:IN_ETH0 - [0:0]&lt;br /&gt;
:IN_ETH1 - [0:0]&lt;br /&gt;
:IN_PPP0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a log drop chain&lt;br /&gt;
:LOG_DROP - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Pass input packet to corresponding rule chain&lt;br /&gt;
-A INPUT -i lo -j ACCEPT&lt;br /&gt;
-A INPUT -i eth0 -j IN_ETH0&lt;br /&gt;
-A INPUT -i eth1 -j IN_ETH1&lt;br /&gt;
-A INPUT -i ppp0 -j IN_PPP0&lt;br /&gt;
&lt;br /&gt;
# Pass forwarded packet to corresponding rule chain&lt;br /&gt;
-A FORWARD -i eth0 -j FWD_ETH0&lt;br /&gt;
-A FORWARD -i eth1 -j FWD_ETH1&lt;br /&gt;
-A FORWARD -i ppp0 -j FWD_PPP0&lt;br /&gt;
&lt;br /&gt;
# Forward LAN traffic out&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward SSH packets from network to modem&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.0/30 -d 192.168.1.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward HTTP to modem&#039;s webserver&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.0/30 -d 192.168.1.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to ISP&lt;br /&gt;
-A FWD_PPP0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# DNS to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# FreeRadius Client (eg a UniFi AP)&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# NTP to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept traffic&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# HTTP to modem&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked PPP0 connection&lt;br /&gt;
-A IN_PPP0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# NAT Table&lt;br /&gt;
# This is where translation of packets happens and &amp;quot;forwarding&amp;quot; of ports&lt;br /&gt;
# to specific hosts.&lt;br /&gt;
#&lt;br /&gt;
*nat&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Port forwarding for Bittorrent&lt;br /&gt;
-A PREROUTING -i ppp0 -p tcp -m tcp --dport 6881:6889 -j DNAT --to-destination 192.168.1.20&lt;br /&gt;
-A PREROUTING -i ppp0 -p udp -m udp --dport 6881:6889 -j DNAT --to-destination 192.168.1.20&lt;br /&gt;
&lt;br /&gt;
# Allows routing to our modem subnet so we can access the web interface or SSH&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 22 -j MASQUERADE&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the PPP tunnel&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE&lt;br /&gt;
COMMIT&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I&#039;d also highly suggest reading these resources if you are new to iptables: &lt;br /&gt;
&lt;br /&gt;
* [https://www.frozentux.net/category/linux/iptables Frozen Tux Iptables-tutorial]&lt;br /&gt;
* [http://inai.de/links/iptables/ Words of wisdom for #netfilter]&lt;br /&gt;
* [http://sfvlug.editthis.info/wiki/Things_You_Should_Know_About_Netfilter Things You Should Know About Netfilter]&lt;br /&gt;
* [http://inai.de/documents/Perfect_Ruleset.pdf Towards the perfect ruleset]&lt;br /&gt;
&lt;br /&gt;
== /etc/sysctl.d/local.conf ==&lt;br /&gt;
&amp;lt;pre&amp;gt;# Controls IP packet forwarding&lt;br /&gt;
net.ipv4.ip_forward = 1&lt;br /&gt;
&lt;br /&gt;
# Needed to use fwmark, only required if you want to set up the VPN subnet later in this article&lt;br /&gt;
net.ipv4.conf.all.rp_filter = 2&lt;br /&gt;
&lt;br /&gt;
# Disable IPv6&lt;br /&gt;
net.ipv6.conf.all.disable_ipv6 = 1&lt;br /&gt;
net.ipv6.conf.lo.disable_ipv6 = 1&lt;br /&gt;
net.ipv6.conf.default.disable_ipv6 = 1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note IPv6 is disabled here if you want that see the other tutorial [[Linux Router with VPN on a Raspberry Pi (IPv6)]]. You may also wish to look at [https://www.kernel.org/doc/Documentation/networking/ip-sysctl.txt ip-sysctl.txt] to read about the other keys.&lt;br /&gt;
&lt;br /&gt;
= DHCP =&lt;br /&gt;
{{cmd|apk add dhcp}}&lt;br /&gt;
&lt;br /&gt;
== /etc/conf.d/dhcpd ==&lt;br /&gt;
Specify the configuration file location, interface to run on and that you want DHCPD to run in IPv4 mode.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# /etc/conf.d/dhcpd: config file for /etc/init.d/dhcpd&lt;br /&gt;
&lt;br /&gt;
# If you require more than one instance of dhcpd you can create symbolic&lt;br /&gt;
# links to dhcpd service like so&lt;br /&gt;
#   cd /etc/init.d&lt;br /&gt;
#   ln -s dhcpd dhcpd.foo&lt;br /&gt;
#   cd ../conf.d&lt;br /&gt;
#   cp dhcpd dhcpd.foo&lt;br /&gt;
# Now you can edit dhcpd.foo and specify a different configuration file.&lt;br /&gt;
# You&#039;ll also need to specify a pidfile in that dhcpd.conf file.&lt;br /&gt;
# See the pid-file-name option in the dhcpd.conf man page for details.&lt;br /&gt;
&lt;br /&gt;
# If you wish to run dhcpd in a chroot, uncomment the following line&lt;br /&gt;
# DHCPD_CHROOT=&amp;quot;/var/lib/dhcp/chroot&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# All file paths below are relative to the chroot.&lt;br /&gt;
# You can specify a different chroot directory but MAKE SURE it&#039;s empty.&lt;br /&gt;
&lt;br /&gt;
# Specify a configuration file - the default is /etc/dhcp/dhcpd.conf&lt;br /&gt;
DHCPD_CONF=&amp;quot;/etc/dhcp/dhcpd.conf&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Configure which interface or interfaces to for dhcpd to listen on.&lt;br /&gt;
# List all interfaces space separated. If this is not specified then&lt;br /&gt;
# we listen on all interfaces.&lt;br /&gt;
DHCPD_IFACE=&amp;quot;eth0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Insert any other dhcpd options - see the man page for a full list.&lt;br /&gt;
DHCPD_OPTS=&amp;quot;-4&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/dhcp/dhcpd.conf ==&lt;br /&gt;
Configure your DHCP configuration server. For my DHCP server I&#039;m going to have three subnets. Each has a specific purpose. You may choose to have any number of subnets like below. The broadcast-address would be different if you used VLANs. However in this case we are not.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;authoritative;&lt;br /&gt;
ddns-update-style interim;&lt;br /&gt;
&lt;br /&gt;
shared-network home {&lt;br /&gt;
  subnet 192.168.1.0 netmask 255.255.255.0 {&lt;br /&gt;
    range 192.168.1.10 192.168.1.240;&lt;br /&gt;
    option subnet-mask 255.255.255.0;&lt;br /&gt;
    option broadcast-address 192.168.1.255;&lt;br /&gt;
    option routers 192.168.1.1;&lt;br /&gt;
    option ntp-servers 192.168.1.1;&lt;br /&gt;
    option domain-name-servers 192.168.1.1;&lt;br /&gt;
    allow unknown-clients;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  subnet 192.168.2.0 netmask 255.255.255.0 {&lt;br /&gt;
    range 192.168.2.10 192.168.2.240;&lt;br /&gt;
    option subnet-mask 255.255.255.0;&lt;br /&gt;
    option broadcast-address 192.168.2.255;&lt;br /&gt;
    option routers 192.168.2.1;&lt;br /&gt;
    option ntp-servers 192.168.2.1;&lt;br /&gt;
    option domain-name-servers 192.168.1.1;&lt;br /&gt;
    ignore unknown-clients;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  subnet 192.168.3.0 netmask 255.255.255.0 {&lt;br /&gt;
    range 192.168.3.10 192.168.3.240;&lt;br /&gt;
    option subnet-mask 255.255.255.0;&lt;br /&gt;
    option broadcast-address 192.168.3.255;&lt;br /&gt;
    option routers 192.168.3.1;&lt;br /&gt;
    option ntp-servers 192.168.3.1;&lt;br /&gt;
    option domain-name-servers 192.168.1.1;&lt;br /&gt;
    ignore unknown-clients;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
host Gaming_Computer {&lt;br /&gt;
  hardware ethernet 00:53:00:FF:FF:11;&lt;br /&gt;
  fixed-address 192.168.1.20;&lt;br /&gt;
  option subnet-mask 255.255.255.0;&lt;br /&gt;
  option broadcast-address 192.168.1.255;&lt;br /&gt;
  option routers 192.168.1.1;&lt;br /&gt;
  option host-name &amp;quot;gaming_computer&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
host Linux_Workstation {&lt;br /&gt;
  hardware ethernet 00:53:00:FF:FF:22;&lt;br /&gt;
  fixed-address 192.168.2.21;&lt;br /&gt;
  option subnet-mask 255.255.255.0;&lt;br /&gt;
  option broadcast-address 192.168.2.255;&lt;br /&gt;
  option routers 192.168.2.1;&lt;br /&gt;
  option host-name &amp;quot;linux_workstation&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
host printer {&lt;br /&gt;
  hardware ethernet 00:53:00:FF:FF:33;&lt;br /&gt;
  fixed-address 192.168.3.9;&lt;br /&gt;
  option subnet-mask 255.255.255.0;&lt;br /&gt;
  option broadcast-address 192.168.3.255;&lt;br /&gt;
  option routers 192.168.3.1;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure to add this to the default run level once configured:&lt;br /&gt;
{{cmd|rc-update add dhcpd default}}&lt;br /&gt;
&lt;br /&gt;
= Synchronizing the clock =&lt;br /&gt;
&lt;br /&gt;
You can choose to use BusyBox&#039;s ntpd or you can choose a more fully fledged option like [http://www.openntpd.org OpenNTPD] or [https://chrony.tuxfamily.org Chrony]&lt;br /&gt;
&lt;br /&gt;
== Busybox /etc/conf.d/ntpd ==&lt;br /&gt;
Allow clients to synchronize their clocks with the router.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# By default ntpd runs as a client. Add -l to run as a server on port 123.&lt;br /&gt;
NTPD_OPTS=&amp;quot;-l -N -p &amp;lt;REMOTE TIME SERVER&amp;gt;&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure to add this to the default run level once configured:&lt;br /&gt;
{{cmd|rc-update add ntpd default}}&lt;br /&gt;
&lt;br /&gt;
Or if you prefer to synchronize with multiple servers...&lt;br /&gt;
&lt;br /&gt;
== Chrony /etc/chrony.conf ==&lt;br /&gt;
{{cmd|apk add chrony}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;logdir /var/log/chrony&lt;br /&gt;
log measurements statistics tracking&lt;br /&gt;
&lt;br /&gt;
allow 192.168.0.0/30&lt;br /&gt;
allow 192.168.1.0/24&lt;br /&gt;
allow 192.168.2.0/24&lt;br /&gt;
allow 192.168.3.0/24&lt;br /&gt;
allow 192.168.4.0/24&lt;br /&gt;
broadcast 30 192.168.0.3&lt;br /&gt;
broadcast 30 192.168.1.255&lt;br /&gt;
broadcast 30 192.168.2.255&lt;br /&gt;
broadcast 30 192.168.3.255&lt;br /&gt;
broadcast 30 192.168.4.255&lt;br /&gt;
&lt;br /&gt;
server 0.pool.ntp.org iburst&lt;br /&gt;
server 1.pool.ntp.org iburst&lt;br /&gt;
server 2.pool.ntp.org iburst&lt;br /&gt;
server 3.pool.ntp.org iburst&lt;br /&gt;
&lt;br /&gt;
initstepslew 10 pool.ntp.org&lt;br /&gt;
driftfile /var/lib/chrony/chrony.drift&lt;br /&gt;
hwclockfile /etc/adjtime&lt;br /&gt;
rtcdevice /dev/rtc0&lt;br /&gt;
rtcsync&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OpenNTPD /etc/ntpd.conf ==&lt;br /&gt;
&lt;br /&gt;
Install OpenNTPD&lt;br /&gt;
{{cmd|apk add openntpd}}&lt;br /&gt;
&lt;br /&gt;
Add to default run level.&lt;br /&gt;
{{cmd|rc-update add openntpd default}}&lt;br /&gt;
&lt;br /&gt;
=== /etc/ntpd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;# sample ntpd configuration file, see ntpd.conf(5)&lt;br /&gt;
&lt;br /&gt;
# Addresses to listen on (ntpd does not listen by default)&lt;br /&gt;
listen on 192.168.1.1&lt;br /&gt;
listen on 192.168.2.1&lt;br /&gt;
&lt;br /&gt;
# sync to a single server&lt;br /&gt;
#server ntp.example.org&lt;br /&gt;
&lt;br /&gt;
# use a random selection of NTP Pool Time Servers&lt;br /&gt;
# see http://support.ntp.org/bin/view/Servers/NTPPoolServers&lt;br /&gt;
server 0.pool.ntp.org&lt;br /&gt;
server 1.pool.ntp.org&lt;br /&gt;
server 2.pool.ntp.org&lt;br /&gt;
server 3.pool.ntp.org&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== tlsdate ==&lt;br /&gt;
The time can also be extracted from a https handshake. If the certificate is self-signed you will need to use skip-verification:&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add tlsdate}}&lt;br /&gt;
{{cmd|tlsdate -V --skip-verification -p 80 -H example.com}}&lt;br /&gt;
&lt;br /&gt;
== timezone ==&lt;br /&gt;
You might also want to set a timezone, see [[Setting the timezone]].&lt;br /&gt;
&lt;br /&gt;
= Saving Time =&lt;br /&gt;
There are two ways to do this. If you didn&#039;t buy an RTC clock see [[Saving time with Software Clock]]. If you did like the PiFace Real Time Clock see [[Saving time with Hardware Clock]]&lt;br /&gt;
&lt;br /&gt;
= Unbound DNS forwarder with dnscrypt =&lt;br /&gt;
We want to be able to do our lookups using [https://dnscrypt.info/ dnscrypt] without installing DNSCrypt on every client on the network. DNSCrypt can use it&#039;s [https://dnscrypt.info/protocol own protocol] or [https://en.wikipedia.org/wiki/DNS_over_HTTPS DNS over HTTPS].&lt;br /&gt;
&lt;br /&gt;
The router will also run a DNS forwarder and request unknown domains over DNSCrypt for our clients. Borrowed from the ArchLinux wiki article on [https://wiki.archlinux.org/index.php/dnscrypt-proxy dnscrypt-proxy].&lt;br /&gt;
&lt;br /&gt;
== Unbound ==&lt;br /&gt;
First install {{cmd|apk add unbound}}&lt;br /&gt;
&lt;br /&gt;
=== /etc/unbound/unbound.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;server:&lt;br /&gt;
    # Use this to include other text into the file.&lt;br /&gt;
    include: &amp;quot;/etc/unbound/filter.conf&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # verbosity number, 0 is least verbose. 1 is default.&lt;br /&gt;
    verbosity: 1&lt;br /&gt;
&lt;br /&gt;
    # specify the interfaces to answer queries from by ip-address.&lt;br /&gt;
    # The default is to listen to localhost (127.0.0.1 and ::1).&lt;br /&gt;
    # specify 0.0.0.0 and ::0 to bind to all available interfaces.&lt;br /&gt;
    # specify every interface[@port] on a new &#039;interface:&#039; labelled line.&lt;br /&gt;
    # The listen interfaces are not changed on reload, only on restart.&lt;br /&gt;
    interface: 192.168.2.1&lt;br /&gt;
    interface: 192.168.3.1&lt;br /&gt;
&lt;br /&gt;
    # Enable IPv4, &amp;quot;yes&amp;quot; or &amp;quot;no&amp;quot;.&lt;br /&gt;
    do-ip4: yes&lt;br /&gt;
&lt;br /&gt;
    # Enable IPv6, &amp;quot;yes&amp;quot; or &amp;quot;no&amp;quot;.&lt;br /&gt;
    do-ip6: yes&lt;br /&gt;
&lt;br /&gt;
    # Enable UDP, &amp;quot;yes&amp;quot; or &amp;quot;no&amp;quot;.&lt;br /&gt;
    do-udp: yes&lt;br /&gt;
&lt;br /&gt;
    # Enable TCP, &amp;quot;yes&amp;quot; or &amp;quot;no&amp;quot;.&lt;br /&gt;
    do-tcp: yes&lt;br /&gt;
&lt;br /&gt;
    # control which clients are allowed to make (recursive) queries&lt;br /&gt;
    # to this server. Specify classless netblocks with /size and action.&lt;br /&gt;
    # By default everything is refused, except for localhost.&lt;br /&gt;
    # Choose deny (drop message), refuse (polite error reply),&lt;br /&gt;
    # allow (recursive ok), allow_setrd (recursive ok, rd bit is forced on),&lt;br /&gt;
    # allow_snoop (recursive and nonrecursive ok)&lt;br /&gt;
    # deny_non_local (drop queries unless can be answered from local-data)&lt;br /&gt;
    # refuse_non_local (like deny_non_local but polite error reply).&lt;br /&gt;
    # access-control: 0.0.0.0/0 refuse&lt;br /&gt;
    # access-control: 127.0.0.0/8 allow&lt;br /&gt;
    # access-control: ::0/0 refuse&lt;br /&gt;
    # access-control: ::1 allow&lt;br /&gt;
    # access-control: ::ffff:127.0.0.1 allow&lt;br /&gt;
    access-control: 192.168.1.0/24 allow&lt;br /&gt;
    access-control: 192.168.2.0/24 allow&lt;br /&gt;
    access-control: 192.168.3.0/24 allow&lt;br /&gt;
&lt;br /&gt;
    # the log file, &amp;quot;&amp;quot; means log to stderr.&lt;br /&gt;
    # Use of this option sets use-syslog to &amp;quot;no&amp;quot;.&lt;br /&gt;
    logfile: &amp;quot;/var/log/unbound/unbound.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # Log to syslog(3) if yes. The log facility LOG_DAEMON is used to&lt;br /&gt;
    # log to. If yes, it overrides the logfile.&lt;br /&gt;
    use-syslog: no&lt;br /&gt;
&lt;br /&gt;
    # print one line with time, IP, name, type, class for every query.&lt;br /&gt;
    # log-queries: no&lt;br /&gt;
&lt;br /&gt;
    # print one line per reply, with time, IP, name, type, class, rcode,&lt;br /&gt;
    # timetoresolve, fromcache and responsesize.&lt;br /&gt;
    # log-replies: no&lt;br /&gt;
&lt;br /&gt;
    # enable to not answer id.server and hostname.bind queries.&lt;br /&gt;
    hide-identity: yes&lt;br /&gt;
&lt;br /&gt;
    # enable to not answer version.server and version.bind queries.&lt;br /&gt;
    # hide-version: yes&lt;br /&gt;
&lt;br /&gt;
    # enable to not answer trustanchor.unbound queries.&lt;br /&gt;
    hide-trustanchor: yes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    # Harden against very small EDNS buffer sizes.&lt;br /&gt;
    harden-short-bufsize: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden against unseemly large queries.&lt;br /&gt;
    harden-large-queries: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden against out of zone rrsets, to avoid spoofing attempts.&lt;br /&gt;
    harden-glue: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden against receiving dnssec-stripped data. If you turn it&lt;br /&gt;
    # off, failing to validate dnskey data for a trustanchor will&lt;br /&gt;
    # trigger insecure mode for that zone (like without a trustanchor).&lt;br /&gt;
    # Default on, which insists on dnssec data for trust-anchored zones.&lt;br /&gt;
    harden-dnssec-stripped: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden against queries that fall under dnssec-signed nxdomain names.&lt;br /&gt;
    harden-below-nxdomain: yes&lt;br /&gt;
&lt;br /&gt;
    # Harden the referral path by performing additional queries for&lt;br /&gt;
    # infrastructure data.  Validates the replies (if possible).&lt;br /&gt;
    # Default off, because the lookups burden the server.  Experimental&lt;br /&gt;
    # implementation of draft-wijngaards-dnsext-resolver-side-mitigation.&lt;br /&gt;
    # harden-referral-path: no&lt;br /&gt;
&lt;br /&gt;
    # Harden against algorithm downgrade when multiple algorithms are&lt;br /&gt;
    # advertised in the DS record.  If no, allows the weakest algorithm&lt;br /&gt;
    # to validate the zone.&lt;br /&gt;
    harden-algo-downgrade: yes&lt;br /&gt;
&lt;br /&gt;
    # Use 0x20-encoded random bits in the query to foil spoof attempts.&lt;br /&gt;
    # This feature is an experimental implementation of draft dns-0x20.&lt;br /&gt;
    use-caps-for-id: yes&lt;br /&gt;
&lt;br /&gt;
    # Allow the domain (and its subdomains) to contain private addresses.&lt;br /&gt;
    # local-data statements are allowed to contain private addresses too.&lt;br /&gt;
    private-domain: &amp;quot;&amp;lt;HOSTNAME&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # if yes, the above default do-not-query-address entries are present.&lt;br /&gt;
    # if no, localhost can be queried (for testing and debugging).&lt;br /&gt;
    do-not-query-localhost: no&lt;br /&gt;
&lt;br /&gt;
    # File with trusted keys, kept uptodate using RFC5011 probes,&lt;br /&gt;
    # initial file like trust-anchor-file, then it stores metadata.&lt;br /&gt;
    # Use several entries, one per domain name, to track multiple zones.&lt;br /&gt;
    #&lt;br /&gt;
    # If you want to perform DNSSEC validation, run unbound-anchor before&lt;br /&gt;
    # you start unbound (i.e. in the system boot scripts).  And enable:&lt;br /&gt;
    # Please note usage of unbound-anchor root anchor is at your own risk&lt;br /&gt;
    # and under the terms of our LICENSE (see that file in the source).&lt;br /&gt;
    # auto-trust-anchor-file: &amp;quot;@UNBOUND_ROOTKEY_FILE@&amp;quot;&lt;br /&gt;
    auto-trust-anchor-file: &amp;quot;/etc/unbound/root.key&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # If unbound is running service for the local host then it is useful&lt;br /&gt;
    # to perform lan-wide lookups to the upstream, and unblock the&lt;br /&gt;
    # long list of local-zones above.  If this unbound is a dns server&lt;br /&gt;
    # for a network of computers, disabled is better and stops information&lt;br /&gt;
    # leakage of local lan information.&lt;br /&gt;
    unblock-lan-zones: no&lt;br /&gt;
&lt;br /&gt;
    # If you configure local-data without specifying local-zone, by&lt;br /&gt;
    # default a transparent local-zone is created for the data.&lt;br /&gt;
    #&lt;br /&gt;
    # You can add locally served data with&lt;br /&gt;
    # local-zone: &amp;quot;local.&amp;quot; static&lt;br /&gt;
    # local-data: &amp;quot;mycomputer.local. IN A 192.0.2.51&amp;quot;&lt;br /&gt;
    # local-data: &#039;mytext.local TXT &amp;quot;content of text record&amp;quot;&#039;&lt;br /&gt;
&lt;br /&gt;
    # request upstream over TLS (with plain DNS inside the TLS stream).&lt;br /&gt;
    # Default is no.  Can be turned on and off with unbound-control.&lt;br /&gt;
    # tls-upstream: no&lt;br /&gt;
&lt;br /&gt;
    # Forward zones&lt;br /&gt;
    # Create entries like below, to make all queries for &#039;example.com&#039; and&lt;br /&gt;
    # &#039;example.org&#039; go to the given list of servers. These servers have to handle&lt;br /&gt;
    # recursion to other nameservers. List zero or more nameservers by hostname&lt;br /&gt;
    # or by ipaddress. Use an entry with name &amp;quot;.&amp;quot; to forward all queries.&lt;br /&gt;
    # If you enable forward-first, it attempts without the forward if it fails.&lt;br /&gt;
    # forward-zone:&lt;br /&gt;
    #    name: &amp;quot;example.com&amp;quot;&lt;br /&gt;
    #    forward-addr: 192.0.2.68&lt;br /&gt;
    #    forward-addr: 192.0.2.73@5355  # forward to port 5355.&lt;br /&gt;
    #    forward-first: no&lt;br /&gt;
    #    forward-tls-upstream: no&lt;br /&gt;
    #    forward-no-cache: no&lt;br /&gt;
    # forward-zone:&lt;br /&gt;
    #    name: &amp;quot;example.org&amp;quot;&lt;br /&gt;
    #    forward-host: fwd.example.com&lt;br /&gt;
&lt;br /&gt;
forward-zone:&lt;br /&gt;
    name: &amp;quot;.&amp;quot;&lt;br /&gt;
    forward-addr: 172.16.32.1@53&lt;br /&gt;
    forward-addr: ::1@53000&lt;br /&gt;
    forward-addr: 127.0.0.1@53000&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Blocking Microsoft Telemetry on the network by domain ==&lt;br /&gt;
Microsoft has added telemetry analytics to Windows which you may want to block at a network level. More information about that can be found [https://www.privacytools.io/operating-systems/#win10 here].&lt;br /&gt;
&lt;br /&gt;
This script takes in a list of domains and produces a filter file. We are directing all lookups to &amp;quot;0.0.0.1&amp;quot; which is an invalid IP and should fail immediately, unlike localhost. There are lists of the addresses in various places such as the tools people use to do this locally on Windows, ie [https://github.com/Nummer/Destroy-Windows-10-Spying/blob/master/DWS/DWSResources.cs#L210 Destroy-Windows-10-Spying], [https://github.com/10se1ucgo/DisableWinTracking/blob/master/dwt.py#L333 DisableWinTracking], [https://github.com/W4RH4WK/Debloat-Windows-10/blob/master/scripts/block-telemetry.ps1#L19 Debloat-Windows-10] and [https://github.com/pragmatrix/Dominator/blob/master/Dominator.Windows10/Settings/telemetry.txt Dominator.Windows10]. I have prepared the list further down: [[Linux Router with VPN on a Raspberry Pi#/etc/unbound/filter.conf]].&lt;br /&gt;
&lt;br /&gt;
You could also use this to block advertising, but that&#039;s probably easier to do in a web browser with something like [https://en.wikipedia.org/wiki/uBlock_Origin uBlock Origin].&lt;br /&gt;
&lt;br /&gt;
Another way is to disable this stuff with a group policy see [https://docs.microsoft.com/en-us/windows/privacy/manage-connections-from-windows-operating-system-components-to-microsoft-services Manage connections from Windows operating system components to Microsoft services] only for Windows 10 Enterprise, version 1607 and newer and Windows Server 2016.&lt;br /&gt;
&lt;br /&gt;
=== /etc/unbound/unbound.conf ===&lt;br /&gt;
In your main unbound configuration add&lt;br /&gt;
&amp;lt;pre&amp;gt;include: /etc/unbound/filter.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Script to prepare/sort domains for Unbound  ===&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
##################################################&lt;br /&gt;
# Script taken from http://npr.me.uk/unbound.html&lt;br /&gt;
# Note you need GNU sed&lt;br /&gt;
##################################################&lt;br /&gt;
&lt;br /&gt;
# Remove &amp;quot;#&amp;quot; comments&lt;br /&gt;
# Remove space and tab&lt;br /&gt;
# Remove blank lines&lt;br /&gt;
# Remove localhost and broadcasthost lines&lt;br /&gt;
# Keep just the hosts&lt;br /&gt;
# Remove leading and trailing space and tab (again)&lt;br /&gt;
# Make everything lower case&lt;br /&gt;
&lt;br /&gt;
sed -e &amp;quot;s/#.*//&amp;quot; \&lt;br /&gt;
    -e &amp;quot;s/[ \x09]*$//&amp;quot;\&lt;br /&gt;
    -e &amp;quot;/^$/ d&amp;quot; \&lt;br /&gt;
    -e &amp;quot;/^.*local.*/ d&amp;quot; \&lt;br /&gt;
    -e &amp;quot;/^.*broadcasthost.*/ d&amp;quot; \&lt;br /&gt;
    -e &amp;quot;s/\(^.*\) \([a-zA-Z0-9\.\-]*\)/\2/&amp;quot; \&lt;br /&gt;
    -e &amp;quot;s/^[ \x09]*//;s/[ \x09]*$//&amp;quot; $1 \&lt;br /&gt;
    -e &amp;quot;s/\(.*\)/\L\1/&amp;quot; hosts.txt &amp;gt; temp1.txt&lt;br /&gt;
&lt;br /&gt;
# Remove any duplicate hosts&lt;br /&gt;
&lt;br /&gt;
sort temp1.txt | uniq &amp;gt;temp2.txt&lt;br /&gt;
&lt;br /&gt;
# Remove any hosts starting with &amp;quot;.&amp;quot;&lt;br /&gt;
# Create the two required lines for each host.&lt;br /&gt;
&lt;br /&gt;
sed -e &amp;quot;/^\..*/ d&amp;quot; \&lt;br /&gt;
    -e &amp;quot;s/\(^.*\)/local-zone: \x22\1\x22 redirect\nlocal-data: \x22\1 A 0.0.0.1\x22/&amp;quot; \&lt;br /&gt;
       temp2.txt &amp;gt; filter.conf&lt;br /&gt;
&lt;br /&gt;
# Clean up&lt;br /&gt;
rm temp1.txt&lt;br /&gt;
rm temp2.txt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/unbound/filter.conf ==&lt;br /&gt;
&amp;lt;pre&amp;gt;local-zone: &amp;quot;a-0001.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0001.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0001.dc-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0001.dc-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0002.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0002.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0003.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0003.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0004.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0004.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0005.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0005.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0006.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0006.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0007.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0007.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0008.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0008.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0009.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0009.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0010.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0010.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0011.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0011.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-0012.a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-0012.a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a.ads1.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a.ads1.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a.ads2.msads.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a.ads2.msads.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a.ads2.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a.ads2.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ac3.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ac3.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;activity.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;activity.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;adnexus.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;adnexus.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;adnxs.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;adnxs.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ads1.msads.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ads1.msads.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ads1.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ads1.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ads.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ads.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;aidps.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;aidps.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;aka-cdn-ns.adtech.de&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;aka-cdn-ns.adtech.de A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;a.rad.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;a.rad.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array101-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array101-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array102-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array102-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array103-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array103-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array104-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array104-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array201-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array201-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array202-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array202-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array203-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array203-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array204-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array204-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array401-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array401-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array402-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array402-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array403-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array403-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array404-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array404-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array405-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array405-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array406-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array406-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array407-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array407-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;array408-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;array408-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ars.smartscreen.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ars.smartscreen.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;az361816.vo.msecnd.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;az361816.vo.msecnd.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;az512334.vo.msecnd.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;az512334.vo.msecnd.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;b.ads1.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;b.ads1.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;b.ads2.msads.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;b.ads2.msads.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bingads.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bingads.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bl3301-a.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bl3301-a.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bl3301-c.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bl3301-c.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bl3301-g.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bl3301-g.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;blob.weather.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;blob.weather.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn1304-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn1304-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn1306-a.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn1306-a.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn1306-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn1306-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn1306-g.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn1306-g.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn2b-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn2b-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn2b-cor002.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn2b-cor002.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn2b-cor003.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn2b-cor003.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn2b-cor004.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn2b-cor004.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn2wns1.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn2wns1.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn3p-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn3p-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bn3sch020022328.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bn3sch020022328.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;b.rad.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;b.rad.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;bs.serving-sys.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;bs.serving-sys.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;by3301-a.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;by3301-a.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;by3301-c.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;by3301-c.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;by3301-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;by3301-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;c-0001.dc-msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;c-0001.dc-msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cache.datamart.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cache.datamart.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;candycrushsoda.king.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;candycrushsoda.king.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;c.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;c.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ca.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ca.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cdn.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cdn.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cdn.content.prod.cms.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cdn.content.prod.cms.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cdn.onenote.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cdn.onenote.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds1204.lon.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds1204.lon.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds1293.lon.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds1293.lon.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds20417.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds20417.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds20431.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds20431.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds20450.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds20450.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds20457.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds20457.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds20475.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds20475.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds21244.lon.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds21244.lon.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds26.ams9.msecn.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds26.ams9.msecn.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds425.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds425.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds459.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds459.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds494.lcy.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds494.lcy.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cds965.lon.llnw.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cds965.lon.llnw.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch1-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch1-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch1-cor002.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch1-cor002.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch3301-c.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch3301-c.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch3301-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch3301-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch3301-g.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch3301-g.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch3302-c.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch3302-c.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ch3302-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ch3302-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;choice.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;choice.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;choice.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;choice.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;clientconfig.passport.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;clientconfig.passport.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;client-s.gateway.messenger.live.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;client-s.gateway.messenger.live.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;client.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;client.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;c.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;c.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;compatexchange1.trafficmanager.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;compatexchange1.trafficmanager.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;compatexchange.cloudapp.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;compatexchange.cloudapp.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;continuum.dds.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;continuum.dds.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;corpext.msitadfs.glbdns2.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;corpext.msitadfs.glbdns2.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;corp.sts.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;corp.sts.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cp101-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cp101-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cp201-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cp201-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cp401-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cp401-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;cs1.wpc.v0cdn.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;cs1.wpc.v0cdn.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db3aqu.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db3aqu.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db3wns2011111.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db3wns2011111.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100122.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100122.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100127.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100127.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100831.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100831.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100835.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100835.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100917.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100917.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100925.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100925.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100928.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100928.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101100938.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101100938.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101001.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101001.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101022.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101022.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101024.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101024.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101031.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101031.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101034.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101034.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101042.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101042.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101044.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101044.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101122.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101122.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101123.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101123.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101125.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101125.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101128.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101128.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101129.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101129.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101133.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101133.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101145.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101145.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101209.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101209.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101221.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101221.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101228.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101228.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101231.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101231.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101237.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101237.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101317.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101317.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101324.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101324.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101329.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101329.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101333.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101333.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101334.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101334.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101338.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101338.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101419.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101419.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101424.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101424.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101426.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101426.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101427.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101427.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101430.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101430.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101445.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101445.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101511.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101511.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101519.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101519.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101529.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101529.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101535.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101535.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101541.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101541.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101543.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101543.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101608.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101608.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101618.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101618.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101629.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101629.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101631.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101631.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101633.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101633.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101640.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101640.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101711.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101711.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101722.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101722.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101739.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101739.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101745.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101745.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101813.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101813.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101820.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101820.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101826.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101826.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101835.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101835.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101837.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101837.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101844.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101844.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101907.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101907.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101914.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101914.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101929.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101929.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101939.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101939.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101101941.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101101941.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102015.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102015.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102017.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102017.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102019.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102019.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102023.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102023.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102025.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102025.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102032.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102032.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101102033.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101102033.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110108.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110108.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110109.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110109.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110114.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110114.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110135.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110135.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110142.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110142.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110204.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110204.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110206.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110206.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110214.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110214.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110225.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110225.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110232.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110232.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110245.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110245.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110315.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110315.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110323.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110323.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110325.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110325.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110328.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110328.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110331.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110331.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110341.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110341.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110343.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110343.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110345.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110345.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110403.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110403.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110419.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110419.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110438.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110438.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110442.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110442.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110501.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110501.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110527.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110527.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110533.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110533.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110618.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110618.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110622.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110622.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110624.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110624.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110626.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110626.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110634.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110634.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110705.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110705.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110724.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110724.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110740.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110740.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110810.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110810.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110816.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110816.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110821.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110821.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110822.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110822.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110825.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110825.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110828.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110828.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110835.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110835.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110919.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110919.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110921.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110921.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110923.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110923.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch101110929.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch101110929.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103081814.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103081814.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082011.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082011.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082111.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082111.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082308.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082308.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082406.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082406.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082409.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082409.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082609.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082609.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082611.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082611.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082709.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082709.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082712.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082712.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103082806.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103082806.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090115.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090115.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090415.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090415.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090513.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090513.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090515.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090515.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090608.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090608.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090806.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090806.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090814.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090814.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103090906.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103090906.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091011.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091011.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091012.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091012.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091106.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091106.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091108.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091108.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091212.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091212.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091311.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091311.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091414.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091414.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091511.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091511.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091617.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091617.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091715.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091715.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091817.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091817.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091908.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091908.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103091911.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103091911.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092010.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092010.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092108.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092108.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092109.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092109.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092209.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092209.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092210.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092210.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103092509.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103092509.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100117.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100117.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100121.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100121.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100221.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100221.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100313.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100313.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100314.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100314.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100510.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100510.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100511.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100511.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100611.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100611.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103100712.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103100712.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101105.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101105.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101208.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101208.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101212.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101212.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101314.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101314.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101411.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101411.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101413.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101413.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101513.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101513.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101610.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101610.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101611.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101611.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101705.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101705.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101711.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101711.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101909.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101909.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103101914.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103101914.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102009.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102009.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102112.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102112.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102203.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102203.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102209.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102209.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102310.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102310.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102404.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102404.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102609.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102609.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102610.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102610.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5sch103102805.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5sch103102805.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5wns1d.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5wns1d.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db5.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db5.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090104.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090104.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090112.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090112.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090116.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090116.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090122.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090122.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090203.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090203.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090206.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090206.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090208.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090208.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090209.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090209.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090211.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090211.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090305.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090305.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090306.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090306.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090308.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090308.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090311.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090311.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090313.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090313.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090410.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090410.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090412.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090412.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090504.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090504.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090510.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090510.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090512.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090512.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090513.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090513.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090514.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090514.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090519.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090519.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090613.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090613.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090619.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090619.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090810.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090810.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090811.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090811.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090902.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090902.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090905.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090905.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090907.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090907.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090908.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090908.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090910.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090910.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102090911.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102090911.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091003.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091003.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091007.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091007.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091008.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091008.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091009.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091009.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091011.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091011.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091103.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091103.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091105.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091105.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091204.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091204.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091209.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091209.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091305.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091305.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091307.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091307.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091308.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091308.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091309.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091309.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091314.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091314.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091412.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091412.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091503.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091503.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091507.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091507.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091602.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091602.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091603.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091603.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091606.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091606.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;db6sch102091607.wns.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;db6sch102091607.wns.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;deploy.static.akamaitechnologies.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;deploy.static.akamaitechnologies.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;device.auth.xboxlive.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;device.auth.xboxlive.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;dev.virtualearth.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;dev.virtualearth.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;df.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;df.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;diagnostics.support.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;diagnostics.support.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;disc101-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;disc101-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;disc201-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;disc201-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;disc401-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;disc401-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;dmd.metaservices.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;dmd.metaservices.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;dns.msftncsi.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;dns.msftncsi.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ec.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ec.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ecn.dev.virtualearth.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ecn.dev.virtualearth.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;eu.vortex.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;eu.vortex.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;feedback.microsoft-hohm.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;feedback.microsoft-hohm.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;feedback.search.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;feedback.search.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;feedback.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;feedback.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;flex.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;flex.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;fs.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;fs.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;geo-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;geo-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;geover-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;geover-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;g.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;g.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;h1.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;h1.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;h2.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;h2.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i1.services.social.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i1.services.social.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i1.services.social.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i1.services.social.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-bl6p-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-bl6p-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-by3p-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-by3p-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-by3p-cor002.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-by3p-cor002.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-ch1-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-ch1-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-ch1-cor002.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-ch1-cor002.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;img-s-msn-com.akamaized.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;img-s-msn-com.akamaized.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;inference.location.live.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;inference.location.live.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;insiderppe.cloudapp.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;insiderppe.cloudapp.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-sn2-cor001.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-sn2-cor001.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;i-sn2-cor002.api.p001.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;i-sn2-cor002.api.p001.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;kv101-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;kv101-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;kv201-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;kv201-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;kv401-prod.do.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;kv401-prod.do.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;lb1.www.ms.akadns.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;lb1.www.ms.akadns.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;licensing.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;licensing.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;live.rads.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;live.rads.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;ls2web.redmond.corp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;ls2web.redmond.corp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;m.adnxs.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;m.adnxs.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;mediaredirect.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;mediaredirect.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;mobile.pipe.aria.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;mobile.pipe.aria.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;msftncsi.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;msftncsi.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;msntest.serving-sys.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;msntest.serving-sys.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;oca.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;oca.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;oca.telemetry.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;oca.telemetry.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;officeclient.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;officeclient.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;oneclient.sfx.ms&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;oneclient.sfx.ms A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;pre.footprintpredict.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;pre.footprintpredict.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;preview.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;preview.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;pti.store.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;pti.store.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;query.prod.cms.rt.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;query.prod.cms.rt.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;rad.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;rad.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;redir.metaservices.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;redir.metaservices.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;register.cdpcs.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;register.cdpcs.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;reports.wes.df.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;reports.wes.df.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;s0.2mdn.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;s0.2mdn.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;schemas.microsoft.akadns.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;schemas.microsoft.akadns.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;search.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;search.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;secure.adnxs.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;secure.adnxs.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;secure.flashtalking.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;secure.flashtalking.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;services.wes.df.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;services.wes.df.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings.data.glbdns2.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings.data.glbdns2.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings-sandbox.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings-sandbox.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings-ssl.xboxlive.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings-ssl.xboxlive.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings-win.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings-win.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;settings-win-ppe.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;settings-win-ppe.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sn3301-c.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sn3301-c.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sn3301-e.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sn3301-e.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sn3301-g.1drv.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sn3301-g.1drv.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;so.2mdn.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;so.2mdn.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;spynet2.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;spynet2.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;spynetalt.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;spynetalt.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;spyneteurope.microsoft.akadns.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;spyneteurope.microsoft.akadns.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sqm.df.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sqm.df.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sqm.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sqm.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;sqm.telemetry.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;sqm.telemetry.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;static.2mdn.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;static.2mdn.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;storecatalogrevocation.storequality.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;storecatalogrevocation.storequality.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;storeedgefd.dsx.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;storeedgefd.dsx.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;store-images.s-microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;store-images.s-microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;support.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;support.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;survey.watson.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;survey.watson.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;t0.ssl.ak.dynamic.tiles.virtualearth.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;t0.ssl.ak.dynamic.tiles.virtualearth.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;t0.ssl.ak.tiles.virtualearth.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;t0.ssl.ak.tiles.virtualearth.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;telecommand.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;telecommand.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;telecommand.telemetry.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;telecommand.telemetry.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;telemetry.appex.bing.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;telemetry.appex.bing.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;telemetry.urs.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;telemetry.urs.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;test.activity.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;test.activity.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;tile-service.weather.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;tile-service.weather.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;time.windows.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;time.windows.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;tk2.plt.msn.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;tk2.plt.msn.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;tsfe.trafficshaping.dsp.mp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;tsfe.trafficshaping.dsp.mp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;urs.smartscreen.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;urs.smartscreen.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;v10.vortex-win.data.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;v10.vortex-win.data.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;v10.vortex-win.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;v10.vortex-win.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;version.hybrid.api.here.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;version.hybrid.api.here.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;view.atdmt.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;view.atdmt.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-bn2.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-bn2.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-cy2.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-cy2.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex.data.glbdns2.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex.data.glbdns2.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex.data.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex.data.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-db5.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-db5.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-hk2.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-hk2.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-sandbox.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-sandbox.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-win.data.metron.live.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-win.data.metron.live.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;vortex-win.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;vortex-win.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;watson.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;watson.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;watson.ppe.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;watson.ppe.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;watson.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;watson.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;watson.telemetry.microsoft.com.nsatc.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;watson.telemetry.microsoft.com.nsatc.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;wdcpalt.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;wdcpalt.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;wdcp.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;wdcp.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;web.vortex.data.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;web.vortex.data.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;wes.df.telemetry.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;wes.df.telemetry.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;win10.ipv6.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;win10.ipv6.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;win10-trt.msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;win10-trt.msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;win1710.ipv6.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;win1710.ipv6.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;wscont.apps.microsoft.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;wscont.apps.microsoft.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;www.msedge.net&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;www.msedge.net A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;www.msftconnecttest.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;www.msftconnecttest.com A 0.0.0.1&amp;quot;&lt;br /&gt;
local-zone: &amp;quot;www.msftncsi.com&amp;quot; redirect&lt;br /&gt;
local-data: &amp;quot;www.msftncsi.com A 0.0.0.1&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DNSCrypt ==&lt;br /&gt;
Configuring DNSCrypt to send it&#039;s lookups through the VPN and not directly out your ppp interface is done using a socks proxy.&lt;br /&gt;
&lt;br /&gt;
You can test that you&#039;re not getting DNS leaks by using [https://www.dnsleaktest.com dnsleak.com] or this one from [https://www.grc.com/dns/dns.htm GRC]. Providers like CloudFlare and Google (1.1.1.1, 8.8.8.8) use [https://en.wikipedia.org/wiki/Anycast anycast] which should be pointing to a server located to where your VPN exits.&lt;br /&gt;
&lt;br /&gt;
=== /etc/dnscrypt-proxy/dnscrypt-proxy.toml ===&lt;br /&gt;
Using the sample dnscrypt config is fine, you will need to make these changes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;listen_addresses = [&#039;127.0.0.1:53000&#039;, &#039;[::1]:53000&#039;]&lt;br /&gt;
proxy = &amp;quot;socks5://127.0.0.1:1080&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuring Dante ===&lt;br /&gt;
First install dante, you&#039;ll need to pin the testing repository. See: [[Alpine Linux package management#Repository pinning]].&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add dante-server@testing}}&lt;br /&gt;
&lt;br /&gt;
Configure it like so:&lt;br /&gt;
&lt;br /&gt;
=== /etc/sockd.conf ===&lt;br /&gt;
&amp;lt;pre&amp;gt;logoutput: stderr&lt;br /&gt;
internal: 127.0.0.1 port = 1080&lt;br /&gt;
external: tun0&lt;br /&gt;
clientmethod: none&lt;br /&gt;
socksmethod: none&lt;br /&gt;
user.unprivileged: sockd&lt;br /&gt;
&lt;br /&gt;
# Allow connections from localhost to any host&lt;br /&gt;
client pass {&lt;br /&gt;
        from: 127.0.0.1/8 to: 0.0.0.0/0&lt;br /&gt;
	log: error # connect/disconnect&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Generic pass statement - bind/outgoing traffic&lt;br /&gt;
socks pass {&lt;br /&gt;
        from: 0.0.0.0/0 to: 0.0.0.0/0&lt;br /&gt;
        command: bind connect udpassociate&lt;br /&gt;
        log: error # connect disconnect iooperation&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# Generic pass statement for incoming connections/packets&lt;br /&gt;
socks pass {&lt;br /&gt;
        from: 0.0.0.0/0 to: 0.0.0.0/0&lt;br /&gt;
        command: bindreply udpreply&lt;br /&gt;
        log: error # connect disconnect iooperation&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally the services to the the default run level:&lt;br /&gt;
{{cmd|rc-update add sockd default}}&lt;br /&gt;
{{cmd|rc-update add unbound default}}&lt;br /&gt;
{{cmd|rc-update add dnscrypt-proxy default}}&lt;br /&gt;
&lt;br /&gt;
= Random number generation =&lt;br /&gt;
There are two ways to assist with random number generation [[Entropy and randomness]]. This can be particularly useful if you&#039;re generating your own Diffie-Hellman nonce file, used in the [[FreeRadius EAP-TLS configuration]] section. Or for that matter any process which requires lots of random number generation such as generating certificates or public private keys.&lt;br /&gt;
&lt;br /&gt;
== Haveged ==&lt;br /&gt;
[http://www.issihosts.com/haveged Haveged] is a great way to improve random number generation speed. It uses the unpredictable random number generator based upon an adaptation of the [http://www.irisa.fr/caps/projects/hipsor/ HAVEGE] algorithm.&lt;br /&gt;
&lt;br /&gt;
Install haveged:&lt;br /&gt;
{{cmd|apk add haveged}}&lt;br /&gt;
&lt;br /&gt;
Start haveged service:&lt;br /&gt;
{{cmd|service haveged start}}&lt;br /&gt;
&lt;br /&gt;
Add service to boot&lt;br /&gt;
{{cmd|rc-update add haveged default}}&lt;br /&gt;
&lt;br /&gt;
Start rngd service:&lt;br /&gt;
{{cmd|service haveged start}}&lt;br /&gt;
&lt;br /&gt;
Add service to boot:&lt;br /&gt;
{{cmd|rc-update add haveged default}}&lt;br /&gt;
&lt;br /&gt;
== rng-tools with bcm2708-rng ==&lt;br /&gt;
&lt;br /&gt;
=== Pre Alpine Linux 3.8 (which includes rngd 5) ===&lt;br /&gt;
All Raspberry Pis come with the bcm2708-rng random number generator on board. If you are doing this project on a Raspberry Pi then you may choose to use this also.&lt;br /&gt;
&lt;br /&gt;
Add the kernel module to /etc/modules:&lt;br /&gt;
{{cmd|echo &amp;quot;bcm2708-rng&amp;quot; &amp;gt; /etc/modules}}&lt;br /&gt;
&lt;br /&gt;
Insert module:&lt;br /&gt;
{{cmd|modprobe bcm2708-rng}}&lt;br /&gt;
&lt;br /&gt;
Install rng-tools:&lt;br /&gt;
{{cmd|apk add rng-tools}}&lt;br /&gt;
&lt;br /&gt;
Set the random device (/dev/random) and rng device (/dev/hwrng) in /etc/conf.d/rngd&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;RNGD_OPTS=&amp;quot;--no-drng=1 --no-tpm=1 -o /dev/random -r /dev/hwrng&amp;quot;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== Post Alpine Linux 3.8 (which includes rngd 6) ===&lt;br /&gt;
&lt;br /&gt;
With AlpineLinux 3.8 you don&#039;t have to insert the module as it is already built in the kernel.&lt;br /&gt;
&lt;br /&gt;
Additionally the syntax has changed for rngd so for /etc/conf.d/rngd you&#039;ll need&lt;br /&gt;
&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;RNGD_OPTS=&amp;quot;-x1 -o /dev/random -r /dev/hwrng&amp;quot;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Start rngd service:&lt;br /&gt;
{{cmd|service rngd start}}&lt;br /&gt;
&lt;br /&gt;
Add service to boot:&lt;br /&gt;
{{cmd|rc-update add rngd default}}&lt;br /&gt;
&lt;br /&gt;
You can test it with:&lt;br /&gt;
{{cmd|&amp;lt;nowiki&amp;gt;cat /dev/hwrng | rngtest -c 1000&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
You should see something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;rngtest 5&lt;br /&gt;
Copyright (c) 2004 by Henrique de Moraes Holschuh&lt;br /&gt;
This is free software; see the source for copying conditions.  There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&lt;br /&gt;
&lt;br /&gt;
rngtest: starting FIPS tests...&lt;br /&gt;
rngtest: bits received from input: 20000032&lt;br /&gt;
rngtest: FIPS 140-2 successes: 1000&lt;br /&gt;
rngtest: FIPS 140-2 failures: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Monobit: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Poker: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Runs: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Long run: 0&lt;br /&gt;
rngtest: FIPS 140-2(2001-10-10) Continuous run: 0&lt;br /&gt;
rngtest: input channel speed: (min=117.709; avg=808.831; max=3255208.333)Kibits/s&lt;br /&gt;
rngtest: FIPS tests speed: (min=17.199; avg=22.207; max=22.653)Mibits/s&lt;br /&gt;
rngtest: Program run time: 25178079 microseconds&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s possible you might have a some failures. That&#039;s okay, two runs I did previously had a failure each.&lt;br /&gt;
&lt;br /&gt;
= WiFi 802.1x EAP and FreeRadius =&lt;br /&gt;
A more secure way than using pre-shared keys (WPA2) is to use [https://en.wikipedia.org/wiki/Extensible_Authentication_Protocol#EAP-TLS EAP-TLS] and use separate certificates for each device. See [[FreeRadius EAP-TLS configuration]]&lt;br /&gt;
&lt;br /&gt;
= VPN Tunnel on specific subnet =&lt;br /&gt;
As mentioned earlier in this article it might be useful to have a VPN subnet and a non-VPN subnet. Typically gaming consoles or computers might want low-latency connections. For this exercise we use fwmark.&lt;br /&gt;
&lt;br /&gt;
We expand the network to look like this:&lt;br /&gt;
&lt;br /&gt;
[[File:Network diagram ipv4 tunnel.svg|900px|center|Network Diagram with IPv4 tunnel]]&lt;br /&gt;
&lt;br /&gt;
Install the necessary packages:&lt;br /&gt;
{{cmd|apk add openvpn iproute2 iputils}}&lt;br /&gt;
&lt;br /&gt;
== /etc/modules ==&lt;br /&gt;
You&#039;ll want to add the tun module&lt;br /&gt;
&amp;lt;pre&amp;gt;tun&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/iproute2/rt_tables ==&lt;br /&gt;
Add the two routing tables to the bottom of rt_tables. It should look something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;#&lt;br /&gt;
# reserved values&lt;br /&gt;
#&lt;br /&gt;
255	local&lt;br /&gt;
254	main&lt;br /&gt;
253	default&lt;br /&gt;
0	unspec&lt;br /&gt;
#&lt;br /&gt;
# local&lt;br /&gt;
#&lt;br /&gt;
#1	inr.ruhep&lt;br /&gt;
1 ISP&lt;br /&gt;
2 VPN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/interfaces ==&lt;br /&gt;
Next up add the virtual interface (really just a IP address to eth0) eth0:2, just under eth0 will do.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Route to VPN subnet&lt;br /&gt;
auto eth0:2&lt;br /&gt;
iface eth0:2 inet static&lt;br /&gt;
  address 192.168.2.1&lt;br /&gt;
  netmask 255.255.255.0&lt;br /&gt;
  broadcast 192.168.2.255&lt;br /&gt;
  post-up /etc/network/fwmark_rules&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/sysctl.d/local.conf ==&lt;br /&gt;
If you want to use fwmark rules you need to change this setting. It causes the router to still do source validation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Needed to use fwmark&lt;br /&gt;
net.ipv4.conf.all.rp_filter = 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
fwmark won&#039;t work if you have this set to 1.&lt;br /&gt;
&lt;br /&gt;
== /etc/network/fwmark_rules ==&lt;br /&gt;
In this file we want to put the fwmark rules and set the correct priorities.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Normal packets to go direct out WAN&lt;br /&gt;
/sbin/ip rule add fwmark 1 table ISP prio 100&lt;br /&gt;
&lt;br /&gt;
# Put packets destined into VPN when VPN is up&lt;br /&gt;
/sbin/ip rule add fwmark 2 table VPN prio 200&lt;br /&gt;
&lt;br /&gt;
# Prevent packets from being routed out when VPN is down.&lt;br /&gt;
# This prevents packets from falling back to the main table&lt;br /&gt;
# that has a priority of 32766&lt;br /&gt;
/sbin/ip rule add prohibit fwmark 2 prio 300&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/ppp/ip-up ==&lt;br /&gt;
Next up we want to create the routes that should be run when PPP comes online. There are special hooks we can use in ip-up and ip-down to refer to the IP address, [https://ppp.samba.org/pppd.html#sect13 ppp man file - Scripts ] You can also read about them in your man file if you have ppp-doc installed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by pppd when there&#039;s a successful ppp connection.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Flush out any old rules that might be there&lt;br /&gt;
/sbin/ip route flush table ISP&lt;br /&gt;
&lt;br /&gt;
# Add route to table from subnets on LAN&lt;br /&gt;
/sbin/ip route add 192.168.1.0/24 dev eth0 table ISP&lt;br /&gt;
/sbin/ip route add 192.168.2.0/24 dev eth0 table ISP&lt;br /&gt;
&lt;br /&gt;
# Add route from IP given by ISP to the table&lt;br /&gt;
/sbin/ip rule add from ${IPREMOTE} table ISP prio 100&lt;br /&gt;
&lt;br /&gt;
# Add a default route&lt;br /&gt;
/sbin/ip route add table ISP default via ${IPREMOTE} dev ${IFNAME}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/ppp/ip-down ==&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by pppd after the connection has ended.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Delete the rules when we take the interface down&lt;br /&gt;
/sbin/ip rule del from ${IPREMOTE} table ISP prio 100&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/openvpn/route-up-fwmark.sh ==&lt;br /&gt;
OpenVPN needs similar routing scripts and it also has it&#039;s own special hooks that allow you to specify particular values. A full list is here [https://openvpn.net/index.php/open-source/documentation/manuals/65-openvpn-20x-manpage.html#lbAS OpenVPN man file - Environmental Variables]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by OpenVPN when there&#039;s a successful VPN connection.&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Flush out any old rules that might be there&lt;br /&gt;
/sbin/ip route flush table VPN&lt;br /&gt;
&lt;br /&gt;
# Add route to table from 192.168.2.0/24 subnet on LAN&lt;br /&gt;
/sbin/ip route add 192.168.2.0/24 dev eth0 table VPN&lt;br /&gt;
&lt;br /&gt;
# Add route from VPN interface IP to the VPN table&lt;br /&gt;
/sbin/ip rule add from ${ifconfig_local} table VPN prio 200&lt;br /&gt;
&lt;br /&gt;
# Add a default route&lt;br /&gt;
/sbin/ip route add default via ${ifconfig_local} dev ${dev} table VPN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/openvpn/route-pre-down-fwmark.sh ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
#&lt;br /&gt;
# This script is run by OpenVPN after the connection has ended&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
# Delete the rules when we take the interface down&lt;br /&gt;
/sbin/ip rule del from ${ifconfig_local} table VPN prio 200&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What I did find was when starting and stopping the OpenVPN service if you used:&lt;br /&gt;
&lt;br /&gt;
{{cmd|service openvpn stop}}&lt;br /&gt;
&lt;br /&gt;
The rules in route-pre-down-fwmark.sh were not executed.&lt;br /&gt;
&lt;br /&gt;
However:&lt;br /&gt;
&lt;br /&gt;
{{cmd|/etc/init.d/openvpn stop}}&lt;br /&gt;
&lt;br /&gt;
seemed to work correctly.&lt;br /&gt;
&lt;br /&gt;
== Advanced IPtables rules that allow us to route into our two routing tables ==&lt;br /&gt;
This is an expansion of the previous set of rules. It sets up NAT masquerading for the 192.168.2.0 to go through the VPN using marked packets.&lt;br /&gt;
&lt;br /&gt;
I used these guides to write complete this: &lt;br /&gt;
&lt;br /&gt;
* [http://nerdboys.com/2006/05/05/conning-the-mark-multiwan-connections-using-iptables-mark-connmark-and-iproute2 Conning the Mark: Multiwan connections using IPTables, MARK, CONNMARK and iproute2 ]&lt;br /&gt;
* [http://nerdboys.com/2006/05/08/multiwan-connections-addendum Multiwan connections addendum]&lt;br /&gt;
* [http://inai.de/images/nf-packet-flow.png Netfilter packet flow]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#########################################################################&lt;br /&gt;
# Advanced routing rule set&lt;br /&gt;
# Uses 192.168.1.0 via ISP&lt;br /&gt;
#      192.168.2.0 via VPN&lt;br /&gt;
#&lt;br /&gt;
# Packets to/from 192.168.1.0/24 are marked with 0x1 and routed to ISP&lt;br /&gt;
# Packets to/from 192.168.2.0/24 are marked with 0x2 and routed to VPN&lt;br /&gt;
#&lt;br /&gt;
#########################################################################&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# NAT Table&lt;br /&gt;
# This is where translation of packets happens and &amp;quot;forwarding&amp;quot; of ports&lt;br /&gt;
# to specific hosts.&lt;br /&gt;
#&lt;br /&gt;
*nat&lt;br /&gt;
&lt;br /&gt;
# Set default policies for table&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Port forwarding for Bittorrent&lt;br /&gt;
-A PREROUTING -i tun0 -p tcp -m tcp --dport 6881:6889 -j DNAT --to-destination 192.168.2.20&lt;br /&gt;
-A PREROUTING -i tun0 -p udp -m udp --dport 6881:6889 -j DNAT --to-destination 192.168.2.20&lt;br /&gt;
&lt;br /&gt;
# Allows routing to our modem subnet so we can access the web interface&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
-A POSTROUTING -s 192.168.2.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the VPN tunnel&lt;br /&gt;
-A POSTROUTING -o tun0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the PPP tunnel&lt;br /&gt;
-A POSTROUTING -o ppp0 -j MASQUERADE&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Filter Table&lt;br /&gt;
# This is where we decide to ACCEPT, DROP or REJECT things&lt;br /&gt;
#&lt;br /&gt;
*filter&lt;br /&gt;
:INPUT DROP [0:0]&lt;br /&gt;
:FORWARD DROP [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for forwarding packets&lt;br /&gt;
:FWD_ETH0 - [0:0]&lt;br /&gt;
:FWD_ETH1 - [0:0]&lt;br /&gt;
:FWD_PPP0 - [0:0]&lt;br /&gt;
:FWD_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for input packets (for host itself)&lt;br /&gt;
:IN_ETH0 - [0:0]&lt;br /&gt;
:IN_ETH1 - [0:0]&lt;br /&gt;
:IN_PPP0 - [0:0]&lt;br /&gt;
:IN_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a log drop chain&lt;br /&gt;
:LOG_DROP - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a reject chain&lt;br /&gt;
:LOG_REJECT - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Pass input packet to corresponding rule chain&lt;br /&gt;
-A INPUT -i lo -j ACCEPT&lt;br /&gt;
-A INPUT -i eth0 -j IN_ETH0&lt;br /&gt;
-A INPUT -i eth1 -j IN_ETH1&lt;br /&gt;
-A INPUT -i ppp0 -j IN_PPP0&lt;br /&gt;
-A INPUT -i tun0 -j IN_TUN0&lt;br /&gt;
&lt;br /&gt;
# Track forwarded packets&lt;br /&gt;
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass forwarded packet to corresponding rule chain&lt;br /&gt;
-A FORWARD -i eth0 -j FWD_ETH0&lt;br /&gt;
-A FORWARD -i eth1 -j FWD_ETH1&lt;br /&gt;
-A FORWARD -i ppp0 -j FWD_PPP0&lt;br /&gt;
-A FORWARD -i tun0 -j FWD_TUN0&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to ISP&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to VPN&lt;br /&gt;
-A FWD_ETH0 -s 192.168.2.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow excepted server to be FORWARD to ppp0&lt;br /&gt;
#-A FWD_ETH0 -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -o ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward SSH packets from network to modem&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.1.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.2.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward HTTP packets from network to modem&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.1.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.2.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward Bittorrent Port to workstation&lt;br /&gt;
-A FWD_TUN0 -d 192.168.2.20/32 -p tcp -m tcp --dport 6881:6889 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_TUN0 -d 192.168.2.20/32 -p udp -m udp --dport 6881:6889 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# DNS to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# FreeRadius Client (eg a UniFi AP)&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Ubiquiti UAP Device Discovery Broadcast&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 10001 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# NTP to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept traffic to router on both subnets&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow excepted server to be INPUT to eth0 from LAN&lt;br /&gt;
#-A IN_ETH0 -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -o ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# HTTP To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked PPP0 connection&lt;br /&gt;
-A IN_PPP0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on PPP0&lt;br /&gt;
-A IN_PPP0 -j LOG --log-prefix &amp;quot;DROP:INPUT &amp;quot; --log-level 6&lt;br /&gt;
-A IN_PPP0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked TUN0 connection&lt;br /&gt;
-A IN_TUN0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on TUN0&lt;br /&gt;
-A IN_TUN0 -j LOG --log-prefix &amp;quot;DROP:INPUT &amp;quot; --log-level 6&lt;br /&gt;
-A IN_TUN0 -j LOG_DROP&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mangle Table&lt;br /&gt;
# This is the place where our markings happen, whether they be 0x1 or 0x2&lt;br /&gt;
#&lt;br /&gt;
*mangle&lt;br /&gt;
&lt;br /&gt;
# Set default policies for table&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:FORWARD ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Restore CONNMARK to the MARK (If one doesn&#039;t exist then no mark is set)&lt;br /&gt;
-A PREROUTING -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff&lt;br /&gt;
&lt;br /&gt;
# If packet MARK is 2, then it means there is already a connection mark and the&lt;br /&gt;
# original packet came in on VPN&lt;br /&gt;
-A PREROUTING -s 192.168.2.0/24 -m mark --mark 0x2 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Check exception (this is a server which when accessed on a 192.168.2.0/24 address will go out the ISP table) are 0x1&lt;br /&gt;
#-A PREROUTING -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -m mark --mark 0x1 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Mark packets coming from 192.168.2.0/24 are 0x2&lt;br /&gt;
-A PREROUTING -s 192.168.2.0/24 -j MARK --set-xmark 0x2/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# If packet MARK is 1, then it means there is already a connection mark and the&lt;br /&gt;
# original packet came in on ISP&lt;br /&gt;
-A PREROUTING -s 192.168.1.0/24 -m mark --mark 0x1 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Mark packets 192.168.1.0/24 are 0x1&lt;br /&gt;
-A PREROUTING -s 192.168.1.0/24 -j MARK --set-xmark 0x1/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Mark exception (this is a server which when accessed on a 192.168.2.0/24 address will go out the ISP table) as 0x1&lt;br /&gt;
#-A PREROUTING -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -j MARK --set-xmark 0x1/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Set mark to 0 - This is for the modem. Otherwise it will mark with 0x1 or 0x2&lt;br /&gt;
-A PREROUTING -d 192.168.0.1/32 -j MARK --set-xmark 0x0/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Save MARK to CONNMARK (remember iproute can&#039;t see CONNMARKs)&lt;br /&gt;
-A PREROUTING -j CONNMARK --save-mark --nfmask 0xffffffff --ctmask 0xffffffff&lt;br /&gt;
COMMIT&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You may want to delete certain rules here that do not apply to you, eg the FreeRadius rules. That is covered later in this article.&lt;br /&gt;
&lt;br /&gt;
== OpenVPN Routing ==&lt;br /&gt;
Usually when you connect with OpenVPN the remote VPN server will push routes down to your system. We don&#039;t want this as we still want to be able to access the internet without the VPN. We have also created our own routes that we want to use earlier in this guide.&lt;br /&gt;
&lt;br /&gt;
You&#039;ll need to add this to the bottom of your OpenVPN configuration file:&lt;br /&gt;
&amp;lt;pre&amp;gt;# Prevents default gateway from being set on the default routing table&lt;br /&gt;
route-noexec&lt;br /&gt;
&lt;br /&gt;
# Allows route-up script to be executed&lt;br /&gt;
script-security 2&lt;br /&gt;
&lt;br /&gt;
# Calls custom shell script after connection to add necessary routes&lt;br /&gt;
route-up /etc/openvpn/route-up-fwmark.sh&lt;br /&gt;
route-pre-down /etc/openvpn/route-pre-down-fwmark.sh&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
My VPNs are arranged like this in /etc/openvpn:&lt;br /&gt;
&lt;br /&gt;
OpenVPN configuration file for that server:&lt;br /&gt;
&amp;lt;pre&amp;gt;countrycode.serverNumber.openvpn.conf&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenVPN certs for that server:&lt;br /&gt;
&amp;lt;pre&amp;gt;countrycode.serverNumber.openvpn/countrycode.serverNumber.openvpn.crt&lt;br /&gt;
countrycode.serverNumber.openvpn/countrycode.serverNumber.openvpn.key&lt;br /&gt;
countrycode.serverNumber.openvpn/myKey.crt&lt;br /&gt;
countrycode.serverNumber.openvpn/myKey.key&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So I use this helpful script to automate the process of changing between servers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
vpn_server_filename=$1&lt;br /&gt;
&lt;br /&gt;
rm /etc/openvpn/openvpn.conf&lt;br /&gt;
ln -s $vpn_server_filename /etc/openvpn/openvpn.conf&lt;br /&gt;
chown -R openvpn:openvpn /etc/openvpn&lt;br /&gt;
chmod -R a=-rwx,u=+rX /etc/openvpn&lt;br /&gt;
chmod u=x /etc/openvpn/*.sh*&lt;br /&gt;
&lt;br /&gt;
if grep -Fxq &amp;quot;#CustomStuffHere&amp;quot; openvpn.conf&lt;br /&gt;
then&lt;br /&gt;
    echo &amp;quot;Not adding custom routes, this server has been used previously&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Adding custom route rules&amp;quot;&lt;br /&gt;
cat &amp;lt;&amp;lt;EOF &amp;gt;&amp;gt; /etc/openvpn/openvpn.conf&lt;br /&gt;
&lt;br /&gt;
#CustomStuffHere&lt;br /&gt;
# Prevents default gateway from being set on the default routing table&lt;br /&gt;
route-noexec&lt;br /&gt;
&lt;br /&gt;
# Allows route-up script to be executed&lt;br /&gt;
script-security 2&lt;br /&gt;
&lt;br /&gt;
# Calls custom shell script after connection to add necessary routes&lt;br /&gt;
route-up /etc/openvpn/route-up-fwmark.sh&lt;br /&gt;
route-pre-down /etc/openvpn/route-pre-down-fwmark.sh&lt;br /&gt;
&lt;br /&gt;
# Logging of OpenVPN to file&lt;br /&gt;
#log /etc/openvpn/openvpn.log&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
fi&lt;br /&gt;
echo &amp;quot;Remember to set BitTorrent port forward in VPN control panel&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That way I can simply change between servers by running:&lt;br /&gt;
{{cmd|changevpn.sh countrycode.serverNumber.openvpn}}&lt;br /&gt;
&lt;br /&gt;
and then restart openvpn. I am also reminded to put the port forward through on the VPN control panel so my BitTorrent client is connectable:&lt;br /&gt;
&lt;br /&gt;
{{cmd|service openvpn restart}}&lt;br /&gt;
&lt;br /&gt;
Finally add openvpn to the default run level&lt;br /&gt;
{{cmd|rc-update add openvpn default}}&lt;br /&gt;
&lt;br /&gt;
= Creating a LAN only Subnet =&lt;br /&gt;
In this section, we&#039;ll be creating a LAN only subnet. This subnet will be 192.168.3.0/24. The idea of this subnet is nodes in it cannot have their packets forwarded to the Internet, however they can be accessed via the other LAN subnets 192.168.1.0/24 and 192.168.2.0/24. This approach doesn&#039;t use VLANs although that would be recommended if you had a managed switch. The idea of this subnet is for things like WiFi access points, IP Phones which contact a local Asterisk server and of course printers.&lt;br /&gt;
&lt;br /&gt;
At the end of this section we will have something like:&lt;br /&gt;
&lt;br /&gt;
[[File:Network diagram ipv4 tunnel LANONLY ROUTE.svg|900px|center|Network Diagram LAN ONLY Route with IPv4]]&lt;br /&gt;
&lt;br /&gt;
== /etc/iproute2/rt_tables ==&lt;br /&gt;
First up we&#039;ll add a third routing table:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;3 LAN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/interfaces ==&lt;br /&gt;
Add a an extra virtual interface (really just a IP address to eth0).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# LAN Only&lt;br /&gt;
auto eth0:3&lt;br /&gt;
iface eth0:3 inet static&lt;br /&gt;
  address 192.168.3.1&lt;br /&gt;
  netmask 255.255.255.0&lt;br /&gt;
  broadcast 192.168.3.255&lt;br /&gt;
  post-up /etc/network/route_LAN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/network/route_LAN ==&lt;br /&gt;
This file will have our route added to it&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Add routes from ISP to LAN&lt;br /&gt;
/sbin/ip route add 192.168.1.0/24 dev eth0 table LAN&lt;br /&gt;
&lt;br /&gt;
# Add route from VPN to LAN&lt;br /&gt;
/sbin/ip route add 192.168.2.0/24 dev eth0 table LAN&lt;br /&gt;
&lt;br /&gt;
# Add route from LAN to it&#039;s own table&lt;br /&gt;
/sbin/ip route add 192.168.3.0/24 dev eth0 table LAN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/ppp/ip-up ==&lt;br /&gt;
Append a route from the LAN subnet to the ISP table&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Add route to LAN subnet&lt;br /&gt;
/sbin/ip route add 192.168.3.0/24 dev eth0 table ISP&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/openvpn/route-up-fwmark.sh ==&lt;br /&gt;
Append a route from the LAN subnet to the VPN table&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Add route to LAN only subnet&lt;br /&gt;
/sbin/ip route add 192.168.3.0/24 dev eth0 table VPN&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== /etc/ntpd.conf ==&lt;br /&gt;
Add a listen address for ntp (OpenNTPD).&lt;br /&gt;
&lt;br /&gt;
You should now have:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Addresses to listen on (ntpd does not listen by default)&lt;br /&gt;
listen on 192.168.1.1&lt;br /&gt;
listen on 192.168.2.1&lt;br /&gt;
listen on 192.168.3.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Devices needing the correct time will need to use this NTP server because they will not be able to get it from the Internet.&lt;br /&gt;
&lt;br /&gt;
== Blocking bogons ==&lt;br /&gt;
Our LAN now has 4 subnets in total that are possible:&lt;br /&gt;
&lt;br /&gt;
* 192.168.0.0/30 (connection between modem and router)&lt;br /&gt;
* 192.168.1.0/24 (ISP table, directly routed out WAN)&lt;br /&gt;
* 192.168.2.0/24 (VPN table, routed out VPN)&lt;br /&gt;
* 192.168.3.0/24 (Null routed subnet for LAN only hosts)&lt;br /&gt;
* 172.16.32.0/20 (VPN provider&#039;s network, so we can access things on the VPN&#039;s network).&lt;br /&gt;
&lt;br /&gt;
Everything else should be rejected. No packets should ever be forwarded on 192.168.5.2 or 10.0.0.5 for example.&lt;br /&gt;
&lt;br /&gt;
=== Installing ipset ===&lt;br /&gt;
Install ipset:&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add ipset}}&lt;br /&gt;
&lt;br /&gt;
Add it to start up:&lt;br /&gt;
{{cmd|rc-update add ipset default}}&lt;br /&gt;
&lt;br /&gt;
Now we need to load the lists of addresses into ipset [http://blog.ls20.com/securing-your-server-using-ipset-and-dynamic-blocklists Securing Your Server using IPset and Dynamic Blocklists] mentions a [https://gist.github.com/hwdsl2/6dce75072274abfd2781 script] which was particularly useful. This script could be run on a cron job if you wanted to regularly update it and for the full bogon list you should as they change when that address space has been allocated.&lt;br /&gt;
&lt;br /&gt;
For the purpose of this we will be using just the [https://files.pfsense.org/lists/bogon-bn-nonagg.txt bogon-bn-nonagg.txt] list. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;0.0.0.0/8&lt;br /&gt;
10.0.0.0/8&lt;br /&gt;
100.64.0.0/10&lt;br /&gt;
127.0.0.0/8&lt;br /&gt;
169.254.0.0/16&lt;br /&gt;
172.16.0.0/12&lt;br /&gt;
192.0.0.0/24&lt;br /&gt;
192.0.2.0/24&lt;br /&gt;
192.168.0.0/16&lt;br /&gt;
198.18.0.0/15&lt;br /&gt;
198.51.100.0/24&lt;br /&gt;
203.0.113.0/24&lt;br /&gt;
224.0.0.0/4&lt;br /&gt;
240.0.0.0/4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is unlikely to change as it&#039;s the IPV4 [https://en.wikipedia.org/wiki/Reserved_IP_addresses Reserved IP addresses] space. The script: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#! /bin/bash&lt;br /&gt;
&lt;br /&gt;
# /usr/local/sbin/fullbogons-ipv4&lt;br /&gt;
# BoneKracker&lt;br /&gt;
# Rev. 11 October 2012&lt;br /&gt;
# Tested with ipset 6.13&lt;br /&gt;
&lt;br /&gt;
# Purpose: Periodically update an ipset used in a running firewall to block&lt;br /&gt;
# bogons. Bogons are addresses that nobody should be using on the public&lt;br /&gt;
# Internet because they are either private, not to be assigned, or have&lt;br /&gt;
# not yet been assigned.&lt;br /&gt;
#&lt;br /&gt;
# Notes: Call this from crontab. Feed updated every 4 hours.&lt;br /&gt;
&lt;br /&gt;
# target=&amp;quot;http://www.team-cymru.org/Services/Bogons/fullbogons-ipv4.txt&amp;quot;&lt;br /&gt;
# Use alternative URL from pfSense, due to 404 error with URL above&lt;br /&gt;
target=&amp;quot;https://files.pfsense.org/lists/bogon-bn-nonagg.txt&amp;quot;&lt;br /&gt;
ipset_params=&amp;quot;hash:net&amp;quot;&lt;br /&gt;
&lt;br /&gt;
filename=$(basename ${target})&lt;br /&gt;
firewall_ipset=${filename%.*}           # ipset will be filename minus ext&lt;br /&gt;
data_dir=&amp;quot;/var/tmp/${firewall_ipset}&amp;quot;   # data directory will be same&lt;br /&gt;
data_file=&amp;quot;${data_dir}/${filename}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# if data directory does not exist, create it&lt;br /&gt;
mkdir -pm 0750 ${data_dir}&lt;br /&gt;
&lt;br /&gt;
# function to get modification time of the file in log-friendly format&lt;br /&gt;
get_timestamp() {&lt;br /&gt;
    date -r $1 +%m/%d&#039; &#039;%R&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
# file modification time on server is preserved during wget download&lt;br /&gt;
[ -w ${data_file} ] &amp;amp;&amp;amp; old_timestamp=$(get_timestamp ${data_file})&lt;br /&gt;
&lt;br /&gt;
# fetch file only if newer than the version we already have&lt;br /&gt;
wget -qNP ${data_dir} ${target}&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;$?&amp;quot; -ne &amp;quot;0&amp;quot; ]; then&lt;br /&gt;
    logger -p cron.err &amp;quot;IPSet: ${firewall_ipset} wget failed.&amp;quot;&lt;br /&gt;
    exit 1&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
timestamp=$(get_timestamp ${data_file})&lt;br /&gt;
&lt;br /&gt;
# compare timestamps because wget returns success even if no newer file&lt;br /&gt;
if [ &amp;quot;${timestamp}&amp;quot; != &amp;quot;${old_timestamp}&amp;quot; ]; then&lt;br /&gt;
&lt;br /&gt;
    temp_ipset=&amp;quot;${firewall_ipset}_temp&amp;quot;&lt;br /&gt;
    ipset create ${temp_ipset} ${ipset_params}&lt;br /&gt;
&lt;br /&gt;
    #sed -i &#039;/^#/d&#039; ${data_file}            # strip comments&lt;br /&gt;
    sed -ri &#039;/^[#&amp;lt; \t]|^$/d&#039; ${data_file}   # occasionally the file has been xhtml&lt;br /&gt;
&lt;br /&gt;
    while read network; do&lt;br /&gt;
        ipset add ${temp_ipset} ${network}&lt;br /&gt;
    done &amp;lt; ${data_file}&lt;br /&gt;
&lt;br /&gt;
    # if ipset does not exist, create it&lt;br /&gt;
    ipset create -exist ${firewall_ipset} ${ipset_params}&lt;br /&gt;
&lt;br /&gt;
    # swap the temp ipset for the live one&lt;br /&gt;
    ipset swap ${temp_ipset} ${firewall_ipset}&lt;br /&gt;
    ipset destroy ${temp_ipset}&lt;br /&gt;
&lt;br /&gt;
    # log the file modification time for use in minimizing lag in cron schedule&lt;br /&gt;
    logger -p cron.notice &amp;quot;IPSet: ${firewall_ipset} updated (as of: ${timestamp}).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
fi&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you should see the list loaded into memory when you do:&lt;br /&gt;
&lt;br /&gt;
{{cmd|ipset list}}&lt;br /&gt;
&lt;br /&gt;
We want to save it so our router can refer to it next time it starts up so for that:&lt;br /&gt;
&lt;br /&gt;
{{cmd|/etc/init.d/ipset save}}&lt;br /&gt;
&lt;br /&gt;
=== Adding our allowed networks ===&lt;br /&gt;
&lt;br /&gt;
==== IPv4 ====&lt;br /&gt;
{{cmd|ipset create allowed-nets-ipv4 hash:net,iface family inet}}&lt;br /&gt;
&lt;br /&gt;
Then you can add each of your allowed networks:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ipset add allowed-nets-ipv4 192.168.0.0/30,eth1&lt;br /&gt;
ipset add allowed-nets-ipv4 192.168.1.0/24,eth0&lt;br /&gt;
ipset add allowed-nets-ipv4 192.168.2.0/24,eth0&lt;br /&gt;
ipset add allowed-nets-ipv4 192.168.3.0/24,eth0&lt;br /&gt;
ipset add allowed-nets-ipv4 127.0.0.0/8,lo&lt;br /&gt;
ipset add allowed-nets-ipv4 172.16.32.0/20,tun0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== IPv6 ====&lt;br /&gt;
For IPv6 if you&#039;ve got any [https://en.wikipedia.org/wiki/Unique_local_address Unique local address] ranges you may choose to add them:&lt;br /&gt;
&lt;br /&gt;
{{cmd|ipset create allowed-nets-ipv6 hash:net,iface family inet6}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ipset add allowed-nets-ipv6 fde4:8dba:82e1::/48,tun0&lt;br /&gt;
ipset add allowed-nets-ipv6 fde4:8dba:82e1:ffff::/64,eth0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finally save the sets with this command so they can be loaded next boot:&lt;br /&gt;
&lt;br /&gt;
{{cmd|/etc/init.d/ipset save}}&lt;br /&gt;
&lt;br /&gt;
== Restricting our LAN subnet with iptables, and blocking the bogons ==&lt;br /&gt;
Finally we can apply our iptables rules, to filter both 192.168.3.0/24 and make sure that subnets like 192.168.5.0/24 are not forwarded or accessible by our router. You will need to review these rules, and remove the ones that do not apply to you.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to change your RADIUS rules if you moved your WiFi APs into the 192.168.3.0/24 subnet. You&#039;ll also need to edit /etc/raddb/clients.conf&lt;br /&gt;
&lt;br /&gt;
I used a new table here called &amp;quot;raw&amp;quot;. This table is more primitive than the filter table. It cannot have FORWARD rules or INPUT rules. Therefore you will still need a FORWARD rule in your filter table to block bogons originating from your LAN.&lt;br /&gt;
&lt;br /&gt;
The only kind of rules we may use here are PREROUTING and OUTPUT. The OUTPUT rules will only filter traffic originating from our router&#039;s local processes, such as if we ran the ping command to a bogon range on the router&#039;s command prompt.&lt;br /&gt;
&lt;br /&gt;
Traffic passes over the raw table, before connecting marking as indicated by this packet flow map: [http://inai.de/images/nf-packet-flow.png Netfilter packet flow graph] this means we don&#039;t have to strip the mark off the bogon range in the mangle table anymore.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#########################################################################&lt;br /&gt;
# Advanced routing rule set&lt;br /&gt;
# Uses 192.168.1.0 via ISP&lt;br /&gt;
#      192.168.2.0 via VPN&lt;br /&gt;
#      192.168.3.0 via LAN&lt;br /&gt;
#&lt;br /&gt;
# Packets to/from 192.168.1.0/24 are marked with 0x1 and routed to ISP&lt;br /&gt;
# Packets to/from 192.168.2.0/24 are marked with 0x2 and routed to VPN&lt;br /&gt;
# Packets to/from 192.168.3.0/24 are routed to LAN and not forwarded onto&lt;br /&gt;
#                                    the internet&lt;br /&gt;
#&lt;br /&gt;
#########################################################################&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Raw Table&lt;br /&gt;
# This table is the place where we drop all illegal packets from networks that&lt;br /&gt;
# do not exist&lt;br /&gt;
#&lt;br /&gt;
*raw&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a log drop chain&lt;br /&gt;
:LOG_DROP_BOGON - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create an output chain&lt;br /&gt;
:OUT_PPP0 - [0:0]&lt;br /&gt;
:OUT_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Allows traffic from VPN tunnel&lt;br /&gt;
-A PREROUTING -s 172.16.32.0/20 -i tun0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allows traffic to VPN tunnel&lt;br /&gt;
-A PREROUTING -d 172.16.32.0/20 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Block specified bogons coming in from ISP and VPN&lt;br /&gt;
# (unlikely to happen as they filter them on their router)&lt;br /&gt;
-A PREROUTING -i ppp0 -m set --match-set bogon-bn-nonagg src -j LOG_DROP_BOGON&lt;br /&gt;
-A PREROUTING -i tun0 -m set --match-set bogon-bn-nonagg src -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Allows my excepted ranges.&lt;br /&gt;
-A PREROUTING -m set --match-set allowed-nets-ipv4 src,src -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass output interface to corresponding chain&lt;br /&gt;
-A OUTPUT -o ppp0 -j OUT_PPP0&lt;br /&gt;
-A OUTPUT -o tun0 -j OUT_TUN0&lt;br /&gt;
&lt;br /&gt;
# Log drop chain&lt;br /&gt;
-A LOG_DROP_BOGON -j LOG --log-prefix &amp;quot;Dropped Bogon (ipv4) : &amp;quot; --log-level 6&lt;br /&gt;
-A LOG_DROP_BOGON -j DROP&lt;br /&gt;
&lt;br /&gt;
# Block packets originating from the router destined to bogon ranges&lt;br /&gt;
-A OUT_PPP0 -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Blocks packets originating from the router destined to bogon ranges&lt;br /&gt;
-A OUT_TUN0 -d 172.16.32.0/20 -j ACCEPT&lt;br /&gt;
-A OUT_TUN0 -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# NAT Table&lt;br /&gt;
# This is where translation of packets happens and &amp;quot;forwarding&amp;quot; of ports&lt;br /&gt;
# to specific hosts.&lt;br /&gt;
#&lt;br /&gt;
*nat&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Port forwarding for Bittorrent&lt;br /&gt;
-A PREROUTING -i tun0 -p tcp -m tcp --dport 6881:6889 -j DNAT --to-destination 192.168.2.20&lt;br /&gt;
-A PREROUTING -i tun0 -p udp -m udp --dport 6881:6889 -j DNAT --to-destination 192.168.2.20&lt;br /&gt;
&lt;br /&gt;
# Allows routing to our modem subnet so we can access the web interface&lt;br /&gt;
-A POSTROUTING -s 192.168.1.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
-A POSTROUTING -s 192.168.2.0/24 -d 192.168.0.1/32 -o eth1 -p tcp -m tcp --dport 80 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the VPN tunnel&lt;br /&gt;
-A POSTROUTING -o tun0 -j MASQUERADE&lt;br /&gt;
&lt;br /&gt;
# Allows hosts of the network to use the PPP tunnel&lt;br /&gt;
-A POSTROUTING -o ppp0 -j MASQUERADE&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Filter Table&lt;br /&gt;
# This is where we decide to ACCEPT, DROP or REJECT things&lt;br /&gt;
#&lt;br /&gt;
*filter&lt;br /&gt;
:INPUT DROP [0:0]&lt;br /&gt;
:FORWARD DROP [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for forwarding packets&lt;br /&gt;
:FWD_ETH0 - [0:0]&lt;br /&gt;
:FWD_ETH1 - [0:0]&lt;br /&gt;
:FWD_PPP0 - [0:0]&lt;br /&gt;
:FWD_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create rule chain per input interface for input packets (for host itself)&lt;br /&gt;
:IN_ETH0 - [0:0]&lt;br /&gt;
:IN_ETH1 - [0:0]&lt;br /&gt;
:IN_PPP0 - [0:0]&lt;br /&gt;
:IN_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a drop chain&lt;br /&gt;
:LOG_DROP - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a log drop chain&lt;br /&gt;
:LOG_DROP_BOGON - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create a reject chain&lt;br /&gt;
:LOG_REJECT_LANONLY - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Create an output chain&lt;br /&gt;
:OUT_PPP0 - [0:0]&lt;br /&gt;
:OUT_TUN0 - [0:0]&lt;br /&gt;
&lt;br /&gt;
# Pass input packet to corresponding rule chain&lt;br /&gt;
-A INPUT -i lo -j ACCEPT&lt;br /&gt;
-A INPUT -i eth0 -j IN_ETH0&lt;br /&gt;
-A INPUT -i eth1 -j IN_ETH1&lt;br /&gt;
-A INPUT -i ppp0 -j IN_PPP0&lt;br /&gt;
-A INPUT -i tun0 -j IN_TUN0&lt;br /&gt;
&lt;br /&gt;
# Track forwarded packets&lt;br /&gt;
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Pass forwarded packet to corresponding rule chain&lt;br /&gt;
-A FORWARD -i eth0 -j FWD_ETH0&lt;br /&gt;
-A FORWARD -i eth1 -j FWD_ETH1&lt;br /&gt;
-A FORWARD -i ppp0 -j FWD_PPP0&lt;br /&gt;
-A FORWARD -i tun0 -j FWD_TUN0&lt;br /&gt;
&lt;br /&gt;
# Pass output interface to corresponding chain&lt;br /&gt;
-A OUTPUT -o ppp0 -j OUT_PPP0&lt;br /&gt;
-A OUTPUT -o tun0 -j OUT_TUN0&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to Modem&lt;br /&gt;
-A FWD_ETH0 -d 192.168.0.1/32 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow routing to remote address on VPN&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -d 172.16.32.1/32 -o tun0 -j ACCEPT&lt;br /&gt;
-A FWD_ETH0 -s 192.168.2.0/24 -d 172.16.32.1/32 -o tun0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow forwarding from LAN hosts to LAN ONLY subnet&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -d 192.168.3.0/24 -j ACCEPT&lt;br /&gt;
-A FWD_ETH0 -s 192.168.2.0/24 -d 192.168.3.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow LAN ONLY subnet to contact other LAN hosts&lt;br /&gt;
-A FWD_ETH0 -s 192.168.3.0/24 -d 192.168.1.0/24 -j ACCEPT&lt;br /&gt;
-A FWD_ETH0 -s 192.168.3.0/24 -d 192.168.2.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Refuse to forward bogons to the internet!&lt;br /&gt;
-A FWD_ETH0 -m set --match-set bogon-bn-nonagg dst -j LOG_DROP_BOGON&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to ISP&lt;br /&gt;
-A FWD_ETH0 -s 192.168.1.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward traffic to VPN&lt;br /&gt;
-A FWD_ETH0 -s 192.168.2.0/24 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Prevent 192.168.3.0/24 from accessing internet&lt;br /&gt;
-A FWD_ETH0 -s 192.168.3.0/24 -j LOG_REJECT_LANONLY&lt;br /&gt;
&lt;br /&gt;
# Allow excepted server to be FORWARD to ppp0&lt;br /&gt;
#-A FWD_ETH0 -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -o ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward SSH packets from network to modem&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.1.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.2.0/24 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward HTTP packets from network to mode&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.1.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_ETH1 -s 192.168.0.1/32 -d 192.168.2.0/24 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Forward Bittorrent Port to workstation&lt;br /&gt;
-A FWD_TUN0 -d 192.168.2.20/32 -p tcp -m tcp --dport 6881:6889 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A FWD_TUN0 -d 192.168.2.20/32 -p udp -m udp --dport 6881:6889 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# DNS to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# FreeRadius Client (eg a UniFi AP)&lt;br /&gt;
-A IN_ETH0 -s 192.168.3.10/32 -p tcp -m tcp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.3.10/32 -p udp -m udp --dport 1812 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Ubiquiti UAP Device Discovery Broadcast&lt;br /&gt;
-A IN_ETH0 -s 192.168.3.10/32 -p udp -m udp --dport 10001 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# NTP to Router&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.3.0/24 -p udp -m udp --dport 123 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept traffic to router on both subnets&lt;br /&gt;
-A IN_ETH0 -s 192.168.1.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
-A IN_ETH0 -s 192.168.2.0/24 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Allow excepted server to be INPUT to eth0 from LAN&lt;br /&gt;
#-A IN_ETH0 -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -o ppp0 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# SSH To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# HTTP To Modem from Router&lt;br /&gt;
-A IN_ETH1 -s 192.168.0.1/32 -d 192.168.0.0/30 -p tcp -m tcp --sport 80 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked PPP0 connection&lt;br /&gt;
-A IN_PPP0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on PPP0&lt;br /&gt;
-A IN_PPP0 -j LOG --log-prefix &amp;quot;DROP:INPUT (ipv4) &amp;quot; --log-level 6&lt;br /&gt;
-A IN_PPP0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Accept incoming tracked TUN0 connection&lt;br /&gt;
-A IN_TUN0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Log dropped packets coming in on TUN0&lt;br /&gt;
-A IN_TUN0 -j LOG --log-prefix &amp;quot;DROP:INPUT (ipv4) &amp;quot; --log-level 6&lt;br /&gt;
-A IN_TUN0 -j LOG_DROP&lt;br /&gt;
&lt;br /&gt;
# Log dropped bogons that never got forwarded&lt;br /&gt;
-A LOG_DROP_BOGON -j LOG --log-prefix &amp;quot;Dropped Bogon forward (ipv4) &amp;quot; --log-level 6&lt;br /&gt;
-A LOG_DROP_BOGON -j DROP&lt;br /&gt;
&lt;br /&gt;
# Log rejected packets&lt;br /&gt;
-A LOG_REJECT_LANONLY -j LOG --log-prefix &amp;quot;Rejected packet from LAN only range : &amp;quot; --log-level 6&lt;br /&gt;
-A LOG_REJECT_LANONLY -j REJECT --reject-with icmp-port-unreachable&lt;br /&gt;
COMMIT&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Mangle Table&lt;br /&gt;
# This is the place where our markings happen, whether they be 0x1 or 0x2&lt;br /&gt;
#&lt;br /&gt;
*mangle&lt;br /&gt;
&lt;br /&gt;
# Set default policies for table&lt;br /&gt;
:PREROUTING ACCEPT [0:0]&lt;br /&gt;
:INPUT ACCEPT [0:0]&lt;br /&gt;
:FORWARD ACCEPT [0:0]&lt;br /&gt;
:OUTPUT ACCEPT [0:0]&lt;br /&gt;
:POSTROUTING ACCEPT [0:0]&lt;br /&gt;
&lt;br /&gt;
# Restore CONNMARK to the MARK (If one doesn&#039;t exist then no mark is set)&lt;br /&gt;
-A PREROUTING -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff&lt;br /&gt;
&lt;br /&gt;
# If packet MARK is 2, then it means there is already a connection mark and the&lt;br /&gt;
# original packet came in on VPN&lt;br /&gt;
-A PREROUTING -s 192.168.2.0/24 -m mark --mark 0x2 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Check exception (this is a server which when accessed on a 192.168.2.0/24 address will go out the ISP table) are 0x1&lt;br /&gt;
#-A PREROUTING -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -m mark --mark 0x1 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Mark packets coming from 192.168.2.0/24 are 0x2&lt;br /&gt;
-A PREROUTING -s 192.168.2.0/24 -j MARK --set-xmark 0x2/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# If packet MARK is 1, then it means there is already a connection mark and the&lt;br /&gt;
# original packet came in on ISP&lt;br /&gt;
-A PREROUTING -s 192.168.1.0/24 -m mark --mark 0x1 -j ACCEPT&lt;br /&gt;
&lt;br /&gt;
# Mark packets 192.168.1.0/24 are 0x1&lt;br /&gt;
-A PREROUTING -s 192.168.1.0/24 -j MARK --set-xmark 0x1/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Mark exception (this is a server which when accessed on a 192.168.2.0/24 address will go out the ISP table) as 0x1&lt;br /&gt;
#-A PREROUTING -s 192.168.2.0/24 -d &amp;lt;IP_OF_EXCEPTED_SERVER&amp;gt;/32 -j MARK --set-xmark 0x1/0xffffff&lt;br /&gt;
&lt;br /&gt;
# Strip mark if packet is destined for modem&lt;br /&gt;
-A PREROUTING -d 192.168.0.1/32 -j MARK --set-xmark 0x0/0xffffffff&lt;br /&gt;
&lt;br /&gt;
# Save MARK to CONNMARK (remember iproute can&#039;t see CONNMARKs)&lt;br /&gt;
-A PREROUTING -j CONNMARK --save-mark --nfmask 0xffffffff --ctmask 0xffffffff&lt;br /&gt;
COMMIT&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Other Tips =&lt;br /&gt;
&lt;br /&gt;
== Diagnosing firewall problems ==&lt;br /&gt;
&lt;br /&gt;
=== netcat, netcat6 ===&lt;br /&gt;
Netcat can be useful for testing if a port is open or closed or filtered.&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add netcat-openbsd}}&lt;br /&gt;
&lt;br /&gt;
After installing netcat we can use it like this:&lt;br /&gt;
&lt;br /&gt;
Say we wanted to test for IPv6, UDP, Port 547 we would do this on the router:&lt;br /&gt;
&lt;br /&gt;
{{cmd|nc -6 -u -l 547}}&lt;br /&gt;
&lt;br /&gt;
and then this on the client to connect to it:&lt;br /&gt;
&lt;br /&gt;
{{cmd|nc -u -v -6 2001:0db8:1234:0001::1 547}}&lt;br /&gt;
&lt;br /&gt;
=== tcpdump ===&lt;br /&gt;
&lt;br /&gt;
tcpdump can also be useful for dumping the contents of packets coming in on an interface:&lt;br /&gt;
&lt;br /&gt;
{{cmd|apk add tcpdump}}&lt;br /&gt;
&lt;br /&gt;
Then we can run it. This example captures all DNS traffic originating from 192.168.2.20.&lt;br /&gt;
&lt;br /&gt;
{{cmd|tcpdump -i eth0 udp and src 192.168.2.20 and port 53}}&lt;br /&gt;
&lt;br /&gt;
You can write the file out with the -w option, and view it in Wireshark locally on your computer. You can increase the verbosity with the -v option. Using -vv will be even more verbose. -vvv will show even more.&lt;br /&gt;
&lt;br /&gt;
== lbu cache ==&lt;br /&gt;
Configure lbu cache so that you don&#039;t need to download packages when you restart your router eg [[Local APK cache]]&lt;br /&gt;
&lt;br /&gt;
This is particularly important as some of the images do not contain ppp-pppoe. This might mean you&#039;re unable to get an internet connection to download the other packages on boot.&lt;br /&gt;
&lt;br /&gt;
== lbu encryption /etc/lbu/lbu.conf ==&lt;br /&gt;
In /etc/lbu/lbu.conf you might want to enable encryption to protect your VPN keys.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# what cipher to use with -e option&lt;br /&gt;
DEFAULT_CIPHER=aes-256-cbc&lt;br /&gt;
&lt;br /&gt;
# Uncomment the row below to encrypt config by default&lt;br /&gt;
ENCRYPTION=$DEFAULT_CIPHER&lt;br /&gt;
&lt;br /&gt;
# Uncomment below to avoid &amp;lt;media&amp;gt; option to &#039;lbu commit&#039;&lt;br /&gt;
# Can also be set to &#039;floppy&#039;&lt;br /&gt;
LBU_MEDIA=mmcblk0p1&lt;br /&gt;
&lt;br /&gt;
# Set the LBU_BACKUPDIR variable in case you prefer to save the apkovls&lt;br /&gt;
# in a normal directory instead of mounting an external media.&lt;br /&gt;
# LBU_BACKUPDIR=/root/config-backups&lt;br /&gt;
&lt;br /&gt;
# Uncomment below to let lbu make up to 3 backups&lt;br /&gt;
# BACKUP_LIMIT=3&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Remember to set a root password, by default Alpine Linux&#039;s root account is passwordless.&lt;br /&gt;
{{cmd|passwd root}}&lt;br /&gt;
&lt;br /&gt;
== Backup apkprov ==&lt;br /&gt;
It&#039;s a good idea to back up your apk provision file. You can pull it off your router to your local workstation with:&lt;br /&gt;
&lt;br /&gt;
{{cmd|scp -r root@192.168.2.1:/media/mmcblk0p1/&amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz.aes-256-cbc ./}}&lt;br /&gt;
&lt;br /&gt;
And decrypt it with:&lt;br /&gt;
{{cmd|openssl enc -d -aes-256-cbc -in &amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz.aes-256-cbc -out &amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz}}&lt;br /&gt;
&lt;br /&gt;
It can be encrypted with:&lt;br /&gt;
{{cmd|openssl aes-256-cbc -salt -in &amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz -out &amp;lt;YOUR HOST NAME&amp;gt;.apkovl.tar.gz.aes-256-cbc}}&lt;br /&gt;
&lt;br /&gt;
== Harden SSH ==&lt;br /&gt;
&lt;br /&gt;
=== Generate a SSH key ===&lt;br /&gt;
{{cmd|ssh-keygen -t rsa -b 4096}}&lt;br /&gt;
&lt;br /&gt;
You will want to put the contents of id_rsa.pub in /etc/ssh/authorized_keys&lt;br /&gt;
&lt;br /&gt;
You can put multiple public keys on multiple lines if more than one person has access to the router.&lt;br /&gt;
&lt;br /&gt;
=== /etc/ssh/sshd_config ===&lt;br /&gt;
A couple of good options to set in here can be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ListenAddress 192.168.1.1&lt;br /&gt;
ListenAddress 192.168.2.1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
While this isn&#039;t usually a good idea, a router doesn&#039;t need more than one user.&lt;br /&gt;
&amp;lt;pre&amp;gt;PermitRootLogin yes&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The most important options:&lt;br /&gt;
&amp;lt;pre&amp;gt;RSAAuthentication yes&lt;br /&gt;
PubkeyAuthentication yes&lt;br /&gt;
AuthorizedKeysFile  /etc/ssh/authorized_keys&lt;br /&gt;
PasswordAuthentication no&lt;br /&gt;
PermitEmptyPasswords no&lt;br /&gt;
AllowTcpForwarding no&lt;br /&gt;
X11Forwarding no&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== /etc/conf.d/sshd ===&lt;br /&gt;
You will want to add &amp;lt;pre&amp;gt;rc_need=&amp;quot;net&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This instructs OpenRC to make sure the network is up before starting ssh.&lt;br /&gt;
&lt;br /&gt;
Finally add sshd to the default run level&lt;br /&gt;
{{cmd|rc-update add sshd default}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Additionally you may want to look at [https://stribika.github.io/2015/01/04/secure-secure-shell.html Secure Secure Shell] and tighten OpenSSH&#039;s cryptography options.&lt;br /&gt;
&lt;br /&gt;
= References =&lt;br /&gt;
* https://wiki.gentoo.org/wiki/Home_Router&lt;br /&gt;
* https://help.ubuntu.com/community/ADSLPPPoE&lt;br /&gt;
* https://wiki.archlinux.org/index.php/Router&lt;br /&gt;
* https://wiki.gentoo.org/wiki/IPv6_router_guide&lt;br /&gt;
* [https://vk5tu.livejournal.com/37206.html IPv6 at home, under the hood with Debian Wheezy and Internode]&lt;br /&gt;
* [http://vk5tu.livejournal.com/43059.html Raspberry Pi random number generator]&lt;br /&gt;
* [https://www.raspberrypi.org/forums/viewtopic.php?f=56&amp;amp;t=60569 rng-tools post by ktb]&lt;/div&gt;</summary>
		<author><name>Dngray</name></author>
	</entry>
</feed>