web-dev-qa-db-ja.com

同じサーバー上のVPNユーザーへのnginxWebサイト接続の制限

私の主な目的は次のとおりです。サーバーにVPNサーバーをインストールし、そのサーバー上のWebサイトには、同じサーバー上でVPNを使用しているユーザーのみがアクセスできるようにする必要があります。

まず、2つのサーバーの場合が機能します。

つまり、AとBの2つのサーバーがあります。PPTP VPNサーバーはAにインストールされ、nginxはBにあります。

Nginxサイトの許可ルールを次のように設定しましたが、正常に機能します。

allow ip_of_a;
deny all;

ただし、Aのサイトに接続しようとすると(vpnサーバーにもnginxサーバーがあります)、リモートIPは元のIPとして表示され、VPN経由で接続したときに取得したIPではなく、nginxで403Forbiddenページが表示されます。 。エラーログには、VPNのIPではなく、元のIPからの接続試行が表示されます。

VPNは、与えられたIPではなく元のIPを認識していることを理解していますが、この状況には回避策が必要です。

VPNは、フォームのローカルIPに許可10.80.80。*を割り当てるので、フォームの別の許可を設定します

allow 10.80.80.0/24;

それはトリックをしませんでした。

VPNが提供するローカルIPを直接追加しようとしましたが、やはり機能しませんでした。

allow 10.80.80.100;

これはどういうわけかpptpサーバーから修正する必要がありますか、それともnginxルールから修正できますか?

編集:VPNに接続する前後のクライアント(OS X)のルーティングテーブル:

前:

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            192.168.1.1        UGSc           18        0     en0
127                127.0.0.1          UCS             0        0     lo0
127.0.0.1          127.0.0.1          UH             17 12724964     lo0
169.254            link#4             UCS             0        0     en0
192.168.1          link#4             UCS             3        0     en0
192.168.1.1        0:25:9c:4a:c6:44   UHLWIir        19    28906     en0   1000
192.168.1.126      0:88:65:5c:6a:f4   UHLWIi          0       33     en0    440
192.168.1.129      127.0.0.1          UHS             1        0     lo0
192.168.1.255      ff:ff:ff:ff:ff:ff  UHLWbI          0       24     en0

後:

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            10.99.99.99        UGSc           16        0    ppp0
default            192.168.1.1        UGScI          11        0     en0
10                 ppp0               USc             1        0    ppp0
10.99.99.99        10.99.99.100       UHr            17        8    ppp0
SERVER_IP_HERE      192.168.1.1        UGHS            1      299     en0
127                127.0.0.1          UCS             0        0     lo0
127.0.0.1          127.0.0.1          UH             17 12724968     lo0
169.254            link#4             UCS             0        0     en0
192.168.1          link#4             UCS             3        0     en0
192.168.1.1        0:25:9c:4a:c6:44   UHLWIir        13    28987     en0    988
192.168.1.126      0:88:65:5c:6a:f4   UHLWIi          0       33     en0    428
192.168.1.129      127.0.0.1          UHS             0        0     lo0
192.168.1.255      ff:ff:ff:ff:ff:ff  UHLWbI          0       38     en0
3
ustun

説明されているように、VPNサーバーはデフォルトでWebトラフィックをリダイレクトしません ここ 、行を追加します

Push "redirect-gateway def1"

openvpn.confで、VPNサーバーIPをリモートIPとして使用できるようになり、それを使用してWebサーバーでパスできるようになります。

1
Kane

実際には、DNSサーバーを設定する必要はありません。私は次のシナリオを試しました

VPNサーバー

エイリアスを作成する

# ifconfig eth0:1 192.168.127.10 netmask 255.255.255.255 up

Nginxをエイリアスアドレスに構成します

server {
    listen      192.168.127.10:80;
    server_name  site1.example.net;

    location / {
        root          /var/www/html;
    }
}

Iptablesを構成する

# iptables -t nat -I PREROUTING -p tcp -d xxx.xxx.xxx.xxx --dport 80 -j DNAT --to-destination 192.168.127.10:80

ここで、xxx.xxx.xxx.xxxサーバーAのパブリックIPアドレスとサイトのIPアドレス

0
ALex_hha