标签: nat

iptables nat 不存在

今天我在主机系统上的 iptables nat停止工作,我不知道发生了什么!(这很糟糕,我知道)

所有命令都以 root 用户身份执行。

如果我运行,$ iptables -t nat -L我会收到以下错误消息:

$ iptables -t nat -L
iptables v1.4.7: can't initialize iptables table `nat': Table does not exist (do you need to insmod?)
Perhaps iptables or your kernel needs to be upgraded.
Run Code Online (Sandbox Code Playgroud)

没有可用的进一步更新。我还用几个旧内核重新启动了服务器,但我总是收到相同的错误消息。

我的服务器在 CentOS 上运行,使用最新版本的官方 OpenVZ 内核。

$ uname -r
2.6.32-042stab088.4
Run Code Online (Sandbox Code Playgroud)

还测试了内核版本:2.6.32-042stab85.20 和 2.6.32-042stab084.26

grub.conf 中的第一个内核:

title OpenVZ (2.6.32-042stab088.4)
root (hd0,1)
kernel /vmlinuz-2.6.32-042stab088.4 ro root=/dev/md2 rd_NO_LUKS rd_NO_DM nomodeset crashkernel=auto SYSFONT=latarcyrheb-sun16 LANG=en_US.UTF-8 KEYTABLE=de
initrd /initramfs-2.6.32-042stab088.4.img
Run Code Online (Sandbox Code Playgroud)

安装了以下更新:

$ …
Run Code Online (Sandbox Code Playgroud)

nat iptables centos openvz

14
推荐指数
1
解决办法
4万
查看次数

从 LAN 内部访问 DNAT 网络服务器

我有一个带有路由器的小型网络,它与 Internet、服务器和本地网络中的一些工作站保持连接。

网络地图

服务器旨在从 Internet 访问,并且在路由器 iptables 中设置了几个 DNAT 条目,如下所示:

-A PREROUTING -i ppp0 -p tcp -m multiport --dports 22,25,80,443 -j DNAT --to-destination 192.168.2.10
Run Code Online (Sandbox Code Playgroud)

外部数据包通过ppp0接口到达路由器,内部数据包来自br-lan,实际上包括交换机和 WLAN 适配器。问题是,虽然外部访问工作正常,但尝试通过 DNS 解析的外部 IP(分配给ppp0)从 LAN 内部访问服务器失败。

我能够发明的唯一解决方案是向路由器添加/etc/hosts指向内部 IP 的静态条目,但由于没有通配符(并且我至少为该系统分配了三个顶级域,不包括数十个子域),这相当脆而且容易失败。你能提出更好的建议吗?

我只找到了这个问题,这不是很有帮助。

如果这是相关的,路由器运行带有 dnsmasq 的 OpenWRT 10.03 Kamikaze。

linux nat iptables

13
推荐指数
2
解决办法
2万
查看次数

没有 nat 的 IPv6 但如果更改 isp 呢?

除了使用 GoGoNet 之类的家用电脑上的 4to6 隧道之外,我还没有使用过 IPv6。我已经阅读了它的一般工作方式。不需要(或建议)NAT,每个客户端都使用公共 ipv6 地址,我理解防火墙的继续使用。根据我的理解,如果不使用 NAT、UAL 和让 ARIN 为您提供自己的全局范围,这意味着您局域网上所有系统上的 ipv6 地址将来自您的 isp 提供的范围。如果您更改 ISP,会发生什么?这是否意味着您必须更改整个局域网地址范围?

在典型的 ipv4 窗口商店中,我可能会遇到这样的情况:

Site1 Lan IPs: 192.168.1.0/24
Site2 Lan IPs: 10.0.0.0/24
Site1 Public IP: 11.12.13.1/29 (11.12.13.1 - 11.12.13.5 usable)
Site2 Public IP: 20.30.40.1/29 (20.30.40.1 - 20.30.40.5 usable)
Site-to-site VPN via firewalls

Site1:                                 Lan IP,         Public IP:Port
Hardware firewall/router             - 192.168.1.1,    11.12.13.1
Windows AD DC server (AD DNS server) - 192.168.1.10
Windows Exchange (email)             - 192.168.1.11,   11.12.13.2:25+443
Windows RDS (term server)            - 192.168.1.12,   11.12.13.3:3389 …
Run Code Online (Sandbox Code Playgroud)

nat ipv6

13
推荐指数
2
解决办法
3566
查看次数

