linux ip_hash用法
Sure HA 双机linux环境配置手册(镜像型)

Sure HA 双机linux环境配置手册(镜像型)一、基础环境设置1、设置IP ,请在两个服务器上分别进行操作host1:公网IP:192.168.2.101 私网IP:192.168.20.101host2: 公网IP :192.168.2.102 私网IP :192.168.20.102修改IP的方法为:vi /etc/sysconfig/network/ifcfg-eth0vi /etc/sysconfig/network/ifcfg-eth1eth0修改后的结果eth1修改后的结果查看并确认IP地址2、设置/etc/HOSTNAME,请在两个服务器上分别进行操作vi /etc/HOSTNAME修改主机名为:host1查看修改后的结果为:重启后hostname才能生效3、查看防火墙的状态,如果是打开状态则关闭防火墙,请在两个服务器上分别进行操作chkconfig --list |grep firewall 注:list前面是两个短线--关闭防火墙chkconfig SuSEfirewall2_setup offchkconfig SuSEfirewall2_init offSuSEfirewall2 stop4、设置/etc/hosts,请在两个服务器上分别进行操作修改/etc/hosts文件,内容如下5、设置硬盘分区,请在两个服务器上分别进行操作说明:在本文环境中只有两个主分区,故在下文中首先新建了一个扩展分区,然后建立了一个20M的cluster分区,剩余的分区划分成数据分区。
关于fdisk的基础知识,n:新建分区,p:主分区,e:扩展分区,l:逻辑分区,w:把修改写入分区表1.查看硬盘分区对/dev/sda进行分区fdisk /dev/sda输入n,然后选择e,建立扩展分区,输入分区号3(1和2已经被使用)分区大小选择默认,直接两次回车即可然后再次输入n,然后输入l(建立逻辑分区)。
ip命令的使用

