A9VG电玩部落论坛

 找回密码
 注册
搜索
查看: 5429|回复: 5

利用 open-wrt x86 虚拟机以及安全壳提高 psv 联机游戏的可用性

[复制链接]

精华
0
帖子
19
威望
0 点
积分
19 点
种子
5 点
注册时间
2012-3-13
最后登录
2022-2-16
 楼主| 发表于 2014-2-23 22:06  ·  广西 | 显示全部楼层 |阅读模式
本帖最后由 xinleibird 于 2014-2-23 22:06 编辑
A9早有高人引玉了,我就来抛个砖。。。同时也是备忘。无图无详解,自己动手,丰衣足食。

大部分的联机游戏,只要不是 fps ,高 ping 可忍,但是丢包断线卡出翔不可忍!妈蛋收个二手龙冠,联100次90次各种异常,劳资受够了!

现在某些(例如红帽的) PaaS 平台支持 s安s全h壳隧道,而且免费不限流量,虽说是到美东的 ping 巨高(白天200+,晚上300+,来回一倒腾延迟1秒肯定有了,但是贵在稳定),但是比起收费的各种超卖奸商,还是良心的很。不能再多说了。






现在是自问自答时间:

  • 为什么不是虚拟v专p网n?                                 太贵。。。。
  • 为什么不直接用 open-wrt 路由?                       我穷。。。。
  • 为什么要用虚拟机而不直接用 win 版的软件?    小器。。。。
  • open-wrt 好玩吗?                                             只要是 linux,就好玩。linux 能 艹 方总 一万遍。。。。
  • 都用虚拟机了干嘛不直接虚拟个桌面linux?        吝啬
  • 那你干嘛不直接用桌面版 linux ?。。。。         跟马化腾生够了气,我就想偶尔能跟家人聊聊天,他们永远也不用 gtalk,skype,msn。。。。

我自己看着都觉得无聊的人干无聊的事。。。





先说一下个人的网络状况:


  • 一台 tp-link 的 wr740n v5。。。。艹了,v4 就能刷 dd,只怪我当初买的急。
  • 一台笔记本。

相信这很有代表性。





罗嗦了半天,正文要开始了:

  • 要有个虚拟机,我用的 virtual box。                               linux  其他linux
  • 要有个 open-wrt x86 的镜像,例如 openwrt-x86-generic-combined-ext4.img.gz
  • 把 image 转成 vbox 的虚拟硬盘
    1. cd C:\Program Files\Oracle\VirtualBox
    2. VBoxManage.exe  convertfromraw openwrt-x86-generic-combined-ext4.img open-wrt.vdi
    复制代码
  • 新建虚拟机(linux),导入刚才的虚拟硬盘(open-wrt.vdi)
  • 内存自己看着给(128 足够)
  • 然后设置一下。注意,需要虚拟两块网卡,和一个串口  开启两个网卡,开启一个串口
  • 网卡 1 以 nat 模式模拟 eth0,做 wan 口用来联外网。   网络地址转换(nat),其余默认
  • 网卡 2 以 bridge 模式模拟 eth1,做 lan 口用来联内网。桥接网卡,其余默认
  • 串口默认即可。


    好了,可以启动虚拟机了。





    由于某的路由器网关和 open-wrt 的网关同是 192.168.1.1,所以还需要把 bridge 出来的 lan 网卡额外设置一下。另外也把 nat 出来的 wan 网卡设置一下,好联外网。
  • 用 vi

    1. vi /etc/config/network
    复制代码
  • 改一改

    1. config interface loopback
    2.         option ifname   lo
    3.         option proto    static
    4.         option ipaddr   127.0.0.1
    5.         option netmask  255.0.0.0
    6.         config interface wan
    7.         option ifname   eth0
    8.         option proto    dhcp

    9. config interface lan
    10.         option type     bridge
    11.         option defaultroute     0
    12.         option peerdns          0
    13.         option proto    static
    14.         option ipaddr   192.168.1.2
    15.         option netmask  255.255.255.0
    16.         option gateway  192.168.1.1
    17.         option ifname   eth1

    复制代码
  • 重启网络

    1. /etc/init.d/network restart
    复制代码
  • 到此为止,虚拟出来的 open-wrt 路由 与你的局域网之间已经可以互通了,虚拟路由也可以 ping 通外网了。
    trunk 版本未开启 web 界面,需要的话可以自己装。但是我没装。

    1. opkg update
    2. opkg install luci
    3. /etc/init.d/uhttpd start
    4. /etc/init.d/uhttpd enable
    复制代码
  • 把默认密码改了
    改了就能在 win 下用 ssh 客户端联 open-wrt 了。我用的是 putty,随便什么都好。
    1. passwd
    复制代码






