获取NATstream量返回到正确的界面

在一个自定义板(运行4.x内核),我有两个物理以太网接口和一个无线电调制解调器,给了我一个PPP接口。 iproute2已经安装,我正在使用nftables(不是iptables)。

我的问题是,我想转发特定的UDPstream量(到端口41000-41002)进入ppp0或eth0到位于behing eth1的特定主机。 转发工作,因为它应该,但我不能让返回stream量正常工作。 以下是我如何设置的一个例子:

eth0 has IP 192.168.10.10 eth1 has IP 192.168.100.10 ppp0 has IP 10.10.10.10 

我要发送stream量(并从中返回stream量)的外部主机具有IP 192.168.100.1,并且物理连接到与eth1相同的networking。

现在,nftables设置如下所示:

 table ip firewall { chain incoming { type filter hook input priority 0; policy drop; ct state established,related accept iifname "lo" accept icmp type echo-request accept tcp dport { ssh} accept } chain prerouting { type nat hook prerouting priority 0; policy accept; iifname "ppp0" udp dport 41000-41002 dnat 192.168.100.1 iifname "eth0" udp dport 41000-41002 dnat 192.168.100.1 } chain postrouting { type nat hook postrouting priority 100; policy accept; oifname != "lo" masquerade } } 

我的iproute2的路由规则如下所示:

 0: from all lookup local 1000: from 192.168.100.1 lookup ppproute 2000: from 10.10.10.10 lookup ppproute 32766: from all lookup main 32767: from all lookup default 

而ppproute表只包含一个通过ppp0的默认路由:

 default dev ppp0 scope link 

使用此设置,如果入站stream量通过ppp0进入,所有内容都可以正常工作。 数据包被nftables / netfilter正确地重写,并退出eth1。 返回stream量达到1000条规则,退出发件人。

如果stream量通过eth0进入,它也会按照192.168.100.1那样命中主机,但返回的stream量也会通过ppp0返回,这是我的问题。

我已经find了解决办法,可能盯着我看,但是我一直没能解决这个问题。 我相信有一个简单的方法来解决这个问题,所以现在我希望有人会这样帮助我。 我知道我应该find一个适当的解决scheme,但不知何故,我错过了。