ip命令的使⽤显⽰所有⽹络接⼝信息输⼊ip addr或者ip a命令可以显⽰所有的⽹络接⼝信息[root@ecs-centos-7 ~]# ip addr1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether fa:16:3e:e0:4f:b8 brd ff:ff:ff:ff:ff:ffinet 192.168.0.9/24 brd 192.168.0.255 scope global noprefixroute dynamic eth0valid_lft 74409sec preferred_lft 74409secinet6 fe80::f816:3eff:fee0:4fb8/64 scope linkvalid_lft forever preferred_lft forever[root@ecs-centos-7 ~]#上⾯的输出中,可以看出系统⽬前的⽹络接⼝分别是lo和eth0, 前者是⽹络环回接⼝,后者是常规的⽹络接⼝输出接⼝信息的字段详解<BROADCAST,MULTICAST,UP,LOWER_UP>: BROADCAST 表⽰⽀持⼴播, MULTICAST 表⽰⽀持多播UP ⽹络接⼝处于开启状态LOWER_UP 表⽰⽹络电缆已插⼊并且已连上⽹络mtu 1500: 最⼤传输的单位1500字节qdisc pfifo_fast: 数据包排队state UP: 接⼝状态已开启qlen 1000: 传输队列长度link/ether fa:16:3e:e0:4f:b8 Mac地址brd ff:ff:ff:ff:ff:ff ⼴播地址inet 192.168.0.9/24 : IPV4scope global: 全局有效dynamic eth0: 动态分配地址valid_lft 74409sec: IPV4有效期preferred_lft 74409sec: IPV4⾸选⽣存期inet6 fe80::f816:3eff:fee0:4fb8/64 IPV6scope link: 仅在此接⼝上⽣效除了输出所有的⽹络接⼝信息外,还可以按照以下⽅式个性化输出⽹络接⼝信息按照是否⽀持 IPV4 或 IPV6输出命令ip -4 a会输出只⽀持IPV4的接⼝信息同样,命令ip -6 a会输出只⽀持IPV6的接⼝信息按照接⼝名字输出命令ip a show eth0会输出eth0接⼝的信息[root@ecs-centos-7 ~]# ip a show eth02: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether fa:16:3e:e0:4f:b8 brd ff:ff:ff:ff:ff:ffinet 192.168.0.9/24 brd 192.168.0.255 scope global noprefixroute dynamic eth0valid_lft 73494sec preferred_lft 73494secinet6 fe80::f816:3eff:fee0:4fb8/64 scope linkvalid_lft forever preferred_lft forever按照⽹络接⼝开启和关闭状态输出命令ip link ls up会输出所有处于开启状态的⽹络接⼝信息那么,ip link ls down就会输出所有处于关闭状态的⽹络接⼝信息为⽹络接⼝添加、移除 IP地址添加IP为指定⽹络接⼝分配IP地址的命令格式: ip a add ip地址 dev 接⼝名字⽐如:现在要为eth0⽹络接⼝分配⼀个⽹络掩码为 20 的IP 192.168.1.10, 具体的输⼊请看下⾯的实例[root@ecs-centos-7 ~]# ip a add 192.168.1.10/20 dev eth0[root@ecs-centos-7 ~]# ip a show eth02: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether fa:16:3e:e0:4f:b8 brd ff:ff:ff:ff:ff:ffinet 192.168.0.9/24 brd 192.168.0.255 scope global noprefixroute dynamic eth0valid_lft 71787sec preferred_lft 71787secinet 192.168.1.10/20 scope global eth0valid_lft forever preferred_lft foreverinet6 fe80::f816:3eff:fee0:4fb8/64 scope linkvalid_lft forever preferred_lft forever从上⾯例⼦的输出结果可以看出,⽹络接⼝eth0上多了⼀个192.168.1.10的 IP命令ip a add 192.168.1.10/20 dev eth0执⾏成功的话,是没有任何输出,如果⽹络接⼝eth0不存在的话,会输出Cannot find device "eth0"的错误信息其实,还可以通过执⾏ping 192.168.1.10命令来测试⽹络接⼝上IP是否分配成功,如果能 ping 通IP的话,表⽰分配成功,否则表⽰失败说明:192.168.1.10/20 中 20 是 CIDR 表⽰法的⽹络掩码,想详细了解的可以⾃⾏查阅⽹络掩码的资料移除IP⽹络接⼝上添加了IP之后,可使⽤ip a del ip地址 dev 接⼝名字命令从指定的接⼝移除指定的IP,移除的时候IP后⾯需要携带⽹络掩码[root@ecs-centos-7 ~]# ip a del 192.168.1.10/20 dev eth0[root@ecs-centos-7 ~]# ip a show eth02: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether fa:16:3e:e0:4f:b8 brd ff:ff:ff:ff:ff:ffinet 192.168.0.9/24 brd 192.168.0.255 scope global noprefixroute dynamic eth0valid_lft 71414sec preferred_lft 71414secinet6 fe80::f816:3eff:fee0:4fb8/64 scope linkvalid_lft forever preferred_lft forever修改⽹络接⼝状态要关闭或者开启⽹络接⼝,可以使⽤ip link set dev 接⼝名字 up/down命令例如:有lo和eth0两个⽹络接⼝, 具体接⼝信息如下[root@ecs-centos-7 ~]# ip a1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether fa:16:3e:e0:4f:b8 brd ff:ff:ff:ff:ff:ffinet 192.168.0.9/24 brd 192.168.0.255 scope global noprefixroute dynamic eth0valid_lft 59216sec preferred_lft 59216secinet6 fe80::f816:3eff:fee0:4fb8/64 scope linkvalid_lft forever preferred_lft forever通过ping -w 3 127.0.0.1命令测试,结果表明lo接⼝⽬前是开启状态,具体的测试输出如下所⽰[root@ecs-centos-7 ~]# ping -w 3 127.0.0.1PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.014 ms64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.026 ms64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.022 ms64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.023 ms--- 127.0.0.1 ping statistics ---4 packets transmitted, 4 received, 0% packet loss, time 2999msrtt min/avg/max/mdev = 0.014/0.021/0.026/0.005 ms现在关闭lo⽹络接⼝,并再次测试该接⼝的状态,具体命令如下:[root@ecs-centos-7 ~]# ip link set dev lo down[root@ecs-centos-7 ~]# ip link show lo1: lo: <LOOPBACK> mtu 65536 qdisc noqueue state DOWN mode DEFAULT group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00[root@ecs-centos-7 ~]# ping -w 3 127.0.0.1PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.--- 127.0.0.1 ping statistics ---4 packets transmitted, 0 received, 100% packet loss, time 2999ms执⾏ip link set dev lo down命令之后,关闭了⽹络接⼝lo,通过ip link show lo命令查看该接⼝的信息,结果表明接⼝是关闭状态,再次通过ping -w 3 127.0.0.1测试接⼝的状态,再⼀次确认了接⼝是关闭状态修改⽹络接⼝传输队列长度通过p l set txqueuelen 长度 dev 接⼝名字命令可以设置⽹络接⼝的传输队列长度[root@ecs-centos-7 ~]# ip l show eth02: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1200link/ether fa:16:3e:e0:4f:b8 brd ff:ff:ff:ff:ff:ff[root@ecs-centos-7 ~]# ip l set txqueuelen 1000 dev eth0[root@ecs-centos-7 ~]# ip l show eth02: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000link/ether fa:16:3e:e0:4f:b8 brd ff:ff:ff:ff:ff:ff上⾯的例⼦中,字符串qlen 1200表⽰传输队列长度是1200从例⼦中可以看出,修改传输队列长度之前,传输队列长度是1200执⾏ip l set txqueuelen 1000 dev eth0命令把传输队列长队修改为1000, 然后再执⾏ip l show eth0命令查询eth0⽹络接⼝的信息,查询结果中default qlen 1000说明修改成功修改⽹络接⼝的MTU(最⼤传输单元)通过p l set mtu 长度 dev 接⼝名字命令可以设置⽹络接⼝的最⼤传输单元[root@ecs-centos-7 ~]# ip l show eth02: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1600 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1200link/ether fa:16:3e:e0:4f:b8 brd ff:ff:ff:ff:ff:ff[root@ecs-centos-7 ~]# ip l set set mtu 1500 dev eth0[root@ecs-centos-7 ~]# ip l show eth02: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1200link/ether fa:16:3e:e0:4f:b8 brd ff:ff:ff:ff:ff:ff上⾯的例⼦中,字符串mtu 1600表⽰最⼤传输单元是1600从例⼦中可以看出,修改传输队列长度之前,最⼤传输单元是1600执⾏ip l set set mtu 1500 dev eth0命令把最⼤传输单元修改为1500, 然后再执⾏ip l show eth0命令查询eth0⽹络接⼝的信息,查询结果中mtu 1500说明修改成功查看IP路由表下⾯⼏条命令都可以查看 IP 路由表ip rip routeip r listip route list查看路由表[root@ecs-centos-7 ~]# ip rdefault via 192.168.0.1 dev eth0 proto dhcp metric 100169.254.169.254 via 192.168.0.254 dev eth0 proto dhcp metric 100192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.9 metric 100查看指定IP以及⽹络掩码的路由表[root@ecs-centos-7 ~]# ip r list 192.168.0.0/24192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.9 metric 100查看ARP缓存ARP是 Address Resolution Protocol 的缩写, 全称是地址解析协议,它是⽤于实现从IP地址到Mac地址的映射,也就是询问⽬标IP的Mac地址在本地存储了⼀份IP对应Mac地址的映射表,这张表叫做 ARP缓存表,可以使⽤ip n命令查看缓存表[root@ecs-centos-7 ~]# ip n192.168.0.1 dev eth0 lladdr fa:16:3e:64:38:a8 REACHABLE192.168.0.254 dev eth0 lladdr fa:fa:fa:fa:fa:01 STALE更改⽹卡Mac地址⼤部分场景中是不需要修改Mac地址的,但有时你可能想隐藏真实的Mac地址(物理地址),这时可以修改Mac地址,修改Mac地址的命令如下ip link set dev 接⼝名 address 新的Mac地址下⾯以修改lo⽹络接⼝的Mac地址为例来说明[root@ecs-centos-7 ~]# ip l list lo1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00[root@ecs-centos-7 ~]# ip l set lo address fa:16:3e:e0:4f:b4[root@ecs-centos-7 ~]# ip l list lo1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000link/loopback fa:16:3e:e0:4f:b4 brd 00:00:00:00:00:00从上⾯的例⼦中可以看出,lo接⼝初始的Mac地址是00:00:00:00:00:00执⾏ip l set lo address fa:16:3e:e0:4f:b4命令修改Mac地址,然后再执⾏ip l list lo查看lo接⼝的信息,输出的结果信息表明Mac地址修改成功注意:如果当前⽹络接⼝上执⾏上⾯的命令,当前会话会中断,需要重启机器才能恢复,所以最好是在其他的⽹络接⼝上测试查看⽹络统计信息通过ip -s link命令可以查看⽹络接⼝上的⼀些统计数据,⽐如接⼝上传输的字节数、报⽂数,错误或者丢弃的报⽂数等等[root@ecs-centos-7 ~]# ip -s link1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00RX: bytes packets errors dropped overrun mcast272 2 0 0 0 0TX: bytes packets errors dropped carrier collsns272 2 0 0 0 02: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000link/ether fa:16:3e:e0:4f:b8 brd ff:ff:ff:ff:ff:ffRX: bytes packets errors dropped overrun mcast47949 531 0 0 0 0TX: bytes packets errors dropped carrier collsns50816 492 0 0 0 0[root@ecs-centos-7 ~]#想查看更详细的信息可以使⽤ip -s -s link命令, 这个在排除⽹络故障时经常⽤到。
linux中pystun用法

