iptebles(二)

一、iptables编写规则

1、命令格式

2、常用选项说明

  • [-t 表名]:该规则所操作的哪个表,可以使用filter、nat等,如果没有指定则默认为filter
  • -A:新增一条规则,到该规则链列表的最后一行
  • -I:插入一条规则,原本该位置上的规则会往后顺序移动,没有指定编号则为1
  • -D:从规则链中删除一条规则,要么输入完整的规则,或者指定规则编号加以删除
  • -R:替换某条规则,规则替换不会改变顺序,而且必须指定编号。
  • -P:设置某条规则链的默认动作
  • -nL:-L、-n,查看当前运行的防火墙规则列表
  • chain名:指定规则表的哪个链,如INPUT、OUPUT、FORWARD、PREROUTING等
  • [规则编号]:插入、删除、替换规则时用,--line-numbers显示号码
  • [-i|o 网卡名称]:i是指定数据包从哪块网卡进入,o是指定数据包从哪块网卡输出
  • [-p 协议类型]:可以指定规则应用的协议,包含tcp、udp和icmp等
  • [-s 源IP地址]:源主机的IP地址或子网地址
  • [--sport 源端口号]:数据包的IP的源端口号
  • [-d目标IP地址]:目标主机的IP地址或子网地址
  • [--dport目标端口号]:数据包的IP的目标端口号
  • <-j 动作>:处理数据包的动作,包括ACCEPT、DROP、REJECT等

3、应用语法及举例

  • 创建一条自定义的空规则链

语法:iptables [-t table] -N chain

举例:# iptables -t filter -N testchain

  • 删除一条自定义的空规则链

语法:iptables [-t table] -X chain

举例:# iptables -t filter -X testchain

  • 为自定义的链修改名子

语法:iptables [-t table] -E old-chin-name new-chain-name

举例:# iptables -t filter -E testchain chain

  • 为链指定默认策略,修改默认的属性

语法:iptables [-t table] -P chain—name target

举例:# iptables -t filter -P FORWARD DROP

  • 清空链中的规则,操作前将规则做好备份,注意,规则是有编号,在链中自上而下,从1开始

语法:  iptables [-t table] -F  [chain [rulenum]] [options...]

举例:# iptables -t filter -F INPUT

  • 列出表中的所有规则

语法: iptables [-t table] -L  [chain [rulenum]] [options...]

-n:数字格式显示ip和port

-v:显示信息

-x:exactly:精确值,不执行单位换

--line-nambers:显示各规则的行号

[[email protected] ~]# iptables -t filter -nvL
Chain INPUT (policy ACCEPT 292 packets, 22404 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   6   396 ACCEPT     all  --  eth0   *       192.168.0.0/16       192.168.1.8

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 36 packets, 2688 bytes)
 pkts bytes target     prot opt in     out     source               destination
 141 14166 ACCEPT     all  --  *      *       192.168.1.8          0.0.0.0/0
  • pkts:packets,被本规则所有匹配到的报文的个数
  • baytes:被本规则所匹配到的所有报文的大小子和,单位是字节,会执行单位换算
  • target:目标,即处理机制
  • port:协议一般为(TCP|UDP|ICMP)
  • opt:可选项
  • in:数据包的流入端口
  • out:数据包的流出接口
  • scource:源地址
  • destination:目标地址
  • 把规则的计数器清零

语法: iptables [-t table] -Z  [chain [rulenum]] [options...]

举例:# iptables -t filter -Z

  • 附加/删除一条规则

语法:iptables [-t table] {-A|-D} chain rule-specification

说明:rule-specification :匹配条件    -j 处理机制包括ACCEPT、DROP、REJECT等

通用匹配条件:

  • -s  匹配原地址,可以IP,也可以网络地址:可以使用!操作符取反,!172.168.0.0/16 相当于 --src,或 --source
  • -d  匹配目标地址,可以IP,也可以网络地址:可以使用!操作符取反,!172.168.0.0/16
  • -p  匹配协议,通常只能使用{TCP|UDP|ICMP}三者之一
  • -i   数据报文流入的接口,通常只用于INPUT,FORWARD和PREROUTING
  • -o  数据报文流出的接口,通常只用OUTPUT,FORWARD和POSTROUTING

