与 LAN 客户端 VirtualBox 共享 OpenVPN 客户端连接时出现严重性能问题

与 LAN 客户端 VirtualBox 共享 OpenVPN 客户端连接时出现严重性能问题

我正在尝试在 Virtualbox 中建立一个内部网络,以便与多个充当客户端的虚拟机共享一个 openvpn 客户端隧道,这些虚拟机应该与 VPN 隧道接口之外的所有内容完全隔离,以防止客户端虚拟机泄露我的真实 IP 地址。

我的设置包括 1 个运行 Ubuntu Server 的虚拟机,以及多个连接到该虚拟机以访问服务器虚拟机具有的 openvpn 连接的客户端虚拟机。服务器虚拟机通过 eth0 作为 NAT 连接以访问互联网连接。此虚拟机还有一个 eth1 接口,该接口连接到 Virtualbox 内部网络,其他虚拟机客户端使用该网络连接到互联网。Dnsmasq 在 eth1 上运行以向客户端提供 ip,并且 iptables 配置为将所有流量从 eth1 转发到 tun0,即服务器上的 openvpn tun 适配器。

到目前为止,这已部分成功。我可以让我的客户端通过内部网络与服务器通信,并通过服务器上配置的 openvpn 隧道访问互联网,但客户端在互联网上遇到严重的连接和性能问题,而服务器本身在通过 vpn 访问互联网时没有问题。我研究了这个问题,发现 mtu 计时存在问题,因为我的主机已经连接到 VPN,服务器 VM 也连接到另一个 VM,这会增加填充并可能造成碎片和性能问题。我需要一个不需要修改主机的 vpn 连接的解决方案,一切都必须在 virtualbox 和 VM 中完成。我尝试将选项 tun-mtu 1400 和 mssfix 添加到我的服务器 VM 上的 openvpn 客户端配置文件中,但 openvpn 拒绝连接。我尝试通过将 mtu 大小设置为 1400 来从我的客户端 VM 端修复此问题,但尽管重新启动并重置了网络适配器,问题仍未解决。但是,服务器虚拟机本身在通过 vpn 保持正常性能方面没有问题,只有内部网络上的客户端在使用互联网时遇到了问题。尝试这两种解决方案后,我测试了从客户端通过 putty 访问我的服务器虚拟机并通过 HTTP 下载文件,结果表明客户端虚拟机和服务器虚拟机在内部网络上没有性能问题。目前我不知道为什么客户端的 LAN 访问没有问题,而互联网访问却有问题。客户端能够使用 icmp 进行 ping,下载文件(速度比正常速度慢得多),并部分访问一些网站,这让我相信存在 mtu 问题。但是,我不知道下一步该怎么做才能解决这个问题,我尝试了所有我知道的解决方案。

这是有关我的设置的更多信息,我真的希望有人可以帮助我正确启动和运行它,因为我已经花了两天多的几个小时试图让它工作但到目前为止没有任何成功,它真的开始让我生气并让我失去耐心。

基本布局图像(帮助您理解): 布局

显示客户端连接问题的图像: 问题

服务器虚拟机上的 Ifconfig 显示所有网络接口:

root@server1:/var/www# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 08:00:27:8b:b4:cb
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe8b:b4cb/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:126546 errors:0 dropped:0 overruns:0 frame:0
          TX packets:75182 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:23817797 (23.8 MB)  TX bytes:9685507 (9.6 MB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:37:98:0c
          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe37:980c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:46043 errors:0 dropped:0 overruns:0 frame:0
          TX packets:103573 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:3105270 (3.1 MB)  TX bytes:550239993 (550.2 MB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:247 errors:0 dropped:0 overruns:0 frame:0
          TX packets:247 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:19597 (19.5 KB)  TX bytes:19597 (19.5 KB)

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.xxx.x.x  P-t-P:10.xxx.x.x  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:37018 errors:0 dropped:0 overruns:0 frame:0
          TX packets:20921 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:51937120 (51.9 MB)  TX bytes:1148212 (1.1 MB)

/etc/network/interfaces 设置:

root@server1:/var/www# cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

# Virtualbox internal Network
auto eth1
iface eth1 inet static
address 192.168.1.1
netmask 255.255.255.0

Iptables:

root@server1:/var/www# iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  192.168.1.0/24       anywhere             ctstate NEW
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Openvpn 配置文件:

client
dev tun
proto udp
remote xxx.xxx.xxx.xxx 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
tls-client
remote-cert-tls server
auth-user-pass
comp-lzo
verb 1
reneg-sec 0
auth-user-pass login.conf

相关内容