现在,在我的Ubuntu有两个网卡安装。 一个连接到局域网(NIC 1),另一个连接到互联网(NIC2)。 我们已经configurationiptables将所有传入的连接转发到NIC1到NIC2。 我们想设置另一个网卡(比如NIC3),它将通过另一个单独的宽带连接连接到互联网。
是否有可能将所有来自NIC1的传入连接(例如www.google.com)仅指向NIC3,而其他人则将www.a.com,www.b.com,www.c.com指向NIC2?
我可以通过只更改iptables或我应该寻找其他选项吗?
这http://www.cyberciti.biz/faq/linux-route-add/解决了我的问题。
您可以在“Linux高级路由和stream量控制”文档中find您要查找的内容。 尽pipe这并不容易理解。
它可以通过iproute2而不是iptables或iptables来pipe理,仅用于标记数据包。 通过Linux高级路由和stream量控制 ,特别是多个路由表。 为每个路由案例创build单独的路由表,从而创build出接口。 然后添加规则将数据包指向特定的路由表。 规则可以基于iptables包标记创build。
无法提供详细设置,我在OpenBSD上做了多年的路由器。 在这个任务上,Linux太复杂了,随着iptables数量的不断增加,性能迅速iptables 。
是否有可能将所有来自NIC1的传入连接(例如www.google.com)仅指向NIC3,而其他人则将www.a.com,www.b.com,www.c.com指向NIC2?
答案是有点,但这是一个坏主意。 Iptables生活在Layer-3 / Layer-4,因此并不是真正用于处理DNS名称的。 如果我正确地记得,如果您指定使用DNS名称而不是IP地址或networking块的redirect或转发规则,iptables将接受该信息并尽力合理地parsing这些名称。
这种方法有几个问题:
你真正需要的是一种在七层协议中熟悉的负载均衡解决scheme,即HTTP。 我认为Squid可能会被configuration为这样做 – 至less它是一个开始的好地方。
编辑:看起来不像鱿鱼会做你想做的(它确实反向HTTP代理负载平衡)。 我不知道为什么你要第7层意识到出站负载平衡 – 你究竟在试图解决什么问题?