Use Steam's In-Home Streaming across VPN (OpenVPN)?

479

Solution 1

So it turns out that such a simple idea with OpenVPN is actually a LOT more complex and involved. You can do Steam Streaming if you use OpenVPN in bridged mode (which I take requires already having a local lan setup that you can bridge into).

What I ended up doing instead was use Hamachi and mix together the instructions found at http://steamcommunity.com/groups/homestream/discussions/0/540738051890279158/ and https://help.ubuntu.com/community/Hamachi

Streaming a linux client from a windows machine works perfectly.

Solution 2

I got it working with OpenVPN (using TAP) after a lot of work. No luck with TUN, I believe it cannot work with TUN since there is no UDP broadcast possible with it (which apparently Steam In-home Streaming uses to detect peers).

I run the OpenVPN server on my router, a Archer C7 V2 running OpenWRT (Barrier Breaker).

Below is the server config file I use. Modification is necessary, where should be clear:

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

Here is my client config (The host machine running Windows, a similar config is used on the client machine running 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"

I've done so much with the OpenWRT config that I'm not sure if this is all that is required for someone to replicate my success. But the short version it: Use TAP and not TUN, make sure your VPN clients can talk to each other by specifying the client-to-client parameter in the server config. In OpenWRT I've also set up the network interface and the firewall as specified in the OpenWRT wiki for OpenVPN.

If you have any questions, I'll do my best to answer them.

Edit, on request:

/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'

Selected part from /etc/config/firewall, may not provide entire context but I don't want my entire firewall file to be known. Please inform me of eventual redundancy and mistakes:

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'
Share:
479

Related videos on Youtube

Denis2310
Author by

Denis2310

Updated on September 18, 2022

Comments

  • Denis2310
    Denis2310 over 1 year

    I want to show only posts that are related to multiple tags. Posts and tags are connected with many to many relationship.

    In filter menu user can check multiple tags and then only posts that are related to all of those tags needs to be shown.

    For example: If user checks #fruit and #vegetable tags then posts with both of those tags will appear.

    whereIn('tag_id', $array_of_tag_ids) method is working but its showing all posts that have at least one tag of those specified.

    Thanks

    • erb
      erb about 8 years
      I have a strong urge to edit this question down to the bare minimums as to make it more general, would that be acceptable to you @Asmo?
  • Justin W
    Justin W about 8 years
    Any chance you could upload your /etc/config/network and /etc/config/firewall ? I'm trying to duplicate your configuration right now, though I'm using Chaos Calmer. Shouldn't be hard to sanitize.
  • erb
    erb about 8 years
    @JustinW There you go, appended them to the answer. Feel free submit a cleanup, but I really need to sleep so lack the time. I upgraded to Chaos Calmer myself recently, not sure if the VPN still works. Let me know how it goes!
  • erb
    erb about 8 years
    @JustinW Did you get it to work?
  • erb
    erb about 8 years
    @JustinW I'm likely to pick this config up again in the future, I'll ping you if I do and get it working.
  • Enigma
    Enigma over 7 years
    @erb Highly interested in getting this kind of setup working but looks way too daunting. Also I'd be running the server on a dedicated Ubuntu 16.04 server. Maybe you can post a separate answer with those configs?