
Linux ワークステーションをローカル ネットワークの VPN ゲートウェイとして使用したいと考えています。同じワークステーションが Web サーバーとして使用されています。ワークステーションを VPN に接続すると、外部ネットワークからこの Web サーバーにアクセスできなくなります。
私の設定は次のとおりです。
ISP ルーター - IP 192.168.0.1 (デフォルト ゲートウェイ、非標準パブリック ポートを使用するためのポート マッピングが有効)
Linux ワークステーション - 固定 IP 192.168.0.20 (ルーターでゲートウェイ アドレスの変更が許可されていないため DHCP サーバー、OpenVPN、Apache、DNS サーバー)
「ip route show」の出力
0.0.0.0/1 via 10.8.3.1 dev tun0
default via 192.168.0.1 dev eth0 src 192.168.0.20 metric 202
10.8.3.0/24 dev tun0 proto kernel scope link src 10.8.3.12
37.120.143.221 via 192.168.0.1 dev eth0 (VPN external IP)
128.0.0.0/1 via 10.8.3.1 dev tun0
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.20 metric 202
構成は次のとおりです。
net.ipv4.ip_forward = 1
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -p icmp -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth0 -o tun0 -j ACCEPT
-A FORWARD -i tun0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
ワークステーションで VPN が有効になっている場合、ISP ルーターが接続されたクライアントのリストに Linux ワークステーションの正しいローカル IP アドレスをリストしないことに気付きました。正しい場合もありますが、ランダムな IP のように見える場合もあります。
次のルートを追加すると: EXTERNAL_IP via 192.168.0.1 dev eth0 (EXTERNAL_IP は WAN ip)、ローカル ネットワーク上の Web サーバーにアクセスできますが、別のネットワークからはアクセスできません。
答え1
設定に問題はありません。ルーティングに間違いがあります。
サーバーが動作している場合両方ウェブサーバーとしてそしてリモートサーバーのVPNクライアントとして、WebサーバーにアクセスしようとするユーザーはリモートVPNサーバーから応答を受け取ります(ないローカルサーバーのルーティングテーブルがルーティングするように指示しているため、ウェブサーバーから直接ルーティングされます。すべてリモート OpenVPN サーバー経由。サイト A にクエリを送信し、サイト B から応答を受信したマシンは、セキュリティ上の理由から、応答を自動的に破棄します。そのため、Web サーバーにアクセスできなくなります。
問題を解決する方法はたくさんあります。私のお気に入りの方法は、Web サーバーをそのままにして、OpenVPN クライアントを同じサーバーでホストされている Linux コンテナーに移動し、ルーター構成を DHCP/dnsmasq (何でも) サーバーに変更して、すべての LAN 通信を Linux コンテナー経由でルーティングすることです。思ったよりずっと簡単です。
もう一つの可能性は、二ルーティングテーブルを作成し、メインのものをOpenVPNクライアント用に残し、2番目のものを同一VPNが有効な場合のルーティングテーブルにないアクティブにし、サーバー (サーバー自体) からのすべてのトラフィックをこの 2 番目のルーティング テーブル経由でルーティングするようにカーネルに指示します。残りのトラフィック (LAN 内で発生し、OpenVPN 経由でルーティングするトラフィック) は、デフォルトでメイン ルーティング テーブルを使用します。
これも非常に簡単です。ここLinux の優れた簡潔な入門書ポリシー(またはソース) ルーティング。
あるいは、OpenVPNサーバーと同じマシンでWebサーバーをホストすることもできます。これも問題を解決します。この場合、最も簡単な方法は鏡ローカル Web サイトをリモート サーバー上に保存して、ローカルで変更できるようにします。
選択はすべてあなた次第です。