org.elasticsearch.action.ActionModule主要维护了请求和响应相关组件,它们可能来自ES本身或者来自plugin。
1.accept=”application/msexcel” 2.accept=”application/msword” 3.accept=”application/pdf” 4.accept=”application/poscript” 5.accept=”application/rtf” 6.accept=”application/x-zip-compressed” 7.accept=”audio/basic” 8.accept=”audio/x-aiff” 9.accept=”audio/x-mpeg” 10.accept=”audio/x-pn/realaudio” 11.accept=”audio/x-waw” 12.accept=”image/gif” 13.accept=”image/jpeg” 14.accept=”image/tiff” 15.accept=”image/x-ms-bmp” 16.accept=”image/x-photo-cd” 17.accept=”image/x-png” 18.accept=”image/x-portablebitmap” 19.accept=”image/x-portable-greymap” 20.accept=”image/x-portable-pixmap” 21.accept=”image/x-rgb” 22.accept=”text/html” 23.accept=”text/plain” 24.accept=”video/quicktime” 25.accept=”video/x-mpeg2″ 26.accept=”video/x-msvideo”
linux防火墙-netfilter 查看iptables规则:iptables -nvL iptables -F 清空规则 service iptables save 保存规则 iptables -t nat 参数-t 指定表 iptables -Z 可以把计数器清零 iptables -A INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP iptables -I/-
1 #!/bin/sh iptables -F modprobe ip_conntrack_ftp modprobe iptable_nat modprobe ip_nat_ftp iptables -P INPUT DROP iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -s 10.0.0.0/24 -p tcp
所有的worker进程都在ngx_worker_process_cycle方法中循环处理事件,处理分发事件则在ngx_worker_process_cycle方法中调用ngx_process_events_and_timers方法,循环调用该方法就是 在处理全部事件,这正是事件驱动机制的核心。该方法既会处理普通的网络事件,也会处理定时器事件。
笔者一直觉得如果能知道从应用到框架再到操作系统的每一处代码,是一件Exciting的事情。 今天笔者就从Linux源码的角度看下Server端的Socket在进行Accept的时候到底做了哪些事情(基于Linux 3.10内核)。
[root@localhost logonuser]# cat /etc/sysconfig/iptables *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [26:3412] :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT -A FORWARD -j RH-Firewall-1-INPUT -A RH-Firewall-1-I
这是因为防火墙的原因,把响应端口开启就行了。 *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT #mysql port -A INPUT -m state --state NEW -m tcp -p t
ip6tables命令和iptables一样,都是linux中防火墙软件,不同的是ip6tables采用的TCP/ip协议为IPv6。
1、查看是否已安装 # rpm -qa | grep iptables 如果已安装,你可以尝试更新或者卸载再安装。 2、安装iptables iptables-service #先检查是否安装了 iptablesservice iptables status #安装iptables yum install -y iptables #升级iptables yum update iptables #安装iptables-services yum install iptables-services 3、禁用旧
#清除预设表filter中的所有规则链的规则 iptables -F #清除预设表filter中使用者自定链中的规则 iptables -X #保存iptables配置 service iptables save #重启iptables服务 service iptables restart #查看iptables规则 iptables -L -n #查看iptables规则文件 cat /etc/sysconfig/iptables #设定预设规则 iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP #开启22端口 iptables -A INPUT -p tcp --dport 22 -j ACCEPT #如果OUTPUT设置成DROP需要添加 iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT #关闭22端口 iptables -D INPUT -p tcp --dport 22 -j ACCEPT #开启常用端口 iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 3306 -j ACCEPT #iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT #iptables -A OUTPUT -p tcp --sport 3306 -j ACCEPT #iptables -A INPUT -p tcp --dport 20 -j ACCEPT #iptables -A INPUT -p tcp --dport 21 -j ACCEPT #iptables -A INPUT -p tcp --dport 10000 -j ACCEPT #iptables -A INPUT -p tcp --dport 25 -j ACCEPT #iptables -A INPUT -p tcp --dport 110 -j ACCEPT #iptables -A INPUT -p udp --dport 53 -j ACCEPT #允许ping iptables -A INPUT -p icmp -j ACCEPT #如果OUTPUT设置成DROP需要添加 iptables -A OUTPUT -p icmp -j ACCEPT #允许loopback iptables -A INPUT -i lo -p all -j ACCEPT #如果OUTPUT设置成DROP需要添加 iptables -A OUTPUT -o lo -p all -j ACCEPT #屏蔽指定ip #iptables -A INPUT -p tcp -s 192.168.10.1 -j DROP #减少不安全的端口连接 #iptables -A OUTPUT -p tcp --sport 31337 -j DROP #iptables -A OUTPUT -p tcp --dport 31337 -j DROP #允许某个IP远程连接 #iptables -A INPUT -s 192.168.10.1 -p tcp --dport 22 -j ACCEPT #允许某个网段的IP远程连接 iptables -A INPUT -s 192.168.10.0/24 -p tcp --dport 22 -j ACCEPT #允许指定网段通过、指定网口通过SSH连接本机 #iptables -A INPUT -i eth0 -p tcp -s 192.168.10.0/24 --dport 22 -m state --state NEW,ESTABLESHED -j ACCEPT #iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT #iptables -A INPUT -i eth0 -p tcp -s 192.168.10.0/24 --dport 22 -m state --state ESTABLESHED -j ACCEPT #iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state NEW,ESTABLISHED -j ACCEPT #开启转发功能 #iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT #iptables -A FORWARD -i eth1
网关 192.168.100.254(NAT防火墙,将 <外网IP>:1723 映射到 192.168.100.1:1723)
在Red Hat Enterprise Linux Server release 6.7 成功安装ORACLE 11g 后,在客户端配置TNS后,测试是否可以连接到数据块服务器,结果报错: ORA-1
问题描述:使用plsql连接数据库发现TNS报错,登录服务器发现防火墙开放,如果直接关闭防火墙,所有的端口都可以连接,但是实际中可能会遇到开启防火墙的库,这时候需要开放单一端口对某一服务器或者某一网段
其实挺羡慕那些能讨论 epoll 惊群的小伙伴,我还没试过epoll惊群,据说是开了多条线程或者多个进程,然后挂一个epoll上了是吧,事件到来的时候就会通知一大堆。
# systemctl disable firewalld.service 或者systemctl mask firewalld.service
因为有多台的云服务器,对应的服务器上有响应的数据库,原来有个备份机制,有一台机器专门用来凌晨定时mysqldump数据(库不大,如果库大不建议这个方式)。但是发现一台机器的连不上,安全策略和防火墙都关了还是不管用。为此还提了工单
#清除预设表filter中的所有规则链的规则 iptables -F #清除预设表filter中使用者自定链中的规则 iptables -X #保存iptables配置 service iptables save #重启iptables服务 service iptables restart #查看iptables规则 iptables -L -n #查看iptables规则文件 cat /etc/sysconfig/iptables #设定预设规则 iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP #开启22端口 iptables -A INPUT -p tcp --dport 22 -j ACCEPT #如果OUTPUT设置成DROP需要添加 iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT #关闭22端口 iptables -D INPUT -p tcp --dport 22 -j ACCEPT #开启常用端口 iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 3306 -j ACCEPT #iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT #iptables -A OUTPUT -p tcp --sport 3306 -j ACCEPT #iptables -A INPUT -p tcp --dport 20 -j ACCEPT #iptables -A INPUT -p tcp --dport 21 -j ACCEPT #iptables -A INPUT -p tcp --dport 10000 -j ACCEPT #iptables -A INPUT -p tcp --dport 25 -j ACCEPT #iptables -A INPUT -p tcp --dport 110 -j ACCEPT #iptables -A INPUT -p udp --dport 53 -j ACCEPT #允许ping iptables -A INPUT -p icmp -j ACCEPT #如果OUTPUT设置成DROP需要添加 iptables -A OUTPUT -p icmp -j ACCEPT #允许loopback iptables -A INPUT -i lo -p all -j ACCEPT #如果OUTPUT设置成DROP需要添加 iptables -A OUTPUT -o lo -p all -j ACCEPT #屏蔽指定ip #iptables -A INPUT -p tcp -s 192.168.10.1 -j DROP #减少不安全的端口连接 #iptables -A OUTPUT -p tcp --sport 31337 -j DROP #iptables -A OUTPUT -p tcp --dport 31337 -j DROP #允许某个IP远程连接 #iptables -A INPUT -s 192.168.10.1 -p tcp --dport 22 -j ACCEPT #允许某个网段的IP远程连接 iptables -A INPUT -s 192.168.10.0/24 -p tcp --dport 22 -j ACCEPT #允许指定网段通过、指定网口通过SSH连接本机 #iptables -A INPUT -i eth0 -p tcp -s 192.168.10.0/24 --dport 22 -m state --state NEW,ESTABLESHED -j ACCEPT #iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT #iptables -A INPUT -i eth0 -p tcp -s 192.168.10.0/24 --dport 22 -m state --state ESTABLESHED -j ACCEPT #iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state NEW,ESTABLISHED -j ACCEPT #开启转发功能 #iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT #iptables -A FORWARD -i eth1
#清除预设表filter中的所有规则链的规则 iptables -F #清除预设表filter中使用者自定链中的规则 iptables -X #保存iptables配置 service iptables save #重启iptables服务 service iptables restart #查看iptables规则 iptables -L -n #查看iptables规则文件 cat /etc/sysconfig/iptables #设定预设规则 ip
博主用的服务器是阿里云购买的,其实阿里云已经提供安全策略共给我们使用了,但是如果是公司自己的服务器,或者是我们自己的虚拟机等。还是需要自己看看配置好防火墙和如何配置白名单的。
这也太离谱啦,降低支配之后还要1600.于是果断的重新开启了一台新的服务器。为了更方便的迁移数据可以直接使用现有的系统盘创建一个自定义镜像,新服务器直接使用创建的镜像启动就ok了,无需做任何的数据迁移。配置完成之后呢,发现实例支持ipv6了,于是顺便开启了一下ipv6。在he.net设置解析之后等了半天没生效,后来发现用的服务器还在阿里云。
版权声明:本文为[他叫自己Mr.张]的原创文章,转载请注明出处,否则禁止转载。 https://micro.blog.csdn.net/article/details/46419935
iptables filter表小案例 : 案例1: 需要把80,21,22端口放行;但是22端口需要指定特殊的IP地址段可以访问,其它的均不可以访问;使用shell脚本来完成! #! /bin/bash ipt="/usr/sbin/iptables" $ipt -F $ipt -P INPUT DROP $ipt -P OUTPUT ACCEPT $ipt -P FORWARD ACCEPT $ipt -A INPUT -m state --state RELATED,ESTABLISHED -j AC
了解惊群问题首先要了解下nginx进程部署架构:nginx进程主要是一个主进程(master)和多个工作进程(worker)。master进程并不处理网络请求,主要负责初始化和调度工作进程,如加载配置、启动工作进程 ,升级等,worker进程用来处理网络请求,并且一个连接的多个阶段处理都在同一个worker中进行。既然是多个worker同时等待同一个socket事件,当这个事件发生时,所有worker同时唤醒,但最终只能有一个进程能建立成功,其他进程都会失败,造成了资源的浪费。
iptables是基于内核的防火墙,功能非常强大,iptables内置了filter,nat和mangle三张表。
可以修改/etc/rc.d/boot.local让规则重启后也能生效,如: /sbin/iptables -F /sbin/iptables -A INPUT -i eth0 -p tcp --sport 80 -j ACCEPT /sbin/iptables -A INPUT -i eth0 -p tcp -j DROP /sbin/iptables -A INPUT -i eth0 -p udp -j DROP iptables是一个链的方式从前往后判断,如果前面的规则成立就不会往后继续,所以要注意顺序,一般每行对应一条规则。 -A是Append意思,也就是追加 -I是Insert意思,也就是插入 -F表示清除(即删除)掉已有规则,也就是清空。 查看已有的规则,执行命令:iptables -L -n 如(参数-L为list意思,-n表示以数字方式显示IP和端口,不指定-n则显示为名称,如:http即80端口): # iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:443 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:80 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 DROP udp -- 0.0.0.0/0 0.0.0.0/0 Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination 从可以看到:iptables有三种规则链(Chain),即INPUT、OUTPUT和FORWARD。 INPUT 用于指定输入规则,比如外部是可以访问本机的80端口 OUTPUT 用于指定输出规则,比如本机是否可以访问外部的80端口 FORWARD 用于指定端口转发规则,比如将8080端口的数据转到到80端口 -I和-A需要指定链(Chain)名,其中-I的链名后还需要指定第几条(行)规则。 可通过-D参数删除规则,有两种删除方式,一是匹配模式,二是指定第几条(行)。 也可以通过-R参数修改已有规则,另外-L参数后也可以跟链(Chain)名,表示只列出指定链的所有规则。 -j参数后跟的是动作,即满足规则时执行的操作,可以为ACCEPT、DROP、REJECT和REDIRECT等。 在iptables的INPUT链的第一行插入一条规则(可访问其它机器的80端口): iptables -I INPUT 1 -p tcp --sport 80 -j ACCEPT 在iptables的INPUT链尾追加一条规则(可访问其它机器的80端口): iptables -A INPUT -p tcp --sport 80 -j ACCEPT 如果要让其它机器可以访问本机的80端口,则为: iptables -A INPUT -p tcp --dport 80 -j ACCEPT 插入前: # iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source destination DROP tcp -- 0.0.0.0/0 0.0.0.0/0 DROP udp -- 0.0.0.0/0 0.0.0.0/0 插入: # iptables -I INPUT 1 -p tcp --sport 80 -j ACCEPT 插入后: # iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source destination A
iptables在Linux发行版本如Centos、Debian、Ubuntu、Redhat等的配置内容基本一致,但是配置方式有所不同。由于工作日常用的是Centos 6.x,它的配置较简单。下面对Debian上配置iptables做一个说明。
在建立连接的时候,Nginx处于充分发挥多核CPU架构性能的考虑,使用了多个worker子进程监听相同端口的设计,这样多个子进程在accept建立新连接时会有争抢,这会带来著名的“惊群”问题,子进程数量越多越明显,这会造成系统性能的下降。
我们很多时候在liunx系统上安装了web服务应用后(如tomcat、apache等),需要让其它电脑能访问到该应用,而linux系统(centos、redhat等)的防火墙是默认只对外开放了22端口。
#如果有其他端口的话,规则也类似,稍微修改上述语句就行 PS: 若网站服务器用的免费监控服务,将上述安全宝规则更换为以下规则:
如果你没有生活在上个世纪,并且是云计算或相关领域的一名搬砖者,那你应该听说最近 CentOS 8 官方正式版已经发布了,CentOS 完全遵守 Red Hat 的再发行政策,并且致力与上游产品在功能上完全兼容。CentOS 8 主要改动和 RedHat Enterprise Linux 8 是一致的,基于 Fedora 28 和内核版本 4.18,其中网络方面的主要改动是用 nftables 框架替代 iptables 框架作为默认的网络包过滤工具。如果你还没有听说过 nftables,现在是时候学习一下了。
Chain RH-Firewall-1-INPUT (0 references)
1、简介 iptables是linux/unix自带的一款开源基于包过滤的防火墙工具,使用非常灵活,对硬件资源需求不是很高,是在内核中集成的服务,主要工作在OSI的二、三、四层。 术语介绍: Netfilter:是表的容器 表:链的容器 链:规则的容器 规则:iptables一系列过滤信息的规范和具体方法 工作流程: 客户端请求数据------》iptables Filter-------》获取主机的服务(直接拒绝Drop) 数据包————过滤规则 1————过滤规则 2————默认规则 拒绝就 Dr
1.首先在/etc/sysconfig/iptables-config中修改或者添加以下内容
显示规则 iptables -L iptables -t nat -L # 显示转发规则 设置端口白名单 # 允许22,80,443 端口访问 iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT # 允许内网 iptab
扩展匹配所需要的扩展模块:/usr/lib64/xtables/,大写的扩展模块是TARGET;小写的模块可以做匹配条件.
可以使用命令行的方式修改 iptables[root@pptp-server ~]# iptables --flush POSTROUTING --table nat [root@pptp-server ~]# iptables --flush FORWARD [root@pptp-server ~]# iptables -A INPUT -p gre -j ACCEPT [root@pptp-server ~]# iptables -A INPUT -p tcp -m tcp --dport 1723 -
由于工作需要,经常需要配置一些iptables防火墙,来作为对服务器的一些安全防护。
添加必要的网络地址转换规则,使外部客户端能够访问到内部服务器上的dns、mail、web和ftp服务。
此示例显示了三个链:INPUT、FORWARD和OUTPUT。其中INPUT链允许SSH、HTTP和HTTPS流量,以及已建立的和相关的连接。最后,DROP规则拒绝所有其他流量。其他链没有规则。
上面这两条,请注意--dport为目标端口,当数据从外部进入服务器为目标端口;反之,数据从服务器出去则为数据源端口,使用 --sport 同理,-s是指定源地址,-d是指定目标地址。
iptables 安装 yum install iptables iptables 规则清除 iptables -F iptables -X iptables -Z 开放指定的端口 允许本地回环接口(即运行本机访问本机) iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT 允许所有本机向外的访问 iptables -A OUTPUT -j ACCEPT 允许访问22端口 iptables -A INPUT -p tcp --dport
前言 在Centos上都有iptables-services或者firewalld等iptables管理工具。那在Debian系列用什么管理工具呢? 📷 使用Debian Debian安装完以后,要设置安全策略,发现没有iptables-services管理工具,What?好吧!只能找找有什么工具,发现有一个ufw。不是没有管理工具,只是我不会用。 📷 shell脚本管理 📷 ufw用不惯就不强求,自己写个脚本来解决: #!/bin/bash source /etc/profile function sav
无论如何,iptables是一个需要特别谨慎设置的东西,万一服务器不在你身边,而你贸然设置导致无法SSH,那就等着被老板骂吧,呵呵。。。
传统的服务器使用“listen-accept-创建通信socket”完成客户端的一次请求服务。在高并发服务模型中,服务器创建很多进程-单线程(比如apache mpm)或者n进程:m线程比例创建服务线程(比如nginx event)。机器上运行着不等数量的服务进程或线程。这些进程监听着同一个socket。这个socket是和客户端通信的唯一地址。服务器父子进程或者多线程模型都accept该socket,有几率同时调用accept。当一个请求进来,accept同时唤醒等待socket的多个进程,但是只有一个进程能accept到新的socket,其他进程accept不到任何东西,只好继续回到accept流程。这就是惊群效应。如果使用的是select/epoll+accept,则把惊群提前到了select/epoll这一步,多个进程只有一个进程能acxept到连接,因为是非阻塞socket,其他进程返回EAGAIN。
最底层是网络接口层,网络接口层上面是网络层,网络层部署了NetFilter(网络过滤框架)
如果要使以上规则重启依然生效,需要将脚本的执行命令写入/etc/rc.local文件中:
通常多数人不会注意Nginx的accept_mutex配置,不过实际上它对系统的吞吐量有一定的影响,今天生物钟紊乱睡不着觉,索性闲扯一下Nginx的accept_mutex配置。
openstack环境里安装centos6.5系统的虚拟机,安装好后,发现没有/etc/syscofig/iptables防火墙配置文件。 解决办法如下: [root@kvm-server005 ~]# iptables -P OUTPUT ACCEPT [root@kvm-server005 ~]# /etc/init.d/iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ] 这样,/etc/sy
领取专属 10元无门槛券
手把手带您无忧上云