インターネットへのRocky linux 9wireguardスプーフィングトラフィックは機能しません。

インターネットへのRocky linux 9wireguardスプーフィングトラフィックは機能しません。

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/010.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。このゾーンに迷彩を追加すると、publicWireguardを介して接続されている人がインターネットにアクセスできます。ただし、インターフェイスにゾーンを割り当てると、デフォルトではある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

関連情報