使用OpenVPN的Internet和LAN  -  Linux服务器 -  Windows / Linux客户端 - 适用于游戏和通过防火墙

使用OpenVPN的VPN上的互联网和局域网 - Linux服务器 - Windows / Linux客户端 - 适用于游戏和通过防火墙

本教程的目的是使您能够设置一个可以让您做许多事情的一点VPN,但是当我尝试让它工作的主要目标是允许我和我的朋友(谁坐在大学防火墙网络后面) )播放不能在Hamachi上工作的新游戏,因为它们没有配备LAN,需要一个永远在线的互联网连接(DRM)。 他的网络还使用流量整形和阻止UDP数据包,使在线游戏不可能。

本教程大量基于这里发现的但我已更新并添加了更多信息。

你会需要

Linux服务器或Linux VPS - 尽管本教程专门面向基于Debian的发行版,但OpenVPN配置将全面完成,您只需要调整几个命令和目录。 我在OpenVZ上进行了测试,但它应该在其他虚拟化平台上工作。

启用了两个内核模块 - 您将需要能够使用IP表的NAT表功能。 您还需要启用Tap / Tun设备。 如果您正在使用VPS,则需要联系您的托管服务提供商以启用这些功能,如果它们不可用 - 我在教程中指出,如果这些没有启用,我们会指出。

客户端 - 您将需要至少一个客户端连接到您的VPN - 这可以是Windows或Linux客户端,但是我将只显示Windows的教程 - Linux客户端配置将是一样的,所以你应该没事。

服务器

安装OpenVPN - 我们还需要openssl,以便安装它在这里:

apt-get install openvpn openssl

打开/ etc / default / openvpn并注释所有内容 - 这意味着OpenVPN会自动启动找到配置的任何VPN。 配置存储在/ etc / openvpn中 ,扩展名为.conf

现在我们需要创建一些证书。

cd /etc/openvpn
cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 ./easy-rsa

现在我们需要编辑我们要创建的证书的变量。

nano easy-rsa/vars

现在您需要更改此行(在顶部附近) export EASY_RSA =“` pwd”导出EASY_RSA =“/ etc / openvpn / easy-rsa”

那么您应该编辑以下内容来反映您的信息:

export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="me@myhost.mydomain"

然而,我把所有这些东西都保留下来,因为我并不关心游戏局域网的安全性。 如果您不在乎,请将它们全部保留。

保存并退出。

现在您需要运行此命令 - 命令是一个后跟一个空格的点,后跟一个点,后跟/ easy-rsa / vars - 如果您不包括它不会工作的空间

. ./easy-rsa/vars

它可能会说如下:如果你运行./clean-all,我将在/ etc / openvpn / easy-rsa / keys上做一个rm -rf -这是正常的。

然后运行这个命令不会给你任何输出。

./easy-rsa/clean-all

现在我们运行build-ca来获取证书颁发机构(ca)文件。 您可以使用刚刚在vars文件中设置的所有变量,只需按Enter键即可查看所有问题,您应该将OpenVPN视为通用名称。

./easy-rsa/build-ca OpenVPN

一旦完成,我们将构建服务器密钥。 您将再次询问一系列问题,只需输入所有问题,确保服务器是通用名称的默认值。 你会被问到两个是/否的问题在结束 - 放y和打入输入两者。

./easy-rsa/build-key-server server

现在我们将构建客户端密钥 - 重复此步骤,为每个客户端在VPN-1上允许许多客户端允许。 只需将client1更改为client2 ... client3等,并根据需要多次运行该命令。 与上述相同的交易,只需输入问题,并确保通用名称与在命令行上传递的变量相同,没有其他的。 对最后两个问题说是对的。

./easy-rsa/build-key client1

现在我们来创建Diffie Hellman参数:

./easy-rsa/build-dh

现在所有这些都完成了,你应该有一个名为keys的新目录位于这里: / etc / openvpn / easy-rsa / keys

我们需要使服务器配置文件 - 您可以调用这个任何你想要的,因为我们告诉OpenVPN加载它找到的所有配置。

nano /etc/openvpn/openvpn.conf

如果需要,进行以下更改后,将所有这些都放在其中 - 默认配置应该直接开箱即用:

  • 我已将端口设置为8080.默认端口是1194.我做了这个更改,因为一些防火墙将不允许连接到各种端口号。 您可以使用任何东西,但请确保您在客户端和服务器上进行更改。
  • 我也使用tcp为proto。 udp可能会给你更好的表现,但是再次,我必须设置tcp,因为udp被防火墙阻止。 如果您愿意,可以将其切换为udp,但请确保在客户端和服务器上都执行此操作。
  • 您可以根据需要更改设置DNS服务器的两行。 这些必须是可访问的服务器,用于VPN上的名称解析。 配置文件中的那些是Google的公共DNSNameservers,所以它们应该是正常的,除非你有自己的需要使用。
  • 您可能需要禁用数据流的压缩以挤出该额外的性能。 我没有遇到任何问题,因为所有的客户端和服务器都是相当高的电源。 如果您发现问题,请注意comp-lzo - 确保在服务器和客户端配置中执行此操作!
  • 如果要以不同的用户身份运行服务器或将其全部删除以作为root用户运行,则可能需要更改用户和组设置。
dev tun
proto tcp
port 8080


ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key
dh /etc/openvpn/easy-rsa/keys/dh1024.pem


user nobody
group nogroup
server 10.8.0.0 255.255.255.0


persist-key
persist-tun


status /var/log/openvpn-status.log
verb 3
client-to-client


push "redirect-gateway def1"
#set the dns servers
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"


log-append /var/log/openvpn
comp-lzo

一旦您保存了所有这些,并进行了任何更改,我们需要告诉我们的服务器如何处理网络上的各种客户端的互联网数据包:

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

为确保在重新启动服务器之后启用IP转发,您应该编辑“/etc/sysctl.conf”取消注释“net.ipv4.ip_forward = 1”

iptables命令假定具有互联网访问权限的设备是eth0。 如果您使用OpenVZ VPS,请将eth0替换为venet0。 要获取所有设备的列表,请键入ifconfig并根据需要更改命令。 如果您没有启用正确的内核模块,则此命令将失败:

警告:已弃用的配置文件/etc/modprobe.conf,所有配置文件都属于/etc/modprobe.d/。
FATAL:未找到模块ip_tables。
iptables v1.4.10:无法初始化iptables表`nat':表不存在(你需要insmod吗?)
也许iptables或者你的内核需要升级。

