OpenVPNはすべてのトラフィックのデフォルトゲートウェイではありません


21

OpenVPNを実行しているVPSを介してすべてのトラフィックをクライアントに転送させようとしています。ご覧のとおり、ドメインとraw IPアドレスの両方へのpingを許可しますが、curlを介したトラフィックやtracerouteは何も発生しません。VPNに接続されていない場合、トラフィックは正しく機能します。

すべての情報はこちら:https : //pastebin.com/tGspNefn

ありがとうございました。

以下のソリューションのおかげで作業設定:

サーバ:

port <integer>
proto udp
dev tun
ca ca.crt
cert vpnserver.crt
key vpnserver.key  # This file should be kept secret
dh dh4096.pem
tls-auth ta.key 0
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway autolocal"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
cipher AES-256-CBC
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3

クライアント:

client
dev tun
proto udp
remote x.x.x.x <port number>
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert vpnclient.crt
key vpnclient.key
tls-auth ta.key 1
ns-cert-type server
cipher AES-256-CBC
comp-lzo
verb 3

/sbin/route add -net 0.0.0.0 netmask 128.0.0.0 gw 10.8.0.5 なぜネットマスク128.0.0.0ですか?
アントニーギブス14


3
次回、関連情報を抽出して質問に含めます。Pastebinスニペットの有効期間は限られています。
MLu 14

回答:


34

ソリューションには2つの部分があります。

1.すべてのトラフィックをトンネルにリダイレクトします

最も簡単な解決策-OpenVPNの--redirect-gateway autolocalオプションを使用します(またはconfigファイルにredirect-gateway autolocal

2. OpenVPNサーバーでトラフィックを処理する

トンネルが立ち上がったので、すべてのトラフィックはトンネルに入り、サーバーの端でtun0インターフェイスからポップアップします。

動作させるには、2つのことを構成する必要があります。

a。パケット転送を有効にする

ほとんどの配布では、デフォルトでパケット転送が無効になっているため、トンネルインターフェイスからのパケットはパブリックインターフェイスに到達しません。次を使用して転送を有効にする必要があります。

~ # sysctl net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1

テストしたら、変更を永続的にします。 /etc/sysctl.conf

またiptables、転送されたトラフィックをブロックしていないことを確認してください。

~ # iptables -I FORWARD -j ACCEPT

これはテストには十分です-実稼働環境では、ファイアウォールルールをもう少し具体的にしたいでしょうが、それはここでは範囲外です。

b。トンネルからの発信パケットのNAT

転送が有効になっている場合、パケットはデフォルトで送信元アドレスを変更せずに転送されます。つまり、10.8.0.6このようなパケットはISPゲートウェイでドロップされるか、返信が戻らない宛先に到達した場合でもです。これらのプライベートアドレスは、インターネット上でルーティングできません。

解決策は、出力トラフィックをNAT変換することです。つまり、プライベート10.8.0.6アドレスをVPNサーバーのパブリックIPに置き換えます。これにより、応答がVPNサーバーに到達し、そこでトンネルに転送されます。

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

3.テストする

次にping 8.8.4.4、VPNクライアントから試してください。返信が表示されるはずです。そうでない場合はお知らせください:)


これは現在完全に機能します。高品質の回答に感謝します。
DrDinosaur 14

クライアント側で、プルをclient.confファイルに追加するか、コマンドラインに--pullオプションを追加して、サーバーがプッシュした構成をクライアントが受け入れるようにします。また、クライアントがWindows Vista以降で実行されている場合、UACが無効になっていると、クライアントで実行されているopenpnサービスはルートを設定できません。
Viktor

> b。トンネルからの発信パケットをNAT処理します。
FelikZ

FORWARD -j ACCEPTルールにより、サーバーがすべてのインターフェイス間のオープンルーターになることを考慮してください。実稼働システムでは使用しないでください。しかし、HowToを使用するには、基本的に迅速に機能する非常に優れた命令セットが必要です。
スプリンター

Redirect all the traffic into the tunnelクライアント構成のステップはありますか?
航空機
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.