iptables+keepalived实现多源地址访问

场景介绍:

客户端业务服务器A:192.168.11.11

iptables服务器B: 192.168.22.22(主)    192.168.22.23(备)

VIP: 192.168.22.41 192.168.22.42

服务端业务服务器C:192.168.33.33

业务服务器C要进行IP源地址健全,每个客户号要有独立访问的源地址。

而所有的客户号(例:1-10)都是指定在客户端A的程序中,

正常情况下,在服务器C上看到的客户号1-10所对应的都是同一个源地址,如何来解决这个问题呢?

在A和C之间加个正向代理服务器即可,配置有多个地址,并在A程序里根据客户号访问不同的代理服务器IP即可。

本文中使用iptables里的SNAT和DNAT功能来实现,并使用keepalived来进行二台热备。

一、keepalived的配置如下:



! Configuration File for keepalived

global_defs {
   notification_email {
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id iptables33
}

vrrp_instance MOPIN {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 110
    advert_int 1
    track_interface {
        eth0 weight 5
    }
    authentication {
        auth_type PASS
        auth_pass mopin
    }
    virtual_ipaddress {
        192.168.22.41/24 brd 192.168.22.255 dev eth0 label eth0:1
        192.168.22.42/24 brd 192.168.22.255 dev eth0 label eth0:2
      
    }
  notify_backup "/usr/local/keepalived/bin/show.sh vip1 backup"
  notify_master "/usr/local/keepalived/bin/show.sh vip1 master"
  notify_fault "/usr/local/keepalived/bin/show.sh vip1 fault"
  smtp_alert
}



二、iptables配置:



#Generated by iptables-save v1.4.7 on Fri Mar  4 16:03:45 2016
*mangle
:PREROUTING ACCEPT [881:72068]
:INPUT ACCEPT [881:72068]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1009:123804]
:POSTROUTING ACCEPT [1009:123804]
-A PREROUTING -d 192.168.22.41/32 -m conntrack --ctstate NEW -j MARK --set-xmark 0x41/0xffffffff
-A PREROUTING -d 192.168.22.42/32 -m conntrack --ctstate NEW -j MARK --set-xmark 0x42/0xffffffff

COMMIT
# Completed on Fri Mar  4 16:03:45 2016
# Generated by iptables-save v1.4.7 on Fri Mar  4 16:03:45 2016
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -d 192.168.22.41/32 -p tcp -m tcp --dport 10041 -j DNAT --to-destination 192.168.33.33:80
-A PREROUTING -d 192.168.22.42/32 -p tcp -m tcp --dport 10042 -j DNAT --to-destination 192.168.33.33:80

-A POSTROUTING -m mark --mark 0x41 -j SNAT --to-source 192.168.22.41
-A POSTROUTING -m mark --mark 0x42 -j SNAT --to-source 192.168.22.42

COMMIT
# Completed on Fri Mar  4 16:03:45 2016
# Generated by iptables-save v1.4.7 on Fri Mar  4 16:03:45 2016
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [2024:234224]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -p vrrp -j ACCEPT
-A INPUT -p tcp -m tcp --dport 5666 -j ACCEPT
-A INPUT -p udp -m udp --dport 161 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 192.168.0.0/16 -j ACCEPT
-A FORWARD -s 10.0.0.0/8 -j ACCEPT

-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Fri Mar  4 16:03:45 2016



主要是针对不同的VIP地址进行mangle上打标签,来区别不同的源地址。

时间: 2024-08-10 17:41:17

iptables+keepalived实现多源地址访问的相关文章

keepalived+nginx反向代理访问后端web服务器

 架设web服务器通过nginx反向代理访问,并通过keepalived配置nginx反向代理服务器和nginxweb 服务器的故障转移 1.系统:Centos6.6 2.反向代理:Keepalived+nginxproxy:  主机:PHP-API-P1       IP地址:192.168.0.111 主机:PHP-API-P2 IP地址:192.168.0.112 VIP :192.168.0.8 3.后端服务:Keepalived+nginx: 主机:PHP-API-S1 IP地址:19

iptables后,外网访问网站可以,内网无法访问【已解决】