vagrant box的公共静态ip

我有一个带有 1 个以太网卡和 2 个公共静态 IP(188.120.245.4 和 188.120.244.5)的服务器(Debian Squeeze)。

我想要什么:通过静态 IP (188.120.244.5) 访问设置虚拟框 (Ubuntu)。

我在尝试什么:

  • config.vm.forward_port - 好主意:在主机上用 188.120.244.5 设置接口“eth1:1”,并添加到 Vagrant 文件“config.vm.forward_port = hmm ..?”
  • config.vm.network :hostonly, "188.120.244.5" - 不工作。在主机上创建了新接口,IP 为“188.120.244.1”。当然 188.120.244.1 IP 不是我的,我无法通过这个 IP 访问我的服务器。
  • config.vm.network :bridged - 我很困惑这是如何工作的:)

我现在拥有的是:不工作的配置。

Debian-host-machine# cat Vagrantfile
Vagrant::Config.run do |config|
  config.vm.define :gitlab do |box_config|
    box_config.vm.box = "ubuntu"
    box_config.vm.host_name = "ubuntu"
    box_config.vm.network :bridged
    box_config.vm.network :hostonly, "188.120.244.5", :auto_config => false
  end
end

Debian-host-machine# ifconfig
eth1      Link encap:Ethernet  HWaddr 00:15:17:69:71:bb  
          inet addr:188.120.245.4  Bcast:188.120.247.255  Mask:255.255.248.0

lo        Link …
Run Code Online (Sandbox Code Playgroud)

networking nat routing vagrant

13
推荐指数
1
解决办法
4万
查看次数

如何在 Amazon EC2 VPC NAT Ami 上保留 iptables 配置?

我有一个像这样的小脚本来配置 iptables:

#!/bin/bash

PRE_STR="iptables -t nat -A PREROUTING -p tcp -j DNAT"
FOR_STR="iptables -A FORWARD -p tcp -j ACCEPT"


#####################################
# instances
CM="10.0.1.137"
MASTER="10.0.1.149"
MYSQL="10.0.1.83"
REPORTING="10.0.1.85"

#####################################
# Clear Iptables
iptables -F
iptables -t nat -F

#####################################
# Forward to enable Internet on private nodes
iptables -t nat -A POSTROUTING -j MASQUERADE


#####################################
# Port forwarding

forward()
{
        $PRE_STR --dport $1 --to $2:$3
        $FOR_STR --dport $3 -d $2
}

#what   from    to ip           to port
forward 3222    $CM             22
forward …
Run Code Online (Sandbox Code Playgroud)

nat iptables amazon-ec2 amazon-vpc

12
推荐指数
2
解决办法
2万
查看次数

如何使用 NAT 将 Linux 服务器设置为路由器

我们有一个简单的路由器,它具有对称类型的 NAT,但是由于该路由器没有为我们提供任何调试接口,我们无法确定特定数据包是否到达了 NAT。

因此,我们要设置一台 LINUX 计算机,使其成为具有对称 NAT 的路由器,这样我们就可以将所有数据包捕获到这个“NAT”并获得我们想要的信息。我们如何在 linux(Fedora 系统,内核 2.6.xx)上执行此操作?

linux nat routing fedora iptables

12
推荐指数
2
解决办法
3万
查看次数

基本的 iptables NAT 端口转发

我有三台机器:一台本地 PC(公共 IP 1.2.3.4)、数据中心中的 Ubuntu 10 服务器盒(5.6.7.8 公共 IP 上的 eth0),以及托管我网络外部网站的第三方服务器(假设216.34.181.45 上的斜杠)。

  • 使用 iptables,如何使用 5.6.7.8:8080 从本地机器访问 Slashdot?
  • 如果 Slashdot 与我的 Ubuntu 机器在同一个 LAN 上,这个过程会有所不同吗?
  • 这可以通过 NAT PREROUTING/POSTROUTING 来完成,还是我需要 MASQUERADE?

nat iptables port-forwarding

11
推荐指数
1
解决办法
3万
查看次数

NAT 网关 - 最大连接限制

我知道足够的网络是危险的。NAT 的底层细节并不是我特别了解的。

