linux – 根据服务将返回流量路由到正确的网关
在我的办公室网络上,我有两个互联网连接和一个运行网站的CentOS服务器(端口443上的HTTPS).
该网站应通过第一个互联网连接(ISP-1)的公共IP公开访问. 另一个互联网连接ISP-2是网络上的默认网关.两个互联网连接都有路由器(家用型),带有NAT,SPI防火墙等.ISP-2上的路由器是Netgear WNDR3700(又名N600),带有原始固件. 问题是该网站无法访问.看起来ISP-1上的传入流量将到达服务器,但返回的流量通过ISP-2路由,从而有效地使站点无法访问.据我所知,我无法在WNDR3700上进行基于端口的路由. 我有什么选择让这项工作成功?我一直在寻找在服务器本身上实现基于iptables /路由的解决方案,但一直无法做到这一点. 更新:请注意,服务器有一个网络接口,将其连接到两个路由器. 解决方法
如果我正确理解您的意图,您希望您的网络服务器通常使用ISP-2作为传出流量的默认网关,但对外部Web请求的响应除外,这些请求必须通过ISP-1传输.以下是使用策略路由的解决方案草图:
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是您的LAN的网络前缀(例如192.168.100.0/24),和 第一个ip命令将webtraffic表上的默认路由设置为ISP-1网关,第二个ip命令确保使用webtraffic表路由标记为1的数据包.最后,iptables规则标记适当的传出数据包,确保它们的下一跳将转向ISP-1. 这是一个使用实验性iptables模块的替代解决方案,即ROUTE目标: 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.所有其他流量(包括对LAN上客户端的Web响应)都不会受到影响.正如评论中指出的那样,ROUTE目标很可能不会在任何未将其明确修补到内核since it is experimental的系统上实现. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Linux查看文件大小
- Linux ACL访问控制权限完全攻略(超详细)
- linux – 多线程应用程序的核心转储只显示一个线程
- 如何在Linux中将子目录挂载到硬盘驱动器?
- linux – freeTDS bash:在Microsoft SQL Server中执行sql查
- linux – 为什么NTP守护进程继续监听UDP6?
- 使用私钥将TeamCity VCS Root与GitHub存储库连接
- linux – 如何在使用.htaccess时从Apache访问Unix passwd文
- linux – 如何在命令行中匹配另一个模式的目录中“查找”匹
- linux – 垃圾邮件发送者可以从我的邮件服务器中提取有效的