linux中pystun用法
在Linux中,可以使用pystun库来获取公共STUN服务器的IP地址和端口号。
下面是pystun的使用方法:
1. 首先,确保你已经安装了Python和pystun库。
你可以通过以下命令来安装pystun:
```shell
pip install pystun
```
2. 在Python脚本中导入pystun库:
```python
import pystun
```
3. 使用`pystun.get_ip_info()`函数来获取公共STUN服务器的IP地址和端口号。
该函数返回一个包含IP地址和端口号的元组:
```python
ip, port = pystun.get_ip_info()
print("IP: ", ip)
print("Port: ", port)
```
还可以使用`pystun.get_ip_info_stun()`函数来获取通过STUN 服务器进行NAT穿越后的本地IP地址和端口号。
使用方法与上述相同。
需要注意的是,使用pystun库需要在有互联网连接的环境下运行。
如果你没有网络连接,pystun无法进行STUN查询,并且可能会抛出异常。
Linux命令:linux中cd、cd~、cdhome家目录的区别、查看本地ip

varchaபைடு நூலகம்存储长度在字符长度大于255时是占用2个字节存储字符长度小于255个字符时是占用1个字节长度存储字符长度
Linux命令: linux中 cd、 cd~、 cdhome家目录的区别、查看本地 ip
一、linux中"cd /"、"cd ~"、"cd /home"家目录的区别 1、cd / 是跳转到根目录 根目录是所有用户共享的目录,如图所示 2、cd ~ 是跳转到当前用户的家目录 如果是root用户,cd ~ 相当于 cd /root 如果是普通用户,cd ~ 相当于cd /home/当前用户名 3、cd /home 相当于查看有多少普通用户的家目录 因为所有的普通用户的父目录都是home目录
ipaddress命令

