web-dev-qa-db-ja.com

すべてのトラフィックをOpenVPN経由でルーティングします

ええ、この質問は何百回も尋ねられており、私はどこでも検索しましたが、何の役にも立ちませんでした。

タイトルは本当にそれをすべて言っています。

OpenVPNサーバー(ubuntu上)があり、クライアント(Windows 8)を介して接続できます...

この問題は、VPNを介してすべてのトラフィックをルーティングしようとしたときに始まります。

Server.confにPushフラグを追加しました。

Push "redirect-gateway def1"
Push "dhcp-option DNS 8.8.8.8"

クライアントから接続すると、クライアントは次を出力します。

Wed May 07 21:38:40 2014 SENT CONTROL [StretchVPN-CA]: 'Push_REQUEST' (status=1)
Wed May 07 21:38:41 2014 Push: Received control message: 'Push_REPLY,redirect-gateway def1,dhcp-option DNS 8.8.8.8,route-gateway <Remote Router IP>,ping 10,ping-restart 120,ifconfig 192.168.0.201 255.255.255.0'
Wed May 07 21:38:41 2014 OPTIONS IMPORT: timers and/or timeouts modified
Wed May 07 21:38:41 2014 OPTIONS IMPORT: --ifconfig/up options modified
Wed May 07 21:38:41 2014 OPTIONS IMPORT: route options modified
Wed May 07 21:38:41 2014 OPTIONS IMPORT: route-related options modified
Wed May 07 21:38:41 2014 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified
Wed May 07 21:38:41 2014 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0
Wed May 07 21:38:41 2014 open_tun, tt->ipv6=0
Wed May 07 21:38:41 2014 TAP-WIN32 device [Local Area Connection 4] opened: \\.\Global\{1F145805-92FC-454E-8FD9-0A6017DD4AD1}.tap
Wed May 07 21:38:41 2014 TAP-Windows Driver Version 9.9
Wed May 07 21:38:41 2014 Notified TAP-Windows driver to set a DHCP IP/netmask of 192.168.0.201/255.255.255.0 on interface {1F145805-92FC-454E-8FD9-0A6017DD4AD1} [DHCP-serv: 192.168.0.0, lease-time: 31536000]
Wed May 07 21:38:41 2014 Successful ARP Flush on interface [35] {1F145805-92FC-454E-8FD9-0A6017DD4AD1}
Wed May 07 21:38:46 2014 TEST ROUTES: 1/1 succeeded len=0 ret=1 a=0 u/d=up
Wed May 07 21:38:46 2014 C:\WINDOWS\system32\route.exe ADD <Remote Router IP> MASK 255.255.255.255 172.20.10.1
Wed May 07 21:38:46 2014 ROUTE: CreateIpForwardEntry succeeded with dwForwardMetric1=25 and dwForwardType=4
Wed May 07 21:38:46 2014 Route addition via IPAPI succeeded [adaptive]
Wed May 07 21:38:46 2014 C:\WINDOWS\system32\route.exe ADD 0.0.0.0 MASK 128.0.0.0 192.168.0.3
Wed May 07 21:38:46 2014 ROUTE: CreateIpForwardEntry succeeded with dwForwardMetric1=30 and dwForwardType=4
Wed May 07 21:38:46 2014 Route addition via IPAPI succeeded [adaptive]
Wed May 07 21:38:46 2014 C:\WINDOWS\system32\route.exe ADD 128.0.0.0 MASK 128.0.0.0 192.168.0.3
Wed May 07 21:38:46 2014 ROUTE: CreateIpForwardEntry succeeded with dwForwardMetric1=30 and dwForwardType=4
Wed May 07 21:38:46 2014 Route addition via IPAPI succeeded [adaptive]
Wed May 07 21:38:46 2014 Initialization Sequence Completed

接続を開くときにクライアント側でフラグを使用してみました:

openvpn --config "C:\Program Files\OpenVPN\config\client.ovpn" --redirect-gateway def1 --route-method exe

しかし、それでも、whatsmyip.orgにアクセスすると、クライアントのIPが表示されます。

誰もがこの問題を抱えていて、それを解決することができましたか?

どうもありがとう

37

OpenVPNサーバーを使用してこれをテストし、クライアントとサーバーの構成でredirect-gateway def1オプションを設定するとうまく機能します。 whatismyip.orgにアクセスすると、OpenVPNサーバーのIPが表示されます。以下は私が使用するクライアント設定です:

client
dev tun
proto udp
# THE IP OF THE REMOTE OPENVPN SERVER:
remote ip_address port
resolv-retry infinite
nobind
persist-key
persist-tun
# THE CSR FILE:
pkcs12 certificate.p12
ns-cert-type server
cipher AES-256-CBC
comp-lzo
redirect-gateway def1
verb 3

また、openvpnコマンドにredirect-gateway def1オプションを追加してテストし、同じ結果を達成しました。サーバー構成は次のとおりです。

port 1194
proto udp
dev tun

dh /etc/openvpn/easy-rsa/keys/dh1024.pem
ca /etc/openvpn/easy-rsa/keys/ca.crt
# ENSURE THE DOMAIN NAME/FILENAME IS CORRECT:
cert /etc/openvpn/easy-rsa/keys/cert.crt
key /etc/openvpn/easy-rsa/keys/cert.key