举例:# iptables -t filter -A INPUT -s 192.168.0.0/16 -d 192.168.1.8 -j ACCEPT

# iptables -t filter -A OUTPUT -s 192.168.1.8 -j ACCEPT

# iptables -A INPUT -i eth0 -s 192.168.0.0/16 -d 192.168.1.8 -j ACCEPT

# iptables -A INPUT -i eth0 -d 192.168.1.8 -p tcp -j ACCEPT

# iptables -A INPUT -i eth0 -d 192.168.1.8 -p icmp -j REJECT

  • 删除一条规则

说明:在使用前最好用--line-number 选项列出行号,然后根据行号进行删除,当一条被删除,另外的下一条会被补上。不要执行多次删除行号的操作,这是由于在删除一行以后该行的下一行的行号会自行减一,若在执行一遍删除就会把刚上来的一行给删除。

语法: iptables [-t table] -D chain rulenum

举例:# iptables -D INPUT 2

  • 指定位置插入规则

语法:iptables [-t table] -I chain [rulenum] rule-specification

举例:# iptables -I INPUT  -i lo -j ACCEPT   //不加行号就是插入到最前端

# iptables -I INPUT 2 -i lo -j ACCEPT    //规则插入到指定行号

  • 替换规则(覆盖指定规则)

语法:iptables [-t table] -R chain rulenum rule-specification

举例:# iptables -R INPUT 1 -i lo -j DROP  //替换规则一定要是正确

  • 显示指定链上的规则添加命令

语法:iptables [-t table] -S [chain [rulenum]]

举例:# iptables -S    //显示所有链上的规则

# iptables -S INPUT   //只显示INPUT链上的规则

# iptables -S INPUT 3  //显示INPUT链上第三条规则

4、扩展匹配条件之隐含扩展及举例

使用-p {tcp|udp|icmp}指定某特定协议后,自动能够对协议进行的扩展

  • -p tcp

--dport m[-n],匹配的目标端口,可以是连续的多个端口,可以取反

--sport:m[-n],匹配的源端口,可以是连续的多个端口,可以取反

--tcp-flags  (常用参数:urg psh rst syn ack fin ALL NONE)

  • -p udp

--dport m[-n],匹配的目标端口,可以是连续的多个端口,可以取反

--sport:m[-n],匹配的源端口,可以是连续的多个端口,可以取反

  • -p icmp

--icmp-type  (0:ping响应、8:ping请求)

放行来自于192.168.0.0/16网络的主机对本机192.168.1.8的ssh服务的请求:

# iptables -t filter -A INPUT -s 192.168.0.0/16 -d 192.168.1.8 -p tcp --dport  22 -j REJECT

# iptables -t filter -A OUTPUT -s 192.168.1.8 -d 192.168.0.0/16 -p tcp --sport 22 -j REJECT

清除tcp报头所有标志位全为1或0的报文,这种为恶意访问:

# iptables -A -p tcp --tcp-flags ALL ALL -j DORP

# iptables -A -p tcp --tcp-flags ALL NONE -j DORP

放行本机的tftp服务:

# iptables -A INPUT -s 192.168.0.0/16 -d 192.168.1.8 -p udp --dport 69 -j ACCEPT

# iptables -A OUTPUT -s 192.168.1.8 -d 192.168.0.0/16 -p udp --sport 69 -j ACCEPT

放行本机的DNS服务:

# iptables -A INPUT -s 192.168.0.0/16 -d 192.168.1.8 -p udp --dport 53 -j ACCEPT

# iptables -A OUTPUT -s 192.168.1.8 -d 192.168.0.0/16 -p udp --sport 53 -j ACCEPT

# iptables -A INPUT -d  192.168.1.8 -p udp --dport 53 -j ACCEPT

# iptables -A OUTPUT -s 192.168.1.8  -p udp --sport 53 -j ACCEPT

# iptables -A INPUT -s 192.168.0.0/16 -d 192.168.1.8 -p tcp --dport 53 -j ACCEPT

# iptables -A OUTPUT -s 192.168.1.8 -d 192.168.0.0/16 -p tcp --sport 53 -j ACCEPT