ipaddress命令ip address命令详解ip address:⽤于管理ip地址ip address命令格式说明:Usage: ip address {add|change|replace} IFADDR dev IFNAME [ LIFETIME ][ CONFFLAG-LIST ]ip address del IFADDR dev IFNAME [mngtmpaddr]ip address {save|flush} [ dev IFNAME ] [ scope SCOPE-ID ][ to PREFIX ] [ FLAG-LIST ] [ label LABEL ] [up]ip address [ show [ dev IFNAME ] [ scope SCOPE-ID ] [ master DEVICE ][ type TYPE ] [ to PREFIX ] [ FLAG-LIST ][ label LABEL ] [up] ]ip address {showdump|restore}IFADDR := PREFIX | ADDR peer PREFIX[ broadcast ADDR ] [ anycast ADDR ][ label IFNAME ] [ scope SCOPE-ID ]SCOPE-ID := [ host | link | global | NUMBER ]FLAG-LIST := [ FLAG-LIST ] FLAGFLAG := [ permanent | dynamic | secondary | primary |[-]tentative | [-]deprecated | [-]dadfailed | temporary |CONFFLAG-LIST ]CONFFLAG-LIST := [ CONFFLAG-LIST ] CONFFLAGCONFFLAG := [ home | nodad | mngtmpaddr | noprefixroute | autojoin ]LIFETIME := [ valid_lft LFT ] [ preferred_lft LFT ]LFT := forever | SECONDSTYPE := { vlan | veth | vcan | dummy | ifb | macvlan | macvtap |bridge | bond | ipoib | ip6tnl | ipip | sit | vxlan |gre | gretap | ip6gre | ip6gretap | vti | nlmon |bond_slave | ipvlan | geneve | bridge_slave | vrf | macsec }ip address add此命令⽤于新增ip地址option:dev IFNAME:要将地址添加到的设备的名称local ADDRESS (default):ip地址,地址的格式取决于协议peer ADDRESS:点对点接⼝的远程端点的地址。
Linux路由查找

