linux下nat转发失效
最近在进行对现网的机器进行KVM调整 。在使用过程中,发现在对一台机器新增一个公网IP以后,通过service network restart重启网络生效生,所有的nat配置失效 。kvm里安装的windows主机通过radmin无法连接。而在KVM物理机上ping 里面的虚拟机,发现网络是通的 。
起初以为问题出在KVM本身上,通过命令先查看下网络状态 。
1[root@kvm3 ~]# virsh net-list
2Name State Autostart Persistent
3--------------------------------------------------
4default active yes yes
5[root@kvm3 ~]# brctl show
6bridge name bridge id STP enabled interfaces
7br0 8000.0026b949ae6e no eth0
8br1 8000.0026b949ae70 no eth1
9 vnet1
10 vnet3
11 vnet5
12virbr0 8000.5254003f3f47 yes virbr0-nic
13 vnet0
14 vnet2
15 vnet4
并未发现异常,接着查看路由
1[root@kvm3 ~]# route
2Kernel IP routing table
3Destination Gateway Genmask Flags Metric Ref Use Iface
4xxx.91.235.xxx * 255.255.255.248 U 0 0 0 br0
5xxx.xxx.194.32 * 255.255.255.240 U 0 0 0 br0
6192.168.8.0 * 255.255.255.0 U 0 0 0 br1
7192.168.112.0 * 255.255.255.0 U 0 0 0 virbr0
8link-local * 255.255.0.0 U 1006 0 0 br1
9link-local * 255.255.0.0 U 1100 0 0 br0
10default xxx.xxx.194.33 0.0.0.0 UG 0 0 0 br0
无奈试着重启下KVM主机
1[root@kvm3 ~]# virsh reboot kvm3-host1
发现问题依旧。开始重新分析问题 ———— 公网访问正常,内部ping也正常。既然如此,问题出现在nat上,iptables的nat配置也未发生改变。将网卡的IP配置还原后,问题还是一样。应该是出现在nat的问题上了。抱着试试看的态度,查下路由转发:
1[root@kvm3 ~]# cat /proc/sys/net/ipv4/ip_forward
20
发现其值竟然变成了0 ,问题终于找到了。先通过echo 1 > /proc/sys/net/ipv4/ip_forward 临时生效后,再通过公网nat连接虚拟机里的radmin和ssh 。一切又神奇的恢复了。
问题神奇了,重启个network服务不至于让该值变成0 ,改变再service network restart ,发现其值又变成了0 。再去/etc/sysctl.conf里看一下 ,真相大白于天下了。里面的默认配置用了0
1# Controls IP packet forwarding
2net.ipv4.ip_forward = 0
原来同事在安装完KVM后 ,并未做tcp/ip参数的优化,就连这个值也未改成永久生效 。接下来,将上面的值改成1 ,sysctl -p 生效。再去service network restart ,值还是1 。不过影响nat 转发了。长出了一口气,嗨…………
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/iptables-kvm-nat/2597.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.