# iptables -A INPUT -d  192.168.1.8 -p tcp --dport 53 -j ACCEPT

# iptables -A OUTPUT -s 192.168.1.8  -p tcp --sport 53 -j ACCEPT

放行ping其他主机:

# iptables -A  OUTPUT -s 192.168.1.8 -p icmp --icmp-type 8 -j ACCEPT

# iptables -A  INPUT -d 192.168.1.8 -p icmp --icmp-type 0 -j ACCEPT

# iptables -A  OUTPUT -s 192.168.1.8 -p icmp --icmp-type 0 -j ACCEPT

# iptables -A  INPUT -d 192.168.1.8 -p icmp --icmp-type 8 -j ACCEPT

5、扩展匹配条件之显式扩展

说明:必须要明确指定的扩展模块

语法规则:-m 扩展模块名称 --专用选项1 --专用选项2

  • multiport:多端口匹配,一次指定多个离散端口,可以取反

--source-ports --sport ports{port1 port2}

--destination-ports, --dports

--ports

将本机的ssh和web服务开启:

# iptables -I INPUT -d 192.168.1.8 -p tcp -m multiport --dports 22,80 -j ACCEPT

# iptables -I OUTPUT -s 192.168.1.8 -p tcp -m multiport --sports 22,80 -j ACCEPT

  • iprange:ip地址服务

[!] --src-range from [-to]

[!] --dst-range from [-to]

将本机的telnet服务仅允许192.168.1.1-192.168.1.88网段的主机能访问:

# iptables -A INPUT -d 192.168.1.8 -p tcp --dport 23 -m iprange --src-range 192.168.1.1-192.168.1.88 -j ACCEPT

# iptables -A INPUT -s 192.168.1.8 -p tcp --sport 23 -m iprange --dst-range 192.168.1.1-192.168.1.88 -j ACCEPT

  • time :指定时间范围

--datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]]

--datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]

--timestart hh:mm[:ss]

--timestop hh:mm[:ss]

[!] --weekdays day[,day....]

将本机的901端口在每周一到周五的早上08:00-晚上18:00开启:

# iptables -A INOUT -d 192.168.1.8 -p tcp --dport 901 -m time --weekdays Mob,Tus,Wed,Thu,FrI --timestart 08:00:00 --timestop 18:00:00 -j ACCEPT

# iptables -A OUTPUT -s 192.168.1.8 -p tcp --sport 901 -j ACCEPT

  • string :字符串匹配

--alog {bm|kmp} :字符匹配查找时使用的算法

--string “STRING”:要查找的字符串

--hex-string "HEX-STRING" 要查找的字符,先编码成16进制格式

将页面含有字母bols页面DROP:

# iptables -A OUTPUT -s 192.168.1.8 -p tcp --sport 80 -m string --algo kmp --string "bols" -j DROP

  • connlimit:每IP对指定服务的最大并发连接数

[!] --connlimit-above  [n]

限定访问web服务器页面的最带请求不能超过5个:

# iptables -I INPUT -d 192.168.1.8 -p tcp --dport 80 -m connlimit --connlimit-above 5 -j DROP

  • limit:报文速率控制

--limit #[/second|/minute|/hour|/day]默认每小时三个

--limit-burst #初始峰值

设定别人ping主机每秒钟次数为2次,峰值不能超过5次:

#  iptables -I INPUT -d 192.168.1.8 -p icmp --icmp-type 8 -m limit --limit 2/second --limit-burst 5 -j ACCEPT

  • state:状态追踪

--state {NEW,ESTATBLISHED,INVALID,RELATED}  指定检测那种状态

  • NEW:该包想要开始一个连接(重新连接或将连接重定向)。
  • RELATED:该包是属于某个已经建立的连接所建立的新连接。例如:FTP的数据传输连接就是控制连接所 RELATED出来的连接。--icmp-type 0 ( ping 应答) 就是--icmp-type 8 (ping 请求)所RELATED出来的。
  • ESTABLISHED :只要发送并接到应答,一个数据连接从NEW变为ESTABLISHED,而且该状态会继续匹配这个连接的后续数据包。
  • INVALID:数据包不能被识别属于哪个连接或没有任何状态比如内存溢出,收到不知属于哪个连接的ICMP错误信息,一般应该DROP这个状态的任何数据。