server 10.5.3.0  255.255.255.0
# YOUR LOCAL SERVER IP HERE:
client-config-dir ccd
route 10.5.3.0 255.255.255.0
ifconfig-pool-persist ipp.txt
cipher AES-256-CBC
comp-lzo
persist-key
persist-tun

status log/openvpn-status.log 5
status-version 2
log-append log/openvpn.log
verb 3  # verbose mode
management localhost port /etc/openvpn/management-password

# ROUTE THE CLIENT'S INTERNET ACCESS THROUGH THIS SERVER:
Push "redirect-gateway def1"
Push "remote-gateway vpn_server_ip"
Push "dhcp-option DNS 8.8.8.8"
keepalive 10 60
32
cioby23

たぶん、NATを変更するのを忘れましたか?これらの3つのコマンドをルートとして実行します

コマンド:

iptables -I FORWARD -i tun0 -o eth0 \
         -s 10.8.0.0/24 -m conntrack --ctstate NEW -j ACCEPT

iptables -I FORWARD -m conntrack --ctstate RELATED,ESTABLISHED \
         -j ACCEPT

iptables -t nat -I POSTROUTING -o eth0 \
          -s 10.8.0.0/24 -j MASQUERADE

キャプション:

  • tun0:仮想VPNネットワークカード
  • eth0:通常のネットワークカード
  • 10.8.0.0:VPNネットワークIPブロック
17
chickahoona

サーバー構成ファイルに次のディレクティブを追加します。

Push "redirect-gateway def1"

すべてのクライアントとサーバーが同じワイヤレスサブネット上にあるワイヤレスネットワークを介してVPNをセットアップする場合は、ローカルフラグを追加します。

Push "redirect-gateway local def1"

クライアントにリダイレクトゲートウェイオプションをプッシュすると、クライアントマシンから発信されるすべてのIPネットワークトラフィックがOpenVPNサーバーを通過します。サーバーは、インターネットへのNAT変換やサーバーサイトのHTTPプロキシを介したルーティングなど、何らかの方法でこのトラフィックを処理するように構成する必要があります。

Linuxでは、次のようなコマンドを使用して、インターネットへのVPNクライアントトラフィックをNATできます。

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

このコマンドは、VPNサブネットが10.8.0.0/24(OpenVPNサーバー構成のサーバーディレクティブから取得)であり、ローカルイーサネットインターフェースがeth0であることを前提としています。

Redirect-gatewayを使用すると、OpenVPNクライアントはVPNを介してDNSクエリをルーティングし、VPNサーバーがそれらを処理する必要があります。これは、接続しているクライアントにDNSサーバーアドレスをプッシュすることで実現できます。接続クライアントは、VPNがアクティブなときに通常のDNSサーバー設定を置き換えます。例えば:

Push "dhcp-option DNS 10.8.0.1"

dNSサーバーとして10.8.0.1を使用するように、Windowsクライアント(またはクライアント側のスクリプトを追加した非Windowsクライアント)を構成します。クライアントから到達可能な任意のアドレスをDNSサーバーアドレスとして使用できます。

1
Pol Hallen

答えを一生懸命探した後、私はこれをおそらく部分的に解決したようですが、少なくとも非常に簡単です:

メインソースのXubuntu 14.04とOpenVPNパッケージを使用します。 [設定]> [システム]> [ネットワーク]で、プリインストールされたDNSアドレス127.0.1.1をGoogleの8.8.8.8に置き換え、VPNサーバーを通過するすべてのトラフィックを確認できるようになりました。

Wiresharkのテーブルでは、DNSなどの文字列は存在しません。すべてのデータは、暗号化されたチャネルを通じてTCPのようになります。 tun0(ノートブックの内部)を見ると、DHCPおよびDNSトラフィックを見ることができます。 wlan0トラフィック(ノートブックとWiFiルーター間の外部)を探索すると、灰色のTCPパッケージしか取得できません。

DNSクエリは文字から数字へのデコードに必要ではなく、通常のデータパッケージのように共通のストリームで行われるため、これが起こっていると思います。

私はあなたの考慮事項を知ってうれしいです、私が完全に間違っていても驚くことではありません

1
xrobot

同じ問題に直面し、Open VPNのPiVPNセットアップスクリプトを使用すると、サーバー構成に次の行が含まれていることがわかりました。

「redirect-gateway def1 bypass-dhcp」をプッシュします

既に。 IOSクライアントでは、すべてがトンネルを介して自動的にルーティングされます(ログに記載されているとおりです)。

Tunnelblickクライアントでは、client.ovpnに次の行を追加する必要があります。

redirect-gateway def1 bypass-dhcp

そしてそれは完全に動作するはずです。少なくとも私のMacではそうでした。

0
Peter

OpenVPNクライアントがWindows 10(または同様の)上にある場合、別の問題、NICのバインド順序に注意する必要があります。 LANまたはWifiアダプターの既存のDNSサーバー設定は、トンネルインターフェースのDNSサーバー設定よりも優先される可能性があります。そのため、OpenVPNの観点からすべてが正しく設定されていても、Windowsは引き続き元のDNSサーバーを使用します。

このMicrosoftフォーラムの投稿で説明されているように、これを修正できます。

https://social.technet.Microsoft.com/Forums/windowsserver/en-US/1cc5b647-6e51-482b-8998-ac5c3900938c/how-to-force-vpn-clients-to-use-the- dnsserver-from-their-vpn-adapter-not-the-dnsserver-from-their?forum = winserverNIS

0
JudgedByDredd