使用 systemd-networkd *.network 檔案設定無線路由器

使用 systemd-networkd *.network 檔案設定無線路由器

我想將嵌入式設備配置為無線路由器,並且我希望最好使用網路設定檔來實現它。

我有兩個 *.network 檔案、一個有線 WAN 介面和一個無線 LAN 接口,並且我希望 LAN 流量能夠存取 WAN。

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

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

與無線路由器一樣,無線 LAN 網路也提供 DHCP。我使用了 systemd 整合的 DHCP 伺服器。

# 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]

我認為兩個網路之間應該有 NAT,這對於無線路由器來說很常見,但這不是明確的要求。

就我目前所知,有線介面正確連接到WAN,無線存取點也提供DHCP位址。但如果我連接到 WiFi AP,我無法存取 WAN(網際網路)。

以下是一些網路介面狀態:

# 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

以及路線狀態:

# 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

我找不到很多關於[Route]部分的例子,我對路由只有基本的了解。

問候, 伊茲托克·杰拉斯

答案1

我發現上面的 .network 檔案缺少偽裝。以下修復:

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

看來我的 systemd 版本是在沒有 iptables 支援的情況下建置的。使用選項再次建立它'libiptc'修復了這個問題。我需要添加

IPForward=yes
IPMasquerade=yes

也到 wireless.network 檔案。

答案2

考慮RHEL 5 & 6153.xx是你的System IP

臨時添加路線

ip route add 192.168.10.0/24 via 153.254.92.42 dev eth0

永久路由新增

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

為了RHEL 7

臨時添加路線

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

永久路由新增

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

答案3

問題不在於路由配置,而是缺少 iptables 配置。

相關內容