web-dev-qa-db-ja.com

OpenVPNにTCPとUDPポートの両方をリッスンさせる方法

私は周りを検索しましたが、見つかったのは "はい、OpenVPNはTCP経由の接続をサポートします" ですが、openvpnサーバーに同じポートをリッスンするよう強制する方法は見つかりませんでした。両方のプロトコルに対して同時に。 creating tap interfaces に関する非常に古いガイドをいくつか見つけました。または、同じ構成で同時に実行しているサーバーの別のインスタンスを持つことをお勧めします。前者は単純なものには複雑すぎるように見え、後者は時代遅れのようです。

13
Braiam

同じopenvpnプロセスは、UDPとTCPソケットを同時にリッスンすることはできません。

2つの適切なオプションがあります。

  1. openvpnには2つのタップインターフェイスを使用します。各タップインターフェイスに1つずつ、2つのopenvpnサーバープロセスがあります。 1つはUDPでリッスンし、もう1つはTCPでリッスンする必要があります。サーバー上のこれら2つのタップインターフェイスをブリッジします。

  2. 2つのtunインターフェースを使用します。これらをブリッジすることはできないため、TCPとUDPクライアントの間でIPスペースを共有する場合は、次のようなlearn-addressスクリプトを使用する必要があります- http://thomas.gouverneur.name/2014/02/openvpn-listen-on-tcp-and-udp-with-tun/ (ただし、この特定のスクリプトは/ tmpシンボリックリンク攻撃に対して脆弱です。/tmpへのロギングを使用する場合は削除してください)。

3つ目のオプションは、2つのopenvpnインスタンスを実行し、別々のクライアントIPスペースを両方に割り当てることです(たとえば、同じ/ 24サブネットからそれぞれ1つ/ 25)。これにより、ブリッジングとアドレス学習スクリプトの必要性が回避されます。

編集:私は自分でそのようなアドレス学習スクリプトが必要だったので、私はそれを書きました。私はそれをパブリックドメインに配置します。

#!/bin/sh
#
# This script allows an openvpn server with several openvpn instances that
# use tun interfaces to share client IP space by adjusting the routing table
# to create entries towards specific clients as needed

action="$1"
addr="$2"
cn="$3" # not used, but it's there; you could e.g. log it

case "$action" in
        add)
                echo "Sudo ip ro add $addr/32 dev $dev" >&2
                exec Sudo ip ro add $addr/32 dev $dev
                ;;
        delete)
                echo "Sudo ip ro del $addr/32 dev $dev" >&2
                Sudo ip ro del $addr/32
                exit 0 # ignore errors
                ;;
        update)
                echo "Sudo ip ro change $addr/32 dev $dev" >&2
                exec Sudo ip ro change $addr/32 dev $dev
                ;;
esac

このスクリプトはstderrにログを記録し、最終的にopenvpnログに記録されます。

11
András Korn

OpenVPNサーバーがUDPポートの代わりにTCPポートでリッスンするようにしたい場合は、proto tcpの代わりにproto udpを使用します(OpenVPNが両方のUDPおよびTCPポート、2つの個別のOpenVPNインスタンスを実行する必要があります)。

このページが古いということですか?

2つのOpenVPNサーバー(TCP用に1つ、UDP用に1つ)を実行して、それぞれをTUNでブリッジし、TUNを接続できると思います。

4
nodakai