systemd-networkd *.network 파일을 사용하여 무선 라우터 설정

systemd-networkd *.network 파일을 사용하여 무선 라우터 설정

내장형 장치를 무선 라우터로 구성하고 네트워크 구성 파일을 사용하여 이를 달성하고 싶습니다.

유선 WAN 인터페이스와 무선 LAN 인터페이스라는 두 개의 *.network 파일이 있고 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] 섹션에 대한 예제를 많이 찾지 못했고 라우팅에 대한 기본적인 이해만 했습니다.

감사합니다, Iztok Geras

답변1

위의 .network 파일에 위장이 누락된 것을 발견했습니다. 다음 수정 사항:

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

내 systemd 버전은 iptables 지원 없이 구축된 것 같습니다. 옵션을 사용하여 다시 빌드하면 'libiptc'문제가 해결되었습니다. 추가해야 해요

IPForward=yes
IPMasquerade=yes

또한 wireless.network 파일로 이동하십시오.

답변2

그것은 당신의 것으로 간주 RHEL 5 & 6됩니다153.xxSystem 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 구성이 누락된 것입니다.

관련 정보