标签: nat

双重(或更多)NAT/PAT 的普及程度如何?

背景:我正在做一个UDP打孔服务,为了区分同一公共IP下的用户,我想过让用户也发送他们的本地IP。这样,我用 1 块石头杀死了 2 只鸟:客户端是唯一标识的,同时还使服务器为用户提供建立直接连接(如果可能),而不是发夹。

一切似乎都很完美(尤其是独特的标识),直到我意识到这是可能的:

双 PAT 示例

所以这里是实际的问题:这种情况有多普遍,如果它们甚至被使用,以及在哪里使用?

nat pat

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

Linux 作为网关(无 NAT)

我正在尝试将 linux 服务器配置为网关/路由器,但我无法让它工作,而且我设法找到的所有信息都与 NAT 相关。

我有一个用于网关和它后面的设备的公共 IP 块,所以我希望网关简单地将数据包路由到互联网 - 再次:没有 NAT!

我已经设法让网关成功访问互联网(这只是配置 IP 和 GW 的问题),并且它后面的计算机可以与其通信。

[编辑:更多信息]

这实际上是一个 IPv6 块 ( 2800:40:403::0/48)(但我发现大多数实用程序和指令都可以轻松地从 IPv4 适应到 IPv6)。

服务器有太多端口:

  • 万: 2800:40:403::1/48
  • 局域网: 2800:40:403::3/48

它后面的一台计算机通过交换机连接到它;

  • 2800:40:403::7/48

服务器上的 wan 接口可以 ping6 www.google.com 没有问题。服务器和客户端上的 LAN 接口可以相互 ping 没有问题(以及 SSH 等)。

我尝试将服务器设置为客户端的默认网关,但没有运气:

client # route -A inet6 add default gw 2800:40:403::3 dev eth1

server # cat /proc/sys/net/ipv6/conf/all/forwarding 
1
Run Code Online (Sandbox Code Playgroud)

我不想要任何过滤/防火墙/等,只是简单的路由。

谢谢。

linux nat ip route

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

NAT 背后的权威 DNS 可能吗?

我目前正在为一堆域运行一个权威的 Bind9 DNS 服务器。这个权威服务器当前复制到几个从属服务器,然后用于满足 DNS 的子网要求。该服务器当前安装在具有静态 WAN IP 的裸机上。

我想将此服务器移到 NAT 后面的虚拟机中。由于我对 DNS 不太了解,所以我一直在徘徊:在 NAT 后面运行权威 DNS 时是否需要注意任何特殊限制?我可以共享 IP 并路由只绑定特定端口,还是需要为 DNS 服务保留和路由完整 IP?

nat bind

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

如何使 sysctl 网桥设置在重启后仍然保留?

我正在设置一个笔记本用于软件演示目的。该机器拥有 8GB RAM、Core i7 Intel CPU、128GB SSD,运行 Ubuntu 12.04 LTS 64 位。该笔记本电脑用作 KVM 主机并运行一些 KVM 来宾。

所有此类来宾都使用virbr0默认网桥。为了使它们能够使用多播相互通信,我将以下内容添加到主机的 中/etc/sysctl.conf,如下所示

net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
Run Code Online (Sandbox Code Playgroud)

随后,man sysctl(8)我发布了以下内容:

sudo /sbin/sysctl -p /etc/sysctl.conf
Run Code Online (Sandbox Code Playgroud)

我的理解是,这应该使这些设置在重新启动后仍然存在。我测试了它,并惊讶地发现以下内容:

root@sdn1 :/proc/sys/net/bridge# more *tables
::::::::::::::
bridge-nf-call-arptables
::::::::::::::
1
::::::::::::::
bridge-nf-call-ip6tables
::::::::::::::
1
::::::::::::::
bridge-nf-call-iptables
::::::::::::::
1
Run Code Online (Sandbox Code Playgroud)

所有默认设置都将恢复!

是的。我可以使用一些笨拙的“解决方法”,例如将 a/sbin/sysctl -p /etc/sysctl.conf放入主机中,/etc/rc.local但我宁愿“做对”。我是否误解了手册页或者我错过了什么?

感谢您的任何提示。

——扎克

ubuntu nat multicast sysctl kvm-virtualization

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

ip route 和 NAT 的区别?

我正在尝试将 linux box 设置为路由器,但我对以下规则将如何影响数据包感到有些困惑。

例如在路由表中我可以有

default via 10.10.1.1 dev eth0 src 192.168.1.1
Run Code Online (Sandbox Code Playgroud)

将数据包的源 IP 地址更改为 192.168.1.1

在 iptables 中,我可以拥有

-A POSTROUTING -s 192.168.0.0/255.255.0.0 -o eth0 -j SNAT --to 192.168.1.1
Run Code Online (Sandbox Code Playgroud)

这似乎也要求下一跳返回数据包应该去 192.168.1.1

那么有什么区别呢?

nat routing iptables

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

我如何知道 NAT 实例是否正在成为瓶颈

