模拟环境:
操作系统版本:Centos6.9 内核:2.6.32-696.el6.x86_64
一、修改影响fullnat的参数以及关闭对应服务
关闭selinux和iptables
getenforce
vi /etc/sysconfig/selinux
SELINUX=disabled
关闭防火墙
service iptables status
service iptables stop
chkconfig iptables off
重启服务器
reboot
二、安装编译内核所需要的依赖包
yum install -y xmlto gcc* rpm-build patchutils elfutils-libelf-devel zlib-devel perl-ExtUtils-Embed.x86_64 lrzsz rng-tools openssl-devel popt-devel hmaccalc python-devel redhat-rpm-config binutils-devel libnl* libporpt* popt-static
查看是否存在以下包
rpm -qa|grep asciidoc
rpm -qa|grep slang-devel
rpm -qa|grep newt-devel
若没有则需要下载对应rpm包进行安装
rpm -ivh asciidoc-8.4.5-4.1.el6.noarch.rpm 或 yum -y install asciidoc
rpm -ivh slang-devel-2.2.1-1.el6.x86_64.rpm 或者 yum -y install slang-devel
rpm -ivh newt-devel-0.52.11-3.el6.x86_64.rpm 或者 yum -y install newt-devel
三、系统调优
修改/etc/sysctl.conf添加
允许送到队列的数据包的最大数目
net.core.netdev_max_backlog = 500000
开启路由转发功能
net.ipv4.ip_forward = 1
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
修改文件描述符
fs.nr_open = 5242880
fs.file-max = 4194304
使配置生效
sysctl -p
调整句柄数
修改/etc/security/limits.d/90-nproc.conf 添加
* soft nofile 655350 #表示任何一个用户可以打开的最大的文件描述符数量
* hard nofile 655350
* soft nproc 655350 #表示任何一个用户可以打开的最大的进程数
* hard nproc 655350
四、下载Lvs-fullnat包,并编译安装
下载lvs-fullnat包
github.com/alibaba/LVS 版本:V2
unzip LVS-lvs_v2.zip
mv LVS-lvs_v2 /opt/LVS_FULLNAT
ln -sv /opt/LVS_FULLNAT/kernel/ /usr/src/linux
进入 kernel 目录:
cd /opt/LVS_FULLNAT/kernel
修改 Makefile 中以下字段值,把内核的名称做下标记
EXTRAVERSION = .FNAT.shanks.e27.x86_64
编译模块,根据cpu数量调整-J参数,持续约20分钟
make -j4
安装模块
make modules_install
安装内核及配置文件等
make install
修改启动项
/boot/grub/grub.con
修改default 为0
重启系统
[root@localhost kernel]# uname -a
Linux localhost.localdomain 2.6.32.FNAT.shanks.e27.x86_64 #1 SMP Thu Sep 14 10:30:42 CST 2023 x86_64 x86_64 x86_64 GNU/Linux
加载ip_vs 模块
lsmod |grep ip_vs
ip_vs 35009 0
如果没有则执行命令
modprobe ip_vs
支持UDP
echo "0" > /proc/sys/net/ipv4/vs/defence_udp_drop
五、编译安装ipvsadm
进入编译内核目录
cd /opt/LVS_FULLNAT/tools/ipvsadm
执行编译
make && make install
六、查看ipvsadm是否支持fullnat
执行以下命令,若存在相应内容则支持fullnat
ipvsadm --help | grep fullnat
关闭centos6的反向路由检测
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/eth1/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/eth3/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/eth4/rp_filter
七、配置ipvsadm
[root@localhost kernel]# ipvsadm -C #清理原有策略
[root@localhost kernel]# ipvsadm -A -t 192.168.40.26:80 -s wrr
[root@localhost kernel]# ipvsadm -a -t 192.168.40.26:80 -r 192.168.0.22:22 -b -w 2 # -b表示fulnat
[root@localhost kernel]# ipvsadm -a -t 192.168.40.26:80 -r 192.168.1.22:22 -b -w 2
[root@localhost kernel]# ipvsadm -a -t 192.168.40.26:80 -r 10.12.254.139:22 -b -w 2
[root@localhost kernel]# ipvsadm -P -t 192.168.40.26:80 -z 192.168.1.206:80
[root@localhost kernel]# ipvsadm -ln #查看策略
IP Virtual Server version 1.2.1 (size=4194304)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.40.26:80 wrr
-> 192.168.0.22:22 FullNat 2 0 0
-> 192.168.1.22:22 FullNat 2 0 0
-> 10.12.254.139:22 FullNat 2 0 0
八、进行测试
首先通过firewalld关闭后端三台服务器对192.168.40.0网段的流量进行限制
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address="192.168.40.0/24" drop'
使用本地PC通过ssh 连接到vip 192.168.40.26:80
3 条评论
想想你的文章写的特别好www.jiwenlaw.com
想想你的文章写的特别好https://www.237fa.com/
不错不错,我喜欢看 https://www.jiwenlaw.com/