Man kan opsætte en Linux server, så den fungerer både som server med en offentlig IP-adresse (IPv4 + IPv6)
og som router uden behov for en anden router.
Der spares derved strøm til routeren, hvis man ikke har behov for Wifi eller har et Wifi access point et andet sted.
Der tages her udgangspunkt i serviceudbyderen Kviknet, herefter kaldet ISPen.
Opsætningen er kun en af flere mulige, men er aftestet i et 24/7 produktionsmiljø.
Det er muligt at have en server på en ren IPv4 linje tilknyttet IPv6 netværket via en tunnel fx hos Tunnelbroker.
Dette er langsommere og giver bl.a. problemer for streaming, da Netflix m.fl. tester på, om IPv6 adressen er i Danmark eller et andet land.
Når man anvender en tunnel sker udgang til IPv6 nettet typisk i et andet land fx Holland eller Sverige.
Ved denne ISP kan man få tildelt danske IPv4 og IPv6 adresser.
Forudsætning: man har kendskab til Linux på kommandolinjeniveau og systemctl samt installation med dnf / apt
Hardware konfiguration
Konfiguration 1 (router + server):
WAN skal adskilles fra de interne enheder med et særskilt kabel ud af huset.
Nedenstående hardware er anvendt i testen af den beskrevne opsætning.
- server med to ethernet indgange eth0 (WAN) eth1 (LAN) og indbygget wifi wlan0 (WLAN)
- eth1 -> switch -> PCer, TV og wifi access point (da den indbyggede wifi er for svag)
- wlan0 -> webcam tæt ved, som sender advarsler og snapshots engang imellem.
Konfiguration 2 (server):
Linux server forbundet til ISP med IPv4 og IPv6 via eth0 (WAN)
Ved denne konfiguration tilrettes eventuelt firewall.sh
Operativsystem
Linux Fedora 38 (Redhat), Ubuntu/Mint m. fl.
IP-adresser
ISPen tilbyder via DHCP en offentlig dansk IP-adresse for hhv IPv4 og IPv6
samt et offentligt dansk /48 IPv6 prefix til anvendelse på det interne net.
I den beskrevne opsætning er disse IP-adresser anvendt.
- eth0:
- 185.x.y.z/32 offentlig, fra ISPen
- 2a06:4000:x::y/128 offentlig fra ISPen
- 2a06:4004:y::1/64 fra det tildelte prefix 2a06:4004:y::/48 fra ISPen
- 192.168.1.1/24 selvvalgt internt subnet på WAN forbindelsen
- eth1:
- 192.168.2.1/24 selvvalgt subnet til interne enheder
- 2a06:4004:y:1::1/64 delegeret fra det tildelte prefix 2a06:4004:y::/48 fra ISPen
- wlan0:
- 10.0.1.1/24 selvvalgt subnet til interne enheder på indbygget wifi, her et webcam
- 2a06:4004:y:2::1/64 delegeret fra det tildelte prefix 2a06:4004:y::/48 fra ISPen
- Et webcam i dette subnet har adressen 10.0.1.2 og kan nås udefra ved port forwarding (se firewall.sh).
Her er anvendt de traditionelle betegnelser for indgange (eth0, eth1, wlan0). Det kan opnås ved at anvende udev til omdøbning.
Se den medfølgende fil extra/70-persistent-net.rules, der tilrettet kan placeres i /etc/udev/rules.d.
Alternativt kan man beholde de nye navne og ændre fra ethx til "nytnavn" i konfigurationsfilerne.
Bemærk, at delegeringen af /48 prefixet kun er halvautomatisk,
da Router Advertisements udsendt af eth1 og wlan0
ikke automatisk kan anvende subprefix af /48 prefixet.
Ved ændring af delegeret prefix fra ISPen skal systemd-networkd 11-eth1.network og 12-wlan0.network derfor ændres.
Software
Der skal konfigures mindst 2 programmer: systemd-networkd og firewalld samt yderligere hostapd, hvis intern wifi anvendes.
De forskellige konfigurationsfiler skal tilpasses ens egen hardwarekonfiguration ved at tilføje/slette afsnit eller ændre IP/MAC-adresser.
Læs kommentarerne i de enkelte filer.
Her følger konfigurationsfiler til systemd-networkd, hostapd samt hjælpescripts til firewalld.
Alle filer er samlet og komprimeret med tar og gzip i filen linuxrouter_1.10.tgz,
der kan downloades og udpakkes til linuxrouter_1.10 (tar -xf linuxrouter_1.10.tgz)
- systemd-networkd Erstatning for Network Manager
Se beskrivelse fx i https://man.archlinux.org/man/systemd-networkd.8
Konfigurationsfiler: /etc/systemd/network/10-eth0.network, 11-eth1.network, 12-wlan0.network
samt /etc/systemd/system/systemd-networkd.service.d/10-debug.conf
Hvis man kun har eth0, så er det intet problem. systemd-networkd bruger kun de filer, der er hardware til ([Match] sektionen)
Name : systemd-networkd
Source : systemd-250.8-1.fc36.src.rpm
Summary : System daemon that manages network configurations
URL : https://www.freedesktop.org/wiki/Software/systemd
Description : systemd-networkd is a system service that manages networks. It detects and
: configures network devices as they appear, as well as creating virtual network
: devices.
Anvendes i stedet for Network Manager.
Check om installeret fx med systemctl status systemd-networkd
Den grafiske brugergrænseflade Gnome baserer sig på Network Manager,
men når systemet er sat op, så skal man sjældent ændre på det.
Det må så ske via en kommandolinje.
systemd-networkd kan starte en intern IPv4 DHCP server, men har ikke en tilsvarende IPv6 DHCP server.
Tildeling af IPv6 adresser sker ved, at den udsender Router Advertisements med det relevante prefix,
hvorefter de modtagne enheder genererer egne IPv6 adresser med dette prefix.
Efter at have konfigureret systemd-networkd skifter man til systemd-networkd med disse kommandoer
systemctl stop NetworkManager
systemctl disable NetworkManager
systemctl mask NetworkManager
systemctl unmask systemd-networkd
systemctl enable systemd-networkd
systemctl start systemd-networkd
journalctl -xeu systemd-networkd
# hvis man vil bruge egne statiske DNSer i /etc/resolv.conf (se 10-eth0.network)
systemctl stop systemd-resolved
systemctl disable systemd-resolved
-
firewalld (konfiguration af IPv4 NAT og IPv6 adgang)
Konfigurationsfiler er i /etc/firewalld, men rediger altid disse med firewall-cmd
Name : firewalld
Source : firewalld-1.0.5-2.fc36.src.rpm
Summary : A firewall daemon with D-Bus interface providing a dynamic firewall
URL : http://www.firewalld.org
Description : firewalld is a firewall service daemon that provides a dynamic customizable
: firewall with a D-Bus interface.
Konfigurationsscript: firewall.sh
firewall.sh køres for at opsætte IPv4 NAT (masquerade) og tillade adgang til porte fx 80,
hvis man kører en webserver på maskinen.
Læs kommentarer i filen. Der tilrettes ved udeladt eth1 og wlan0.
Hvis man vil spærre for uønskede IP-adresser og genspærre dem igen ved boot,
så kig på ip_drop.sh, onboot.service og onboot.sh i extra
ip_drop.sh bruges til at spærre for uønsket trafik udefra ved at droppe pakker fra angivne adresser/net.
onboot.service og onboot.sh bruges til kommandoer ved boot og shutdown
-
hostapd (Validering af password på WIFI)
Name : hostapd
Source : hostapd-2.10-3.fc36.src.rpm
Summary : IEEE 802.11 AP, IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator
URL : http://w1.fi/hostapd
Description : hostapd is a user space daemon for access point and authentication servers. It
: implements IEEE 802.11 access point management, IEEE 802.1X/WPA/WPA2/EAP
: Authenticators and RADIUS authentication server.
:
: hostapd is designed to be a "daemon" program that runs in the back-ground and
: acts as the backend component controlling authentication. hostapd supports
: separate frontend programs and an example text-based frontend, hostapd_cli, is
: included with hostapd.
Konfigurationsfil: /etc/hostapd/hostapd.conf og /etc/sysconfig/hostapd
Ofte brugt software
Nedenstående programmer anvendes normalt i en router,
men de er indbygget i systemd-networkd
og skal derfor ikke benyttes, med mindre man har specielle krav.
dhcpd6 er erstattet af de noget simplere Router Advertisements i systemd-networkd.
I folderen extra findes eksempler på konfigurationsfiler til disse programmer. Bruges på eget ansvar.
-
dhcpd (allokering af IPv4 addresser til interne enheder)
Konfigurationsfil: /etc/dhcp/dhcpd.conf
Name : dhcp-server
Source : dhcp-4.4.3-2.fc36.src.rpm
Summary : Provides the ISC DHCP server
URL : https://www.isc.org/dhcp/
Description : DHCP (Dynamic Host Configuration Protocol) is a protocol which allows
: individual devices on an IP network to get their own network
: configuration information (IP address, subnetmask, broadcast address,
: etc.) from a DHCP server. The overall purpose of DHCP is to make it
: easier to administer a large network.
ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid
-
dhcp6d (allokering af IPv6 addresser til interne enheder)
Samme som dhcp-server
Konfigurationsfil: /etc/dhcp/dhcpd6.conf
ExecStart=/usr/sbin/dhcpd -f -6 -cf /etc/dhcp/dhcpd6.conf -user dhcpd -group dhcpd --no-pid
- radv (udsendelse af IPv6 Router Advertisements)
Konfigurationsfil: /etc/radvd.conf
Name : radvd
Source : radvd-2.19-5.fc36.src.rpm
Summary : A Router Advertisement daemon
URL : http://www.litech.org/radvd/
Description : radvd is the router advertisement daemon for IPv6. It listens to router
: solicitations and sends router advertisements as described in "Neighbor
: Discovery for IP Version 6 (IPv6)" (RFC 2461). With these advertisements
: hosts can automatically configure their addresses and some other
: parameters. They also can choose a default router based on these
: advertisements.
:
: Install radvd if you are setting up IPv6 network and/or Mobile IPv6
: services.
|