Richten Sie einen WLAN-Router mit systemd-networkd *.network-Dateien ein

Richten Sie einen WLAN-Router mit systemd-networkd *.network-Dateien ein

Ich möchte ein eingebettetes Gerät so konfigurieren, dass es sich wie ein WLAN-Router verhält, und das möchte ich vorzugsweise mithilfe von Networkd-Konfigurationsdateien erreichen.

Ich habe zwei *.network-Dateien, eine kabelgebundene WAN-Schnittstelle und eine drahtlose LAN-Schnittstelle, und ich möchte, dass der LAN-Verkehr auf das WAN zugreifen kann.

# cat /etc/systemd/network/wired.network 
[Match]
Name=eth0

[Network]
DHCP=ipv4
IPForward=yes
IPMasquerade=yes

Wie bei WLAN-Routern üblich, stellt auch das WLAN-Netzwerk DHCP zur Verfügung. Ich habe den in systemd integrierten DHCP-Server verwendet.

# cat /etc/systemd/network/wireless.network
[Match]
Name=wlan0*

[Network]
Description = Wireless IP interface
DHCPServer= yes

[Address]
Address   = 192.168.128.1/24
Broadcast = 192.168.128.255

[DHCPServer]
PoolOffset          = 10
PoolSize            = 40
EmitDNS             = yes
DNS                 = 8.8.8.8, 8.8.4.4
DefaultLeaseTimeSec = 600
MaxLeaseTimeSec     = 7200

[Route]

Ich gehe davon aus, dass zwischen den beiden Netzwerken ein NAT vorhanden sein sollte, wie es bei WLAN-Routern üblich ist, aber es ist keine ausdrückliche Anforderung.

Soweit bin ich nach meinem derzeitigen Kenntnisstand gekommen. Die kabelgebundene Schnittstelle stellt eine ordnungsgemäße Verbindung zum WAN her und der WLAN-Zugangspunkt stellt auch DHCP-Adressen bereit. Aber ich kann nicht auf das WAN (Internet) zugreifen, wenn ich mich mit dem WLAN-Zugangspunkt verbinde.

Hier sind einige Statusinformationen zu den Netzwerkschnittstellen:

# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:26:32:f0:03:21 brd ff:ff:ff:ff:ff:ff
    inet 192.168.178.107/24 brd 192.168.178.255 scope global dynamic eth0
       valid_lft 4650sec preferred_lft 4650sec
    inet6 fe80::226:32ff:fef0:321/64 scope link
       valid_lft forever preferred_lft forever
3: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default
    link/sit 0.0.0.0 brd 0.0.0.0
4: wlan0wext: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:1d:43:40:0d:04 brd ff:ff:ff:ff:ff:ff
    inet 192.168.128.1/24 brd 192.168.128.255 scope global wlan0wext
       valid_lft forever preferred_lft forever
    inet6 fe80::21d:43ff:fe40:d04/64 scope link
       valid_lft forever preferred_lft forever

Und Routenstatus:

# ip route
default via 192.168.178.1 dev eth0  proto dhcp  src 192.168.178.107  metric 1024
192.168.128.0/24 dev wlan0wext  proto kernel  scope link  src 192.168.128.1
192.168.178.0/24 dev eth0  proto kernel  scope link  src 192.168.178.107
192.168.178.1 dev eth0  proto dhcp  scope link  src 192.168.178.107  metric 1024

# ip route show table local
broadcast 127.0.0.0 dev lo  proto kernel  scope link  src 127.0.0.1
local 127.0.0.0/8 dev lo  proto kernel  scope host  src 127.0.0.1
local 127.0.0.1 dev lo  proto kernel  scope host  src 127.0.0.1
broadcast 127.255.255.255 dev lo  proto kernel  scope link  src 127.0.0.1
broadcast 192.168.128.0 dev wlan0wext  proto kernel  scope link  src 192.168.128.1
local 192.168.128.1 dev wlan0wext  proto kernel  scope host  src 192.168.128.1
broadcast 192.168.128.255 dev wlan0wext  proto kernel  scope link  src 192.168.128.1
broadcast 192.168.178.0 dev eth0  proto kernel  scope link  src 192.168.178.107
local 192.168.178.107 dev eth0  proto kernel  scope host  src 192.168.178.107
broadcast 192.168.178.255 dev eth0  proto kernel  scope link  src 192.168.178.107

Ich konnte nicht viele Beispiele für den Abschnitt [Route] finden und ich verfüge nur über grundlegende Kenntnisse zum Routing.

Grüße, Iztok Jeras

Antwort1

Ich habe festgestellt, dass bei den oben genannten .network-Dateien die Masquerading-Funktion fehlt. Folgendes behebt das Problem:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Es schien, dass meine Version von systemd ohne iptables-Unterstützung erstellt wurde. Das erneute Erstellen mit Option 'libiptc'behebt das Problem. Ich musste hinzufügen

IPForward=yes
IPMasquerade=yes

auch zur Datei wireless.network.

Antwort2

Denn RHEL 5 & 6die Überlegung 153.xxist IhrSystem IP

Temporäre Route hinzufügen

ip route add 192.168.10.0/24 via 153.254.92.42 dev eth0

Permanente Route Hinzufügen

echo "192.168.10.0/24 via 153.254.92.XX" >> /etc/sysconfig/network-scripts/route-eth1

FürRHEL 7

Temporäre Route hinzufügen

ip route add 192.168.20.0/29 via 153.254.92.XX dev enp00s0f0

Permanente Route Hinzufügen

echo "192.168.10.0/24 via 153.254.92.XX" >> /etc/sysconfig/network-scripts/ifcfg-enp00s0f0

Antwort3

Das Problem lag nicht an der Routenkonfiguration, sondern an einer fehlenden Iptables-Konfiguration.

verwandte Informationen