web-dev-qa-db-ja.com

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

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

これが私が達成したいことの一般的な考え方です:


*********************インターネット*******************インターネット******** **************
Ubuntu Laptop(Steam)<---> Ubuntu OpenVPNサーバー<---> Windows Machine(Steam)

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

現在のネットワークトポグラフィー:


School/work Ubuntu 14.04ノートパソコン
ホスト名chimaera-linux
動的インターネットIP(ipv4)
動的ローカルIP(10.1.10.x)
eth0への有線接続

Ubuntu 14.04 KVM OpenVPNを実行している仮想マシン
ホスト名cerberus-vm
eth0のパブリック静的インターネットIP(x.y.145.133)(ipv4、ハードワイヤード)
ローカルIPまたはローカルネットワークなし

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

要件:


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

成功へのステップ!


  1. サーバーにOpenVPNをインストールし、証明書をセットアップするためのガイドとして https://help.ubuntu.com/lts/serverguide/openvpn.html を見つけて使用しました。問題ない!
  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サーバーのドキュメントに従ってnetwork-managerを介して設定されます。

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

  3. 要求に応じて構成ファイルを提供できます。コードの目盛りでさえも、書式設定に非常に煩わされることなく、ここに貼り付ける方法を理解することはできないようです。

問題領域とミステリー


  1. Openvpnのserver.confのvpnルートまたは「プッシュ」コマンドに頭を包み込むように思えません。これが私が接続できる主な理由であるが、vpnから他のクライアントまたはインターネットへのトラフィックを取得できないように思えます。

  2. 私はiptablesとマスカレードで遊んだことがありますが、それは役に立ちません。この時点で、私はそれが問題だとは思わない。現在、iptablesは完全に構成解除されており、すべてのトラフィックを受け入れます。

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

3
Asmo

したがって、OpenVPNを使用したこのようなシンプルなアイデアは、実際にはかなり複雑で複雑なものであることがわかりました。 OpenVPNをブリッジモードで使用する場合は、Steamストリーミングを実行できます(これには、ブリッジ可能なローカルLAN設定が既に必要です)。

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

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

0
Asmo

多くの作業を経て、OpenVPN(TAPを使用)で動作するようになりました。 TUNで運がなくても、UDPブロードキャスト(Steam In-home Streamingがピアを検出するために使用しているようです)を使用できないため、TUNで動作しないと思います。

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'
4
erb