我正在尝试设置 OpenVPN 以侦听端口 443,然后使用该port-share选项将所有 HTTPS 流量传递给 Apache 。相关的配置片段是:
开放式VPN
local ${PUBLIC_IP}
port 443
port-share localhost 443
Run Code Online (Sandbox Code Playgroud)
带有 SSL 的 Apache
Listen localhost:443
Run Code Online (Sandbox Code Playgroud)
我的 OpenVPN 客户端连接正常,但打开启用 HTTPS 的页面时,出现错误。火狐说:
SSL 收到超过最大允许长度的记录。
(错误代码:ssl_error_rx_record_too_long)
卷曲 说
curl:(35) 错误:140770FC:SSL 例程:SSL23_GET_SERVER_HELLO:未知协议
该请求最终在 Apache 上,因为我在错误日志中看到以下消息:
[Wed Oct 06 01:10:20 2010] [error] [client 127.0.0.1] Invalid method in request \x16\x03\x01
[Wed Oct 06 01:11:04 2010] [error] [client 127.0.0.1] Invalid method in request \x16\x03\x01
[Wed Oct 06 01:11:51 2010] [error] [client 127.0.0.1] Invalid method in request \x16\x03\x01
Run Code Online (Sandbox Code Playgroud)
HTTPS …
我知道如何通过 Windows XP 中的命令行连接到 openvpn。我想不通的是如何结束连接。有什么想法吗?
我目前生活在一个封锁了许多网站并且与外界的网络连接不可靠的国家。我在 Linux 服务器上有两个 OpenVPN 端点(例如:vpn1 和 vpn2),用于绕过防火墙。我可以完全访问这些服务器。这很有效,除了我的 VPN 连接上的高包丢失。这种丢包率随时间的变化在 1% 到 30% 之间变化,并且似乎具有低相关性,大部分时间似乎是随机的。
我正在考虑设置一个家用路由器(也在 Linux 上),它维护与两个端点的 OpenVPN 连接,并将所有数据包发送到两个端点两次。vpn2 会将所有数据包从家庭发送到 vpn1。返回流量将直接从 vpn1 发送到家,也可以通过 vpn2 发送。
+------------+
| home |
+------------+
| |
| OpenVPN |
| links |
| |
~~~~~~~~~~~~~~~~~~ unreliable connection
| |
+----------+ +----------+
| vpn1 |---| vpn2 |
+----------+ +----------+
|
+------------+
| HTTP proxy |
+------------+
|
(internet)
Run Code Online (Sandbox Code Playgroud)
为清楚起见:家庭和 HTTP 代理之间的所有数据包都将被复制并通过不同路径发送,以增加其中之一到达的机会。如果两者都到达,则可以静默丢弃第一个第二个。
带宽使用不是问题,无论是在家庭端还是端点端。vpn1 和 vpn2 彼此靠近(3ms ping)并且具有可靠的连接。
关于如何使用 Linux 中可用的高级路由策略来实现这一点的任何指示?
我正在做一项合同的初步研究,以在大约 600 台运行 Linux CentOS 6 的远程服务器(+ 他们的 600 个私有 LAN)之间建立一个 VPN 网络。网络应该是基于星型的,因此每个远程服务器都连接到中央服务器以进入 VPN(我知道它是 SPOF,但这没关系,因为构建此 VPN 的主要应用程序将运行在无论如何都是中央服务器)。
我想使用 OpenVPN(它非常灵活,可以调整到我们需要的配置),但我想知道在如此大的网络上运行它的最佳实践是什么。例如,如果在 tun 模式下使用,它将在中央服务器上创建 600 个 tun 接口,我什至不知道它是否受支持和/或产生任何问题。
我对这么大的网络没有任何经验,所以我愿意接受任何建议和指示。谢谢!
我已经设置了一个 linux 机器(在 esxi5 上),它充当 OpenVPN 服务器。服务器配置为对客户端使用桥接,这基本上可以工作,但有一个例外。
如果客户端 ping 网络上的某些机器而不是服务器本身,则它不起作用。我排除了我所知道的一切(iptables 等)并运行 tcpdump 将其归结为以下内容:
问题:为什么br0设备不转发ARP回复给tap0设备?
我连接到一个 OpenVPN 服务器,该服务器配置了将 VPN 重定向为默认网关并推送我的内部 DNS 服务器的选项:
push "dhcp-option DNS 192.168.1.2"
push "redirect-gateway def1"
Run Code Online (Sandbox Code Playgroud)
当我做一个:
ipconfig /all
Run Code Online (Sandbox Code Playgroud)
我在列表中看到了我的 192.168.1.2 DNS 服务器。我也可以ping 192.168.1.1成功。
我的问题是,当我尝试时,ping somesite.internal.dom我没有从我的内部 DNS 服务器获得结果。我从 OpenDNS(它正在处理我的非 VPN DNS 流量)得到结果,告诉我该站点不存在。
如果我ping somesite.internal.dom来自直接连接到网络的机器(即未连接到 VPN),它会正确解析。
如何让我的 OpenVPN 连接先尝试 VPN DNS 服务器?或者完全忽略本地 DNS 流量?
我正在尝试为我的 OpenVPN 服务器创建一个高可用性环境。我通过拥有两个相同的 VPN 服务器并在我的客户端配置中指定多个远程服务器来做到这一点:
# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote vpn1 1194
remote vpn2 1194
remote-random
Run Code Online (Sandbox Code Playgroud)
这似乎有效。我有一个带有两个 VPN 服务器和两个客户端的 Vagrant 环境。一旦网络运行并且我在其中一台 VPN 服务器上停止 OpenVPN,另一台服务器将接管。
但是,在其他服务器接管之前,它实际执行此操作还需要很长时间。如果我的客户互相 ping 通,则在 ping 继续之前大约需要 3 分钟。我的猜测是客户端正在尝试重新连接,超时是这里的问题。
在我的 OpenVPN 中,client.conf我使用了以下设置,但似乎没有任何区别(是的,我在更改配置后在客户端上重新启动了 OpenVPN):
connect-retry 2
connect-retry-max 2
Run Code Online (Sandbox Code Playgroud)
如何调整客户端的连接超时,使它们更快地切换到不同的 OpenVPN 服务器?
我有一组用户通过OpenVPN TCP 和 UDP(2 个服务)连接到我的服务器。这两种服务在运行tun0和tun1
我希望能够使用 TC 命令将每个用户的带宽限制为 5mb/s 上升和 5mb/s 下降。
这很容易用 PPTP 实现,因为每个用户都有自己的界面,所以我可以为该界面创建一个新的类/过滤器,使用以下内容将其限制为我想要的速度限制:
IF=<taken from up script, i.e. ppp1>
tc qdisc del dev $IF root
tc qdisc add dev $IF root handle 1: cbq avpkt 1000 bandwidth 100mbit
tc class add dev $IF parent 1: classid 1:1 cbq rate 10mbit allot 1500 prio 5 bounded isolated
tc filter add dev $IF parent 1: protocol ip prio 16 u32 match ip src 0.0.0.0/0 flowid 1:1 …Run Code Online (Sandbox Code Playgroud) 我在 CentOS 6 上运行 OpenVPN 2.3.7。我正在使用路由 (tun) 并且有两个 OpenVPN 实例。在第二个实例中,我希望有两个客户端彼此可见,即 ping、访问端口等。它们都在同一个子网中,所以应该相当简单,它们通过静态地址配置CCD。
我希望两个客户端能够通过他们的 OpenVPN LAN IP 地址看到对方,而无需client-to-client在 server.conf 中启用。
我很确定它可以用 iptables 来完成,我用它作为我的防火墙,虽然我使用 CSF,但它是 iptables 的包装器。
这些是客户端的 IPv4 地址:
OpenVPN Client #1: 10.8.2.14
OpenVPN Client #2: 10.8.2.17
Run Code Online (Sandbox Code Playgroud)
我需要客户端 #1 才能访问在客户端 2 上运行的服务,如果需要响应,我想兼容性客户端 #2 可以查看客户端 #1。
我在 OpenVPN 服务器上尝试了几个 FORWARD 链规则,但是我无法在两个客户端之间进行任何通信。OpenVPN服务器明显可以ping通两个客户端,客户端可以ping通OpenVPN服务器网关,客户端明显看不到对方。
我已经尝试过但没有奏效的一些规则:
iptables -A FORWARD -s 10.8.2.14 -d 10.8.2.17 -j ACCEPT
iptables -A FORWARD -s 10.8.2.17 -d 10.8.2.14 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
我正在寻找有关 iptables 的帮助,以使两个客户端彼此可见,而无需启用客户端到客户端,请参阅这是对两个客户端的特殊要求,在其他任何地方都不需要。
另一种方法是通过 NAT 在 VPN 客户端上公开服务,但为了安全起见,我宁愿避免这样做。
任何见解都会有所帮助!
谢谢,
詹姆士
我的第一个想法是使用类似的东西,openssl s_client但这只支持 TCP 而不是 UDP,似乎需要一些特殊的魔法才能让 TLS over UDP 工作,我如何与之交互并获得证书链的转储?(我特别需要证书,而不是有关它们的信息)
openvpn ×10
networking ×3
routing ×2
vpn ×2
apache-2.2 ×1
arp ×1
bridge ×1
centos ×1
ip-routing ×1
linux ×1
scaling ×1
ssl ×1
tap ×1
tls ×1
ubuntu ×1
vmware-esxi ×1