标签: nat

iptables:nat 表中的内置 INPUT 链?

我有一个运行 linux 2.6.38-rc8 的 Gentoo Linux 系统。我还有一台运行 Ubuntu 和 linux 2.6.35-27 的机器。我还有一台运行 Debian Unstable 和 linux 2.6.37-2 的虚拟机。

在 Gentoo 和 Debian 系统上,除了 PREROUTING、OUTPUT 和 POSTROUTING 之外,我的 nat 表中还内置了一个 INPUT 链。在 Ubuntu 上,我只有 PREROUTING、OUTPUT 和 POSTROUTING。

我可以使用这个 INPUT 链来使用 SNAT 来修改发往本地机器的数据包的来源(想象一下模拟传入的欺骗 IP 到本地应用程序或只是为了测试虚拟主机配置)。这在 Gentoo 和 Debian 上有 2 个防火墙规则是可能的,但在 Ubuntu 上似乎不是这样。我四处寻找有关 SNAT 目标和 nat 表的 INPUT 链更改的文档,但找不到任何内容。

有谁知道这是一个配置问题还是刚刚添加到最新版本的 linux 中?

nat iptables

5
推荐指数
1
解决办法
5248
查看次数

NAT 反射,还是拆分 DNS?

我正在研究具有三个地理位置的网络重组,但将共享一些服务。其中两个位置有工作站,一个只有服务器(在 CoLo 设施中)。我们将运行 PfSense 防火墙,多个主机将在 LAN 内提供服务并通过端口转发到 Internet。

在绑定中运行 4 个不同的 DNS 视图似乎不值得麻烦,但听起来 PfSense 中利用 NAT 反射的负载和配置开销会相当可观。每个人的注意事项是什么,或者还有其他选择吗?

domain-name-system nat internal-dns pfsense

5
推荐指数
1
解决办法
3492
查看次数

使用 iptables 进行安全 NAT 设置

我有一台运行 Debian 的设备,需要充当互联网网关。最重要的是,我想提供一个防火墙,不仅可以阻止入站流量,还可以阻止出站流量。我认为 iptables 应该能够完成这项工作。

问题:我已经正确配置了 NAT(我认为?),但是一旦我将默认策略设置为 DROP 并添加规则以允许来自 LAN 内部的 HTTP 流量,HTTP 就不会通过。所以基本上我的规则似乎不起作用。

下面是我用于 iptables 的初始化脚本。该设备有两个网卡,分别是 eth0(WAN 接口)和 eth1(LAN 接口)。

echo 1 > /proc/sys/net/ipv4/ip_forward

# Flush tables
iptables -F
iptables -t nat -F

# Set policies
iptables -P INPUT DROP
iptables -P OUTPUT DROP

# NAT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT

# Allow outbound HTTP from LAN? 
iptables -A FORWARD -i …
Run Code Online (Sandbox Code Playgroud)

debian firewall nat iptables

5
推荐指数
1
解决办法
4208
查看次数

OS X 10.8:将本地发起的 ssh 连接重定向到 localhost:22

我需要破解 OS X pf 以将所有 ssh 连接从用户重定向到这台机器。我想要,在做的时候

$ ssh google.com
Run Code Online (Sandbox Code Playgroud)

得到相同的结果

$ ssh localhost
Run Code Online (Sandbox Code Playgroud)

即连接到我本地运行的 sshd。

在最近的 Linux 下,这将是:

# iptables -t nat -A OUTPUT -p tcp --dport 22 -m owner --uid-owner theuser -j REDIRECT
Run Code Online (Sandbox Code Playgroud)

在 OS X 10.8 下,似乎有 2 种方法 - ipfw 和 pf。两者都不起作用。ipfw:

# ipfw flush
# ipfw add 50 fwd 127.0.0.1,22 tcp from any to any 22 uid theuser
Run Code Online (Sandbox Code Playgroud)

如果我删除该uid theuser部分,重定向将起作用,减去用户的东西。如果我把uid指令留在那里,网络堆栈就会死掉,系统很快就会变得无法使用;没有了ipfw,没有了ps,没有了kill

根据手册页,不推荐使用 ipfw,因此应改用数据包过滤器:

# sysctl -w …
Run Code Online (Sandbox Code Playgroud)

apple nat routing pf ipfw

5
推荐指数
1
解决办法
4869
查看次数

打孔需要一个 UDP 会合服务器还是一个 TCP 会合服务器?

我正在努力解决这个问题......

我想连接两个用户...

这些用户已经连接到 TCP 服务器,它知道公共 ip 和连接 TCP 端口。我希望使用到服务器的现有连接来在我的用户之间创建 p2p 连接,因为要求他们连接到另一个 UDP 服务器以了解他们连接的公共端口是多余的。

是否有可能在不创建另一个服务器(这次是 UDP)的情况下解决这个问题?

firewall nat tcp udp

5
推荐指数
1
解决办法
4237
查看次数

Virtualbox,使用 nat 上传速度慢

我在 Ubuntu 12.04 服务器(主机)上运行 Virtualbox,我正在运行 Windows 7 作为来宾操作系统。我使用(虚拟)英特尔 PRO/1000 MT 网卡。