Linux TCP/IP协议栈笔记(二)路由缓存路由缓存作者:kendo出处:内核版本:2.6.122007-4-2版权所有,转载请注明出处。
1、什么是路由缓存当数据包进入网络层后,需要做的第一件事情,就是进行路由查找,也即根据数据包的目标地址,查找需要转发的目的网关,当然,实际情况比这个要复杂,查找条件并不仅限于目的地址。
为了提高路由查找的效率,路由子系统引入了路由缓存的概念,用于某个目的地址在路由表中查找到匹配路由项后,就把目的地址对应的路由项缓存起来,可以通过route –C看到路由缓存表:这样,下一次路由查找时,就先查缓存,没有在缓存中,再去搜索路由表。
不论进入或者是发出的数据,都要在网络层进行路由查找,查找首先在路由缓存中进行,如果命中,则查找完成,如果没有命中,则进入路由表中的查找,如果在表中查找命中,则创建相应的路由缓存项。
2、路由缓存表的组织如前所述,整个缓存表由一条条地缓存项组成,整个表采用了hash表来组织,如下图。
从这张图中,我们可以看到许多重要的信息:hash桶的大小由变量rt_hash_mask决定,它是决定路由缓存大小的重要因素;每一个hash桶的项,是由结构struct rt_hash_bucket;每一个路由缓存项,是由结构struct rtable结构描述的,它的rt_next/next成员来组织链表的;为什么是两个成员指针而不仅仅是一个next,这在后面来分析;struct rtable缓存项中,还包含了一个struct dst_entry结构;哈希桶的类型是rt_hash_bucket,该结构只包含指向缓存元素链表的一个指针和一个锁:[Copy to clipboard] [ - ]CODE:struct rt_hash_bucket {struct rtable *chain;spinlock_t lock;} __attribute__((__aligned__(8)));chain成员指针自然指向下一个路由缓存项,用于链表的维护,另外,它还包含了一个自旋锁。
lvs术语

