首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nftables映射`port`‘to ` `ip:port`’for DNAT

nftables映射`port`‘to ` `ip:port`’for DNAT
EN

Unix & Linux用户
提问于 2021-10-04 15:35:13
回答 1查看 1.9K关注 0票数 5

是否可能有一个nftable映射,将port映射到ipv4_addr:port,其中portipv4_addr:port有不同的TCP端口号?例如,我希望将端口80上的所有传入数据包发送到端口8080上运行web服务器的容器(纯粹使用nftable)。可以使用两个地图和两个地图查找,如下所示:

代码语言:javascript
复制
table ip dnatTable {
  chain dnatChain {
    type nat hook prerouting priority dstnat; policy accept;
    dnat to tcp dport map { 80 : 172.17.0.3 }:tcp dport map { 80 : 8080 }
  }
}

但是,我想知道是否只需要一个地图查找就可以了?

谢谢

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2021-10-04 18:56:43

和往常一样,nftable是一个移动的目标。这个特性出现在未定义为0.9.4公布于2020年-04-01中:

  • 带有级联的NAT映射。这使您可以指定地址和端口使用的NAT损坏从地图,例如。nft添加规则ip nat的ip地址。端口到ip鞍映射{ 1.1.1.1 : 2.2.2.2。30 }您还可以在命名集中使用此新特性: nft添加映射ip nat目的地{ type ipv4_addr。inet_service : ipv4_addr .inet_service } nft添加规则ip nat pre ip addr。端口到ip鞍。tcp dport map @目的

所以在OP的例子中:

代码语言:javascript
复制
nft add ip dnatTable dnatChain 'dnat ip addr . port to tcp dport map { 80 : 172.17.0.3 . 8080 }'

仅供参考,表1.0.0 2021-08-19有一个简化的语法:

  • 简化NAT映射的语法。您可以指定一个IP范围:

...或特定的IP和端口。..。到ip鞍图{ 10.141.11.4 : 192.168.2.3。80 }

因此,OP的情况可以缩短为(以前的规则将显示为):

代码语言:javascript
复制
nft add ip dnatTable dnatChain 'dnat to tcp dport map { 80 : 172.17.0.3 . 8080 }'

使用命名映射可以帮助区分规则和数据。这也会起作用(使用0.9.4语法):

代码语言:javascript
复制
nft add map ip dnatTable portToIpPort '{ type inet_service : ipv4_addr . inet_service ; }'
nft add rule ip dnatTable dnatChain dnat ip addr . port to tcp dport map @portToIpPort

然后在任何方便的时候:

代码语言:javascript
复制
nft add element ip dnatTable portToIpPort '{ 80 : 172.17.0.3 . 8080 }'
票数 4
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/671805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档