我已经完成了安装了碘的DNS服务器。 我试图访问外部服务器上的服务器,该服务器要求输入登录名/密码才能访问Internet。它可以正常ping我的服务器。 但是现在我想在Internet上访问,并且必须将dns0(碘接口)的流量路由到eth0(我连接到Internet的服务器上的接口)
为此,我需要:
-启用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
接受从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规则,重新启动服务器...有人有想法吗?
答案 0 :(得分:0)
对于接口之间的路由,您可能需要使用路由表而不只是iptables。 iptables只允许通过这种方式重定向流量,有时您需要路由表来手动完成重定向部分。
如果要重定向的流量来自与dns0
和eth0
子网不同的子网,则可以尝试以下操作。
在/ etc / iproute2 / rt_tables中创建另外两个路由表,例如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
接下来,设置路由规则以将流量从dns0重定向到eth0
ip rule add from $REDIRECT_NET table rt_eth0
ip rule add to $REDIRECT_NET table rt_dns0
检查此链接以获取更多详细信息http://tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.rpdb.multiple-links.html