在我的办公室networking上,我有两个互联网连接和一个运行网站的CentOS服务器(端口443上的HTTPS)。 该网站应通过第一个互联网连接(ISP-1)的公共IP公开访问。 另一个互联网连接,ISP-2,是networking上的默认网关。 这两个互联网连接都有路由器(家庭式)与NAT,SPI防火墙等。ISP-2上的路由器是带有原始固件的Netgear WNDR3700(又名N600)。
问题是网站无法访问。 看起来ISP-1上的入站stream量会到达服务器,但返回的stream量是通过ISP-2路由的,有效地使站点无法访问。 据我所知,我不能在WNDR3700上进行基于端口的路由。
我的select是什么使这项工作? 我一直在考虑在服务器上实现一个基于iptables / routing的解决scheme,但一直没能做到这一点。
更新:请注意,服务器有一个networking接口连接到两个路由器。
如果我正确地理解你的意图,你希望你的networking服务器通常使用ISP-2作为它的默认出口stream量的网关,除了它对外部networking请求的响应,它必须通过ISP-1来传送。 以下是使用策略路由的解决scheme草图:
echo "101 webtraffic" >> /etc/iproute2/rt_tables ip route add default table webtraffic via $ISP1_GW_LAN_IP ip rule add fwmark 1 table webtraffic iptables -t mangle -A OUTPUT -d \! $LAN_NET_PREFIX \ -p tcp -m tcp --sport 443 \ -j MARK --set-mark 1
哪里:
LAN_NET_PREFIX
是你局域网的networking前缀(例如192.168.100.0/24) ISP1_GW_LAN_IP
是到ISP-1的网关的LAN IP地址(例如192.168.100.100)。 第一个ip
命令将webtraffic
表上的默认路由设置到您的ISP-1网关,第二个确保标记为1
数据包使用webtraffic
表进行路由。 最后, iptables
规则标记出适当的传出数据包,确保他们的下一跳将对ISP-1。
以下是使用实验iptables
模块ROUTE目标的备用解决scheme:
iptables -t mangle -A POSTROUTING -d \! $LAN_NET_PREFIX \ -p tcp -m tcp --sport 443 \ -j ROUTE --gw $ISP1_GW_LAN_IP
此规则将覆盖传出Web响应数据包的路由决策,将其发送到您的ISP-1网关,而不是默认的ISP-2。 所有其他stream量,包括对局域网客户端的networking响应,都不会受到影响。 正如在评论中已经指出的那样,ROUTE目标很可能不会在任何没有明确地将其修补到内核的系统上实现, 因为它是实验性的 。
我有同样的问题,但我解决只与iproute2(源路由)。 用iptables标记并不是必须的:
echo "101 webtraffic" >> /etc/iproute2/rt_tables ip route add default table webtraffic via $ISP1_GW_LAN_IP ip rule add from $ISP1_IP table webtraffic
问题是,不仅networking可以使用ISP1连接。 你可以select。 这很好,因为如果有人失败,你可以从两个连接的ssh连接到服务器。 作为CentOS用户,我创build了以下文件,以便重新启动后我的更改不会丢失:
echo "default table webtraffic via $ISP1_GW_LAN_IP" >> /etc/sysconfig/network-scripts/route-eth1 echo "from $ISP1_IP table webtraffic" >> /etc/sysconfig/network-scripts/rule-eth1
这被称为asynchronous路由。 您必须将Web服务器的默认网关指向ISP-1上路由器的IP地址。 如果访问Web服务器的客户端来自同一个IP,则可以在不更改默认网关的情况下对其进行路由,或者,可以在ISP1网关上实施NAT以充当反向代理,然后将其路由到Web服务器。 问候。
防火墙人员在NAT内部解决这个问题。 入站连接被映射到接口地址内的防火墙,因此在服务器上没有路由问题。
如果两个入站连接都在相同IP的同一个接口中,那么您的选项非常有限(无?)选项。 查看是否可以为同一台计算机/接口获取另一个IP,并且在一个IP中有一个入站连接,另一个IP中有一个入站连接。 在此之后,您可以轻松地完成源路由。
如果你不能获得不同的源连接到不同的IP地址,你可以使用iptables macredirect数据包取决于他们来自的MAC。
[!] --mac-source address Match source MAC address. It must be of the form XX:XX:XX:XX:XX:XX. Note that this only makes sense for packets coming from an Ethernet device and entering the PREROUTING, FOR‐ WARD or INPUT chains.
希望这可以帮助。
假设您的Web服务器与您的工作站在同一个子网上,为什么不设置拆分DNS,以便在内部,yourwebsite.comparsing为它的内部IP地址? 当然要打败复杂的asynchronous路由。
另外,投资一台路由器可以支持多个WAN连接,使您的生活变得更轻松(并且允许您在两个Internet连接之间进行负载平衡/故障切换)。