然后是在 open-wrt 中安装软件了



a....先来 socks 戴笠和 http 戴笠

  • 安装 open-ssh

    open-wrt 默认的 ssh 客户端是 dropbear,在 /usr/bin 中有个软链指向 dropbear。先删除掉,否则装不上 open-ssh。

    1. rm /usr/bin/ssh
    2. rm /usr/bin/scp

    复制代码
    open-wrt 的包管理器是 opkg,跟 debian 的 dpkg + apt 一个用法。不熟悉的去熟悉熟悉。。。

    1. opkg update
    2. opkg install openssh-client
    复制代码
  • 安装 autossh

    1. opkg update
    2. opkg install autossh
    复制代码
    为的是自动连接和断线重连接。
  • 配置 autossh

    你得有成对的私钥跟公钥(怎么生成?善用搜索),把私钥传到 /root/.ssh 下,命名为 id_rsa。
    注意去掉读写权限 chmod -rw /root/.ssh/id_rsa 。
    上传到 open-wrt 可以用 scp 命令,也可以用 filezilla 等支持 scp 的客户端。(还是scp简单,善用搜索)
  • vi 编辑

    1. vi /etc/config/autossh
    复制代码
  • 修改之

    1. config autossh
    2.         option ssh      '-i /root/.ssh/id_rsa -CfNg -D 0.0.0.0:7070 用户名@服务器地址
    3.         #-D是为了指定本地隧道端口,我用的是7070
    4.         option gatetime '0'
    5.         option monitorport      '20000'
    6.         option poll     '600'
    复制代码
  • 再vi

    1. vi /etc/init.d/autossh
    复制代码
  • 再编辑之(一样就不用动)


    1. root@OpenWrt:~/.ssh# vi /etc/init.d/autossh

    2.         config_get ssh "$section" 'ssh'
    3.         config_get gatetime "$section" 'gatetime'
    4.         config_get monitorport "$section" 'monitorport'
    5.         config_get poll "$section" 'poll'

    6.         export AUTOSSH_GATETIME="${gatetime:-30}"
    7.         export AUTOSSH_POLL="${poll:-600}"
    8.         service_start /usr/sbin/autossh -M ${monitorport:-20000} -f ${ssh}
    9. }

    10. boot() {
    11.         return
    12. }

    13. start() {
    14.         config_load 'autossh'
    15.         config_foreach start_instance 'autossh'
    16. }

    17. stop() {
    18.         service_stop /usr/sbin/autossh
    19. }
    20. - /etc/init.d/autossh 30/30 100%

    21.         config_get ssh "$section" 'ssh'
    22.         config_get gatetime "$section" 'gatetime'
    23.         config_get monitorport "$section" 'monitorport'
    24.         config_get poll "$section" 'poll'

    25.         export AUTOSSH_GATETIME="${gatetime:-30}"
    26.         export AUTOSSH_POLL="${poll:-600}"
    27.         service_start /usr/sbin/autossh -M ${monitorport:-20000} -f ${ssh}
    28. }

    29. boot() {
    30.         return
    31. }

    32. start() {
    33.         config_load 'autossh'
    34.         config_foreach start_instance 'autossh'
    35. }

    36. stop() {
    37.         service_stop /usr/sbin/autossh
    38. }

    复制代码
  • 然后启动并开机自运行

    1. /etc/init.d/autossh start
    2. /etc/init.d/autossh enable
    复制代码
    这时候 socks5 的隧道已然开启,浏览器设置戴笠为 192.168.1.2 类型 socks5 即可穿墙而出鸟。
  • 但是悲剧的是 psv 不支持 socks 类型的戴笠,只支持 http,于是乎要安装 privoxy。

    1. opkg update
    2. opkg install privoxy
    复制代码
  • 设置 privoxy

    1. vi /etc/privoxy/config
    复制代码
  • 编辑之,其实就两条要动

    1. listen-address  0.0.0.0:8118
    2. forward-socks5   /               127.0.0.1:7070 .
    复制代码
    有则改之,无则添之。
  • 同样启动并开机自运行

    1.     /etc/init.d/privoxy start
    2.     /etc/init.d/privoxy enable
    复制代码
    这样在psv上设置 http 代理为 192.168.1.2,端口 8118 即可***了。但是需要 https 连接的软件无效,例如 *** 客户端。但是能在网页上看 html5,更方便一些。。。。


