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

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

무선 라우터처럼 작동하도록 내장된 장치를 구성하고 싶고, 네트워크 구성 파일을 사용하여 이를 구현하고 싶습니다.

유선 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 Jeras

답변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.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 구성이 누락된 것입니다.

관련 정보