应用场景:我们知道服务器的80端口是提供web服务的,一般客户端连接服务端时的状态为NEW或者ESTABLISHED,而服务端响应服务时的状态为ESTABLISHED,现在有一种木马叫反弹木马,(其工作原理为:其驻留在用户计算机里的一段服务程序,而攻击者控制的则是相应的客户端程序。服务程序通过特定的端口,打开用户计算机的连接资源。一旦攻击者所掌握的客户端程序发出请求,反弹木马便和他连接起来,将用户的信息窃取出去。)但这种木马的特点就是服务器端响应客户端的状态为NEW,而不是ESTABLISHED,基于这种原理我们就可以将响应状态为ESTABLISHED的端口服务给DROP掉。但是一定要注意当使用此模块时会消耗一定的内存空间,若服务器的响应请求很多就不建议使用。特别是反向代理的服务器。

当请求本机的22、80端口时只开启 NEW,ESTABLISHED两种状态,而本机响应客户端是之开启ESTABLISHED状态,同时开启本机的ping请求,但是其每秒响应2次,峰值为5次:

# iptables -A INPUT -d 192.168.1.8 -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

# iptables -A OUTPUT -s 192.168.1.8  -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

# iptables -P INPUT  DROP
# iptables -P OUTPUT  DROP

# iptables -A INPUT -d 192.168.1.8 -p icmp --icmp-type 8 -m limit --limit 2/second --limit-burst 5 -m state --state NEW,ESTABLISHED -j ACCEPT

# iptables -A OUTPUT -s 192.168.1.8 -p icmp --icmp-type 0 -m state --state ESTABLISHED -j ACCEPT

# iptables -A INPUT -d 192.168.1.8 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT

# iptables -A OUTPUT -s 192.168.1.8 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

优化上例的规则:

# iptables -I INPUT -d 192.168.1.8 ! -p icmp -m state --state ESTABLISHED -j ACCEPT

# iptables -I INPUT 2 -d 192.168.1.8 -p tcp -m multiport --dports 22,80 -m state --state NEW -j ACCEPT

# iptables -D INPUT 3

# iptables -D INPUT 4

# iptables -I OUTPUT -s 192.168.1.8 -m state --state ESTABLISHED -j ACCEPT

# iptables -D OUTPUT 2

[[email protected] ~]# iptables -nvL
Chain INPUT (policy DROP 66 packets, 5148 bytes)
 pkts bytes target     prot opt in     out     source               destination         
  172 10448 ACCEPT    !icmp --  *      *       0.0.0.0/0            192.168.1.8         state ESTABLISHED 
    2   120 ACCEPT     tcp  --  *      *       0.0.0.0/0            192.168.1.8         multiport dports 22,80 state NEW 
  
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
  499 61149 ACCEPT     all  --  *      *       192.168.1.8          0.0.0.0/0           state ESTABLISHED

同时还可以自定义个链,把这个链应用到上例中:

# iptables -t filter -N clean_in
# iptables -A clean_in -d 192.168.1.8 -p tcp --tcp-flags ALL ALL -j DROP
# iptables -A clean_in -d 192.168.1.8 -p tcp --tcp-flags ALL NONE -j DROP
# iptables -A clean_in -d 192.168.255.255 -p icmp -j DROP 
# iptables -A clean_in -d 255.255.255.255 -p icmp -j DROP

# iptables -A clean_in -d 192.168.1.8 -m state --state INVALID -j DROP

# iptables -A clean_in -d 192.168.1.8 -j RETURN

# iptables -I INPUT -d 192.168.1.8 -j clean_in

注意:前面我们已经看了state模块的安全机制很不错,但是要注意若使用state模块一般尽量不要用在一个繁忙的服务器上,特别是反向代理服务器。这是因为使用state模块会占用一定的系统资源,下面在给出使用state模块是一些建议:

  • 对于进入状态为ESTABLISHED都应该放行
  • 对于返回状态为ESTABLISHED都应该放行
  • 严格检查进入的状态为NEW的链接
  • 所有状态为INVALID都应该拒绝

