这篇文章主要介绍了linux共享上网设置实例详解的相关资料,需要的朋友可以参考下 如果您有服务器咨询问题、购买问题、可以联系我们客服 7271895 690624 商祺云-阿里代理、景安代理、西部代理 linux共享上网设置 1、打开内核ip转发 vi /etc/sysctl.conf net.ipv4.ip_forward = 1 执行sysctrl -p生效 2、如果主机未启用防火墙,那么如下设置iptables [root@Web-Lnmp02 ~]# iptables -F [root@Web-Lnmp02 ~]# iptables -P INPUT ACCEPT [root@Web-Lnmp02 ~]# iptables -P FORWARD ACCEPT [root@Web-Lnmp02 ~]# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 或者 iptables -t nat -A POSTROUTING -s ip -o eth0 -j MASQUERADE //指定某ip或ip段可以转发 iptables -t nat -A POSTROUTING -s 192.168.0.170 -o enp1s0 -j MASQUERADE iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o enp1s0 -j MASQUERADE [root@Web-Lnmp02 ~]# /etc/init.d/iptables save [root@Web-Lnmp02 ~]# /etc/init.d/iptables restart 说明: iptables -F #清除原有的filter有中的规则 iptables -t nat -F #清除原有的nat表中的规则 iptables -P FORWARD ACCEPT #缺省允许IP转发 如果主机上启用了防火墙,需加上下面两句: Code: iptables -A FORWARD -s 192.168.122.0/24 -o eth0 -j ACCEPT iptables -A FORWARD -d 192.168.122.0/24 -m state --state ESTABLISHED,RELATED -i...
这篇文章主要介绍了Linux系统中nc命令的基本用法,nc命令非常之强大,这里先简单介绍它用来作端口扫描以及文件传输等的基础使用。 功能说明:功能强大的网络工具<( ̄▽ ̄)>,在网络工具中有“瑞士军刀”美誉,其有Windows和Linux的版本。因为它短小精悍,功能实用,被设计为一个简单、可靠的网络工具,可通过TCP或UDP协议传输读写数据。同时,它还是一个网络应用Debug分析器,因为它可以根据需要创建各种不同类型的网络连接。nc可以提供如下的网络功能: 1) 监听特定端口,这时候nc就可以作为一个服务器,但是我发现这样使用nc生成的服务器仅仅是一个echo服务器而已,没有其他更加强大的功能. 2) 连接特定端口,这时候nc就成为了一个客户端,同样的,也是一个简单的客户端,只能起echo的作用. 3) 扫描端口,这可以作为查询某个机器上是否开启了某个端口. 几个具体的使用例子 例子1: 使用nc打开linux下的特定端口 nc -lp 23 & (即telnet) netstat -an|grep 23 (查看端口是否正常打开) 例子2: 使用nc进行文件传输,命令 ssh root@www.freetstar.com “( nc -l 10003 > destination 2>/dev/null & )” && cat source | nc www.freetstar.com 10003 && 前边ssh登录到远程主机www.freetstar.com上,用nc命令打开本地的10003端口,成为后台进程 &&后边,在本地机器上打开source文件,并将其重定向到www.freetstar.com的10003号端口,也就是让远程www.freetstar.com主机10003号端口接收source文件 例子3: 使用nc扫描linux下的特定端口 nc -v -z host.example.com 70-80 扫描端口(70到80),可指定范围。-v输出详细信息。 例子4: 克隆硬盘或分区 类似于例子2,只需要由dd获得硬盘或分区的数据,然后传输即可。 克隆硬盘或分区的操作,不应在已经mount的的系统上进行。所以,需要使用安装光盘引导后,进入拯救模式(或使用Knoppix工 具光盘)启动系统后 server1上执行:# nc -l -p 1234 | dd of=/dev/sda server1上执行1234号端口监听,将得到的文件保存到/dev/sda上 server2上执行:# dd if=/dev/sda | nc server1 1234 例子5: 保存Web页面 while true; do nc -l -p 80 -q 1 < somepage.html; done 例子6: 模拟HTTP Headers [root@hatest1 ~]# nc www.huanxiangwu.com 80 GET / HTTP/1.1 Host: ispconfig.org Referrer: mypage.com User-Agent: my-browser 在nc命令后,输入红色部分的内容,然后按两次回车,即可从对方获得HTTP Headers内容。 例子7: 聊天 server1上监听1234端口[root@hatest2 tmp]# nc -lp 1234 server2上向server1的1234端口发送消息[root@hatest1 ~]# nc server1 1234 这样,双方就可以相互交流了。使用Ctrl+D正常退出。 更多的使用,查看man手册 nc...
【腾讯云】2核2G云服务器新老同享 99元/年,续费同价,云服务器3年机/5年机限时抢购,低至 2.5折
2024-12-22
linux 系统则是由 cron (crond) 这个系统服务来控制的。Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。另 外, 由于使用者自己也可以设置计划任务,所以, Linux 系统也提供了使用者控制计划任务的命令 :crontab 命令。 一、crond简介 crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。 Linux下的任务调度分为两类,系统任务调度和用户任务调度。 系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。 /etc/crontab文件包括下面几行: cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=HOME=/ # run-parts 51 * * * * root run-parts /etc/cron.hourly 24 7 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly 前 四行是用来配置crond任务运行的环境变量,第一行SHELL变量指定了系统要使用哪个shell,这里是bash,第二行PATH变量指定了系统执行 命令的路径,第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务 执行信息给用户,第四行的HOME变量指定了在执行命令或者脚本时使用的主目录。第六至九行表示的含义将在下个小节详细讲述。这里不在多说。 用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab 文件都被保存在 /var/spool/cron目录中。其文件名与用户名一致。 使用者权限文件: 文件: /etc/cron.deny 说明: 该文件中所列用户不允许使用crontab命令 文件: /etc/cron.allow 说明: 该文件中所列用户允许使用crontab命令 文件: /var/spool/cron/ 说明: 所有用户crontab文件存放的目录,以用户名命名 crontab文件的含义: 用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下: minute hour day month week command 其中: minute: 表示分钟,可以是从0到59之间的任何整数。 hour:表示小时,可以是从0到23之间的任何整数。 day:表示日期,可以是从1到31之间的任何整数。 month:表示月份,可以是从1到12之间的任何整数。 week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。 command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。 在以上各个字段中,还可以使用以下特殊字符: 星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9” 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6” 正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。 二、crond服务 安装crontab: yum install crontabs 服务操作说明: /sbin/service crond start //启动服务 /sbin/service crond stop //关闭服务 /sbin/service crond restart //重启服务 /sbin/service...
这篇文章主要介绍了linux 删除换行符的方法小结,需要的朋友可以参考下 今天需要删除文件里面的换行符,比如有一个文件a.txt: 1,2,3 4,5,6 1,2,3 4,5,6 1,2,3 4,5,6 1,2,3 4,5,6 1,2,3 4,5,6 1、使用vim删除换行符 vim输入命令:%s/\n//g 2、使用sed命令,例如 sed ':t;N;s/\n//;b t' a.txt 结果:1,2,34,5,61,2,34,5,61,2,34,5,61,2,34,5,61,2,34,5,6 解释一下: :t 定义label "t" b t 转到label "t" 继续执行 N 先读入一行到sed的模板空间,加个换行符(\n),再向sed模板空间追加下一行(之后sed 对模板空间中的内容执行s/\n/,/替换,并显示替换后的内容) 3、使用td命令,例如: cat a.txt | tr '\n' ' ' 1,2,3 4,5,6 1,2,3 4,5,6 1,2,3 4,5,6 1,2,3 4,5,6 1,2,3 4,5,6 注意tr最后那个参数是空格,否则会报错 Linux shell 中删除文件的所有换行符 需要做一个小功能,就是把一个文本文件中的所有换行符都去掉。一般肯定是想到使用sed来修改啦。但是我搜了一下,并没有找到sed要怎么输入\n——我知道^M对应的是\r,但是\n却失败了,在命令行中直接被切割掉。 原则上可以用\015这样的方式来指定的,但是我实际操作发现并不行,没有效果。所以最终我只能用直接输入命令来做了(还没验证过写成脚本是否能用)。 假设要替换的文件叫做in.txt,输出文件为out.txt: sed 's/^M//g' file.txt > tmp.txt sed -i 's/\"/\\\"/g' tmp.txt rm -f out.txt; touch out.txt cat tmp.txt | xargs echo -n >> out.txt rm -f tmp.txt 五个步骤分别为: 将Windows格式的换行转换成UNIX格式,也就是删除所有的\r字符。其中^M并不是直接输入这两个字符,而是通过在shell里面按住 Ctrl+V,然后再敲 M 得到的将所有的双引号转义,因为后面的echo需要使用创建一个全空的输出文件删除所有的\n字符并输出最终文件删除中间文件 以上就是详解linux 删除换行符的方法的详细内容,更多请关注学派吧-其它相关文章!
本篇文章主要介绍了详解Linux中Nginx反向代理下的tomcat集群,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 Nginx具有反向代理(注意和正向代理的区别)和负载均衡等特点。 这次Nginx安装在 192.168.1.108 这台linux 机器上。安装Nginx 先要装openssl库,gcc,PCRE,zlib库等。 Tomcat 安装在192.168.1.168 和 192.168.1.178 这两台机器上。客户端通过访问192.168.1.108 反向代理访问到192.168.1.168 和 192.168.1.178 里Tomcat 部署的工程内容。 1.Linux 下安装Nginx (机器192.168.1.108) 安装openssl库。 yum install -y openssl openssl-devel 需要安装gcc:yum install gcc-c++ 安装 PCRE yum install -y pcre pcre-devel 安装zlib库 yum install -y zlib zlib-devel 装在 /usr/local/ 下 解压 tar -zxvf nginx-1.13.0.tar.gz 进入目录 运行 ./configure 产生makefile 此时目录多出了 makefile 编译make 安装:make install 完成后 local 目录下 多了个 nginx 启动 nginx 进入sbin 目录 执行./nginx 查看启动结果 Window 访问 192.168.1.108 nginx 默认端口为80 关闭 ./nginx -s stop 关闭后此时对应也无法访问 ./nginx -s reload 可以在启动后重新加载配置文件 适合于在启动会修改了配置文件 2.Linux 下安装Tomcat (192.168.1.168 和 192.168.1.178 机器) 安装过程很简单,不述说了。分别在另两台Linux 机器(192.168.1.168 和 192.168.1.178)安装Tomcat ,随便部署个工程nginxTest 一个内容是 1111……. 一个是22222……. 此时访问的是不同的IP地址,还没用Nginx 配置进去当反向代理服务器。 3. Nginx当做反向代理服务器 主要配置nginx.conf 里的内容 a. 配置服务器组,在http{}节点之间添加upstream配置。 192.168.1.168:9090 和 192.168.1.178:9191 是另两台Linux 机器的Tomcat (看上述2) upstream lxstest{ server 192.168.1.168:9090; server 192.168.1.178:9191; } b....
这篇文章主要为大家详细介绍了Linux RedHat下安装Python2.7、pip、ipython环境、eclipse和PyDev环境,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 Linux RedHat下安装Python2.7、pip、ipython环境、eclipse和PyDev环境 准备工作,源Python2.6备份: 根据which python具体目录而定,进行备份 mv /usr/local/bin/python cd /usr/local/bin/python2.6 或mv /usr/bin/python /usr/bin/python2.6 修改使用python2.6的程序配置,比如yum vim /usr/bin/yum #!/usr/bin/python2.6 查看yum是否正常yum list 1、 安装Python2.7 官网下载源码包:Python-2.7.13.tgz 编译: ./configure –prefix=/usr/local 安装:make && mak install 创建软连接: cd /usr/local/bin ln -sv python2.7 python cp头文件:\cp -a /usr/local/include/python2.7/* /usr/local/include 输入查看: 2、 安装pip 安装python setup.py install 3、 安装ipython 安装python setup.py install 安装pysqlite用于ipython记录历史记录: pip install pysqlite 4、 安装eclipse eclipse依赖于jdk,下载jdk-8u121-linux-x64.tar.gz tar -xf jdk-8u121-linux-x64.tar.gz -C /usr/local/ 配置java环境变量:vim /etc/profile最后加上: JAVA_HOME="/usr/local/jdk1.8.0_121" PATH=${JAVA_HOME}/bin:$PATH CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar export JAVA_HOME export PATH export CLASSPATH tar -xf eclipse-java-neon-3-linux-gtk-x86_64.tar.gz eclipse安装pydev插件: help-install new software add-name:Pydev -location:http://pydev.org/update 只选择PyDev for eclipse develop,然后继续下一步,直到安装完成重启。 配置python:这里是windows截图,在linux上选择相应路径即可。 新建PyDev module,试一下,写个HelloWorld 至此,安装完成,中间安装如果报错,会提示缺少一些开发库,yum安装即可。 以上就是Linux中RedHat下安装Python2.7开发环境的详细介绍的详细内容,更多请关注学派吧-其它相关文章!
这篇文章主要介绍了linux服务器下查看mysql的安装信息,需要的朋友可以参考下 查看mysql的安装信息: #ps -ef | grep mysql usr/bin/mysql 是指:mysql的运行路径 var/lib/mysql 是指:mysql数据库文件的存放路径 usr/lib/mysql 是指:mysql的安装路径 #whereis mysql #mysqladmin -u root -p variables root是你的数据库帐号 回车后会提示你输入密码,输入上边填写的帐号对应的密码 回车后出来一个大表,找到datadir这一行,后边的值就是数据库所在的路径了。 以上就是linux服务器下如何查看mysql安装信息的详细介绍的详细内容,更多请关注学派吧-
linux的echo命令, 在shell编程中极为常用, 在终端下打印变量value的时候也是常常用到的, 因此有必要了解下echo的用法,下面这篇文章主要给大家介绍了关于linux中echo命令用法的相关资料,需要的朋友可以参考学习。 前言 对于初学者来说,掌握一些基本命令的常用用法是必须的。本文列举了echo命令的几个常用用法并加以实例说明,以作回顾、参考。 基础 echo命令常用作打印输出字符串,根据echo帮助文件可以获得以下信息: 语法 echo [-neE][arg…] 三个参数: -n : 关闭输出文字时的自动换行 -e : 开启转义字符功能( \ ) -E : (默认)关闭转义字符功能( \ ) 使用-e选项时,如果在字符串中键入以下字符,程序不会将之当成一般字符串输出,而是会使用其转义功能: • \a 发出警告声; • \b 删除前一个字符; • \c 最后不加换行符号并抑制字符后输出; • \f 换行但光标仍旧停留在原来的位置; • \n 换行且光标移至行首; • \r 光标移至行首,但不换行; • \t 水平制表符; • \v 垂直制表符; • \\ 插入\字符; • \0nnn 插入nnn(八进制)所代表的ASCII字符;NNN为0到3位八进制数字 • \xHH 插入HH(十六进制)所代表的ASCII字符;HH为1到2位十六进制数字 实例 1、打印输出一行字符串 2、使用”\b” 选项 相当于退格符 3、使用”\c” 选项 不打印输出\c 以后的字符,并且结果不换行(使用-n 选项只是输出结果不换行) 4、使用”\n” 选项 相当于在\n 后插入新行 5、使用”\r” 选项 回车,光标移至首位,但不换行 6、使用”\0NNN” 选项 返回八进制多代表的ASCII字符 7、使用”\xHH” 选项 返回16进制数所代表的ASCII字符 8、打印输出bash环境变量 延伸: 单引号”; 双引号””; 反向单引号“引用强弱程度比较 从运行结果不难看出,”单引号是强引用,不完成变量替换;“反向单引号是弱引用,可以实现命令和变量替换;””双引号强弱程度据两者中间,只可以实现变量替换 总结 以上就是linux中关于echo命令的用法实例教程的详细内容,更多请关注学派吧-其它相关文章!
学派吧-本篇文章主要介绍了linux利用CSF防火墙屏蔽恶意请求,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 问题最近不知道为什么,恶意代理的请求数越来越多,明明我返回的都是403Forbidden,但是由于数量实在庞大,还是消耗了我大量的带宽和资源。之前的方法已经没有用了,想了半天还是研究研究防火墙吧,虽然仅仅靠Apache也能对某些IP进行黑名单设置,但是感觉还是有点麻烦的。比如最常见的用iptables,或者是ufw,虽然都能很好的做到管理,但是他们基本都需要一条一条的加,十分麻烦。 网上搜索了下,找到了一个挺方便的小工具–CSF(ConfigServer & Security Firewall),这个工具据说除了能够方便的管理IP blacklist,而且也能稍加配置抵御一定量的DDOS攻击。 安装工具本身可以在csf工具的官网上下载。 下载并解压后可以参考其中的install.txt的说明进行安装,讲的简洁而且详细,注意给权限就行。需要说明的是,这个工具其实也是基于iptables,只是简化了命令而已。 关于ddos的防护 根据readme.txt的描述,进行ddos防护的功能主要是靠/etc/csf/csf.conf中的配置进行控制的,尤其是当中的PORTFLOOD参数,一般都进行如下设置: #Syntax for the PORTFLOOD setting: #PORTFLOOD is a comma separated list of: port;protocol;hit count*;interval seconds #So, a setting of PORTFLOOD = "22;tcp;5;300,80;tcp;20;5" means: #1. If more than 5 connections to tcp port 22 within 300 seconds, then block #that IP address from port 22 for at least 300 seconds after the last packet is #seen, i.e. there must be a "quiet" period of 300 seconds before the block is #lifted #2. If more than 20 connections to tcp port 80 within 5 seconds, then block #that IP address from port 80 for at least 5 seconds after the last packet is #seen, i.e. there must be a "quiet" period...
学派吧下面小编就为大家带来一篇php.cn/wiki/1497.html” target=”_blank”>Linux下g++编译与使用静态库和动态库的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 在windows环境下,我们通常在IDE如VS的工程中开发C++项目,对于生成和使用静态库(*.lib)与动态库(*.dll)可能都已经比较熟悉,但是,在linux环境下,则是另一套模式,对应的静态库(*.a)与动态库(*.so)的生成与使用方式是不同的。刚开始可能会不适应,但是用多了应该会习惯这种使用,因为步骤上并没有VS下配置那么繁琐。 下面就分别总结下linux下生成并使用静态库与动态库的方法:(由于是C++项目,所以编译器用的g++,但是与gcc的使用是相通的) 首先是准备工作,把我们需要封装成库文件的函数的头文件与源文件写好,如下: //myAPI.h int ADD(int a, int b); int MINUS(int a, int b); //myAPI.cpp #include "myAPI.h" int ADD(int a, int b){ return a + b; } int MINUS(int a, int b){ return a - b; } 接下来准备一个测试用的主函数源文件: //main.cpp #include "myAPI.h" #include <iostream> int main(){ std::cout << "1 + 1 = " << ADD(1, 1) << std::endl; std::cout << "1 - 1 = " << MINUS(1, 1) << std::endl; return 0; } 最后,先编译我们的 myAPI.cpp 文件生成 myAPI.o 目标文件 g++ -c myAPI.cpp 1.生成静态库并使用 Linux下用生成静态库的命令 ar 处理 myAPI.o 文件生成静态库文件,生成的库文件应遵循规范,及linux下库文件加“lib”前缀。所以针对本例,通过如下一条命令即可生成 libmyAPI.a 静态库: ar crv libmyAPI.a myAPI.o 接下来即可在项目编译过程中利用静态库了,此时 myAPI.cpp 这个库函数的定义文件已经不需要了。main.cpp 编译命令如下(注意,依赖的静态库文件要放在被依赖项后面): g++ main.cpp libmyAPI.a -o output 编译通过后即可运行可执行文件 output , 此时 libmyAPI.a 也已经是不需要的了。执行命令并输出结果如下: ./output 2.生成动态库并使用 linux下编译时通过 -shared 参数可以生成动态库(.so)文件,如下 g++ -shared -fPIC -o libmyAPI.so myAPI.o...
which命令 用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。which命令会在环境变量PATH设置的目录里查找符合条件的文件。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。 whereis命令 用来定位命令的二进制程序、源代码文件和man手册页等相关文件的路径。 locate/slocate命令 用来查找文件或目录。 type命令 用来显示指定命令的类型,判断给出的命令是内部命令还是外部命令。 getconf命令 Get the configuration value for variable VAR, or for variable PATH_VAR for path PATH. If SPEC is given, give values for compilation environment SPEC. getconf LONG_BIT # 查看当前操作系统的位数 lsb_release命令 LSB是Linux Standard Base的缩写,lsb_release命令用来显示LSB和特定版本的相关信息。如果使用该命令时不带参数,则默认加上-v参数。 uname命令 用于打印当前系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等)。 以上就是Linux不常用却很有用的命令的详细内容,更多请关注学派吧其它相关文章!
概述 iptables是linux自带的防火墙软件,用于配置IPv4数据包过滤或NAT(IPv6用ip6tables)。 在linux上,防火墙其实是系统内核的一部分,基于Netfilter构架,基本原理就是在内核网络层数据包流经的不同位置放置一些钩子(hook),利用这些嵌入网络层的hook来对数据抓取、控制或修改,iptables其实只是默认的netfilter控制管理工具,所以使用ps或者top看不到有一个“防火墙”的进程存在,防火墙是不能被卸载也不能关闭的,大家熟知的"service iptables stop"或者“/etc/init.d/iptables stop”命令只不过是清空所有策略和表,并把默认策略改为ACCEPT(允许)而已。 iptables有以下几个重点概念:: table(表):iptables内置4个table,不同的table代表不同的功能,每个table可以包含许多chain,不同类型的table对所能包含的chain和策略中的target的使用做了限定,一些target不能在一些table中使用。用户不能自定义table; chain(链):chain可用包括一系列的策略,通过配置不同的chain可以对不同作用的策略进行分类,iptables内置5个chain对应netfilter的5个hook,用户也可以自定义chain; command(命令):command是对表或链的操作动作,比如添加、删除、修改等等; rule-specification(策略):包括下面的匹配规则和目标; match(匹配规则):定义本条策略适用于那些数据包,匹配规则可以包括协议、源/目的地址、端口等等; target(目标):对匹配上规则的数据包采取的操作,target可以是一个动作或者自定义chain,常见的动作有丢弃(DROP)、允许(ACCEPT)、NAT等等,当target是自定义chain时,数据包进入自定义chain继续匹配; policy(默认策略):内置chain的默认动作,每个chain只能有一个policy,如果数据包匹配某条chain匹配完最后一条策略依然没有匹配上,那么就采用policy的默认动作。policy不匹配规则,而且target只能是丢弃(DROP)或允许(ACCEPT),自定义chain不能定义policy。 表 iptables的4个表分别是: filter(过滤):数据包过滤/拦截,可以包含INPUT、FORWARD、OUTPUT这3个内置chain。 nat(地址转换):IP地址或端口号转换,可以包含PREROUTING、OUTPUT、POSTROUTING 3个内置chain,nat table在会话建立时会记录转换的对应关系,同一会话的回包和后续报文会自动地址转换,这是因为nat使用了ip_conntrack模块。 mangle(包管理):用来修改IP报文,可以包含PREROUTING、OUTPUT、INPUT、FORWARD、POSTROUTING 5个内置chain。 raw:此表的优先级高于ip_conntrack模块和其它的table,主要用于将有会话状态的连接(比如tcp)的数据包排除在会话外。可以包含POSTROUTING、OUTPUT两个内置chain。 看到这里肯定会有这样的疑问,为什么table只能包含一些而不是全部的chain呢?我想这个构架是按需设计而不是按功能设计的,尽管table不是包含所有的chain,但是每种功能的table都包含了实现这种功能所需的chain,即使包含更多的chain也是累赘或者无用的,而且实际上用起来也的确如此,够用了。 还有就是不同table生效优先顺序问题,先后优先级是这样的: raw > mangle > nat > filter 所以,如果有filter禁止ping目的地址2.2.2.2,而nat又有策略将目的地址1.1.1.1转换成2.2.2.2,那么ping 1.1.1.1是ping不通的。 不过一般情况下filter是不会和nat的策略打起架来,比如INPUT chain能做filter,却不能做nat,PREROUTING能做nat却不能做filter,而且PREROUTING只能做目的地址转换,不会对源地址过滤的需求造成麻烦,所以通常是不会相互干扰的。 链 iptables内置的5个chain:PREROUTING、INPUT、OUPUT、FORWARD、POSTROUGING,这5个chain分别与netfilter中数据转发路径上的5个不同的位置挂钩,以匹配筛选不同类型的数据流,如下图所示: 其中: PREROUTING链:应用于所有进入机器的ip包,包括目的地址是本机和目的地址非本机的包。 INPUT链:应用于所有目的是本机的包,也就是目的IP是本机接口地址,所有发给本地socket的数据都经过它。 OUPUT链:应用于所有由本机产生的包,所有应用程序发出的数据都经过它。 FORWARD链:应用于所有经过路由决策被转发的包,也就是目的地址不是本机的数据包。 POSTROUGING链:应用于所有发出机器的IP包,包括本机发出的和从本机转发的数据包。 策略匹配按照重上到下的顺序进行,当测试到某策略匹配时执行target并跳出,不再向下匹配,当测试到最后一条策略仍不匹配时,则采用policy指定的动作,如下图: 除了内置chain外,还可以自定义chain,自定义chain并不能利用netfilter的hook来捕捉数据包,但是可用于策略的分类,比如有3类不同的用户访问主机上的不同服务,如果所有策略都放在INPUT chain中策略会多而难以维护,这个时候就可以定义3个自定义chain,分别配置不同的策略,同时在INPUT chain中添加策略对来访者分类并将目标指向3个自定义chain。 自定义chain大显神威的地方在于动态生成策略,例如VPN服务器上,需要对不同分组的用户区别对待管理,但是用户IP是随机分配的,不能根据IP来区分用户组,这时候可以预先定义好各组chain,利用VPN服务端软件的一些钩子,当用户登陆时自动添加策略引导到自定义chain上来匹配。如果这时候没有自定义chain,那么策略的数量将是(用户数×所属组策略数),每增加一个用户,都要把所属组的全部策略添加一遍,这样大量的时间花费在策略匹配上,性能下降很快。 命令 命令用来操作表和链,可以做这些操作: 清空一个table中包含的所有chain 创建、重命名或删除一个自定义chain,清空一个内置chain或者给内置chain设置policy(默认策略) 在某个chain中追加、删除、修改一条策略 显示策略 由于本文只讲概念和原理,所以暂时不提命令,命令的详细使用方法会在“iptables实用教程(二)”里说明。 以上就是iptables基本概念和原理 的详细内容,更多请关注学派吧其它相关文章!
mysql最流行的关系型数据库之一,目前隶属于oracle公司,因体积小、速度快、总体拥有成本低,开放源代码这一特点,所以是我们日常开发的首选。下面我们来看看如何在Linux下安装配置MySQL 系统:Ubuntu 16.04LTS 1\官网下载mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz 2\建立工作组: $su #groupadd mysql #useradd -r -g mysql mysql 3\创建目录 #mkdir /usr/local/mysql #mkdir /usr/local/mysql/data 4\解压mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz,并拷贝至/usr/local/mysql #tar -zxvf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz #cp -r /home/jieyamulu/mysql-5.7.18-linux-glibc2.5-x86_64/* /usr/local/mysql 5\修改mysql用户对mysql以下及其子文件夹以下文件的权限,修改后可使用ll查看权限 root@Ice-***:/usr/local# chown -R mysql:mysql mysql root@Ice-***:/usr/local# ll 总用量 44 drwxr-xr-x 11 root root 4096 5月 19 07:39 ./ drwxr-xr-x 11 root root 4096 2月 16 04:30 ../ drwxr-xr-x 2 root root 4096 2月 16 04:19 bin/ drwxr-xr-x 2 root root 4096 2月 16 04:19 etc/ drwxr-xr-x 2 root root 4096 2月 16 04:19 games/ drwxr-xr-x 2 root root 4096 2月 16 04:19 include/ drwxr-xr-x 4 root root 4096 2月 16 04:23 lib/ lrwxrwxrwx 1 root root 9 3月 29 14:11 man -> share/man/ drwxr-xr-x 10 mysql mysql 4096 5月 19 07:48 mysql/ drwxr-xr-x...
学派吧-这篇文章主要介绍了linux Shell获取某目录下所有文件夹的名称,需要的朋友可以参考下 查看目录下面的所有文件: #!/bin/bash cd /目标目录 for file in $(ls *) do echo $file done 延伸的方法,查看目录下面的所有目录 #!/bin/bash cd /export/bak/original_document for dir in $(ls split*) do [ -d $dir ] && echo $dir #先判断是否是目录,然后再输出 done 以上就是linux下Shell如何获取某目录下所有文件夹的名称详解的详细内容,更多请关注学派吧其它相关文章!
xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。下面这篇文章主要给大家介绍了关于linux中xargs命令用法的相关资料,需要的朋友可以参考借鉴,下面来跟着小编一起看看吧。 前言 xargs命令是把接收到的数据重新格式化,再将其作为参数提供给其他命令,下面介绍xargs命令的各种使用技巧,一起来看看吧。 一、将多行输入转换成单行输入: [root@host1 test]# echo -e "1 2 3 4 5 \n6 7 8 \n9 10 11 12" >example.txt [root@host1 test]# cat example.txt 1 2 3 4 5 6 7 8 9 10 11 12 [root@host1 test]# cat example.txt |xargs 1 2 3 4 5 6 7 8 9 10 11 12 将单行输入转换成多行输出: [root@host1 test]# cat example.txt | xargs -n 3 1 2 3 4 5 6 7 8 9 10 11 12 自定义定界符进行转换(默认的定界符是空格): [root@host1 test]# echo "Hello:Hello:Hello:Hello" | xargs -d : -n 2 Hello Hello Hello Hello 二、在脚本中运用: [root@host1 test]# cat echo.sh #!/bin/bash echo $* '^-^' 当参数传递给echo.sh后,它会将这些参数打印出来,并且以"^-^"作为结尾: [root@host1 test]# echo -e "Tom\nHarry\nJerry\nLucy" > args.txt [root@host1 test]# cat args.txt | xargs bash echo.sh Tom Harry Jerry Lucy ^-^...
Tomcat是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache服务器,可利用它响应对HTML 页面的访问请求。 首先需要安装配置JDK,这里简单回顾下.Linux下用root身份在/opt/文件夹下创建jvm文件夹,然后使用tar -zxvf jdk-8u121-linux-x64.tar.gz -C /opt/jvm/ 将文件解压至jvm中,然后以root身份修改/etc/profile文件,在最后四行加入: export JAVA_HOME=/opt/jvm/jdk1.8.0_121 export JRE_HOME=${JAVA_HOME}/jre export CLASS PATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH 保存退出即可。 配置好环境变量后可使用sudo update-alternatives –config java 命令查看已有环境变量。 java -version测试JDK是否安装成功。 下面切入正题,安装配置tomcat。 1、下载tomcat: Core: zip (pgp, md5, sha1) tar.gz (pgp, md5, sha1) 进入tomcat官网点击download,下载zip或tar.gz这两项。 2、解压至/home/文件夹下 3、进入文件夹,加执行权限。命令: :~/apache-tomcat-9.0.0.M21/bin$ sudo chmod +x *.sh 4、 :~/apache-tomcat-9.0.0.M21/bin$ ./startup.sh 启动成功。 查看日志: :~/apache-tomcat-9.0.0.M21/logs$ cat catalina.out 打开浏览器,输入网址:localhost:8080进入主页。 以上就是Linux下安装配置tomcat的详细介绍的详细内容,更多请关注学派吧其它相关文章!
学派吧-下面小编就为大家带来一篇Linux环境g++编译GDAL动态库操作方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 一、编译步骤 解压下载的GDAL源程序,并在命令行中切换到解压目录。 tar -xzvf gdal-2.1.3.tar.gz cd gdal-2.1.3 GDAL可通过configure来实现一些自定义配置,可通过./configure –h命令来查看。–prefix=path表示设置GDAL的make install后的build目录,里面有生成的头文件和动态库。输入如下命令: ./configure --prefix=/root/Test/gdalbuild 这时可以发现目录中新生成了GDALmake.opt文件,该文件被包含在GNUmakefile中进行编译。输入命令: make make install 编译完成后,生成的动态库文件就在设置的目录下。Include目录下存放着头文件,lib目录存放动态库文件,bin目录存放可执行文件如gdalinfo。 二、注意说明 1)注意这里是生成在自己设置目录而不是默认目录下,调用的时候需要设置环境变量或者拷贝到系统的lib目录,或者不用设置—prefix参数编译。 2)configure命令还可以用来设置debug版本或者release版本,只需要在后面添加–enable-debug参数就可以控制。默认情况下是关闭的。 --enable-debug enable debugging (disabled by default) 但我发现GDAL这个说明似乎有问题。我分别编译了带这个参数和不带这个参数两个版本: 带参数–enable-debug: 不带参数–enable-debug: 可以看到按照说明的release版本反而比debug版本体积大。一般而言,release版本总比debug版本信息小一点,而按照这篇文章《Linux下查看.so和可执行文件是否debug编译》进行检查是否debug编译,发现两者都是存在debug信息的,release版本比debug版本debug信息少一条: 这样到底哪个是debug版本反而弄不清楚了,只有留待以后研究了。 以上就是在Linux环境下g++编译GDAL动态库的操作方法的详细内容,更多请关注学派吧其它相关文章!
本篇文章主要介绍了在centos7下安装python3的步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 环境搭建 准备工具: centos7:mirror.bit.edu.cn/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1611.iso virtuslvox:www.virtualbox.org/wiki/Downloads subline secureCRT 1.装好虚拟机后,添加镜像文件,选择minimal最小化安装 yum update#更新软件 yum -y install gcc kernel-devel kenel-headers make bzip2 # 安装依赖库 reboot # 重启 2.挂载执行脚本 mount /dev/cdrom /mnt # 挂载光驱到 mnt 目录 cd /mnt # 进入到mnt目录 sh ./VBoxLinuxAdditions.run # 执行脚本,进行安装 reboot #重启 3.做快照,以便日后恢复 4.python环境的安装(安装pyenv) centos的配置 $ yum install readline readline-devel readline-static -y $ yum install openssl openssl-devel openssl-static -y $ yum install sqlite-devel -y $ yum install bzip2-devel bzip2-libs -y $ yum install patch vim git 安装python3.3/pip3 #安装python3.3 $ sudo mkdir /usr/local/python3 # 创建安装目录 $ wget --no-check-certificate https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz #下载源文件。注意:wget获取https的时候要加上:--no-check-certificate $ tar -xzvf Python-3.6.0.tgz # 解压缩包 $ cd Python-3.6.0 # 进入解压目录 #编译安装 $ sudo ./configure --prefix=/usr/local/python3 # 指定创建的目录 $ sudo make $ sudo make install #配置2个版本共存 $ sudo ln -s /usr/local/python3/bin/python3 /usr/bin/python3...