NTP配置LVS tunnel遇到的问题

UDP 单臂tunnel的坑

UDP程序回包程序可能自定义路由和接口,不遵循系统的路由

chrony在上线过程中发现只有client端有ipip模块,ntpdate请求才会成功,通过抓包发现,程序回client时先把数据包传到了tunnel接口,然后tunnel接口进行了IPIP封装后通过本机的eth0返回给client,进一步抓包发现,如果client没有启用ipip模块,会给server回一个icmp type3 port unreachable的包,测试tcp没有该问题,确定为UDP程序自己进行了路由选路,没有使用程序的默认路由。VIP改为双臂tunnel后所client请求均为正常。

如何配置双臂tunnel的rs

  1. 配置VIP在lo上
  2. 建立隧道,local本机IP,remote tunnel source ip
/sbin/ip tunnel add vip mode ipip local $local_ip remote $tunnel_source_ip
  1. 增加rule,从VIP回包的数据包标记到特定的table
/sbin/ip rule add from $vip1 table 100
/sbin/ip rule add from $vip2 table 100
  1. 增加路由,VIP回包的table的数据包统一指向隧道,返回lvs集群,使用lvs进行ipip的解包后返回client
/sbin/ip route add 0.0.0.0/0 dev vip table 100
  • 注意事项

    隧道接口可能添加后不会主动启动,使用命令/sbin/ifconfig vip up手动启动

    所有命令添加到开机启动内,防止重启后配置失效,影响服务