
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