b....再来本地 dns 服务器对抗 dns 污染。
  • 安装 unbound
    为什么不是 dnscrypt?源里没有。。。第三方安装错误

    1. opkg update
    2. opkg install unbound
    复制代码
  • 设置之

    1. vi /etc/unbound/unbound.conf
    复制代码
  • 修改或添加如下内容即可
    注意端口改成了5353

    1. server:
    2.         port: 5353
    3.         do-ip4: yes
    4.         do-ip6: no
    5.         do-udp: yes
    6.         do-tcp: yes
    7.         tcp-upstream: yes
    8. forward-zone:
    9.         name: "."
    10.         forward-addr: 8.8.8.8
    11.         forward-addr: 8.8.4.4
    12.         forward-first: no
    复制代码
  • 同样启动并开机自运行

    1.     /etc/init.d/unbound start
    2.     /etc/init.d/unbound enable
    复制代码
  • 配置dnsmasq

    1. vi /etc/config/dhcp
    复制代码
  • 修改或者添加

    1. config 'dnsmasq'
    2. #option resolvfile '/tmp/resolv.conf.auto'
    3. option noresolv '1'
    4. list server '127.0.0.1#5353'
    5. list server '208.67.222.222#5353'
    6. list server '208.67.220.220#5353'
    复制代码
  • 因为用来open dns,而其会将404重定向到他的广告页去,所以屏蔽之

    1. vi /etc/dnsmasq.conf
    复制代码
  • 底下添一条

    1. bogus-nxdomain=67.215.65.132
    复制代码
  • 测试一下本地干净的 dns 服务可用

    1. nslookup ***
    复制代码
  • 被劫持了就会查到一个莫名其妙的ip,而正确的应该是三个

    1. root@OpenWrt:~# nslookup ***.com
    2. Server:    127.0.0.1
    3. Address 1: 127.0.0.1 localhost

    4. Name:      ***.com
    5. Address 1: 199.59.148.82 r-199-59-148-82.twttr.com
    6. Address 2: 199.59.148.10 r-199-59-148-10.twttr.com
    7. Address 3: 199.59.150.7 r-199-59-150-7.twttr.com
    复制代码
  • 到此为止,socks戴笠可用,http戴笠可用,dns本地干净服务可用。但是有一点要说明,这样配置dns就谈不上所谓的CDN加速了,但是这能保证取得正确的地址。有其他需求的请自行折腾,但是到此为止,对我来说已经满足了。




PS Vita 端的设置如下


dns 地址
192.168.1.2
http 戴笠地址
192.168.1.2
http 戴笠端口8118





来点收尾的工作
每次启动虚拟机怪麻烦的,而且占用着个窗口很无趣,写个cmd脚本,把快捷方式放到启动项里。把快捷方式的属性改为启动时最小化。世界清净了。

  1. @echo off
  2. echo 请勿关闭此窗口,服务器在后台运行
  3. cd "c:\Program Files\Oracle\VirtualBox"
  4. ::VBoxHeadless --startvm "xxxx"
  5. VBoxManage startvm "xxxx" --type headless
复制代码



参考了很多网帖,有遗漏的谨致歉意
http://otnth.blogspot.com/2012/05/openwrt-autossh.html
http://blog.leoysen.tk/openwrt-***-autodd***/
http://blog.csdn.net/menglongfc/article/details/7699122





提醒
请安装好之后注意导出虚拟镜像,以便下次快速部署。





精华
0
帖子
5538
威望
0 点
积分
6467 点
种子
299 点
注册时间
2008-1-27
最后登录
2025-1-26
发表于 2014-2-24 01:02  ·  陕西 来自手机 | 显示全部楼层
谢谢分享,不知道树梅派可否。

精华
0
帖子
19
威望
0 点
积分
19 点
种子
5 点
注册时间
2012-3-13
最后登录
2022-2-16
 楼主| 发表于 2014-2-24 03:41  ·  广西 | 显示全部楼层
bbpoo 发表于 2014-2-24 01:02
谢谢分享,不知道树梅派可否。

s树莓就不用说了,必须可以啊

精华
0
帖子
3669
威望
0 点
积分
3859 点
种子
22 点
注册时间
2011-9-24
最后登录
2024-5-6
发表于 2014-2-24 15:16  ·  江苏 来自手机 | 显示全部楼层
linux?看着好复杂        

精华
0
帖子
1370
威望
0 点
积分
1522 点
种子
18 点
注册时间
2007-12-16
最后登录
2025-1-26
发表于 2014-2-24 15:41  ·  浙江 | 显示全部楼层
教程多谢了, 看看在路由器上能用不。

便宜能刷openwrt的路由器很多。

精华
0
帖子
869
威望
0 点
积分
913 点
种子
5 点
注册时间
2010-5-15
最后登录
2019-9-21
发表于 2014-2-24 15:58  ·  广东 | 显示全部楼层
我只能说我一个软件就足够了,什么设置都免了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|A9VG电玩部落 川公网安备 51019002005286号

GMT+8, 2025-1-27 06:03 , Processed in 0.178502 second(s), 14 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

返回顶部