web-dev-qa-db-ja.com

OpenVPNサーバーにtun0パケットをローカルネットワークに転送させる方法は?

TUN接続を介して調整しようとしているマシンが3台あります。

FREEBSD OpenVPNサーバーを実行しているボックス(tun)
ローカルサブネット上の10.0.200.21/24
VPNで10.0.202.1/24

REMOTE
パブリックIP
VPNで10.0.202.6/24

WEBSERVER
ローカルサブネット上の10.0.200.31/24

OpenVPN経由でREMOTE to VPN to FREEBSDを取得でき、接続は正常ですが、構成が正しくありません。 REMOTEのIPアドレスをWEBSERVERのブラウザに入力してWEBSERVERからREMOTEに接続しようとすると、WEBSERVERにアクセスできません。 REMOTEをローカルサブネットに直接接続すると到達可能です。

トラブルシューティング中に次のことを学びました。

  • REMOTEFREEBSDにpingを実行でき、SSHで接続することもできます。
  • FREEBSDのイーサネットポートに設定されたパケットキャプチャは、REMOTEのVPNIP10.0.202.6との間でパケットをキャプチャしません。そのため、REMOTEのパケットはローカルサブネットに到達していません。
  • openvpn.logFREEBSDのファイルには次の行があります:GET INST BY VIRT: 10.0.200.31 [failed]

したがって、OpenVPNは、TUNデバイスで受信したパケットをFREEBSDのイーサネットアダプターに転送しておらず、ローカルサブネットに送信していないようです。

Server.confファイルに次の行があります。
Push "route 10.0.200.0 255.255.255.0"

この行を追加しようとしましたが、役に立ちませんでした。
route 10.0.200.0 255.255.255.0


これがFREEBSDのルーティングテーブルです

ルーティングテーブル
 
インターネット:
宛先ゲートウェイフラグRefs Use Netif Expire 
 default 10.0.200.1 UGS 0 4306 re0 
 10.0.200.0 link#9 U 0 61582 re0 
 10.0.200.21 link#9 UHS 0 41 lo0 
 10.0.201.0 10.0.200.1 UGS 0 0 re0 
 10.0.202.0 10.0.202.2 UGS 0 0 tun0 
 10.0.202.1 link#12 UHS 0 0 lo0 
 10.0.202.2 link#12 UH 0 0 tun0 
 localhost link#11 UH 0 193743 lo0


GET INST BY VIRT: 10.0.200.31 [failed]メッセージについてオンラインで読んだので、Linuxマシンで次のコマンドを実行することをお勧めしました。
echo 1 > /proc/sys/net/ipv4/ip_forward
理解できず、FREEBSDを奇妙な構成にしたくないので、実行するのが怖いです。また、server.confファイルを変更して必要な構成を自動的に作成し、OpenVPNが閉じられたときに適切に管理され、破棄されるソリューションを強く望んでいます。

この問題の解決策は何ですか?

1
Shaun

さて、VPNクライアントには10.0.200.0/24ネットワークに到達するためのルートがあり、VPNサーバーにはルートがあります。しかし、問題は、Webサーバー10.0.200.3110.0.202.0/24ネットワークに到達するためのルートがあるかどうかです。

Freebsdボックスでtcpdumpを実行します。 10.0.202.6ホストからのトラフィックが転送されているのではないかと思いますが、リターントラフィックは見られません。

0
Zoredache