最近,到处看到有人问这个问题,怎么以前没人问,现在这么多人问呢?前两天我还在华为的论坛上仔细的说了这个问题,现在复制到这边来.希望能帮助大家理解这个问题. 这是个理论问题,我们先从NAT讲起:NAT有两种基本类型,一种是SNAT(Source   NAT),一种是DNAT(Dest.   NAT).SNAT即源NAT是改变数据包的IP层中的源IP地址,一般是用来将不合法的IP外出请求转换成合法的IP的外出请求,就是普通的用一个或者几个合法IP来带动一整个非法IP段接入.   DNAT即目的NAT

linux iptables IP限制访问 指定IP访问

又有人攻击服务器了,没有办法又的去防,这里简单介绍一种限制指定IP访问的办法.单个IP的命令是iptables -I INPUT -s 59.151.119.180 -j DROP 封IP段的命令是iptables -I INPUT -s 211.1.0.0/16 -j DROPiptables -I INPUT -s 211.2.0.0/16 -j DROPiptables -I INPUT -s 211.3.0.0/16 -j DROP 封整个段的命令是iptables -I INPUT -

[linux] mysql跨服务器访问, iptables设置

跨服务器mysql访问, iptables配置 1> 设置被访问机器的mysql权限 grant all privileges on *.* to [email protected]"[ip]" identified by "[pass]" with grant option;  // 授权, 可以根据情况设置不同权限, 本sql赋予远程机器所有mysql操作权限 flush privileges; // 刷新权限 use mysql;   // mysql数

集群系列教程之:keepalived+lvs 部署

集群系列教程之:keepalived+lvs 前言:最近看群里很多人在问keepalived+lvs的架构怎么弄,出了各种各样的问题,为此特别放下了别的文档,先写一篇keepalived+lvs架构的文档,使那些有需求的人能够得以满足.但是此篇文档是架构文档,不是基础理论,但我想你能做这个架构,势必也了解了基础理论知识,更多的理论知识体系,请看下回分解.... 测试拓扑: 环境说明: 从上面的拓扑图,就可以看出本实验的环境信息,其中实线代表的是真实的物理连接,而虚线表示的是逻辑关系.hostna

Keepalived基本设置及IPVS扩展

Keepalived基本设置及IPVS扩展 IP地址高可用 [[email protected] ~]# yum install keepalived -y (一般系统光盘就有) [[email protected] ~]# yum install keepalived -y [[email protected] ~]# rpm -q keepalived keepalived-1.2.13-4.el6.x86_64 [[email protected] ~]# cd /etc/keepaliv

Nginx反向代理,负载均衡,redis session共享,keepalived高可用

相关知识自行搜索,直接上干货... 使用的资源: nginx主服务器一台,nginx备服务器一台,使用keepalived进行宕机切换. tomcat服务器两台,由nginx进行反向代理和负载均衡,此处可搭建服务器集群. redis服务器一台,用于session的分离共享. nginx主服务器:192.168.50.133 nginx备服务器:192.168.50.135 tomcat项目服务器1:192.168.50.137 tomcat项目服务器2:192.168.50.139 redis服

iptables防火墙

getenforce 查看selinux的状态vi /etc/selinux/config 进去改他的配置文件 永久设置他的状态 setenforce 0 临时生效 2. Selinux配置文件 /etc/selinux/config 三种形式:enforcing, permissive, disabled SELINUX=disabled 更改完成重启系统才可以生效setenforce 0/1 getenforce yum install -y libselinux-utils 3. Netf

iptables Data filtering详解

内容简介防火墙的概述iptables简介iptables基础iptables语法iptables实例案例详解(一)防火墙的简介防火墙是指设置在不同网络或网络安全域之间的一系列部件的组合,它能增强机构内部网络的安全性.它通过访问控制机制,确定哪些内部服务允许外部访问,以及允许哪些外部请求可以访问内部服务.它可以根据网络传输的类型决定IP包是否可以传进或传出内部网.防火墙通过审查经过的每一个数据包,判断它是否有相匹配的过滤规则,根据规则的先后顺序进行一一比较,直到满足其中的一条规则为止,然后依据控制