lvs术语LVS 是指 Linux Virtual Server,是一个基于 Linux 系统的负载均衡器。
以下是一些与 LVS 相关的术语:1. 负载均衡(Load Balancing):将网络流量分发到多个服务器上,以平衡服务器的负载,提高系统的可用性和性能。
2. 调度算法(Scheduling Algorithm):用于确定哪个服务器接收客户端请求的算法。
常见的调度算法有轮询、加权轮询、源地址哈希等。
3. 虚拟 IP(Virtual IP):是一个虚拟的 IP 地址,用于代表一组服务器。
客户端将请求发送到虚拟 IP,然后由负载均衡器将请求分发到实际的服务器上。
4. 调度器(Scheduler):负责根据调度算法将客户端请求分发到实际服务器的组件。
常见的调度器有 LVS/NAT(Network Address Translation)、LVS/DR(Direct Routing)和LVS/TUN (Tunneling)。
5. 后端服务器(Real Server):实际处理客户端请求的服务器。
负载均衡器将请求转发到后端服务器上,并将响应返回给客户端。
6. 冗余(Redundancy):在 LVS 中,通常会配置多个负载均衡器和多个后端服务器,以提高系统的可用性。
当其中一个负载均衡器或后端服务器出现故障时,其他设备可以接管工作,实现冗余。
7. 健康检查(Health Check):负载均衡器会定期检查后端服务器的状态,以确定是否正常工作。
如果服务器不可用,负载均衡器会将其从服务器池中移除,以避免将请求发送到故障服务器上。
8. 反向代理(Reverse Proxy):LVS 可以作为反向代理服务器使用,将客户端请求发送到后端服务器,并将响应返回给客户端。
这样客户端无需直接与后端服务器通信,提高了安全性和灵活性。
这些术语是 LVS 中常用的概念,有助于理解和使用 LVS 负载均衡器。
linux防火墙(三)——iptables语法之匹配条件

