通过 PPTP 连接到主机时访问虚拟网络上的访客

通过 PPTP 连接到主机时访问虚拟网络上的访客

我正在设置一台运行 Ubuntu 12.04 和 KVM 的开发机器,用于虚拟化。我有一个运行 Ubuntu 12.04 的客户端,可以通过 libvirt 分配的 IP 地址从主机访问它。客户端也可以访问互联网,没有问题。

但是,现在我想设置 PPTP,以便我可以连接到主机(从运行 Windows 7 的工作站)并直接访问客户机,而无需依赖 SSH 端口转发。

我可以从我的 W7 机器连接到主机(PPTP),但无法访问任何虚拟机(可以直接从主机访问)。

相关配置文件

cat /etc/network/interfaces

auto lo
iface lo inet loopback

# device: eth0
auto  eth0
iface eth0 inet static
  address   x.x.x.x
  broadcast x.x.x.x
  netmask   x.x.x.x
  gateway   x.x.x.x

# default route to access subnet
up route add -net x.x.x.x netmask x.x.x.x gw x.x.x.x eth0

virsh net-edit default

<network>
  <name>default</name>
  <uuid>xxxxxxxx-72ce-3c20-af0f-d3a010f1bef0</uuid>
  <forward mode='nat'/>
  <bridge name='virbr0' stp='on' delay='0' />
  <mac address='52:54:00:xx:xx:xx'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254' />
      <host mac='52:54:00:yy:yy:yy' name='web1' ip='192.168.122.11' />
    </dhcp>
  </ip>
</network>

cat /etc/pptpd.conf(删除注释行)

# TAG: option
#   Specifies the location of the PPP options file.
#   By default PPP looks in '/etc/ppp/options'
#
option /etc/ppp/pptpd-options

# TAG: logwtmp
#   Use wtmp(5) to record client connections and disconnections.
#
logwtmp

#(Recommended)
localip 192.168.122.1
remoteip 192.168.122.234-238,192.168.122.245

cat /etc/ppp/chap-secrets*

# Secrets for authentication using CHAP
# client    server  secret          IP addresses
xxxxx       *       yyyyyyyyyy              192.168.122.100

连接我的 W7 机器时,我得到了正确的 IP 地址,但当我尝试连接到ping192.168.122.11 的虚拟机时,我得到了

Reply from 192.168.122.1: Destination port unreachable.

我可能遗漏了一些琐碎的事情,但我无论如何也想不出那是什么。所以我求助于你,serverfault。

答案1

连接到 VPN 后,只需通过以下方式在 Windows 计算机上添加路由cmd

例如。开始 > 运行 >cmd.exe

route ADD 192.168.122.0 MASK 255.255.255.0  192.168.122.100 METRIC 0 
       destination^     ^mask                ^gateway   metric^    ^

只需根据需要设置参数即可。

您还需要确保在主机系统上相应地路由流量。iptables这是一个不错的选择。

例如。

iptables -t nat -I POSTROUTING -o ppp+ -s 192.168.122.0/24 -j MASQUERADE

如果您也想通过它访问互联网(即使用远程网关)

iptables -t nat -I POSTROUTING -o eth+ -s 192.168.122.0/24 -j MASQUERADE

OpenVPN

OpenVPN 有一个很好的功能,主机可以路由到客户端,但原理是一样的。如果你想走这条路,我在这里写了一个很好的指南,https://serverfault.com/a/403016/113375

答案2

我认为您需要设置一个虚拟接口,以便将您路由到服务器的网络。我曾在 OpenVPN 中成功实现过一次,但 PPTP 设置应该类似。

以下是我找到的一个看起来正是您所需要的操作方法:

http://pptpclient.sourceforge.net/routing.phtml#client-to-lan

相关内容