我有一个新的 Xen 安装,我想在其上运行虚拟机。我的托管商为我提供了两个位于不同子网的独立 IP,即 xxxx 和 yyyy
我想在 Xen 上设置 pfSense 并为其分配 yyyy,以便它可充当其他虚拟机的路由器和 DHCP,为它们提供 192.168.0.0/16 子网中的地址。可以这样做吗?我应该如何在 Xen 上配置网络来实现这一点?
我已经在 sysctl 中设置了数据包转发
net.ipv4.ip_forward = 1
现在 pfSense 可以 ping 和 traceroute 互联网上的资源。但显然无法通过其 IP yyyy 从互联网访问
答案1
需要澄清的是,xxxx 和 yyyy 都是公共 IP?因此,您将使用 xxxx 作为可供外部访问的面向公众的 IP,但您想阻止互联网访问 yyyy?
虽然这与主题略有偏离,但我建议(如果您有 2 个网卡)创建一个绑定通道,这样您的 2 个公共 IP 就有了一些冗余。
对于您想要提供“路由”(这是一个 nat 网关吗?)和 dhcp 的内部端,您可能应该使用私有 IP。您需要它们位于同一个网络中,并且只有 2 个 IP,您将没有其他虚拟机的任何东西。
但是对于您的具体问题,答案是肯定的,您可以这样做。当您设置 pfsense 时,有一个配置工具,它会询问您一些有关网络的问题。如果您使用的是 vm ovf,那么在 vm 的“注释”中它会告诉您如何设置它。无论如何,只需浏览 Web GUI 或命令行问题。告诉它您的外部 IP,您的内部子网(192.168.0.0/16)
总而言之,默认情况下,pfSense 允许您的 LAN 和 WAN 之间进行出站 nat。
下面将显示所有自动创建的规则,如果您需要自定义它们,可以删除它们。
go to Firewall -> NAT -> Outbound, and enable AON / Manual Outbound NAT.
旁注:请注意,在 xen 环境中,除非这种情况发生变化,否则您获得的 vnic 速度将限制为 100Mbps。我不确定这是否仍然如此,因为我因此换用了 esxi。
我想得到一些澄清。您的 xxxx 可以从互联网访问吗?我看到您提到您可以退出。如果您无法重新进入,这可能是防火墙问题。
您是否可以从任何地方访问内部(或外部)接口?我的意思是,您可以调出 GUI 吗?假设您的内部网络位于 RFC1918 空间,请确保 pfSense 的内部接口也位于同一网络上。通过 ping 进行验证,并确保让 pfSense 知道这是您的内部接口。您应该能够使用您选择的浏览器浏览它。
进入 GUI 后,您将看到类似于家用路由器的内容。您可以设置端口转发并调整 NAT 设置。默认情况下,pfSense 会将您的内部网络 NAT 出去,但不进行任何端口转发。
我想我仍然不清楚您是否有外部访问权限?如果您能够从 pfSense 框中退出,并且可以 ping 您的内部网络,假设您没有接触 NAT,它应该可以工作。您能详细说明一下您当前的配置吗?您不能使用 yyyy 作为您的内部接口(除非您可能使用您的局域网可以与之通信的子接口并将其 nat 到 yyyy,但这有点荒谬)
LAN(192.168.1.0/24)-> pfSense 内部(192.168.1.254)-> NAT -> pfSense 外部(xxxx)-> 互联网。
仅根据您的入站防火墙规则和端口转发才允许返回流量。
为了提供更多帮助,您可以执行以下操作:
从你的 pfSense,将你的 ping 粘贴到 google.com 从你的 pfSense,将 ping 粘贴到你的一台内部局域网机器
一定要删除你的公共 IP:)
答案2
假设您在该物理机器上只有一个网络接口,您将不得不在路由和防火墙方面做一些调整。这是因为一个 NIC 实际上必须与 3 个不同的网络通信:1. 您的 ISP;2. 您的 yyyy 是用于 LAN 的 pfSense 路由器/网关;3. 面向内部 LAN 的 192.168.0.0/16 子网。您可以查看 vtun(Debian/Ubuntu)来创建虚拟网络。
您曾说过:“pfsense 可以 ping 和跟踪互联网上的资源。但显然无法通过其 IP yyyy 从互联网访问”。这表示 xxxx 服务器上的路由问题,我推测该服务器是带有 Xen(和 pfSense)虚拟机的物理机。请检查您是否可以从 xxxx 访问 yyyy 检查主机和虚拟机上是否通过 tcp/udp 设置了正确的路由(如果它们可以访问其他主机和虚拟机)(如果您需要查看那里发生了什么,netcat 和 tcpdump 都派上用场)。Netstat -rn
为您提供路由。如果缺少路由,您可以使用以下方法:ip add route add y.y.y.y dev ethX
另一件要检查的事情是 xxxx 机器上的防火墙。检查它是否允许流量通过。“net.ipv4.ip_forward = 1”是一回事,但 iptables 过滤或 DENY 策略又是另一回事。
为了使整个通信正常工作,每台机器都需要知道如何到达另一台机器。因此,请测试各种组合,如果您在某个地方遇到困难,请检查下一跳,即如果 pfSense 虚拟机无法访问 Internet,请检查它是否有默认路由条目(最有可能是通过 xxxx)并且知道如何到达 xxxx。
这些有关路由的链接可能会有用: http://www.lartc.org/lartc.html也 http://www.policyrouting.org/iproute2.doc.html