OpenVPNサーバーの背後にあるサブネットにpingできない


1

これが私のインフラストラクチャです。

dns of mydomain.com:
  vpn A 90.90.90.1
  vpn A 90.90.90.2

client vpn config:
  client
  dev tun
  proto udp
  nobind
  remote vpn.mydomain.com 1394

server1
  net.ipv4.ip_forward = 1
  iptables:
    FORWARD defaults to ACCEPT
  vpn config:
    dev tun
    topology subnet
    port 1394
    proto udp
    server 10.10.1.0 255.255.255.0
    push "route 10.90.90.0 255.255.255.0"
  interfaces:
    ifpub: 90.90.90.1/24
    ifpriv: 10.90.90.1/24
    ifvpn: 10.10.1.1/24
  routes:
    10.10.1.0/24 src 10.10.1.1 dev ifvpn
    10.10.2.0/24 via 10.90.90.2 dev ifpriv

server2
  net.ipv4.ip_forward = 1
  iptables:
    FORWARD defaults to ACCEPT
  vpn config:
    dev tun
    topology subnet
    port 1394
    proto udp
    server 10.10.2.0 255.255.255.0
    push "route 10.90.90.0 255.255.255.0"
  interfaces:
    ifpub: 90.90.90.2/24
    ifpriv: 10.90.90.2/24
    ifvpn: 10.10.2.1/24
  routes:
    10.10.1.0/24 via 10.90.90.1 dev ifpriv
    10.10.2.0/24 src 10.10.2.1 dev ifvpn

問題は、クライアントから、接続しているOpenVPNサーバーにpingできるが、10.90.90.0 / 24サブネットの他のサーバーにはpingできないことです。

tcpdumpICMP要求は同じサーバーでからifvpnifpriv送信されますが、ICMP要求パケットはそれ以上送信されないことを示しています。

iptablesにログを追加すると、ICMP要求パケットがドロップされずにPOSTROUTING状態になるが、その後パケットが宛先に到達しなかったことがわかります。ここで何が起こるかわかりません。

私は自分のパケットをマスカレードできることは知っていましたが、それが推奨されていないので(https://community.openvpn.net/openvpn/wiki/NatHack)、またはそれが私の非常に最後のソリューションになるので、私はしたくありません。


マスカレードハックを試してみましたが、うまくいきます。iptables -t nat -A POSTROUTING -s 10.10.1.0/24 -o ifpriv -j MASQUERADEたとえば、サーバー1で、クライアントからサーバー2のプライベートIPにpingを実行できます。しかし、NatHackページで説明されているようにThe authorities would see all the telephone calls as coming from you. It would be better if everyone got their own phone, so the calls could be routed directly.。したがって、問題はまだここにあります...
ビクター

IIRC OpenVPNは、完全なサブネットにアクセスするために、ルーティングに加えて特別な構成が必要です。詳細を確認できるかどうかを確認します。
dirkt

pingがserver2に到達するには、server2のiptables INPUTを許可する必要があると思います。
Gohu

server2にPREROUTINGログを追加することをテストしましたが、何も表示されません。この画像i.stack.imgur.com/4wdkF.pngで説明されているように、パケットが入力する最初のチェーンはPREROUTINGであると想定しましたか?
ビクター

掘り下げてください:いくつかのトポロジーでirouteが必要ですが、それはここでは当てはまらないようです。正しく理解できればifpriv、両方のサーバーのインターフェースはLANで接続されておりifpriv、サーバー1で送信パケットが表示されますがifpriv、サーバー2で送信されません。愚かな質問:サーバー1からサーバー2に直接pingできますか?
-dirkt

回答:


0

リモートサーバーが「サブネットを公開する」場合、OpenVPNのドキュメントで慎重に説明されているように、ディレクティブccdを含むファイルを含むディレクトリが必要irouteです。routeクライアントにプッシュされるディレクティブも必要です。

すべてが正常に機能している場合:

  • クライアントはpingを送信します。
  • クライアントのOSには、このトラフィックをローカルOpenVPNサーバーに送信するルーティングコマンドがあります。
  • このccd情報は、OpenVPNに、どの接続リモートに配信用のトラフィックを送信するかを伝えます。
  • トラフィックはこのリモートで発生し、宛先に進みます。
  • 往復のために、リモートシステムには OpenVPNサーバーにトラフィックを送り返すオペレーティングシステムルート必要です。

わかりました、ありがとう、私はそれを試みます。説明したドキュメントはどこにありますか?私はこれを使用していました:openvpn.net/index.php/open-source/documentation/…–
ビクター
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.