Wireguard - ファイアウォールの背後にある Web サーバーにアクセスできない

Wireguard - ファイアウォールの背後にある Web サーバーにアクセスできない

WG トンネル IP 10.9.0.1 のサーバー A、WG トンネル IP 10.9.0.4 のサーバー B、そして WG トンネル IP 10.9.0.3 のモバイルがあります。

サーバー A と B では UFW が有効になっており、SSH および WG ポートとして着信ポートが許可されています。

私はすべてのインターネット活動をモバイル経由でサーバーAに接続し、問題なく動作します。私はモバイルブラウザからサーバーBで実行されているWebサーバーにアクセスしようとしています。http://10.9.0.4サーバー B の UFW が有効になっていると動作しません。ただし、サーバー B の UFW を無効にすると、モバイルから Web サーバーにアクセスできます。Web サーバーには VPN 経由でのみアクセスできるようにし、パブリック アクセスは望んでいません。UFW でどのルールが欠落していて、サーバー B の Web サーバーへのアクセスがブロックされているのか、どなたか見つけるのを手伝っていただけますか? サーバー B のインターフェイス wg0 ですべての着信/発信を受け入れるように試みましたが、無駄でした。

サーバー B とモバイルはサーバー AI にピアとして接続されており、モバイルとサーバー A からサーバー B に ping を実行できます。

サーバー B の UFW

Status: active
Logging: on (low)
Default: deny (incoming), deny (outgoing), deny (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
5440                       ALLOW IN    Anywhere                  
44787/udp                  ALLOW IN    Anywhere                  
80,443/tcp on wg0          ALLOW IN    Anywhere                  
5440 (v6)                  ALLOW IN    Anywhere (v6)             
44787/udp (v6)             ALLOW IN    Anywhere (v6)             
80,443/tcp (v6) on wg0     ALLOW IN    Anywhere (v6)             

443                        ALLOW OUT   Anywhere                  
53                         ALLOW OUT   Anywhere                  
80                         ALLOW OUT   Anywhere                  
443 (v6)                   ALLOW OUT   Anywhere (v6)             
53 (v6)                    ALLOW OUT   Anywhere (v6)             
80 (v6)                    ALLOW OUT   Anywhere (v6)  

サーバーAのUFW

Status: active
Logging: on (low)
Default: deny (incoming), deny (outgoing), deny (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
5440                       ALLOW IN    Anywhere                  
44787                      ALLOW IN    Anywhere                  
44787 (v6)                 ALLOW IN    Anywhere (v6)             

53                         ALLOW OUT   Anywhere                  
80,443/tcp                 ALLOW OUT   Anywhere on wg0           
53/udp                     ALLOW OUT   Anywhere on wg0           
53 (v6)                    ALLOW OUT   Anywhere (v6)             
80,443/tcp (v6)            ALLOW OUT   Anywhere (v6) on wg0      
53/udp (v6)                ALLOW OUT   Anywhere (v6) on wg0  

編集: サーバー B で UFW を無効にし、以下のように iptables に置き換えました。問題は存在します。

#!/usr/bin/env bash

#############################
#  SETUP
#############################

# Define your hostname
DEMOSTHENES=X.X.X.X

# Clear all rules
/sbin/iptables -F

iptables -I FORWARD -s 10.9.0.0/24 -i wg0 -j ACCEPT #sample rule to allow packet forwarding from your wg subnet


#############################
#  MANAGEMENT RULES
#############################

# Allow SSH (alternate port)
/sbin/iptables -A INPUT -p tcp -d $DEMOSTHENES --dport 5440 -j ACCEPT 

/sbin/iptables -A INPUT -p tcp -d $DEMOSTHENES --dport 44787 -j ACCEPT 
/sbin/iptables -A INPUT -p udp -d $DEMOSTHENES --dport 44787 -j ACCEPT 

# Allow web server access
iptables -A INPUT -i wg0 -p tcp -m multiport --dports 80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o wg0 -p tcp -m multiport --sports 80,443 -m state --state ESTABLISHED -j ACCEPT

/sbin/iptables -A INPUT -j DROP 

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:domain
ACCEPT     udp  --  anywhere             anywhere             udp dpt:domain
ACCEPT     tcp  --  anywhere             v8.domain.co          tcp dpt:5440
ACCEPT     tcp  --  anywhere             v8.domain.co          tcp dpt:44787
ACCEPT     udp  --  anywhere             v8.domain.co          udp dpt:44787
ACCEPT     tcp  --  anywhere             anywhere             multiport dports http,https state NEW,ESTABLISHED
DROP       all  --  anywhere             anywhere            

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  10.9.0.0/24          anywhere            

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:domain
ACCEPT     udp  --  anywhere             anywhere             udp dpt:domain
ACCEPT     tcp  --  anywhere             anywhere             multiport sports http,https state ESTABLISHED

答え1

これまで ufw を使用したことはありませんが、サーバー B の ufw ルールで「ルーティング」ポリシーが拒否に設定されていることがわかりました。つまり、別のホストから着信し、サーバー B で終了する予定のすべてのパケットがブロックされているということです (私の理解が正しければ)。パケットの転送を許可するルールを作成するか (/etc/sysctl.conf も編集し、ipv4 および ipv6 パケットを転送していることを確認します。net.ipv4.ip_forward=1 および net.ipv6.conf.all.forwarding=1)、FORWARD チェーンのデフォルト ポリシーを accept に設定して、何が起こるかを確認してください。私は iptables を使用していますが、これは非常に扱いにくく、ルールに追加ではなく挿入を使用すると、まったく異なる結果になることがあります。

iptables -I FORWARD -s 10.9.0.0/24 -i wg0 -j ACCEPT #sample rule to allow packet forwarding from your wg subnet
iptables -P FORWARD ACCEPT #change default policy on filter tables FORWARD chain

関連情報