nat表应用
A机器两块网卡ens33(192.168.133.130)、ens37(192.168.100.1),ens33可以上外网,ens37仅仅是内部网络,B机器只有ens37(192.168.100.100),和A机器ens37可以通信互联。
需求1:可以让B机器连接外网
查看路由转发:cat /proc/sys/net/ipv4/ip_forward 如果是0,我们需要打开它
A机器上打开路由转发 echo "1">/proc/sys/net/ipv4/ip_forward
增加一条规则A上执行 iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE
B上设置网关为192.168.100.1 命令:route add default gw 192.168.100.1 查看网关:route -n
需求2:C机器只能和A通信,让C机器可以直接连通B机器的22端口
B机器设置一下DNS:vi /etc/resolv.conf 进去了写:nameserver 119.29.29.29
A上打开路由转发echo "1">/ proc/sys/net/ipv4/ip_forward
A上执行iptables -t nat -A PREROUTING -d 192.168.133.130 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22
A上执行iptables -t nat -A POSTROUTING -s 192.168.100.100 -j SNAT --to 192.168.133.130
B上设置网关为192.168.100.1
iptables规则备份和恢复
默认保存命令:service iptables save //会把规则保存到/etc/sysconfig/iptables
指定保存命令:例如,把iptables规则备份到my.ipt文件中,命令:iptables-save > /tmp/my.ipt
恢复刚才备份的规则命令:iptables-restore < /tmp/my.ipt
Linux防火墙-firewalld
打开firewalld方法:
第一步,systemctl disable iptables
第二步,systemctl stop iptables
第三步,systemctl enable firewalld
第四步,systemctl start firewalld
关闭firewalld开启netfilter方法
第一步,不让他开机启动:systemctl disable firewalled
第二步,再把服务停掉:systemctl stop firewalld
第三步,然后开启netfilter防火墙,开启之前需要安装包:yum install -y iptables-services
第四步,安装完它会产生iptables服务,查看一下:systemctl enable iptables
第五步,开启iptables服务:systemctl start iptables
zone
firewalld默认有9个zone,每个zone都好比一个规则级,自带一些规则,默认zone为 public
查看所有的zone:firewall-cmd --get-zones
查看默认zone: firewall-cmd --get-default-zone
9个zone介绍:
zone的操作
firewall-cmd --set-default-zone=work //自己设定默认zone,例如work。
firewall-cmd --get-zone-of-interface=ens33 //查指定网卡
firewall-cmd --zone=public --add-interface=lo //给指定网卡设置zone
firewall-cmd --zone=dmz --change-interface=lo //针对网卡更改zone
firewall-cmd --zone=dmz --remove-interface=lo //针对网卡删除zone
firewall-cmd --get-active-zones //查看系统所有网卡所在的zone
service的操作
service是firewall防火墙下的一个端口
firewall-cmd --get-services 查看所有的servies
firewall-cmd --list-services //查看当前zone下有哪些service
firewall-cmd --zone=public --list-service //查看指定zone下有哪些service
增加指定服务:firewall-cmd --zone=public --add-service=http //把http增加到public zone下面,但是这不是永久的配置文件里不会有。
删除指定服务:firewall-cmd --zone=public --remove-service=http
ls /usr/lib/firewalld/zones/ //zone的配置文件模板
ls /usr/lib/firewalld/services/ service的配置模板
要想永久生效就要保存到配置文件中,方法:
firewall-cmd --zone=public --add-service=http --permanent //更改配置文件,之后 会在/etc/firewalld/zones目录下面生成配置文件
需求:ftp服务自定义端口1121,需要在work zone下面放行ftp
第一步,先把usr目录下的ftp.xml文件拷贝到etc下的service目录来:
cp /usr/lib/firewalld/services/ftp.xml /etc/firewalld/services/
第二步,编辑刚拷贝到service目录下ftp.xml的配置文件,把里边的21端口改成1121:
vi /etc/firewalld/services/ftp.xml //把21改为1121
第三步,把usr目录下的ftp.xml文件拷贝到etc下的zones目录下:
cp /usr/lib/firewalld/zones/work.xml /etc/firewalld/zones/
第四步,编辑etc下刚拷贝过来的work.xml文件增加以下内容:
vi /etc/firewalld/zones/work.xml 增加一行,<service name="ftp"/>
最后一步,重新加载:firewall-cmd --reload
查看一下:firewall-cmd --zone=work --list-services
Linux任务计划
crontab
crondab在:cat /var/spool/cron/root目录下
命令:crontab -u、-e、-l、-r
-u :指定某个用户,不加-u选项则为当前用户;
-e :制定计划任务;
-l :列出计划任务;
-r :删除计划任务。
格式:分 时 日 月 周 user command
文件/var/spool/cron/username
命令:cat /etc/crontab 查看任务计划的配置文件
1.分钟范围0-59,2.小时范围0-23,3.日范围1-31,4.月范围1-12,5.周1-7(0或者7都表示周日), 6.用户(不写默认是root),7.执行的命令。
命令:crontab -e 进入到配置文件中,编辑配置文件,内容格式如下:
* 表示所有(每分、每小时、每天、每周、每月)
可用格式1-5表示一个范围1到5,比如月,那就是每个月的1到5号)
可用格式1,2,3表示1或者2或者3,比如周,那就是每周的周一周二周三)
可用格式*/2表示被2整除的数字,比如小时,那就是每隔2小时,比如月,就是2、4、6、..月
要保证服务是启动状态:输入命令,systemctl start crond.service
如何检查是启动?
命令:ps aux |grep cron 看看有没有这个进程
或者用这个命令:systemctl status crond 如果下边显示绿色证明他启动了
如何停掉服务?
用命令:systemctl stop crond
Linuxde的系统管理服务-chkconfig(CentOS6)
Linux系统所有的预设服务可以查看 /etc/init.d/ 目录得到: ls /etc/init.d/
命令:chkconfig --list 列出所有服务并显示每个级别是否开启
上图里的级别(0,1,2,3,4,5,6)就是 /etc/inittab 里面的那几个启动级别了:
0、1、6运行级别被系统保留;一般的Linux系统实现中,都使用了2、3、4、5几个级别。
0作为shutdown动作,1作为重启至单用户模式,2表示无NFS支持的多用户模式,3表示完全多用户模式 (也是最常用的级别),4保留给用户自定义,5表示图形登录方式,6为重启。
命令:chkconfig network off 让这个服务关闭
命令:chkconfig network on 让这个服务开启
命令:chkconfig --level 3 network off 关闭指定某个服务的一个级别(例如network的3级别)
命令:chkconfig --level 345 network off 关闭指定某个服务的几个级别
命令:chkconfig --del network 删除自定义服务
命令:chkconfig --add network 增加自定义服务
Linux系统服务管理-systemd(CentOS7)
一个service属于一种类型的unit
多个unit组成了一个target
一个target里面包含了多个service
命令:systemctl list-units --all --type=service 把service类型的服务列出来
几个常用的服务相关的命令:
systemctl enable crond.service //让服务开机启动
systemctl disable crond //不让开机启动
systemctl status crond //查看状态
systemctl stop crond //停止服务
systemctl start crond //启动服务
systemctl restart crond //重启服务
systemctl is-enabled crond //检查服务是否开机启动
unit介绍
ls /usr/lib/systemd/system //系统所有unit,分为以下类型
service 系统服务
target 多个unit组成的组
device 硬件设备
mount 文件系统挂载点
automount 自动挂载点
path 文件或路径
scope 不是由systemd启动的外部进程
slice 进程组
snapshot systemd快照
socket 进程间通信套接字
swap swap文件
timer 定时器
unit相关的命令
systemctl list-units //列出正在运行的unit
systemctl list-units --all //列出所有,包括失败的或者inactive的
systemctl list-units --all --state=inactive //列出inactive的unit
systemctl list-units --type=service//列出状态为active的service
systemctl is-active crond.service //查看某个服务是否为active
target介绍
一个target就是多个unit的组合,
系统为了方便管理用target来管理unit。
systemctl list-unit-files --type=target 列出系统里边所有的target。
systemctl list-dependencies multi-user.target //查看指定target下面有哪些unit
systemctl get-default //查看系统默认的target
systemctl set-default multi-user.target 设置一个默认的target
一个service属于一种类型的unit
多个unit组成了一个target
一个target里面包含了多个service
命令:cat /usr/lib/systemd/system/sshd.service // cat一下service看最后[install]部分它会告 诉你这个service属于哪个target。
Linux文件同步估计-rsync
命令:rsync -av /etc/passwd /tmp/1.txt 把etc/passwd文件拷贝到tmp下,并改名为1.txt
命令:rsync -av /etc/passwd root@192.168.65.130:/tmp/1.txt 远程拷贝同步,假如我要拷贝到 对方root用户下,写它的IP,然后冒号,后边跟它的文件路径,输入密码。
命令:rsync -av /tmp/1.txt 192.168.188.128:/tmp/2.txt
rsync格式:
rsync [OPTION] … SRC DEST 本机的格式
rsync [OPTION] … SRC [user@]host:DEST 拷贝到远程服务器上的格式。
rsync [OPTION] … [user@]host:SRC DEST 反着拷贝,先写远程的机器或者目录,然后拷贝到本 地的目录下。
rsync [OPTION] … SRC [user@]host::DEST
rsync [OPTION] … [user@]host::SRC DEST
OPTION:选项(-a、-v、..) SRC:原目录 DEST:目标目录或文件 user@:用户(可以省略,不写用户 他就是当前终端的用户,他默认是root) host:IP地址
rsync常用选项
-a 包含-rtplgoD
-r 同步目录时要加上,类似cp时的-r选项
-v 同步时显示一些信息,让我们知道同步的过程
-l 保留软连接
-L 加上该选项后,同步软链接时会把源文件给同步
-p 保持文件的权限属性
-o 保持文件的属主
-g 保持文件的属组
-D 保持设备文件信息
-t 保持文件的时间属性
--delete 删除DEST中SRC没有的文件,删除目标目录中,原目录里边没有的文件。要想一模一样必须 加这个选项,
--exclude 过滤指定文件,如--exclude “logs”会把文件名包含logs的文件或者目录过滤掉,不同 步 例如:下图为过滤掉以.txt结尾的所有文件,不要这些文件。
他不支持连写,但支持多些,例如还过滤以阿明开头的所有文件,不要他。
-P 显示同步过程,比如速率,比-v更加详细
-u 加上该选项后,如果DEST中的文件比SRC新,则不同步,如果目标目录里的文件比原文件新,则不 同步
-z 传输时压缩
rsync通过ssh方式同步
格式:rsync -av test1/ 192.168.133.132:/tmp/test2/
命令:rsync -av -e "ssh -p 22" test1/ 192.168.133.132:/tmp/test2/ -p指定对方的端口,例如 22端口
rsync 通过服务的方式同步
第一步,要编辑配置文件/etc/rsyncd.conf //下面是rsyncd.conf的样例,把他写进去:
port=873
log file=/var/log/rsync.log
pid file=/var/run/rsyncd.pid
address=192.168.133.130
[test]
path=/root/rsync
use chroot=true
max connections=4
read only=no
list=true
uid=root
gid=root
auth users=test 这里是密码实验时可以关掉前边加上#号
secrets file=/etc/rsyncd.passwd
hosts allow=192.168.133.132 1.1.1.1 2.2.2.2 192.168.133.0/24 这些IP根据你需要的改!!
第二步,启动服务rsync --daemon 启动完用命令检测一下是否启动了:ps aux |grep rsync
用命令:netstat -lntp 查看一下他监听的端口是不是873
最后一步:用这个命令传输,格式:rsync -av test1/ 192.168.133.130::module/dir/
rsyncd.conf配置文件详解
port:指定在哪个端口启动rsyncd服务,默认是873端口。可以更改。
log file:指定日志文件。
pid file:指定pid文件,这个文件的作用涉及服务的启动、停止等进程管理操作。
address:指定启动rsyncd服务的IP。假如你的机器有多个IP,就可以指定由其中一个启动rsyncd服 务,如果不指定该参数,默认是在全部IP上启动。也可以指定多个IP
[]:指定模块名,里面内容自定义。
path:指定数据存放的路径。
use chroot true|false:表示在传输文件前首先chroot到path参数所指定的目录下。这样做的原因是 实现额外的安全防护,但缺点是需要以roots权限,并且不能备份指向外部的符号连接所指向的目录文 件。默认情况下chroot值为true,如果你的数据当中有软连接文件,阿铭建议你设置成false。
Linux同步工具-
max connections:指定最大的连接数,默认是0,即没有限制。
read only ture|false:如果为true,则不能上传到该模块指定的路径下。
list:表示当用户查询该服务器上的可用模块时,该模块是否被列出,设定为true则列出,false则隐 藏。
uid/gid:指定传输文件时以哪个用户/组的身份传输。
auth users:指定传输时要使用的用户名。
secrets file:指定密码文件,该参数连同上面的参数如果不指定,则不使用密码验证。注意该密码 文件的权限一定要是600。格式:用户名:密码
hosts allow:表示被允许连接该模块的主机,可以是IP或者网段,如果是多个,中间用空格隔开。
当设置了auth users和secrets file后,客户端连服务端也需要用用户名密码了,若想在命令行中带 上密码,可以设定一个密码文件
rsync -avL test@192.168.133.130::test/test1/ /tmp/test8/ --password-file=/etc/pass
其中/etc/pass内容就是一个密码,权限要改为600
Linux系统日志
Linux系统总日志:/var/log/messages 可以用less查看一下
命令:/etc/logrotate.conf 日志切割配置文件
参考https://my.oschina.net/u/2000675/blog/908189
dmesg命令
/var/log/dmesg 日志,查看正确的登陆历史。
last命令,调用的文件/var/log/wtmp
lastb命令查看登录失败的用户,对应的文件时/var/log/btmp
/var/log/secure
screen工具
一个虚拟终端,为了不让一个任务意外中断
nohup command &
screen是一个虚拟终端
安装:yum install -y screen
screen直接回车就进入了虚拟终端
ctral a组合键再按d退出虚拟终端,但不是结束
列出来命令:screen -ls 查看虚拟终端列表
screen -r id 进入指定的终端
命令:screen -S aming 定义一个自定义名字
screen -r aming