NAT公共IP到本地IP | IPv6的

我正在尝试创build一个家庭项目的小门户。 我有一个NODE,GATEWAY和EXTERNAL机器,运行在公共的IPv6networking上。 尽pipeNODE不通过以太网连接,但是我的目标是使用网关将其连接到IPv6networking。 它通过无线电(也是IP,但是使用64位地址)与网关进行通信,它有自己的接口。

使用IP路由,我已经能够使用GATEWAY从我的NODE ping外部。 现在我的问题是:我可以暴露我的节点到世界上,使用NAT? 我有一个NODE的公共IP,所以我所做的是把这个添加到网关:(所有的IP都是假的,OFC)

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 123.222.23.2 netmask 255.255.255.0 broadcast 123.222.255.255 inet6 2003:6g8:140:200:6a39:5021:83c4:fgbb prefixlen 128 scopeid 0x0<global> inet6 fe80::c229:5c97:8b23:a3e5 prefixlen 64 scopeid 0x20<link> inet6 2003:6g8:140:200:1acc:42fd:1946:e2c1 prefixlen 64 scopeid 0x0<global> 

testing,然后我可以从外部ping这两个IP,最后在gatway。 现在我想redirect任何stream量的IP到我的无线接口,并改变目标IP。

由于我对iptables相当新,我刚刚尝试。 设置DNAT

 sudo ip6tables -t nat -A PREROUTING -i eth0 -d 2003:6g8:140:200:6a39:5021:83c4:fgbb -j DNAT --to-destination fe80::160c:25ee:1de6:a52c 

最后的IP是NODE的本地地址。 如果我理解这是正确的,那么所有具有该特定IP的目的地的数据包将会获得本地IP。

然后我允许转发

 sudo ip6tables -A FORWARD -i eth1 -j ACCEPT sudo ip6tables -A FORWARD -o radio0 -j ACCEPT 

然后我创build一个静态路由

 sudo ip -6 route add fe80::160c:25ee:1de6:a52c dev radio0 

但是这似乎不起作用。 当我尝试ping 2003:6g8:140:200:6a39:5021:83c4:fgbb时,它们只会将其发送到网关,而不会转发到其他接口。

我究竟做错了什么?

最好的祝福

首先要记住的是,目标设备上需要有一个路由,这个路由将把回复带回NAT框。

其次链接本地地址是特殊的。 我不知道是否围绕链接本地地址的特殊规则将打破这样的设置。 一般来说,如果数据包要通过路由器,他们应该使用常规(全局或唯一本地)地址。