Wireguard가 설치되어 있고 로컬 리소스에 액세스하는 것은 잘 작동하지만 교통 위장을 시작할 수 없고 인터넷 액세스를 열 수 없습니다. Red Hat의 지침에는 Wireguard를 통해 연결된 클라이언트의 인터넷 액세스를 켜는 방법에 대한 단계별 설명이 포함되어 있지 않으며 이전 방식으로 설정하면 이전 버전에서는 작동하지 않습니다. SELINUX=disabled
누군가 이 문제를 해결하는 방법을 이해하고 있을까요?
서버의 wg0.conf
[Interface]
Address = 10.10.0.1/24
ListenPort = 51820
PrivateKey = ACvFwT2hwYQJi4oI1f1cMgJyH8fFtmQ3j4QV1sjqcm0=
[Peer]
PublicKey = RvQSExSi6KUzxqFXjfCWNkH1uLRw96OMF/F/OY74Qys=
AllowedIPs = 10.10.0.2
Wireguard를 실행하고 포트를 엽니다.
systemctl enable --now wg-quick@wg0
firewall-cmd --permanent --zone=public --add-port=51820/udp
firewall-cmd --permanent --change-zone=wg0 --zone=work
firewall-cmd --permanent --zone=public --add-masquerade
firewall-cmd --reload
클라이언트 구성
[Interface]
PrivateKey = iMkLdAEgXm4SQebjhcd/h7qE4Gu0glm25Uug6BjIrnc=
Address = 10.10.0.2/24
DNS = 1.1.1.1
[Peer]
PublicKey = 0Uryjm4u1VdJ4ggVabPx+YyiMJG5xnBdvGlbE1ZvqHc=
AllowedIPs = 0.0.0.0/1, 128.0.0.0/1
Endpoint = serverIp:51820
PersistentKeepalive = 20
이전 버전 Rocky 8에서는 Wireguard에 연결했을 때 인터넷 액세스가 제대로 작동하도록 하는 데 충분했습니다.
sudo vi /etc/sysctl.conf
net.ipv4.ip_forward=1
firewall-cmd --permanent --zone=public --add-masquerade
upd: 구성 bash 스크립트를 생성하고 실행합니다.
vi shell.sh
chmod +x shell.sh
./shell.sh
스크립트 내용
#!/bin/bash
yes | yum install -y epel-release 2>&1;
yes | yum update -y 2>&1;
yes | yum install wireguard-tools -y 2>&1;
#wireguard
$(wg genkey | tee /etc/wireguard/$HOSTNAME.private.key | wg pubkey > /etc/wireguard/$HOSTNAME.public.key)
privateKey=$(<"/etc/wireguard/$HOSTNAME.private.key")
cat > /etc/wireguard/wg0.conf <<EOF
[Interface]
Address = 10.10.0.1/24
ListenPort = 51820
PrivateKey = $privateKey
[Peer]
PublicKey = PEER-PUBLIC-KEY_HERE
AllowedIPs = 10.10.0.2
EOF
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
firewall-cmd --permanent --zone=public --add-port=51820/udp
firewall-cmd --permanent --zone=public--add-masquerade
firewall-cmd --reload
systemctl enable --now wg-quick@wg0
/etc/wireguard/wg0.conf
* 사용자 키를 제자리에 다시 정의한 PEER-PUBLIC-KEY_HERE
다음 실행 해야 하므로 서비스가 시작되지 않습니다.systemctl enable --now wg-quick@wg0
산출
iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
iptables -t nat -S
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
답변1
첫째, 키를 스택에 붙여넣어서는 안 됩니다. 이를 유사한 것으로 교체 REDACTED
하고 보안을 위해 새 키 쌍을 생성해야 합니다.
AllowedIPs
클라이언트에서 피어 구성 블록이 있는 서버로 0.0.0.0/1
변경하고 다시 시도해 보세요.0.0.0.0/0
10.10.0.2/32
작동하지 않으면 인터페이스를 수동으로 설정하여 wg-quick 없이 서버측의 모든 것을 사용해 보십시오. wg-quick은 몇 가지 이상한 작업을 수행할 수 있으므로 시도해 볼 가치가 있습니다.
그것이 무엇을 하는지 잘 모르겠습니다.
firewall-cmd --permanent --change-zone=wg0 --zone=work
하지만 eth0과 wg0 사이의 Firewalld에서 IP 전달이 활성화되어 있는지 확인하십시오. 이 또한 차단될 수 있습니다.
나는 개인적으로 iptables/nftables 래퍼를 좋아하지 않으며 그것이 하는 모든 것을 이해하지는 못하지만 해당 규칙의 영역은 다른 영역과 다른 것 같아서 잘못된 방화벽 구성으로 인해 차단될 수 있습니다. 특히 기본 전달이 다음과 같은 경우에는 더욱 그렇습니다. 전략 사례 거부를 설정합니다.
답변2
Rocky 8을 9로 업그레이드한 후에도 같은 문제가 발생했습니다. 내 설정에서는 활동 영역에 대한 전달이 활성화되지 않았습니다. 내 로케일이 다르기 때문에 영역 이름을 귀하의 이름으로 변경했으며 귀하의 사이트에서도 작동하기를 바랍니다.
활동 영역 나열:
firewall-cmd --get-active-zones
internal
interfaces: wg0
public
interfaces: ens3
사용 가능한 모든 영역을 나열하려면 를 사용할 수 있습니다 firewall-cmd --list-all-zones
.
활동 지역에 대한 자세한 내용을 확인하세요.
firewall-cmd --zone=public --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens3
sources:
services: ssh wireguard
ports:
protocols:
forward: no
masquerade: yes
forward-ports:
source-ports:
icmp-blocks:
rich rules:
전달 및 가장이 활성화되어 있는지 확인하세요! 내 설정에서는 전달이 비활성화되어 있습니다(전달: 아니요). 비교를 위해 이것은 내 Wireguard 인터페이스의 로케일입니다.
firewall-cmd --zone=internal --list-all
internal (active)
target: default
icmp-block-inversion: no
interfaces: wg0
sources:
services:
ports:
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
전달을 활성화하거나 설정을 변경하려면 영역 구성 파일을 편집하세요. 내 경우에는 <forward/>
활성 공개 영역에 추가했습니다 . 가장 무도회는 스크립트에 의해 설정됩니다.
vi /etc/firewalld/zones/public.xml
…
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Public</short>
<description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
<service name="ssh"/>
<forward/>
</zone>
…
/etc/firewalld/zones/에 구성이 없으면 /usr/lib/firewalld/zones에서 기본 방화벽 구성 파일을 찾을 수 있습니다.
구성을 변경한 후 방화벽을 다시 로드하십시오.
firewall-cmd --reload
구성이 올바른지 확인하세요.
firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens3
sources:
services: ssh wireguard
ports:
protocols:
forward: yes
masquerade: yes
forward-ports:
source-ports:
icmp-blocks:
rich rules:
참고: Rocky 9 방화벽은 nftables 커널 하위 시스템을 기반으로 합니다. iptables 명령을 사용하는 것도 래퍼입니다.https://docs.rockylinux.org/guides/security/firewalld/
유용한 방화벽 예제는 여기에서 찾을 수 있습니다:https://www.thegeekdiary.com/5-useful-examples-of-firewall-cmd-command/
답변3
처음에는 새 Wireguard 인터페이스에 영역이 할당되지 않습니다 wg0
. 이 구역에 위장을 추가하면 public
Wireguard를 통해 연결된 사람들이 인터넷에 액세스할 수 있습니다. 그러나 인터페이스에 영역을 할당하면 wg0
기본적으로 한 영역에서 다른 영역으로의 트래픽 방향이 허용되지 않으므로 인터넷 액세스가 중지됩니다. 트래픽이 한 영역에서 다른 영역으로 리디렉션되도록 허용해야 합니다. 예를 들어 인터페이스 wg0
영역 에 할당한 work
다음 한 영역에서 다른 영역으로의 액세스를 엽니다.
firewall-cmd --new-policy work-public --permanent
firewall-cmd --reload
firewall-cmd --policy work-public --add-ingress-zone=work --permanent
firewall-cmd --policy work-public --add-egress-zone=public --permanent
firewall-cmd --policy work-public --set-target=ACCEPT --permanent
firewall-cmd --reload
다음을 통해 새로운 정책에 대한 정보를 얻을 수 있습니다.
firewall-cmd --info-policy work-public