(碘)路线dns0交通至eth0

(碘)路线dns0交通至eth0,dns,routes,iptables,Dns,Routes,Iptables,我已经安装了一个DNS服务器。 我尝试访问外部服务器上的服务器,这些服务器要求输入登录名/密码以访问internet。我可以在外面ping我的服务器。 但现在我想访问互联网,我必须将dns0碘接口的流量路由到连接到互联网的服务器上的eth0我的接口 为此,我需要: -启用ip forwading: echo 1 > /proc/sys/net/ipv4/ip_forward 接受从eth0到dns0的交通: iptables -A FORWARD -i eth0 -o dns0 -m s

我已经安装了一个DNS服务器。 我尝试访问外部服务器上的服务器,这些服务器要求输入登录名/密码以访问internet。我可以在外面ping我的服务器。 但现在我想访问互联网,我必须将dns0碘接口的流量路由到连接到互联网的服务器上的eth0我的接口

为此,我需要:

-启用ip forwading:

echo 1 > /proc/sys/net/ipv4/ip_forward
接受从eth0到dns0的交通:

iptables -A FORWARD -i eth0 -o dns0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i dns0 -o eth0 -j ACCEPT
接受从eth0到dns0的交通:

iptables -A FORWARD -i eth0 -o dns0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i dns0 -o eth0 -j ACCEPT
目前一切正常,但:

接口之间的路由流量:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
没有效果,没有错误,规则被接受,但我在iptables中看不到最后的规则,显然dns0接口没有将internet流量重定向到eth0


我已经尝试了一切,启用tun模块,禁用ufw,清除iptables规则,重新启动服务器。。。有人有想法吗?

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

如果要重定向的流量来自不同于dns0和eth0子网的子网,您可以尝试以下方法

在/etc/iproute2/rt_表中创建另外两个路由表,例如rt_dns0和rt_eth0

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

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
接下来,设置路由规则,将trafic从dns0重定向到eth0

ip rule add from $REDIRECT_NET table rt_eth0
ip rule add to $REDIRECT_NET table rt_dns0
查看此链接了解更多详细信息