linux防⽕墙(三)——iptables语法之匹配条件⼀、iptables规则的匹配条件类型有三类1、通⽤匹配:可直接使⽤,不依赖于其他条件或扩展,包括⽹络协议、IP地址、⽹络接⼝等条件2、隐含匹配:要求以特定的协议匹配作为前提,包括端⼝、TCP标记、ICMP类型等条件3、显式匹配:要求以“-m 扩展模块”的形式明确指出类型,包括多端⼝、MAC地址、IP范围、数据包状态等条件⼆、通⽤匹配规则1、协议匹配:-p 协议名2、地址匹配:-s 源地址、-d ⽬的地址3、接⼝匹配:-i ⼊站⽹卡、-o 出站⽹卡例1:iptables -A FORWARD ! -p icmp -j ACCEPT(除了icmp协议的数据包,别的协议的包都能转发)例2:在⽹关型防⽕墙设置如下: ~]#iptables -I FORWARD -s 192.168.1.11 -o eth1 -p tcp --sport 80 -j ACCEPT注:192.168.1.11是企业内部的web服务器,eth1是⽹关防⽕墙的外⽹⽹卡,意思是:源地址为192.168.1.11的这台服务器tcp80端⼝可以回应外⽹请求,因为eth1是外⽹⽹卡,FORWARD转发链也对其ACCEPT了。
三、隐含匹配条件 之所有叫隐含,是因为它依赖某种协议才能搭配使⽤。
1、端⼝匹配:--sport [源端⼝] --dport [⽬的端⼝]例:iptables -A FORWARD -s 192.168.4.0/24 -p udp --dport 53 -j ACCEPT(因为设置的链是FORWARD,所以⼀般是⽹关型防⽕墙中设置的,源ip为192的主机可以访问其他⽹络的udp53端⼝,注意源和⽬的的⾝份切换⼀定要弄懂) iptables -A FORWARD -d 192.168.4.0/24 -p udp --sport 53 -j ACCEPT(⽹关型防⽕墙中设置的,来⾃于udp53端⼝的数据包可以访问我们的192主机) iptables -A INPUT -p tcp --dport 20:23 -j ACCEPT(⼀般是主机型防⽕墙设置的,我们电脑的20到23端⼝可以被访问)2、TCP标记匹配:--tcp-flags [检查范围] [被设置的标记]例:iptables -I INPUT -i eth1 -p tcp --tcp-flags SYN,RST,ACK SYN -j DROP检查到有SYN的数据包,就丢弃3、ICMP类型匹配:--icmp-type ICMP类型(ICMP类型有8、0、3)例: iptables -A INPUT -p icmp --icmp-type 8 -j DROP (别⼈ping我主机的请求被丢弃,8代表请求) iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT (我ping别⼈时,回来的包被允许(⼀去⼀回才知道ping没ping 通),0带表回来的icmp包) iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT(3也是代表请求,主机不可达,不常⽤) iptables -p icmp -h (查看ICMP类型)四、显⽰匹配条件(1)多端⼝匹配:-m multiport --sports 源端⼝列表 -m multiport --sports ⽬的端⼝列表 例:iptables -A INPUT -p tcp -m multiport --dport 25,80,110,143 -j ACCEPT(2)IP范围匹配:-m iprange --src-range IP范围 例:iptables -A FORWARD -p tcp -m iprange --src-range 192.168.4.21-192.168.4.28 -j ACCEPT (3)MAC地址匹配:-m mac --mac-source MAC地址 例:iptables -A INPUT -m mac --mac-source 00:0c:29:c0:55:3f -j DROP(4)状态匹配:-m state --state 连接状态 NEW:与任何连接⽆关的 ESTABLISHED:响应请求或已建⽴连接的 RELATED:与已有连接有相关性的,如FTP数据连接 例:只开放本机的Web服务,但对发给本机的TCP应答报⽂予以放⾏,其他⼊站报⽂均丢弃 iptables -P INPUT DROP iptables -I INPUT -p tcp -m multiport --dport 80 -j ACCEPT iptables -I INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
linux ip_hash用法
ip_hash是一种在网络中实现负载均衡的技术,它通过将客户端的IP地址与哈希函数结合,将请求分配到不同的服务器上,从而实现均匀的负载分布。
在Linux环境中,ip_hash通常与HAProxy、Nginx等软件结合使用,以提高系统的可伸缩性和可靠性。
一、ip_hash概述
ip_hash是一种基于IP地址的哈希算法,它将客户端的IP地址与一个哈希值相关联。
这个哈希值用于将请求分配到不同的服务器上,以确保请求均匀地分布到不同的服务器上。
通过这种方式,负载可以在多个服务器之间平衡,从而提高系统的可伸缩性和可靠性。
二、ip_hash在Linux环境中的应用
在Linux环境中,ip_hash通常与HAProxy、Nginx等软件结合使用。
这些软件可以配置为使用ip_hash算法来分配请求到不同的服务器上。
下面是一个简单的示例,展示了如何在HAProxy中使用ip_hash:
1.安装HAProxy并启动它。
2.配置HAProxy以使用ip_hash算法。
可以使用以下命令编辑HAProxy的配置文件:
```arduino
nano/etc/haproxy/haproxy.cfg
```
3.在配置文件中添加以下内容:
```perl
listenexample_listen...
modehttp
ip_hash
...
```
上述配置将HAProxy绑定到指定的IP地址和端口上,并使用ip_hash算法来分配请求。
这将确保不同的客户端IP地址请求在不同的服务器上处理。
4.保存并关闭文件。
然后重新加载HAProxy配置文件,以使更改生效:
```bash
sudosystemctlreloadhaproxy
```
一旦HAProxy配置为使用ip_hash,它就会根据客户端的IP地址将请求分配到不同的服务器上。
这意味着对于每个不同的客户端IP地址,HAProxy会将其分配到不同的服务器上,从而实现负载均衡。
除了HAProxy之外,Nginx也可以使用ip_hash来实现负载均衡。
Nginx具有内置的ip_hash模块,可以在配置文件中使用它来将请求分配到不同的服务器上。
三、注意事项
在使用ip_hash时,需要注意以下几点:
1.确保客户端的IP地址是正确的,并且可以正确地发送到HAProxy或Nginx 服务器。
2.确保HAProxy或Nginx服务器正确配置为使用ip_hash算法。
3.在使用ip_hash时,需要考虑网络延迟和数据包丢失等因素对负载均衡的影响。
4.监控系统性能和响应时间,以确保负载均衡的有效性。
综上所述,ip_hash是一种实现负载均衡的技术,可以在Linux环境中与HAProxy、Nginx等软件结合使用。
通过使用ip_hash,可以确保不同客户端的请求在不同的服务器上均匀分布,从而提高系统的可伸缩性和可靠性。
同时,需要注意一些注意事项,以确保ip_hash的正常运行。