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


39

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

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

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

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

pushserver.confにフラグを追加しました:

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が表示されます。

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

どうもありがとう


push "route 0.0.0.0 0.0.0.0"ルートをプッシュしようとしましたか、似ていましたか?VPNに戻るルートを忘れないでください!
lub

うん、これはプッシュ "redirect-gateway def1"が使用されるときに自動的に行われます... 0.0.0.0マスク127.0.0.0と127.0.0.0マスク127.0.0.0を追加します(既に存在するルートを削除せずにデフォルトルートを追い越します)
ちょうどラッキー本当に

Windowsで「管理者として実行」としてクライアントを実行しているかどうか心配です。この問題は、管理者が実行せずにOVPN Windows Clientを実行した場合に発生する可能性があります。
Kousha 14年

回答:


35

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

今日それを試してみました...まだ運がありません。TAPアダプターではなくTUNアダプターを使用していることに気づきました...代わりにそれを試して報告します:D
Just Lucky本当に

1
Okie、TUNアダプタを使用しているようです...割り当てる必要のあるルートに少し困っていますが... VPNネットワークに192.168.1.0/24を使用し、192.168.0.0 / 24は私のサーバーLANです。だから私のサーバ設定では、私が追加しましたroute 192.168.1.0 255.255.255.0し、push "route 192.168.0.0 255.255.255.0"私のクライアントは、離れて、それは192.168.1.0/24ネットだ...私はもう少し周り突くだろうから、他のサブネットへのアクセスを取得していない
ただ、ラッキー本当に

19

たぶん、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ブロック

1
このNAT変更手順は非常に重要です。上記の3つのコマンドを実行しないと、これを機能させることができませんでした。
ニテシュクマールアナンド

6
これらのコマンドは、クライアントではなくopenvpnサーバーで実行する必要があることに注意してください。
ケムメイソン

1
natサーバーでもテーブルの変更だけが機能していることがわかりました。
ジンヒン

1
openVPNサーバーが再起動された場合に備えて、iptablesルールを保持する必要がありますか?
DWils

@DWilsはい、それらをいくつかの起動スクリプトに入れる必要があります。このQ&Aを確認してください:askubuntu.com/questions/270693/...
アルネ

1

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

メインソースのXubuntu 14.04とOpenVPNパッケージを使用します。で[設定]> [システム]> [ネットワーク、私は、プリインストールされているDNSアドレスに置き換え127.0.1.1Googleのでは8.8.8.8、と今私は、VPNサーバーを経由するすべてのトラフィックを見ることができます。

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

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

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


忘れてしまったのは、この方法には紛れもない利点が1つあることです。VPNサーバーがDNS再ルーティングをサポートしていない場合でも機能します。
xrobot 14

ちなみに、1つのトリックを行うことができます:偽りの目に見える無実のDNSクエリを時々送信する場合、間接的にビッグブラザーへの忠誠心を確認することができます。
xrobot 14

1

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

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サーバーアドレスとして使用できます。


0

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


質問への答えではない
PIM

0

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

push "redirect-gateway def1 bypass-dhcp"

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

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

redirect-gateway def1 bypass-dhcp

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.