首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nftables ip6路由到本地主机/ ipv6 nat返回回送

nftables ip6路由到本地主机/ ipv6 nat返回回送
EN

Server Fault用户
提问于 2019-07-17 08:57:34
回答 1查看 1.9K关注 0票数 2

我正在尝试将传入的http internet流量路由到*1:8080,这是我的http服务器绑定到的地方。我在IPv6 6专用设备上使用nftable。如果我加上以下规则:

代码语言:javascript
复制
  sudo nft flush ruleset
  sudo nft add table ip6 nat
  sudo nft add chain ip6 nat prerouting { type nat hook prerouting priority 0 \; }
  sudo nft add chain ip6 nat postrouting { type nat hook postrouting priority 100 \; }

  sudo nft add rule ip6 nat prerouting ip6 daddr [global-ip6] tcp dport 80 dnat to ::1 :8080

  sudo nft list ruleset

以及由此产生的规则:

代码语言:javascript
复制
table ip6 nat {
  chain prerouting {
    type nat hook prerouting priority 0; policy accept;
    ip6 daddr [global-ip6] tcp dport http dnat to [::1]:http-alt
  }

  chain postrouting {
    type nat hook postrouting priority 100; policy accept;
  }
}

然后请求global-ip6:80 get吞食(没有连接拒绝错误),但没有建立连接。

如果我使用其中一条规则

代码语言:javascript
复制
sudo nft add rule ip6 nat prerouting tcp dport 80 redirect to 8080

代码语言:javascript
复制
sudo nft add rule ip6 nat prerouting ip6 daddr [global-ip6] tcp dport 80 dnat to [global-ip6] :8080

并将我的程序绑定到[global-ip6]:8080,然后通信按预期工作。

你知道我错过了什么吗?我在postroutinginput链中尝试了一些规则,但没能让它起作用。回到IPv4和iptables中,我不得不使用sudo sysctl -w net.ipv4.conf.all.route_localnet=1,也许有类似的IPv6标志?

EN

回答 1

Server Fault用户

回答已采纳

发布于 2019-07-19 09:42:40

不幸的是,您无法用nftable实现您想要的结果。

在dnat目标之后,目标地址被重写到回送地址(::1),然后由路由代码处理传入的数据包。但是,任何具有环回目标地址的传入数据包都必须由RFC 4291 2.5.3丢弃。根本就没有sysctl变量来更改此行为。

您可以运行一些代理应用程序,它将接受外部地址上的连接,并连接到侦听环回地址的应用程序。

票数 2
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/975558

复制
相关文章

相似问题

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