Pjodd är ur funktion. Tyvärr underhålls nätverket inte längre. Det går varken att koppla upp mot, eller bygga vidare på.
Denna template utgår från https://www.freemesh.ie/wiki/index.php?title=Generic_Freemesh_Gateway
Also one little side note: This guide has IPv6 NAT configuration in it. I strongly recommend against it. With the use of Mullvad or AirVPN tunnels, it’s the only way IPv6 connectivity can be made, so it was used in this case. It will break stuff the same way as IPv4 NAT breaks stuff and shouldn’t be needed, as IPv6 is available in vast amounts. Also, IPv6 NAT requires kernel 3.9 as a minimum specification.
hostname gateway-0x
echo "127.0.1.1 gateway-0x.mesh.pjodd.se gateway-0x" >>/etc/hosts
echo gateway-0x > /etc/hostname
apt-get install screen htop iftop traceroute mtr-tiny mc speedtest-cli openvpn bash-completion nano joe ca-certificates haveged bridge-utils ntp unbound isc-dhcp-server radvd iptables-persistent apt-transport-https joe postfix pdns-server bridge-utils sudo git apt-transport-https`
Välj local only
för Postfix.
Lägg till jessie-backports till din
/etc/apt/sources.list
:
echo "deb http://ftp.debian.org/debian jessie-backports main" >> /etc/apt/sources.list
apt-get update
apt-get install batctl fastd
# om nyckeln är gammal använd: apt-get -y --force-yes
Lägg till batman-adv som kärnmodul:
echo "batman-adv" >> /etc/modules
modprobe batman-adv
Klona våra fastd-peers:
cd /etc/fastd/vpn
git clone https://github.com/pjodd/gluon-gateway-peers.git peers
Generera en uppsättning fastd-nycklar för gatewayen:
fastd --generate-key > /root/fastd-keys.pub.sec
Spara en backup av /root/fastd-keys.pub.sec
på ett
säkert ställe. Dessa kommer användas för både server- och
klientbyggen.
Skapa en fastd-konfiguration och starta om fastd:
nano /etc/fastd/vpn/fastd.conf
log to syslog level debug;
bind any:10006 interface "eth0"; # Ditt nätverksinterface ut mot internet
method "salsa2012+umac";
mtu 1560;
secret "xxx"; # Din secret-nyckel i /root/fastd-keys.pub.sec
include peers from "peers";
on verify "true"; # Tillåter vem som helst att ansluta till gatewayen
on up "
/sbin/ifup bat0
/bin/ip link set dev tap0 address 00:91:0d:d0:5e:0${GATEWAY_NUMBER}
/bin/ip link set dev tap0 up
";
service fastd restart
Slå på IP-forwarding i /etc/sysctl.conf
:
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
# Uncomment the next line to enable packet forwarding for IPv6
# Enabling this option disables Stateless Address Autoconfiguration
# based on Router Advertisements for this host
net.ipv6.conf.all.forwarding=1
Ladda om systctl.conf:
sysctrl -p
Redigera /etc/network/interfaces
:
# The loopback network interface
auto lo
iface lo inet loopback
# Batman
auto br-pjodd
allow-hotplug bat0
# The primary network interface
auto eth0
iface eth0 inet static/dhcp
# låt vara som den är
iface eth0 inet6 static/dhcp
# låt vara som den är
# Batman
up /sbin/brctl addbr br-pjodd
iface br-pjodd inet static
address 10.46.0.${GATEWAY-NUMBER}
netmask 255.255.0.0
bridge-ports none
iface br-pjodd inet6 static
address fdec:910d:d05e::ff0${GATEWAY_NUMBER}
netmask 64
# batman interface
iface bat0 inet6 manual
pre-up /usr/sbin/batctl if add tap0
up /bin/ip link set dev bat0 up
post-up /sbin/brctl addif br-pjodd bat0
post-up /usr/sbin/batctl it 10006
post-up /usr/sbin/batctl gw_mode server
post-up /sbin/ip rule add from all fwmark 0x1 table 42
post-up /sbin/ip -6 rule add from all fwmark 0x1 table 42
pre-down /sbin/brctl delif br-pjodd bat0 || true
down /bin/ip link set dev bat0 down
# this is for adding the gateway to the map later, not necessarily necessary.
# post-up start-stop-daemon -b --start --exec /usr/local/sbin/alfred -- -i br-pjodd -b bat0 -m
# post-up start-stop-daemon -b --start --exec /usr/local/sbin/batadv-vis -- -i bat0 -s
source /etc/network/interfaces.d/*
Starta om nätverket
service networking restart
Sätt ny IP4 och IPv6 till bryggan:
ifconfig br-pjodd 10.46.0.${GATEWAY_NUMBER}
ip a a fdec:910d:d05e::ff0${GATEWAY_NUMBER}/64 dev br-pjodd
Redigera /etc/radvd.conf
interface br-pjodd {
AdvSendAdvert on;
#
# Please uncomment if you don't want an IPv6 default route to be broadcasted.
#
# AdvDefaultLifetime 0;
IgnoreIfMissing on;
AdvManagedFlag off;
AdvOtherConfigFlag on;
MaxRtrAdvInterval 200;
prefix fdec:910d:d05e::/64 {
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr on;
AdvPreferredLifetime 14400;
AdvValidLifetime 86400;
};
RDNSS fdec:910d:d05e::ff0${GATEWAY_NUMBER} {
};
route fc00::/7
{
AdvRouteLifetime 1200;
};
};
Starta om radvd
service radvd restart
Se sidan Gateways för information om vilka adressrymder olika gateways ansvarar för.
isc-dhcp-server kan inte hantera IPv4 och IPv6 samtidigt, så du måste skapa två instanser.
Redigera /etc/dhcp/dhcpd.conf
för IPv4
ddns-update-style none;
option domain-name ".pjodd";
option domain-name-servers 10.46.0.${GATEWAY_NUMBER}
default-lease-time 300;
max-lease-time 3600;
log-facility local7;
subnet 10.46.0.0 netmask 255.255.0.0
{
authorative;
range 10.46.${ADDRESS_SPACE_FROM}.1 10.46.${ADDRESS_SPACE_TO}.254;
option routers 10.46.0.${GATEWAY_NUMBER};
}
include "/etc/dhcp/static.conf";`
Skapa en tom static.conf-fil. I denna kan du senare lägga till IP för klienter om du vill.
touch /etc/dhcp/static.conf
Redigera /etc/dhcp/dhcpd6.conf
för IPv6:
log-facility local7;
subnet6 fdec:910d:d05e:000${GATEWAY_NUMBER}::/64 {
option dhcp6.name-servers fdec:910d:d05e::ff0${GATEWAY_NUMBER}
option dhcp6.domain-search "pjodd";
}
Redigera /etc/default/isc-dhcp-server
:
nano /etc/default/isc-dhcp-server
# Additional options to start dhcpd with.
# Don't use options -cf or -pf here; use DHCPD_CONF/ DHCPD_PID instead
OPTIONS="-4"
# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
# Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES="br-pjodd"
Skapa /etc/default/isc-dhcp6-server
:
nano /etc/default/isc-dhcp6-server
# Path to dhcpd's config file (default: /etc/dhcp/dhcpd.conf).
DHCPD_CONF=/etc/dhcp/dhcpd6.conf
# Path to dhcpd's PID file (default: /var/run/dhcpd.pid).
DHCPD_PID=/var/run/dhcpd6.pid
# Additional options to start dhcpd with.
# Don't use options -cf or -pf here; use DHCPD_CONF/ DHCPD_PID instead
OPTIONS="-6"
# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
# Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES="br-pjodd"
Exekvera sedan:
touch /var/lib/dhcp/dhcpd6.leases
cp /etc/init.d/isc-dhcp-server /etc/init.d/isc-dhcp6-server
Redigera /etc/init.d/isc-dhcp6-server
på följande
platser:
Ersätt
# Provides: isc-dhcp-server
med
# Provides: isc-dhcp6-server
Ersätt
DHCPD_DEFAULT="${DHCPD_DEFAULT:-/etc/default/isc-dhcp-server}"
med
DHCPD_DEFAULT="${DHCPD_DEFAULT:-/etc/default/isc-dhcp6-server}"
Autostarta DHCPd för IPv6:
update-rc.d isc-dhcp6-server defaults
Starta om all DHCPd:
service isc-dhcp-server restart
service isc-dhcp6-server restart
For DNS, my personal preference is on powerdns, but you can use
whatever dns you’d like to use. Edit the following sections of the
configuration in /etc/powerdns/pdns.conf
#################################
# allow-recursion List of subnets that are allowed to recurse
#
allow-recursion=127.0.0.0/8,10.129.0.0/16,::1/128,fe80::/10,fddf:bf7:10::/48
#################################
# local-address Local IP addresses to which we bind
#
local-address=10.46.0.${GATEWAY_NUMBER}
#################################
# local-ipv6 Local IP address to which we bind
#
local-ipv6=fdec:910d:d05e::ff0${GATEWAY_NUMBER}
#################################
# recursor If recursion is desired, IP address of a recursing nameserver
#
recursor=8.8.8.8 # using Google DNS as recursor, as the local one can be buggy
Ta hem Pjodds DNS-zon:
cd /etc/powerdns
git clone https://github.com/pjodd/dns_pjodd
Redigera /etc/powerdns/bindbackend.conf
och lägg
till:
include "/etc/powerdns/dns_pjodd/named.conf.local";
Starta om powerdns:
service pdns restart
Du vill troligen inte släppa ut trafiken från ditt eget nät, utan i stället använda ett VPN av något slag. Alla Pjodds egna gateways använder sig av Mullvad, som dessutom gett oss tillstånd att använda deras tjänst för detta ändamål
Om du inte vill använda VPN för utgående trafik behöver du bara lägga
till följande i /etc/network/interfaces
i din
eth0-sektion:
up /sbin/iptables -t nat -A POSTROUTING -s 10.46.0.0/16 ! -d 10.46.0.0/16 -j SNAT -o eth0 --to-source ${DITT_PUBLIKA_IP}
up /sbin/ip6tables -t nat -A POSTROUTING -o eth0 -s fdec:910d:d05e/64 -j MASQUERADE
Placera detta direkt efter
up /sbin/brctl addbr br-pjodd
Skapa /root/bin
mkdir /root/bin
Skapa ett brandväggsskript för att tunnla ut trafiken:
nano /root/bin/iptables_pjodd.sh
#!/bin/sh
/sbin/ip route add default via ${DITT_PUBLIKA_IP} table 42
/sbin/ip route add 10.46.0.0/16 dev br-pjodd src 10.46.0.${GATEWAY_NUMBER} table 42
/sbin/ip route add fdec:910d:d05e::/64 dev br-pjodd table 42
/sbin/ip route add 0/1 dev tun0 table 42
/sbin/ip route add 128/1 dev tun0 table 42
/sbin/ip route del default via ${DITT_PUBLIKA_IP} table 42
/sbin/ip -6 route add default dev tun0 table 42
/sbin/iptables -t nat -I POSTROUTING -s 0/0 -d 0/0 -j MASQUERADE
/sbin/iptables -t nat -D POSTROUTING -s 0/0 -d 0/0 -o tun0 -j MASQUERADE
/sbin/iptables -t mangle -I PREROUTING -s 10.46.0.0/16 -j MARK --set-mark 0x1
/sbin/iptables -t mangle -I OUTPUT -s 10.46.0.0/16 -j MARK --set-mark 0x1
/sbin/ip6tables -t nat -A POSTROUTING -o tun0 -s fdec:910d:d05e::ff0${GATEWAY_NUMBER} -j MASQUERADE
/sbin/ip6tables -t mangle -I PREROUTING -s fdec:910d:d05e::ff0${GATEWAY_NUMBER} -j MARK --set-mark 0x1
/sbin/ip6tables -t mangle -I OUTPUT -s fdec:910d:d05e::ff0${GATEWAY_NUMBER}/64 -j MARK --set-mark 0x1
Gör skriptet exekverbart.
chmod +x /root/bin/iptables_pjodd.sh
Skapa ett skript som exekveras efter det att VPNet har startat och gör det exekverbart:
nano /root/bin/mullvad_up.sh'
#!/bin/sh
ip route replace 0.0.0.0/1 via $5 table 42
ip route replace 128.0.0.0/1 via $5 table 42
chmod +x /root/bin/mullvad_up.sh
service ssh restart
exit 0
Skapa ett skript som exekveras efter det att VPNet har startat och gör det exekverbart:
nano /root/bin/mullvad_up.sh'
#!/bin/sh
ip route replace 0.0.0.0/1 via $5 table 42
ip route replace 128.0.0.0/1 via $5 table 42
chmod 700 /root/bin/mullvad_up.sh
service ssh restart
exit 0
Surfa till Mullvad och tanka hem en konfigurationsfil för OpenVPN:
https://www.mullvad.net/download/config/
Spara den som /etc/openvpn/Mullvad_whatnot.conf
annars
startas den inte automatiskt.
Redigera filen, lägg till följande precis före
<ca>
-sektionen:
# custom
route-noexec
up /root/bin/mullvad_up.sh
up /root/bin/iptables_pjodd.sh
Kommentera ut:
# Needed to make OpenVPN work on iOS9`
# redirect-gateway ipv6
Boota om och allt skall fungera.
Glöm inte att släppa in fastd på port 10006 i din firewall om något sitter före gatewayen. Både UDP och TCP:
# gateway-02.mesh.pjodd.se, fastd tunnel port 10006, UDP and TCP
iptables -t nat -I PREROUTING -p tcp -i $EXTIF --dport 10006 -j DNAT --to 10.40.4.2:10006
iptables -A FORWARD -p tcp -d 10.40.4.2 --dport 10006 -m state --state NEW -j ACCEPT
iptables -t nat -I PREROUTING -p udp -i $EXTIF --dport 10006 -j DNAT --to 10.40.4.2:10006
iptables -A FORWARD -p udp -d 10.40.4.2 --dport 10006 -m state --state NEW -j ACCEPT