VPN (OpenVPN) 経由で Steam のホーム内ストリーミングを使用しますか?

VPN (OpenVPN) 経由で Steam のホーム内ストリーミングを使用しますか?

質問にあるように、TAP モードを使用して OpenVPN サーバーをセットアップし、Steam に組み込まれているゲーム ストリーミング機能を利用して、Windows 7 ゲーム マシンから職場や学校の外部にある Ubuntu 14.04 ラップトップにストリーミングできるようにしたいと考えています。 これにより、Ubuntu ユーザーは Windows マシン上の Steam アカウントに接続し、Linux 以外のゲームを Ubuntu ハードウェアにストリーミングできるようになります。

私が達成したいことの大まかなアイデアは次のとおりです。


********************インターネット********************インターネット************************
Ubuntu ラップトップ (Steam) <---> Ubuntu OpenVPN サーバー <---> Windows マシン (Steam)

OpenVPN を使用して、Ubuntu ラップトップと Windows クライアントの両方が接続できるサーバー上に VPN ネットワークを作成します。Steam の家庭内ストリーミング サービスは IP トンネル (TUN) ではうまく動作しないため、TAP を使用して完全な Ethernet フレーム データを転送する必要があります。両方のマシンが VPN に接続されると、ライブラリがストリーミングに使用できることをブロードキャストし始めます。

現在のネットワーク地形:


学校/職場用 Ubuntu 14.04 ラップトップ
ホスト名 chimaera-linux
動的インターネット IP (ipv4)
動的ローカル IP (10.1.10.x)
eth0 への有線接続

OpenVPN を実行する Ubuntu 14.04 KVM 仮想マシン
ホスト名 cerberus-vm
パブリック静的インターネット IP (xy145.133) eth0 (ipv4、有線)
ローカル IP またはローカル ネットワークなし

Windows 7 Proデスクトップ
ホスト名windoze
動的インターネットIP (ipv4)
動的ローカルIP (192.168.0.x)
eth0への有線接続

要件:


  • VPN に接続されたクライアントは、TAP アダプターを使用して VPN ネットワークとの間でトラフィックを送受信できる必要があります。TUN は機能しません。
  • VPN ネットワークは、クライアントからインターネットへ、またインターネットからクライアントへのトラフィックの転送も可能でなければなりません (VPN に接続し、安全なブラウジング方法として使用できるため)。
  • MITM 攻撃やその他の不正行為を防ぐために、接続設定は可能な限り安全にする必要があります。
  • 社内VPNネットワークはスタンドアロンつまり、クライアントまたはサーバーのそれぞれのローカル ネットワークを許可したり、インターフェイスしたりすることはできません。サーバーのネットワーク上の他のローカル デバイスに ping を実行できる VPN ネットワークをセットアップしようとしているのではなく、内部 VPN IP を使用して他の VPN クライアントに接続できるようにするだけです。

成功への第一歩!


  1. 発見され、使用されたhttps://help.ubuntu.com/lts/serverguide/openvpn.htmlサーバーに OpenVPN をインストールし、証明書を設定するためのガイドとして。問題はありません!
  2. 発見され適応されたhttp://www.slsmk.com/getting-started-with-openvpn/installing-openvpn-on-ubuntu-server-12-04-or-14-04-using-tap/サーバーのドキュメントでは、TAP ではなく TUN の設定について説明されているからです。 この時点では、クライアントは VPN サーバーに接続して認証できますが、クライアント間でトラフィックは流れず、クライアントは VPN 経由でインターネットにアクセスできません。

関連する構成/システム情報


  1. Ubuntu VPN クライアントは、LTS サーバーのドキュメントに従ってネットワーク マネージャーを通じて構成されます。

  2. Windows 7クライアントはopenvpn.netのOpenVPN-guiパッケージを使用しています

  3. リクエストに応じて任意の構成ファイルを提供できます。コードのチェックマークでさえフォーマットがひどくおかしくなることなく、ここにそれらを貼り付ける方法がわかりません。

問題領域と謎


  1. openvpn の server.conf の vpn ルートや「push」コマンドがまったく理解できません。これが、接続はできるものの、他のクライアントやインターネットへのトラフィックを VPN から送受信できない主な理由ではないかと考えています。

  2. iptables やマスカレードなどを試してみましたが、どれも効果はありませんでした。現時点では、それが問題だとは思いません。現在、iptables は完全に未構成で、すべてのトラフィックを受け入れます。

  3. どのクライアントでもブリッジや特別なネットワーク設定は構成していません (また、必要ありません)。

答え1