您可以使用此命令验证规则是否正确写入:

sudo iptables -L -t nat

而且,如果您犯了错误,并希望从IPTables中删除所有违规规则:

sudo iptables -F -t nat

现在我们完成了服务器并准备开始。

/etc/init.d/openvpn start

你应该得到一个成功的消息。 如果没有,请通过键入来检查错误日志

cat /var/log/openvpn

这是您可能会发现需要tun / tap隧道内核模块启用的地方。 如果您收到关于tun / tap适配器不可用或写保护的垃圾邮件,那么这很可能是这种情况。 你应该google任何其他错误。

客户端

您记得我们所有的这些安全证书,您需要将其中的一些发送给客户端。 现在,你应该以某种安全的方式发送它们,所以我建议使用ssh文件传输。

您需要传输以下文件:

ca.crt
client1.crt
client1.key

如果您有多个客户端,则需要获取其个人密钥和crt文件以及ca.crt文件。

将您从服务器获得的3个文件复制到openvpn / config目录。 然后,您需要在此目录中创建一个配置文件。 在Windows上,该文件具有扩展名ovpn。 我打电话给我的gamevpn.ovpn,但并不重要。

该文件的内容如下,您将需要对此安排进行任何更改,以反映您之前提供的任何服务器配置更改。 如果您没有对服务器进行任何更改,那么您唯一需要担心的事情就是。

  • 远程配置选项需要更改为主机服务器的IP和端口。
  • 证书和密钥文件需要与从服务器下载的证书和密钥文件相匹配。
dev tun
client
proto tcp
remote w.x.y.z 8080
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
comp-lzo
verb 3

保存文件。

在这一点之后,客户端就没有更多的Linux指令。

在Windows上,您现在需要运行OpenVPN GUI应用程序,如果您尚未将其删除,则该快捷方式将在桌面上。 确保以管理员身份运行此应用程序,否则将无法将相关的路由位和段添加到路由表中。

一旦此应用程序启动,请右键单击托盘图标, 然后单击连接 - 注意:如果 连接 后,互联网访问松动,则断开连接,并且恢复正常的路由表。

你应该得到知识产权,一切都应该好。 要测试它,请打开命令提示符窗口(start,cmd)并键入ping 10.8.0.1 - 如果您收到回复,那么一切都很好。 您还应该能够从服务器ping您的计算机,并ping新的VPN上的任何其他客户端。 如果您无法ping网络上的所有其他客户端,则不是世界的最后 - 如果您可以至少ping一次网络正在工作,并且只是被配置为不回复ping的单个客户端要求。 如果网络上没有客户端可以ping任何其他客户端,那么您可能会遇到问题。

我们现在需要测试互联网连接 - 但是在我们需要配置Windows以默认使用VPN连接之前 - 这些是Windows Vista / 7说明,但类似的操作将在XP上运行。

  • 转到控制面板 > 网络和互联网 > 网络和共享中心 > 更改适配器设置
  • 您需要右键单击此窗口中显示的适配器 ,其中包含“Tap-Win32(或64).....”信息。 点击重命名。 将其重命名为GameVPN,OpenVPN或类似软件。
  • 右键单击新重命名的网络连接并选择属性
  • 取消选中 QoS数据包调度程序Internet协议版本6旁边的框
  • 完成此操作后, 单击确定。
  • 您现在需要按alt显示连接窗口顶部的菜单。
  • 单击高级> 高级设置
  • 顶部框中会显示您的连接列表, 您需要使用右侧的箭头 将GameVPN或任何您调用 的箭头 移动到列表的顶部,然后单击确定。
  • 转到http://www.whatsmyip.org/

您的IP地址现在应该是服务器的IP地址。

应该是这样,你应该可以玩游戏,浏览互联网,通过VPN下载种子等。 您应该能够以LAN模式运行游戏,并通过其内部IP连接到其他客户端或连接到互联网上的游戏。

您可能会发现某些应用程序无论如何都无视您的最大努力,并使用默认的互联网连接,在这种情况下,请查找一个名为ForceBindIP的应用程序

希望这有助于某人因为花了我几年的时间才能找到一种方法让这个工作!

我在其他地方读过,OpenVPN的90%的问题与防火墙相关 - 祝你好运!

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