今天早些时候,我无意中发现自己参与了关于将一堆节点置于 NAT 网关后面的讨论。(1 个公共 IP 地址和 X 个私有 LAN 地址)。我调用了 TCP 协议中源和目标端口字段的 16 位限制(http://www.ietf.org/rfc/rfc793.txt - 第 15 页)并提到它会将我们限制为大约 65,000 个连接( 65536)。——我对那个答案不再那么有信心了。你能帮我提供一些细节吗?

我知道我们这边的传入端口(服务器端口)可以接受与 sourceIP x SourcePort 组合一样多的连接。让我们暂时忽略这些,重点关注源自 LAN、通过 NAT 网关并在随机端口的随机主机上结束的连接。

在普通的 [Linux] 系统上,我认为每个源 IP 的每个端口只能有 1 个传出连接。如果我们假设我们生活在一个简单的世界中,其中每个系统只有 1 个 IP 地址,那么“正常系统”将被限制为绝对最大 65536 个连接。

1) 在 TCP 中是单源 IP 限制为 65536 MAX 理论传出连接?

2) 还是每个远程主机的限制实际上是 65536 个连接?

2) [Written another way]:同一个源端口可以用于不同的remoteHostIP:RemotePort组合吗?

例如:(以下可以吗?)

Source IP   |Source Port |Remote IP|Remote Port   
192.168.0.20:36500   -->    8.8.8.8:23
192.168.0.20:36500   -->    8.8.4.4:23
Run Code Online (Sandbox Code Playgroud)

3) 问题 1 …

networking nat tcp

11
推荐指数
1
解决办法
2万
查看次数

Lync 客户端应通过 NAT 映射哪些端口?

我在 PC 和网络之间安装了带 NAT 的网关。PC 用户可以通过 Lync 客户端聊天,但不能呼叫或加入会议。Lync 客户端应通过 NAT 映射哪些端口以使用所有 Lync 设施?更新:问题实际上是关于Lync 客户端的NAT 端口映射

nat lync

11
推荐指数
1
解决办法
647
查看次数

如果两个本地系统在同一个端口上下载相同的资源会发生什么?

我知道 NAT 表。我只想知道如果私有局域网中的两个客户端想要在同一个端口上下载完全相同的资源会发生什么?换句话说,当一个数据包来自服务器时,路由器如何决定哪个客户端应该得到这个数据包?

如果我没记错的话,来自服务器的传入数据包具有路由器的目标 IP 地址,该地址是公共的并且两者都相同,并且目标的端口号在这种情况下也恰好相同。

路由器或服务器中是否有任何机制可以检测到这一点?或者这种行为一开始是可能的吗?

我搜索这样的问题这样,这是有道理的,错误加薪,因为端口忙,但我问两个独立的系统。


更新:从评论中我意识到我不够清楚,所以让我用一个例子再说一遍:

我只关心设备的“源”端口。假设我有两台笔记本电脑(192.168.2.10192.168.2.11),它们都从互联网上的同一台服务器下载相同的文件。它们每个都有一个操作系统,它生成一个随机端口,因此源 IP 和源端口将类似于:192.168.2.10:6321192.168.2.11:7132。我认为在 NAT 中,路由器会设置它的(公共)IP 地址以及来自笔记本电脑的端口,所以如果家用路由器的公共 IP 地址是65.82.23.32,这两个包将分别获得这些源 IP 和源端口 :65.82.23.32:632165.82.23.32:7132

现在,当响应返回时,路由器可以从端口号中找出哪个数据包用于哪个笔记本电脑,对吗?到目前为止,一切都很好。但是,如果两台笔记本电脑意外或有意地生成完全相同的源端口,会发生什么情况?例如:192.168.2.10:6000192.168.2.11:6000。现在路由器会像以前一样将它的公共 IP 地址设置为源 IP 地址,但是现在如果它尝试使用这些端口号,这些包将具有完全相同的源 IP 和源端口号,例如 :65.82.23.32:600065.82.23.32:6000

这就是我感到困惑的地方,当响应回来时,路由器如何决定哪个数据包用于哪个笔记本电脑?

在@mfinni 的回答之后,我注意到这不是 PAT 的工作方式!NAT 设备(此处为路由器)将为每台笔记本电脑分配唯一端口(私有 IP 地址),然后使用这些唯一端口(例如77777778)发送数据包。因此,当反应回来,很显然,这包是针对笔记本电脑从端口,那么路由器将这些转换65.82.23.32:777765.82.23.32:7778到- > 192.168.2.10:6000192.168.2.11:6000分别。

networking router nat port

11
推荐指数
4
解决办法
5822
查看次数