我使用 nat 和桥接网络设置获得了良好的下载网络性能,但使用 nat 上传速度真的很慢。

我把它绑在两台不同的服务器上,一台是全新的,一台是几年前的,两者都给出了相同的结果。

如果您可以解释这种行为或有我可以执行的进一步测试的想法,请告诉我。

nat virtualbox

5
推荐指数
1
解决办法
8201
查看次数

在具有 IPv6 和 FQDN 的不同服务器上运行多个服务

在过去十年中,NAT 允许我们做的事情之一是将物理服务拆分到不同的服务器上,同时隐藏在单个接口后面。

例如,我example.com192.0.2.10. 我端口转发:80:443对我的Web服务器。我还将端口转发:25到我的邮件服务器、:3389终端服务器和:8080下载种子的计算机的 Web 界面,故事还在继续。

所以我有 5 个端口转发到 4 台不同的计算机上example.com

然后,我去拿一些整洁的 IPv6。我分配example.com了一个 IPv6 地址2001:db8:88:200::10。这对我的网站来说很棒,但我想访问example.com:8080我的种子,或example:3389登录到我的终端服务器。

我怎么能用 IPv6 做到这一点,因为没有 NAT。当然,我可以为每个新服务创建一堆新的 DNS 条目,但随后我必须更新我所有习惯于仅通过键入example.com访问网站终端服务器的客户端。我的用户比两块砖还笨,所以他们不会记得连接到rdp.example.com.

我有哪些选项可以在 IPv6 中保持 NAT 风格的功能?

如果你还没有想通了,上面的场景是不是我的真实的情景,或许有人还没有,但它一定最终会发生。你知道,与 devops 和所有。

domain-name-system nat ipv6

5
推荐指数
1
解决办法
224
查看次数

在 Debian 6 上使用 tayga 进行 NAT64 配置

我正在尝试在我的服务器上使用 tayga 实现 NAT64,但我不确定如何继续。

我的服务器通过一个 IPv4 地址和一个 /64 IPv6 地址块连接到互联网。它提供各种服务。出于某些原因,我还运行了一些 LinuX Containers (LXC)。这些是 IPv6 专有的。我在我的主机系统上实现了一个网桥 (br0),并将地址从 eth0 切换到 br0。我的容器在 IPv6 上成功地相互通信。通过主机上的 mod_proxy,我也可以将仅 ipv6 的网络服务器 (LXC) 连接到 IPv4 互联网。但只是在一个方向,你可以说。

对于某些自动更新功能,我需要 NAT64+DNS6,因为某些更新服务器不支持 IPv6。

让我们假设以下情况,并注意 IP 地址并未真正使用。

主机 br0:

inet address: 10.0.0.1 # external IP
inet6 address: 2a01::1/64 # external IP
Run Code Online (Sandbox Code Playgroud)

LXC eth0:

# external IP, some ip6tables forward rules implemented on the host 
inet6 address: 2a01::2/64
Run Code Online (Sandbox Code Playgroud)

我在我的主机上安装了 tayga 并像这样配置它:

tun-device nat64
ipv4-addr 192.168.255.1
prefix 2a01:0:0:0:64::/96
map 192.168.255.2 2a01::2
Run Code Online (Sandbox Code Playgroud)

Tayga 自动从该 /96 子网中选择一个 …

networking linux debian nat ipv6

5
推荐指数
0
解决办法
4064
查看次数

如何通过 IPSEC VPN 路由公共 IP 范围?

所以,我已经建立了一个 IPSec 站点到站点隧道。

站点 A 有一个 SonicWall,站点 B 有一个 EdgeRouter。

第一条隧道由站点 A 的 NAT 化 ips 到站点 B 的 NAT 化 ips 组成。

一切都按预期工作。

接下来,我有一个站点 B 需要访问的公共 IP 范围,但是,请求需要看起来像是来自站点 A。当我设置这个隧道时,我只能看到网关处的流量下降。

我无法访问任何这些 ip。由于它在 lan 到 lan 的相同配置中工作正常,我相信这可能是 NAT 问题 - 但我不确定,也不知道如何进一步诊断。

这可能是一个红鲱鱼,因为我不是很自信......我已经尝试在 VPN>WAN/WAN>VPN 上加入“允许所有”规则,然后过滤到一个单独的 IP,然后从站点 B ping 它.. . 我看到丢包了。

任何人都可以在这里提供任何建议吗?

vpn nat ipsec sonicwall

5
推荐指数
1
解决办法
8465
查看次数

在nat预路由表中转发时如何在数据包上设置标记?

我有一些像这样的端口转发规则

iptables -t nat -A PREROUTING -p tcp --dport 46000 -j DNAT --to-destination 172.16.8.2:46000
iptables -A FORWARD -p tcp -d 172.16.8.2 --dport 46000 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种方法可以在一行而不是两行中添加新的转发规则,这样我就不必两次输入相同的数据。我的意思是这样的规则:

  1. 在 nat PREROUTING 将数据包转发到目的地并标记它
  2. 在过滤器 FORWARD 中允许使用规则 1 标记的所有数据包

是否可以?

networking nat routing iptables port-forwarding

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