私は現在、OpenVPNを設定して会社のネットワークにリモートでアクセスしようとしています。
接続を確立し、構成されたアドレス(10.8.0.1)でサーバーにpingを実行できましたが、クライアントからサーバー側のネットワークにアクセスできませんでした。
サーバーは、ルートをサーバーにプッシュするように構成されています。
Push "route 155.0.0.0 255.255.0.0 10.8.0.1 1"
ここで、155.0.0.0/16はサーバー側ネットワークです。
うまくいかなかったので追加しました
Push "route 155.0.0.68 255.255.255.255 net_gateway 1"
サーバー(155.0.0.68)へのパケットを含むすべてのパケットがトンネルを介してルーティングされると問題が発生する可能性があることをどこかで読んだためですが、それでも機能しません。サーバーのネットワーク上のどのアドレスにもpingできません。 155.0.0.68のサーバー自体さえも。
何が悪いのですか?
追加情報:クライアントとサーバーはウィンドウを実行し、OpenVPNはudpプロトコルを使用して調整モードで実行されます。ファイアウォールは、クライアントとサーバーでオフになっています。
私はすでにネットワークエンジニアリングについてこの質問をしましたが、ServerFaultがそのような問題のより良い場所であると言われました。
VPNトンネルの両側のルートが必要です。
また、サーバーでIPルーティングを有効にする必要があります。たとえば、Windows 7の場合:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"IPEnableRouter"=dword:00000001
次のIPとサブネットを想定します。
192.168.0.0/24
192.168.0.2
10.8.0.2
155.0.0.0/16
155.0.0.68
10.8.0.1
サーバーとクライアントのキーのセットを作成します。これらを生成する方法については、OpenVPNインストールディレクトリ..\OpenVPN\easy-rsa\README.txt
のREADME)を確認してください。
次の行をサーバー構成ファイルに追加します。
port 1194
proto udp
dev tun
topology subnet
server 10.8.0.0 255.255.255.0
client-config-dir C:\\OpenVPN\\config\\ccd
route 192.168.0.0 255.255.255.0 10.8.0.2
ca C:\\OpenVPN\\config\\ca.crt
cert C:\\OpenVPN\\config\\server.crt
key C:\\OpenVPN\\config\\server.key
dh C:\\OpenVPN\\config\\dh1024.pem
keepalive 10 60
comp-lzo
persist-key
persist-tun
status C:\\OpenVPN\\config\\openvpn-status-tun.log 20
log C:\\OpenVPN\\config\\openvpn-tun.log
verb 3
パスをそれぞれのインストールディレクトリに置き換えます。
サーバーにカスタムクライアント構成ファイルを追加します:
サーバー設定ファイルと同じディレクトリにccd
ディレクトリを作成し、そこに[〜#〜] cn [〜#〜](Common Name)クライアントの証明書。
クライアント証明書を確認し、次の行を探します(CN=<client_name>
):
Subject: C=CH, ST=State, L=City, O=org, OU=unit, CN=client1/name=EasyRSA/emailAddress=root@localhost
この例では、ファイルはclient1
(拡張子なし)という名前になります。次の行をファイルに追加します。
ifconfig-Push 10.8.0.2 255.255.255.0
Push "route 155.0.0.0 255.255.0.0 10.8.0.1"
iroute 192.168.0.0 255.255.255.0
ifconfig-Push
は、このクライアントに静的IPを提供しますPush "route ..."
は、サーバー側のサブネットに到達するルートをクライアントにプッシュしますiroute
はOpenVPNにクライアントのサブネットへの内部ルートを生成します次の行をクライアント構成ファイルに追加します。
client
dev tun
proto udp
remote 155.0.0.68 1194
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
ca C:\\OpenVPN\\config\\client1.crt
cert C:\\OpenVPN\\config\\client1.crt
key C:\\OpenVPN\\config\\client1.key
remote-cert-tls server
パスをインストールディレクトリに置き換えます。
この設定は、OpenVPNを実行しているサーバーがルーターでもあり、サーバー側サブネット上のすべてのクライアントでdefault-gateway
として設定されている場合に機能します。
専用ルーターが存在する場合は、次の静的ルートをそのルーターに追加(またはすべてのクライアントに追加)して、VPNサブネットとclient1
のサブネットに到達します。
静的サーバー側サブネットルート:
Destination Gateway Genmask
192.168.0.0 155.0.0.68 255.255.255.0
10.8.0.0 155.0.0.68 255.255.255.0
このトピックに関するその他のヒントについては、 この答え を参照してください。
あなたの清掃員は反対側に到達する方法がわからないので、次のようなものが必要です。
vPNクライアント:
route add -net 192.168.0.0/24 gw 10.8.0.1 1 #in this way, the client knows, how to reach the other side.
リモートlan(サーバー側)、vpnサーバー側のPCに到達する場合:
route add -net 10.0.0/16 gw "192.168.0.100(local lan ip of my vpn server)"` #in this way, the other pc knows, where to route the traffic for the vpn network
コマンドの場合は申し訳ありませんが、Windowsは使用していません
クライアントがWindows 7を実行している場合は、管理者権限でオープンVPNクライアントを実行する必要があります。そうしないと、ルーティングテーブルが読み込まれず、サーバーネットワーク上のホストにpingできない場合があります。