多大な作業の末、OpenVPN (TAP を使用) で動作させることができました。TUN ではうまくいきませんでした。TUN では UDP ブロードキャストが不可能なため動作しないと思います (どうやら Steam In-home Streaming はピアを検出するためにこれを使用しているようです)。

私は OpenWRT (Barrier Breaker) を実行するルーター Archer C7 V2 で OpenVPN サーバーを実行しています。

以下は私が使用するサーバー設定ファイルです。変更が必要な箇所は、明確にする必要があります。

client-to-client
persist-key
persist-tun
tls-server
ca /etc/openvpn/ca.crt
cert /etc/openvpn/erb-router-c7.crt
dev tap_mypvn
dh /etc/openvpn/dh2048.pem
keepalive 10 120
key /etc/openvpn/erb-router-c7.key
log /tmp/openvpn.log
mode server
port 1194
proto udp
route-gateway dhcp
server 10.8.0.0 255.255.255.0
status /var/log/openvpn_status.log
topology subnet
verb 3
push topology subnet
push route-gateway dhcp
push persist-key
push persist-tun

これが私のクライアント構成です (ホスト マシンは Windows を実行しており、Ubuntu を実行しているクライアント マシンでも同様の構成が使用されています)。

client
float

dev tap
proto udp
remote YOUR_HOSTNAME_OR_IP_HERE 1194

log "C:/Program Files/OpenVPN/config/log.txt"
verb 3

resolv-retry infinite
nobind

persist-key
persist-tun

remote-cert-tls server    
ca "C:/Program Files/OpenVPN/config/ca.crt"
cert "C:/Program Files/OpenVPN/config/erb-main-7.crt"
key "C:/Program Files/OpenVPN/config/erb-main-7.key"

私はOpenWRTの設定でかなり多くのことをしたので、誰かが私の成功を再現するのにこれがすべて必要なのかはわかりません。しかし、簡単に言うと、TUNではなくTAPを使用し、client-to-clientサーバー設定でパラメータを指定してVPNクライアントが互いに通信できることを確認します。OpenWRTでは、ネットワークインターフェイスとファイアウォールも次のように設定しました。OpenVPN の OpenWRT wiki

ご質問があれば、できる限りお答えします。

リクエストに応じて編集:

/etc/config/network

config interface 'loopback'
    option ifname 'lo'
    option proto 'static'
    option ipaddr '127.0.0.1'
    option netmask '255.0.0.0'

config globals 'globals'
    option ula_prefix 'fd0f:252f:ed29::/48'

config interface 'lan'
    option force_link '1'
    option type 'bridge'
    option proto 'static'
    option ipaddr '192.168.1.1'
    option netmask '255.255.255.0'
    option ip6assign '60'
    option _orig_ifname 'eth1 wlan0 wlan1'
    option _orig_bridge 'true'
    option ifname 'eth1 tap_myvpn'

config interface 'wan'
    option ifname 'eth0'
    option proto 'dhcp'

config interface 'wan6'
    option ifname '@wan'
    option proto 'dhcpv6'

config switch
    option name 'switch0'
    option reset '1'
    option enable_vlan '1'

config switch_vlan
    option device 'switch0'
    option vlan '1'
    option ports '0 2 3 4 5'

config switch_vlan
    option device 'switch0'
    option vlan '2'
    option ports '1 6'

config interface 'vpn0'
    option ifname 'tun0'
    option proto 'none'
    option auto '1'

から選択した部分は/etc/config/firewall、全体のコンテキストを提供しない可能性がありますが、ファイアウォール ファイル全体を知られたくありません。重複や間違いがあった場合はお知らせください。

config rule
        option name 'Allow-OpenVPN-Inbound'
        option target 'ACCEPT'
        option src '*'
        option proto 'udp'
        option dest_port '1194'

config zone
        option name 'vpn'
        option masq '1'
        option input 'ACCEPT'
        option forward 'ACCEPT'
        option output 'ACCEPT'
        option network 'vpn0'

config forwarding
        option dest 'lan'
        option src 'vpn'

config forwarding
        option dest 'wan'
        option src 'vpn'

config forwarding
        option dest 'vpn'
        option src 'lan'

答え2

つまり、OpenVPN のこのような単純なアイデアは、実際にははるかに複雑で、複雑であることがわかります。OpenVPN をブリッジ モードで使用すると、Steam ストリーミングを実行できます (ブリッジできるローカル LAN セットアップが既に必要だと思います)。

私が代わりにやったことは、Hamachiを使って、http://steamcommunity.com/groups/homestream/discussions/0/540738051890279158/そしてhttps://help.ubuntu.com/community/Hamachi

Windows マシンから Linux クライアントをストリーミングすることは完璧に機能します。

関連情報