一个奇怪的路由走向问题
部门一个项目要上LVS,之前我是没有真正做过LVS,只做过FREEBSD的HA,那真是费了很大劲,每次还必须自己手动编译内核来支持CARP,每次都得这样加上
# To make an SMP kernel, the next line is needed options SMP # Symmetric MultiProcessor Kernel # increase max allowable process virtual memory size options DFLDSIZ="(128\*1024\*1024)" options MAXDSIZ="(1024\*1024\*1024)" options MAXSSIZ="(1024\*1024\*1024)" options DEVICE_POLLING options HZ=1000 ##CARP options ALTQ options ALTQ_CBQ device pf #device pflog #device pfsync device carp options AUDIT
而现在用的Linux的LVS已经从2.4需要手动编译,而现在2.6内核直接就内核支持了,真是方便太多了,但是没有实际操作过。这次就出现问题了。由于nagios和lvs在一台机器上,问题出现了,居然虚拟IP需要配置在lo口上,真是奇怪了,为什么要配置在lo上而不是eth0上。
nagios要安装nrpe来跟nagios进行通信,另外一台LVS没有问题,直接telnet 192.168.1.3 5666也没有问题,可以通过相关命令获得系统信息。而这台LVS居然不能telnet 192.168.1.2 5666直接就给退出了。奇怪了,配置都是一样啊。都是允许1.2进行访问的呀。界面上显示的可以是nrpe ssl握手出错,于是想估计是ssl的问题,可重装下也还是一样。这就奇怪了。
后来用netstat -rn看了下本地路由也没有问题,实在是没辙了.
于是就看看log里都是记录着什么,结果发现居然全部都是外网IP的访问拒绝信息,可路由信息里没有显示啊,而且就算通过traceroute也是本地啊。想来想去还是lo造成的,而且log里记录的还都是LVS的虚拟ip,于是就在Nrpe加入了虚拟IP的可访问权限,这下一试就通过了,同时snmpd.conf也加入了虚拟IP,这下终于OK了,明天可得看看Linux的路由策略到底是怎么走的。奇了怪了。
今天看了下了iptables,感觉iptables也会导致这样的问题存在。但是如果是iptables的问题的话,那telnet到内网其它机器就也会有问题的,是否也会走公网端口呢?