举例:如何放行工作于被动模式下的FTP服务

# iptables -A INPUT -d 192.168.1.8 -p tcp --dport 22 -j ACCEPT

# iptables -A OUTPUT -s 192.168.1.8 -p tcp --sport 22 -j ACCEPT

# iptables -P INPUT DROP

# iptables -P OUTPUT DROP

# iptables -A INPUT -d 192.168.1.8 -p tcp --dport 21 -j ACCEPT

# iptables -A OUTPUT -s 192.168.1.8 -p tcp --sport 21 -j ACCEPT

# iptables -A INPUT -d 192.168.1.8 -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT

# iptables -A OUTPUT -s 192.168.1.8 -p tcp -m state --state ESTABLISHED -j ACCEPT

在开启ftp服务时还要将其相关模块加载至内核中,下面是手动加载,重启后会丢失:

[[email protected] ~]# modprobe ip_nat_ftp
[[email protected] ~]# modprobe ip_conntrack_ftp

也可以写入配置文件中,并把配置文件定义在/etc/rc.local中,来开机自动加载:

[[email protected] ~]# vim /etc/sysconfig/iptables-config
IPTABLES_MODULES="ip_nat_ftp ip_conntraack_ftp"

下面是将上面的规则进行优化的一种方法:

# iptables -I INPUT -d 192.168.1.8 -m state --state RELATED,ESTABLISHED -j ACCEPT

# iptables -D INPUT 4

# iptables -I INPUT 2 -d 192.168.1.8 -p tcp -m multiport --dports 21,22,80 -m state --state NEW -j ACCEPT

# iptables -D INPUT 3

# iptables -D INPUT 3

# iptables -I OUTPUT -s 192.168.1.8 -m state --state ESTABLISHED -j ACCEPT

# iptables -D OUTPUT 2

# iptables -D OUTPUT 2

# iptables -D OUTPUT 2

扩展学习

在上面的state模块中还有下面一些其性能相关的配置文件:

  • /proc/sys/net/nf_conntrack_max:调整连接追踪功能所能容纳的最大连接数,因此,建议按需调大此值
  • /proc/net/nf_conntrack:记录了当前追踪的所有连接
  • /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_established:定义了连接的超时时间

6、总结

由于在写iptables规则是保存在内存中,若机器重启或者iptables服务重启均会导致规则的丢失,下面就是讲如何保存及生效规则:

第一种:service iptables save ,规则会被保存至/etc/sysconfig/iptables文件中, 默认若在此启动iptables时也会读取此文件中的内容生成此文件指定的规则。

第二种: iptables-save > /path/to/some_rulefile 保存iptables至别的位置 ,若想在次载入规则就使用iptables-restore < /path/to/some_rulefile 从自定义的位置读取并使之生效。

我们在写iptables规则时一般有两种总体方针,第一、通即定义白名单,默认为堵,只对能识别的进行放行,第二、堵即定义黑名单,默认为通,只对能识别的进行阻截。上面两种在日常使用时最好使用默认为堵,设置白名单,这样做的好处是能根据自己的需求灵活定义规则,但是最大的劣势就是一旦自己不小心清空规则或者规则定义错误,那么就不能通过ssh连接服务器,遇到这种情况只有两种方法,要么在写规则时执行一个定时任务,用来清理刚才定义的内容。还有就是让人到机房把机器重启。若两者都不行就要看自己的人品了你放服务器的机房突然断电。最后在写规则时最好将控制强的放在前面,应用访问频繁的也要放在前面,这要做能节约系统资源。

时间: 2024-08-06 08:11:35

iptebles(二)的相关文章

python接口自动化测试(二)-requests.post()

上一节介绍了  requests.get()  方法的基本使用,本节介绍  requests.post()  方法的使用: 本文目录: 一.方法定义 二.post方法简单使用 1.带数据的post 2.带header的post 3.带json的post 4.带参数的post 5.普通文件上传 6.定制化文件上传 7.多文件上传 一.方法定义: 1.到官方文档去了下requests.post()方法的定义,如下: 2.源码: 3.常用返回信息: 二.post方法简单使用: 1.带数据的post:

二维码扫码积分系统定制开发

