寻找关于设备(或我猜的设备)的建议,以便为我的家庭网络执行路由器/防火墙/vpn/vlan/nat 功能。现在,我正在用 IPCop 盒来做这件事,但我更喜欢少一点自己动手。
要求:
我正在考虑比典型的蓝色盒子更进一步的东西(或者它们是否足够?)。
我有一个盒子设置为路由器,使用 Iptables(伪装),记录所有网络流量。
问题:
从 LAN IP 到 WAN 的连接显示正常,即 SRC=192.168.32.10 -> DST=60.242.67.190
但是对于从 WAN 到 LAN 的流量,它将显示 WAN IP 作为源,但路由器 IP 作为目的地,然后是路由器 -> LAN IP。
即 SRC=60.242.67.190 -> DST=192.168.32.199 SRC=192.168.32.199(路由器) -> DST=192.168.32.10
如何配置它以正确记录对话?
SRC=192.168.32.10 -> DST=60.242.67.190 SRC=60.242.67.190 > DST=192.168.32.10
任何帮助表示赞赏,干杯
我希望为 SYSLOG 和 NetFlow 数据复制 UDP 流量,并希望使用 iptables 来做到这一点,但到目前为止我运气不佳。
我知道其他用户空间软件包可以实现这一点,但它们的开发人员似乎并没有很好地维护它们,因此如果可能的话,我宁愿避免使用它们。
这应该非常简单,但对于我的生活,我无法让它工作。我一定是在做蠢事。
我有一个带有公共 IP 地址的 PFsense 服务器。后面是三个局域网段:
[ Internet ] <---> [ pfSense]
+----- 192.168.1.1/24 ---> (multiple servers)
+----- 192.168.2.1/24 ---> (multiple servers)
+----- 172.16.1.1/24 ---> (multiple machines)
Run Code Online (Sandbox Code Playgroud)
我有一个地址192.168.1.31位于 pfSense 服务器后面的新服务器,我想给它一个公共 IP。我以为我会用 1:1 NAT 来做到这一点,但无论我尝试过什么,它都不起作用。这是我所做的:
192.168.1.31/32内部子网。192.168.1.31/32,端口范围HTTP- HTTP。我对 4000 年代的另一个端口做了同样的事情,我想在那里运行 SSH。完成上述所有操作后,我无法通过 HTTP 访问新 IP,也无法通过我选择的备用 SSH 端口通过 SSH 连接到新机器。
我将虚拟 IP 更改为“代理 ARP”,然后更改为“其他”,但这些都不起作用......
奇怪的是,我可以 …
我在 Debian Squeeze 盒子上使用 Virtualbox 4.0.10。我有一个用于托管游戏服务器的 Windows 7 VM。设置 NAT 和端口重定向后,客户端可以连接到 VM,但游戏服务器显示它正在从 NAT 网关 IP (10.0.2.2) 获取连接。我需要游戏服务器从实际的公共 Internet 客户端 IP 获取连接,以便我可以在游戏服务器中设置 IP 白名单。
这台 Debian 机器直接连接到互联网。我能做些什么来完成这项工作?猜猜这不是 VirtualBox 问题,可以使用虚拟网络接口左右解决该问题,但不知道该怎么做。猜猜这不是 Virtualbox probmem,我可以让它与桥接接口一起工作。
我有一个 Bind 9 DNS 服务器位于 NAT 防火墙后面,假设面向 Internet 的 IP 是 1.2.3.4
对传出流量没有限制,端口 53 (TCP/UDP) 从 1.2.3.4 转发到内部 DNS 服务器 (10.0.0.1)。VPS 或内部 Bind 9 服务器上没有 IP 表规则。
从位于互联网其他地方的远程 Linux VPS,nslookup 工作正常
# nslookup foo.example.com 1.2.3.4
Server: 1.2.3.4
Address: 1.2.3.4#53
Name: foo.example.com
Addresss: 9.9.9.9
Run Code Online (Sandbox Code Playgroud)
但是,在host远程 VPS 上使用该命令时,我收到以下输出:
# host foo.example.com 1.2.3.4
;; reply from unexpected source: 1.2.3.4#13731, expected 1.2.3.4#53
;; reply from unexpected source: 1.2.3.4#13731, expected 1.2.3.4#53
;; connection timed out; no servers could be reached.
Run Code Online (Sandbox Code Playgroud)
从 VPS,我可以建立到 1.2.3.4:53 …
作为一个组织,我们刚刚请求了我们的第一个 IPv6 分配。目前,我们是一个完全 IPv4 的组织,在我们的边缘路由器上配置了全球 IPv4 地址分配,并(主要)用于 NAT,通过边缘防火墙到内部托管的具有私有 IPv4 地址的 Web 服务器。
我很欣赏让我们的面向外部的服务可用于 IPv6 互联网的一种方法是在内部网络中实施 IPv6 双栈,并直接将全球可访问的 IPv6 地址(除了现有的 IPv4 地址)分配给这些服务器。
然而,即使在阅读了大量关于 IPv6 过渡技术和 NAT 在 IPv6 世界中的利弊的帖子和文章之后,我仍然不完全确定我们是否可以从本质上复制我们现有的设置,但使用 IPv6 地址,即我们可以在我们的边缘路由器上配置一个全局可路由的 IPv6 接口,在我们的防火墙上配置一个关联的 IPv6“外部”接口,并简单地将全球面向 IPv6 地址的 1:1 NAT 配置为 IPv4 地址?
这显然基于以下原则:我们与 ISP 有 IPv6 BGP 对等安排,并且我们的内部寻址需求由 RFC1918 满足,但我们希望使选定的外部服务 IPv6 可访问。
我有 FreeBSD 路由器:
#uname
9.1-STABLE FreeBSD 9.1-STABLE #0: Fri Jan 18 16:20:47 YEKT 2013
Run Code Online (Sandbox Code Playgroud)
这是一台拥有大量内存的强大计算机
#top -S
last pid: 45076; load averages: 1.54, 1.46, 1.29 up 0+21:13:28 19:23:46
84 processes: 2 running, 81 sleeping, 1 waiting
CPU: 3.1% user, 0.0% nice, 32.1% system, 5.3% interrupt, 59.5% idle
Mem: 390M Active, 1441M Inact, 785M Wired, 799M Buf, 5008M Free
Swap: 8192M Total, 8192M Free
PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND
11 root 4 155 ki31 …Run Code Online (Sandbox Code Playgroud) 我有一个“服务器 A”,它附加了多个 IP,如下所示:
eth0:0 1.1.1.1
eth0:1 1.1.1.2
eth0:2 1.1.1.3
Run Code Online (Sandbox Code Playgroud)
我有另一个“服务器 B”,它也附加了多个 IP,如下所示:
eth0:0 2.2.2.1
eth0:1 2.2.2.2
eth0:2 2.2.2.3
Run Code Online (Sandbox Code Playgroud)
现在,我想在“服务器 A”上设置 iptables,以将“eth0:2”上的所有传入流量转发/NAT 到“服务器 B”上的 IP 2.2.2.3。
我已经验证“服务器 A”能够在 IP 2.2.2.3 上与“服务器 B”“对话”。Ping 和 telnet 打开端口工作得很好,我打开了转发标志(net.ipv4.ip_forward=1)
我尝试了多种不同的方式,DNAT、SNAT、MASQUERADE 等,但我无法获得任何工作。
如果我尝试在同一服务器上的 IP 之间转发流量,这条线可以正常工作:
iptables -t nat -A PREROUTING -d 1.1.1.3 -j DNAT --to-destination 1.1.1.2
Run Code Online (Sandbox Code Playgroud)
但是如果我把“1.1.1.2”换成“2.2.2.3”,它就不起作用了。
我假设我需要第二个 iptable 规则来解决它。我尝试了以下 POSTROUTING 规则但没有任何运气(不是同时):
iptables -t nat -A POSTROUTING -d 2.2.2.3 -j MASQUERADE
iptables -t nat -A POSTROUTING -d 2.2.2.3 -j SNAT --to 1.1.1.3
iptables -t nat -A …Run Code Online (Sandbox Code Playgroud) 我在 VPC 中的 Amazon EC2 中有一组服务器。在这个 VPC 中,我有一个私有子网和一个公共子网。在公共子网中,我在 t2.micro 实例上设置了一台 NAT 机器,它基本上在启动时运行这个 NAT 脚本,将规则注入 iptables。从私有子网内的机器从互联网下载文件工作正常。
但是,我将外部高带宽 FTP 服务器上直接从我的 NAT 机器上的文件下载速度与从我的私有子网内的机器(通过同一台 NAT 机器)的下载速度进行了比较。有一个非常显着的差异:从 NAT 机器下载大约 10MB/s,而从私有子网内的机器下载时大约为 1MB/s。
NAT 机器上没有 CPU 使用率,因此这不是瓶颈。在使用更大的机器(具有“中等网络性能”的 m3.medium 和具有“高网络性能”的 m3.xlarge)尝试相同的测试时,我也无法获得大于 2.5MB/s 的下载速度。
这是可以(并且应该)调整的一般 NAT 问题吗?性能下降从何而来?
更新
通过一些测试,我可以缩小这个问题的范围。当我从 2013 年开始使用 Ubuntu 12.04 或 Amazon Linux NAT 机器时,一切运行顺利,我获得了完整的下载速度,即使在最小的 t2.micro 实例上也是如此。无论我使用 PV 还是 HVM 机器都没有关系。问题似乎与内核有关。这些旧机器的内核版本为 3.4.x,而较新的 Amazon Linux NAT 机器或 Ubunut 14.XX 的内核版本为 3.14.XX。有没有办法调整较新的机器?
nat ×10
firewall ×3
linux ×3
iptables ×2
amazon-ec2 ×1
amazon-vpc ×1
bind ×1
freebsd ×1
ipv4 ×1
ipv6 ×1
networking ×1
pfsense ×1
router ×1
ubuntu-12.04 ×1
virtualbox ×1
vlan ×1
vpn ×1