(Iodine) 将 dns0 流量路由到 eth0

(Iodine) Route dns0 trafic to eth0

我已经完成了一个安装了 Iodine 的 DNS 服务器。 我试图在要求输入 login/password 才能访问互联网的外部服务器上访问我的服务器。它工作正常,我可以在外面 ping 我的服务器。 但是现在我想访问互联网,我必须将 dns0(iodine 接口)的流量路由到 eth0(我连接到互联网的服务器上的接口)

为此我需要:

-启用ip转发:

echo 1 > /proc/sys/net/ipv4/ip_forward

接受从 eth0 到 dns0 的流量:

iptables -A FORWARD -i eth0 -o dns0 -m state --state RELATED,ESTABLISHED -j ACCEPT

接受从 eth0 到 dns0 的流量:

iptables -A FORWARD -i dns0 -o eth0 -j ACCEPT

目前一切正常,但是:

接口之间的路由流量:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

没有效果,没有错误,接受了规则,但我在 iptables 中看不到这最后的规则,显然 dns0 接口不会将互联网流量重定向到 eth0...

我试过了所有的东西,启用 tun 模块,禁用 ufw,清除 iptables 规则,重启服务器...有没有人有想法?

对于接口之间的路由,您可能需要使用路由 table 而不仅仅是 iptables。 iptables 只允许以这种方式重定向流量,有时您需要路由 table 手动执行重定向部分。

如果您希望重定向的流量 来自与 dns0eth0 子网不同的子网 ,您可以尝试这些方法。

在 /etc/iproute2/rt_tables

中创建两个额外的路由 table,比如 rt_dns0 和 rt_eth0

在这些 table 中设置路由,如下所示:

ip route add $DNS0_NET dev dns0 src $IP1 table rt_dns0
ip route add default via $GATEWAY1 table rt_dns0
ip route add $ETH0_NET dev eth0 src $IP2 table rt_eth0
ip route add default via $GATEWAY2 table rt_eth0

接下来,设置路由规则以将流量从 dns0 重定向到 eth0

ip rule add from $REDIRECT_NET table rt_eth0
ip rule add to $REDIRECT_NET table rt_dns0

查看此 link 了解更多详细信息 http://tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.rpdb.multiple-links.html

如果客户端有隧道 ip 10.0.0.2 并且服务器有 10.0.0.1 .

iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth0 -j MASQUERADE