Wireguard는 어떻게 centos의 특정 클라이언트가 로컬 네트워크에만 액세스하도록 허용합니까?

Wireguard는 어떻게 centos의 특정 클라이언트가 로컬 네트워크에만 액세스하도록 허용합니까?

Wireguard를 통해 연결되었을 때 인터넷에 액세스할 수 있는 클라이언트가 필요하고, 인터넷이 아닌 삼바에 액세스하기 위해 로컬 네트워크만 볼 수 있는 클라이언트도 필요합니다. Centos인터넷에서 가져온 표준 설정이 있습니다.

wg0.conf

[Interface]
Address = 10.8.0.1/24
PrivateKey = SERVER_PRIVATE_KEY
ListenPort = 35053

[Peer]
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.8.0.2/32

Wireguard에 연결된 클라이언트가 인터넷에 액세스할 수 있도록 다음을 수행합니다.

vim /etc/sysctl.conf 
net.ipv4.ip_forward = 1
sysctl -p


firewall-cmd --permanent --zone=public --add-port=35053/udp
firewall-cmd --permanent --zone=public --add-masquerade
firewall-cmd --reload

클라이언트에 추가했는데 모든 것이 잘 작동합니다. 서버에 연결하면 클라이언트에 인터넷이 있고 서버의 로컬 네트워크와 삼바에도 액세스할 수 있습니다.

client.conf

[Interface]
PrivateKey = CLIENT+PRIVATE_KEY
Address = 10.8.0.2/24
DNS = 1.1.1.1

[Peer]
PublicKey = SERVER_PUBLIC_KEY
AllowedIPs = 0.0.0.0/0
Endpoint = SERVER_IP:35053
PersistentKeepalive = 20

가장 무도회를 통해 로컬 네트워크와 삼바에는 액세스할 수 있지만 인터넷에는 액세스할 수 없도록 다른 클라이언트를 추가하려면 어떻게 해야 합니까?

wg2로컬 네트워크에서만 작동하는 또 다른 Wireguard 인터페이스를 추가해 보았습니다 . public zone이미 위장이 있고 에 적용되고 있기 때문에 작동하지 않습니다 wg2. 다른 외부 IP를 구입하면 작동할 수 있지만 다른 솔루션이 있을까요?

답변1

여기를 살펴보세요:https://unix.stackexchange.com/a/714015/537971

기본적으로 서버 측에서는 LAN CIDR을 AllowedIPs = 10.8.0.2/32다음 과 같이 추가해야 합니다 AllowedIPs = 10.8.0.2/32, 192.168.1.0/24.

로컬 네트워크에서만 작동하는 다른 wireguard 인터페이스 wg2를 추가해 보았습니다. 공용 영역에는 이미 위장이 적용되어 있고 wg2에 적용되고 있기 때문에 작동하지 않습니다.

두 번째 Wireguard 인스턴스는 다른 CIDR을 가져야 하며 10.9.0.0/24iptables와 같은 하나의 CIDR 및 인터페이스에 대해서만 매스커레이딩을 구성해야 합니다. iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j MASQUERADE또는 iptables -t nat -A POSTROUTING -i wg0 -o eth0 -j MASQUERADE 방화벽에서 이 ​​동작을 모방하거나 복잡한 요구 사항이 있는 설정에서 이를 제거해야 합니다.

관련 정보