![与 LAN 客户端 VirtualBox 共享 OpenVPN 客户端连接时出现严重性能问题](https://linux22.com/image/624441/%E4%B8%8E%20LAN%20%E5%AE%A2%E6%88%B7%E7%AB%AF%20VirtualBox%20%E5%85%B1%E4%BA%AB%20OpenVPN%20%E5%AE%A2%E6%88%B7%E7%AB%AF%E8%BF%9E%E6%8E%A5%E6%97%B6%E5%87%BA%E7%8E%B0%E4%B8%A5%E9%87%8D%E6%80%A7%E8%83%BD%E9%97%AE%E9%A2%98.png)
我正在尝试在 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