我在 AWS VPC 内运行我自己的 NAT 实例。我想确保 NAT 实例不会成为瓶颈,为此我想为何时扩展到辅助 NAT(如果有的话)设定我自己的期望。

我知道实例类型(当前是 m1.medium,如果这很重要)是其中的一个重要方面,但想知道如何检查 NAT 实例是否开始达到其最大值以及我是否可以实现更好的吞吐量VPC 中的机器,如果其中一些机器使用不同的 NAT 实例。

它通过一个非常简单的 iptables 指令进行 NAT,如下所示:

$ iptables --table nat --list
Chain POSTROUTING (policy ACCEPT)   
target      prot opt source       destination    
MASQUERADE  all  --  10.0.0.0/16  anywhere
Run Code Online (Sandbox Code Playgroud)

nat amazon-web-services

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

Asterisk 不使用 externip

我正在尝试使用 hello-world 示例设置位于 NAT 后面的云 Asterisk 服务器。我有 NAT 问题。Asterisk 通过 SDP 提供给客户端的 IP 地址是它在 NAT 后面的本地地址,而不是外部地址。

我试图在 中设置externipsip.conf,但这似乎没有效果。

[general]
externip=xxx.yyy.zzz.vvv
nat=yes
tcpenable=yes
Run Code Online (Sandbox Code Playgroud)

客户端收到的SDP与服务器externip设置不一致:

v=0
o=root 291445984 291445984 IN IP4 172.31.46.110
s=Asterisk PBX 11.7.0~dfsg-1ubuntu1
c=IN IP4 172.31.46.110
t=0 0
m=audio 10078 RTP/AVP 0 101
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=ptime:20
a=sendrecv
m=video 0 RTP/AVP 96
Run Code Online (Sandbox Code Playgroud)

我希望 SDP 中的地址与externip字段中提供的地址相匹配。我已经尝试了实际 IP 地址和服务器名称,它们通过 DNS 正确解析为 IP 地址。

我设置的externip值不正确吗?或者是否需要不同的设置来让 Asterisk 通告其外部 IP 地址?

nat asterisk

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

即使没有 NAT,IPv6 中仍然需要 UDP 打孔吗?

背景(跳过问题)

IPv4 需要 NAT 来保护地址。NAT 的防火墙特性也有利于安全。IPv4 NAT 防火墙规则是“阻止传入数据包remote-address:port -> local-address:port,除非local-address:port -> remote-address:port在最后 X 秒内发送传出数据包”。

对于点对点 UDP 应用程序,这需要介绍服务器来进行 NAT 打孔。对于Client连接到Server(包括有防火墙的NAT后面,FW),我们需要进行如下操作的情况发生:

                           periodic
                          keep-alive
                Introducer <------>
Client    FW                  FW    Server
------------------------------------------
       request
     introduction
       -------> Introducer
Client    FW                  FW    Server
       --------------------->X
         request connection
------------------------------------------
                            notify
                         introduction
                    [Client address:port]
                Introducer ------->
Client    FW                  FW    Server
------------------------------------------
Client    FW                  FW    Server
       <---------------------------
                  hello
------------------------------------------
Client    FW                  FW    Server
       --------------------------->
            request connection
------------------------------------------
Client    FW                  FW    Server …
Run Code Online (Sandbox Code Playgroud)

firewall nat ipv6 udp

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

NAT 网关高可用性 - AWS

您会在每个可用区上为 HA 配置一个 NAT 网关吗?这是矫枉过正吗?每年连续运行的成本超过 500 美元。对于关键业务系统来说,它确实有意义。您可以在 2 个可用区上创建 2 个 NAT 网关,并让第三个使用一个或另一个以减少一些 $。

我的另一个问题是,如果一个可用区出现故障,您如何自动切换到另一个可用区上的 NAT 网关?据我所知,您需要手动更新路由表以指向另一个 NAT 网关。人们是否设置了对 NAT 实例的定期 ping,然后在失败时更新路由表?如果是这种情况,假设无论如何都会出现小故障,为什么不在旧的 AZ 出现故障时在另一个 AZ 上创建一个新的 NAT 网关,然后更新路由表?您将节省 500 美元并实现相同的目标。

nat high-availability amazon-web-services

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

为什么每个人都使用 MASQUERADE/SNAT 而不是 NAPT/PAT?

故事

我有一个 VPN 线卫虚拟接口wg0(可以是其他任何接口)和一个物理接口eth0。我想将数据包从 VPN 路由到 LAN,或者从一个接口路由到另一个接口。

几乎所有博客、文章、教程都建议使用MASQUERADESource NAT仅使用:iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

而且,IP masquerade只是一个SNAT(源NAT),它不会改变源端口。

问题

  • 我是否错误地认为我应该使用NAPT/PAT来代替?
  • 为了完整起见,如何使用 iptables 和/或 nftables 添加 NAPT/PAT 规则?

想法

主机生成并从wg0(或任何其他虚拟/物理接口)转发的数据包之间可能存在(源端口)冲突。恕我直言,必须使用 NAPT 来避免这些冲突。

RFC 2663,网络地址端口转换 (NAPT)

nat

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