我已经搜索并尝试了一些建议,但我还无法让它发挥作用,但是......
我的主机运行的是 Ubuntu。我安装了 VirtualBox,创建了一个仅主机适配器,将主机 IP 设置为 192.168.15.1,然后关闭了适配器的 DHCP 服务器。然后我创建了来宾(Win XP),并将 IP 设置为 192.168.15.101/24,并将 DG 设置为 192.168.15.1 我可以从主机 ping 到来宾,反之亦然。
然后我在主机上安装了OpenVPN。创建了我自己的 CA、服务器证书/密钥和客户端证书/密钥。将 OpenVPN 服务器配置设置为将 192.168.15.0/24 路由推送到任何 VPN 客户端。我将路由器设置为将 UDP 1194 转发到 OpenVPN 服务器并测试了连接。
OpenVPN 客户端是在另一台笔记本电脑上运行的 Debian。一旦建立 VPN 隧道,VPN 客户端 (10.8.0.6) 就可以 ping VPN 主机 (10.8.0.1),反之亦然。客户端还可以 ping 位于 192.168.15.1 的主机“仅主机”IP,没有任何问题。
我的问题是让 Open VPN Client (10.8.0.6) 与 VM Guest (192.168.15.101) 进行通信。我认为 VM Guest (XP) 不知道 VPN 客户端的存在,它无法将流量/响应路由到 10.8.0.6。
您能否 1) 告诉我缺少哪些步骤以及 2) 如何解决这个问题?
谢谢。
OpenVPN 服务器/VirtualBox 主机的 IPTABLES 输出...
root@xxxxxxxxxxxx:~# iptables -L -nv
Chain INPUT (policy ACCEPT 48 packets, 53304 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 35 packets, 2992 bytes)
pkts bytes target prot opt in out source destination
解决方案 缺少的部分是 ip 转发。我需要编辑 /etc/sysctl.conf 并更改此内容:
# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1
对此
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
谢谢豪克·拉格!
答案1
您必须检查防火墙配置是否允许转发:
iptables -L -nv
但仅将防火墙配置为允许路由还不够。路由功能本身必须在内核中启用。如果内核甚至不尝试路由,那么防火墙是否让数据包通过并不重要。您可以使用以下命令检查路由状态
cat /proc/sys/net/ipv4/ip_forward
返回 1(启用路由)或 0(禁用路由),后者通常是默认值。您可以使用以下命令更改此设置
echo 1 >/proc/sys/net/ipv4/ip_forward
可以通过例如进行永久更改/etc/sysctl.conf
。