微信积分系统 二维码扫码积分系统定制开发找丽姐[158.1816.6626/电微]二维码营销模式系统定制开发 微信扫二维码营销系统开发 扫码领积分系统开发 一.如何实现扫二维码领红包功能? 1.使用扫描二维码领取红包对活动进行设置,包括红包数量.红包金额.促销地区.中奖概率等. 2.将生成的二维码赋到商品上面并赋涂层,一方面可以起到保证二维码的一次性,另一方面也可以引起消费者的好奇心. 3.通过手机微信打开扫一扫,扫码商品二维码关注公众号并领取红包,如果参与分享还可以获得抽奖的机会. 二.微信扫

微信生成二维码 只需一个网址即刻 还有jquery生成二维码

<div class="orderDetails-info"> <img src="http://qr.topscan.com/api.php?text=http://123.net/index.php?s=/Home/Index/yanzheng/mai/{$dange.id}" style="width: 5rem; margin-bottom: 1rem;" > </div> http://qr.tops

家电二维码售后服务平台系统开发

家电二维码售后服务平台系统开发,家电二维码售后系统开发,小吴183.2071.6434微电,家电二维码售后软件开发,家电二维码售后平台开发. 互联网平台的节点有两大类型:第一基数节点,也就是弱连接的节点,其规模要大,越大越好,互联网的价值与节点数的平比成正比.第二活跃节点,也就是强连接的节点,其能量要强,越强越好,互联网的价值与其强度成正比. 一.家电维修行业"维修黑幕"层出不穷 记者从一位从事家电维修人士那里了解到,目前行业公认当前家电维修行业有陷阱,"维修黑幕"

MySQL(九)之数据表的查询详解(SELECT语法)二

上一篇讲了比较简单的单表查询以及MySQL的组函数,这一篇给大家分享一点比较难得知识了,关于多表查询,子查询,左连接,外连接等等.希望大家能都得到帮助! 在开始之前因为要多表查询,所以搭建好环境: 1)创建数据表suppliers 前面已经有一张表是book表,我们在建立一张suppliers(供应商)表和前面的book表对应. 也就是说 让book中s_id字段值指向suppliers的主键值,创建一个外键约束关系. 其实这里并没有达到真正的外键约束关系,只是模拟,让fruits中的s_id中

winform学习日志(二十三)---------------socket(TCP)发送文件

一:由于在上一个随笔的基础之上拓展的所以直接上代码,客户端: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net.Sockets; using Sys

算法 排序NB二人组 堆排序 归并排序

参考博客:基于python的七种经典排序算法     常用排序算法总结(一) 序前传 - 树与二叉树 树是一种很常见的非线性的数据结构,称为树形结构,简称树.所谓数据结构就是一组数据的集合连同它们的储存关系和对它们的操作方法.树形结构就像自然界的一颗树的构造一样,有一个根和若干个树枝和树叶.根或主干是第一层的,从主干长出的分枝是第二层的,一层一层直到最后,末端的没有分支的结点叫做叶子,所以树形结构是一个层次结构.在<数据结构>中,则用人类的血统关系来命名,一个结点的分枝叫做该结点的"

python接口自动化测试(二)-requests.get()

环境搭建好后,接下来我们先来了解一下requests的一些简单使用,主要包括: requests常用请求方法使用,包括:get,post requests库中的Session.Cookie的使用 其它高级部分:认证.代理.证书验证.超时配置.错误异常处理等. 本节首先来了解一下requests库中如何发送get请求: 一.看下方法定义: 1.到官方文档去了下requests.get()方法的定义,如下: 2.点击右上角的[source],看一下它的源码如下: 看到最后一行return,get方法

MySQL集群(二)之主主复制

前面介绍了主从复制,这一篇我将介绍的是主主复制,其实听名字就可以知道,主主复制其实就是两台服务器互为主节点与从节点.接下来我将详细的给大家介绍,怎么去配置主主复制! 一.主从复制中的问题 1.1.从节点占用了主节点的自增id 环境: 主节点:zyhserver1=1.0.0.3 从节点:udzyh1=1.0.0.5 第一步:我们在主节点中创建一个数据库db_love_1,在创建一个表tb_love(里面有id自增和name属性). create database db_love_1; use d