运维工作笔记

一、logrotate日志切割

1、概要说明

logrotate工具是为了方便进行日志管理而产生的一个工具,主要可以完成的工作包含:基于天、周、月、文件大小进行日志的滚动备份、压缩、删除甚至是发送邮件。

2、调用运行方式

  •     每天晚上,cron daemon会自动执行/etc/cron.daily目录下的任务。它会触发/etc/cron.daily/logrotate文件,logrotate一般是随linux安装的。
  •     logrotate文件中定义了待执行命令:/usr/sbin/logrotate /etc/logrotate.conf
  •     /etc/logrotate.conf 文件定义包含了/etc/logrotate.d目录下的所有脚本(所以自定义脚本日志滚动脚本需要放置在此目录)。
  •     参考/etc/logrotate.d文件夹下的其他服务配置文件,创建需要切割日志的应用文件,放置到此目录下。
  •     使用logrotate /etc/logrotate.conf 命令手动执行,检查是否正常结果。

3、logrotate命令语法

格式:logrotate [-dv][-f] [-s] config_file+

-v 显示详细信息

-d 开启调试模式,输出执行过程,但是不会对日志和logrotate的state文件产生操作后果

-f 忽略调用周期,强制执行logrotate

-m 指定logrotate发送邮件的命令

-s 多个logrotate运行时,告知logrotate自己使用的state文件(/var/log/logrotate.status)

4、logrotate配置文件参数说明

daily 表示每天整理一次,其它可用值为‘weekly’、‘monthly’、‘yearly’

rotate 30 表示保留30份的备份文件

dateext 表示让旧日志文件以日期命名

compress\nocompress 表示使用压缩转储或不使用压缩转储,默认不适用

delaycompress 与compress一起使用,延时压缩,转储日志文件到下一次转储是才压缩

copytruncate 表示先复制log文件内容,然后在清空,用于无重新打开日志文件命令的情况。以Nginx为例,/usr/local/nginx/sbin/nginx -s reopen。但是其他的应用程序不一定遵循这样的约定,比如说MySQL是通过flush-logs来重新打开日志文件的。更有甚者,有些应用程序就压根没有提供类似的方法,此时如果想重新打开日志文件,就必须重启服务,但为了高可用性,这往往不能接受。还好Logrotate提供了一个名为copytruncate的指令,此方法采用的是先拷贝再清空的方式,整个过程中日志文件的操作句柄没有发生改变,所以不需要通知应用程序重新打开日志文件,但是需要注意的是,在拷贝和清空之间有一个时间差,所以可能会丢失部分日志数据。

size 5M 日志文件大小增长到5MB再进行轮循。

notifempty 如果日志文件为空,轮循不会进行

missingok 在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。

postrotate\endscript 在转储以后执行命令,postrotate和endscript里面指定的命令将被执行。在这种情况下,rsyslogd 进程将立即再次读取其配置并继续运行。

5、nginx日志切割几个坑

  • /etc/logrotate.d/nginx自定义轮循配置,没有重写日志语句。

postrotate
/usr/local/nginx/sbin/nginx -s reopen >/dev/null 2>&1
endscript

  • 配置logrotate一段时间,发现自己配置的没有定时切割,系统的是正常的,检查了配置文件发现又是正确,强制切割(logrotate -f /etc/logrotate.conf)又可以,定时就是不正常,后来baidu,才知道是selinux的安全策略问题。

解决办法:给日志文件增加安全上下文 var_log_t:chcon -Rv --type=var_log_t /usr/local/nginx/logs/  #格式chcon -Rv --type=var_log_t 日志所在目录

 

 

二、vsphere下linux虚拟机扩展磁盘容量(lvm)

概念:

第一步:编辑虚拟机,扩大磁盘容量500G。(vsphere6.5)

第二步:新建磁盘分区

1、查看现虚拟机磁盘分区情况 

 2、使用fdisk命令,新建分区sda3,用n命令创建一个P类型分区(主分区),然后用t命令更改类型为8e。

[root@*****~]# fdisk /dev/sda

The number of cylinders for this disk is set to 39162.

There is nothing wrong with that, but this is larger than 1024,

and could in certain setups cause problems with:

1) software that runs at boot time (e.g., old versions of LILO)

2) booting and partitioning software from other OSs

   (e.g., DOS FDISK, OS/2 FDISK)

#输入n,新建分区

Command (m for help):n

#输入P,主分区

Command action

   e   extended

   p   primary partition (1-4)

p

#目前是sda第三个分区输入3

Partition number (1-4): 3

#敲回车,默认就行了(如果要分多个分区,这儿就制定数值)

First cylinder (39163-110960, default 39163):

Using default value 39163

Last cylinder or +size or +sizeM or +sizeK (39163-110960, default 110960):

Using default value 110960

#这里输入t

Command (m for help): t

#这里选择第三个分区

Partition number (1-4): 3

#指定分区的格式为8e (LVM)

Hex code (type L to list codes): 8e

Changed system type of partition 3 to 8e (Linux LVM)

#输入p查看一下

Command (m for help): p

Disk /dev/sda: 912.6 GB, 912680550400 bytes

255 heads, 63 sectors/track, 110960 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          13      104391   83  Linux

/dev/sda2              14       39162   314464342+  8e  Linux LVM

/dev/sda3           39163      110960   576717435   8e  Linux LVM

#这里输入w,保存退出

Command (m for help): w

The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: (这里有个小报错,不用管它).

The kernel still uses the old table.

The new table will be used at the next reboot.

Syncing disks.

#重启使其生效

[root@***** ~]# reboot

Broadcast message from root (pts/1) (Tue May 15 12:12:27 2012):

The system is going down for reboot NOW!

[root@***** ~]#

第三步,把新增分区加入到lvm卷组中

1. 查看卷组情况,可以看到当前只有一个卷组VolGroup00(此名称因系统而异);
[root@*****~]# vgs
/dev/hdc: open failed: 找不到介质
VG #PV #LV #SN Attr VSize VFree
VolGroup00 1 2 0 wz--n- 299.88G 0

2. 创建物理卷(LVM分区),并将物理卷加入到组里(VolGroup00);
[root@*****~]# mkfs.ext3 /dev/sda3 # 首先进行格式化,否则创建lvm分区会报错
[root@*****~]# lvm
lvm>pvcreate /dev/sda3 ##创建一个LVM硬分区
Physical volume "/dev/sda3" successfully created
lvm> vgextend VolGroup00 /dev/sda3 ##把此分区加入到与/根目录同一个LVM卷组
Volume group "VolGroup00" successfully extended

3.最后查看下当前卷组的各分区容量大小

第四步,扩展已有卷容量(挂载到"/"根目录)

1.扩容(#LogVol00是LV名称,可以使用lvs命令查看)

 

2重新识别磁盘容量

[root@*****~]# resize2fs /dev/VolGroup00/LogVol00   #LogVol00是LV名称,可以使用lvs命令查看

 3.确认最终结果

[root@*****~]# fdisk -l

三、vsphere下linux虚拟机扩容磁盘(实操)

(新增一个磁盘添扩容到虚拟分区中,全程无需重启虚拟机)

1、vsphereWeb端,编辑虚拟机,新增磁盘设备。

2、登陆虚拟机,刷新文件系统,更新新添加的硬盘信息。

此时查询并无显示新添加的硬盘信息。

执行刷新操作 echo "- - -" > /sys/class/scsi_host/host2/scan

3、扩容逻辑卷vg和逻辑分区lv

直接写108.99是指直接扩容到108.99G,如果是+10G为添加10G。(本实践中方法一失败,所以使用的方法二)

刷新文件系统时,ext4文件系统使用resize2fs命令,xfs文件系统使用xfs_growfs命令

 

四、asterisk 常用命令总结

1、CLI控制台外常用维护命令
重启asterisk: service asterisk restart
重启服务器(或服务): reboot
进入asteriskCLI控制台: asterisk -r
进入asteriskCLI控制台并且显示更多调试信息: asterisk -rvvvv
不进入CLI控制台直接在linux下执行CLI控制台命令:asterisk -rx "sip show channels"

常用例子:# asterisk -rx "sip show peers like 507935"、asterisk -rx "pjsip show aor 506582168"

2、CLI控制台常用命令
core restart gracefully #优雅重启
core restart now #立即重启

core show calls #显示当前通话统计,活跃数量和已处理数量

database show CF #查看无条件转移
database show CFB #查看忙转移
database show CFU #查看无应答转移
database show DND #查看免打扰的分机

3、手动释放吊死的通道
使用core show channels 找到疑似故障或有问题的号码通道

channel request hangup SIP/6001-00000001 挂断指定通道(SIP/6001-00000001)。

4、asterisk长时间运行日志清理(FreePBX 2.11.0.43)
大文件存在于以下两个文件夹里:
/var/lib/mysql/asteriskcdrdb #一些呼叫信令日志文件
/var/log/asterisk

五、CentOS启动失败,提示 "/dev/xxxx: UNEXPECTED INCONSISTENCY;RUN fsck MANUALLY"的解决方法

1.背景
公司虚拟机运行环境为vsphere6.5平台,其中VSAN集群中一台HP服务器异常报错(后检查确认为磁盘阵列卡异常),导致虚拟机自动迁移.如下图:

故障解除后虚拟机迁移完成后开机,报错(推测是迁移时有文件损坏)如图:

2.解决方案
按照系统提示,输入root用户的密码,进入命令行 

(1) 输入命令,查找root所在分区是多少(如果使用虚拟分区的话,我这个没有虚拟分区,直接就用/dev/sda2):
mount | grep “on /”
根据结果找到错误文件所在分区,根据错误显示我的是/dev/sda2

备注:root分区只是其中一个,有时候,我们对Linux系统进行了多个分区,比如home在一个单独的分区,也要对其进行修复

(2)然后用命令fsck修复
fsck -y /dev/XXX
注:-y 选项指定检测每个文件是自动输入yes,xxx表示root分区的路径
我上面是/dev/sda2 .  执行后结尾显示

(3)reboot重启ok

六、zabbix安装升级时,使用官方源网络异常问题

1、问题背景,公司zabbix3.4升级至4.4,根据官方手册步骤,首先安装官方yun源。然后使用yum upgrade,两条命令详情如下:
# rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
# yum upgrade zabbix-server-mysql zabbix-web-mysql zabbix-agent
2、使用yum upgrade命令更新时提示网络错误,如下图所示:

 

 

3、解决方法
此问题原因为国外网址被拦截,或网络震荡引起

(1)更换主yum源为阿里源,centos7使用命令:wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo ;或下载后替换

(2)更换zabbix源为阿里云源,如下图(先使用命令安装对应zabbix版本官方源rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm):

七、内网上网代理设置

1、squid用法 https://www.cnblogs.com/he-ding/p/10038264.html

2、ss5用法

安装:编译安装

#cat /etc/opt/ss5/ss5.conf

auth    0.0.0.0/0               -               -
permit -    0.0.0.0/0    -    0.0.0.0/0    -    -    -    -    - 
无用户认证方式
#cat /etc/opt/ss5/ss5.conf

auth    0.0.0.0/0               -               u
permit u    0.0.0.0/0    -    0.0.0.0/0    -    -    -    -    -

cat /etc/opt/ss5/ss5.passwd
test test
配置用户认证方式
cat /etc/sysconfig/ss5
# Add startup option here
#SS5_OPTS=" -u root"
SS5_OPTS=" -u root -b 0.0.0.0:1080"
配置启动参数
chmod a+x /etc/init.d/ss5
service ss5 start
             Reloading systemd:                                         [  OK  ]
             Starting ss5 (via systemctl):                              [  OK  ]
ss -tunlp |grep ss5
              tcp    LISTEN     0      6         *:1080                  *:*                         users:(("ss5",pid=13536,fd=4))

systemctl restart ss5
启动服务

 八、长ping监测网络质量脚本

1、linux下shell脚本

#!/usr/bin/sh

# ping 86400次, 默认间隔1秒, 也就是24小时;54000次15小时
ping -c 86400 -i 1 -s 10240 172.16.22.131 | awk '{ print $0"\t" strftime("%D_%H:%M:%S",systime()) }' > ping_result_`date +%m%d%H%M`.log
#注意: 只有当脚本运行结束(或被kill掉), awk命令 才会将结果输出到文件中.
长ping的shell脚本

#为防止脚本被中断, 可以通过 nohup 令脚本在后台执行:
nohup sh long_ping.sh &

#要结束后台进程, 可通过下述方式查找并kill:
[root@localhost ~]# ps aux | grep long
root 36538 0.0 0.0 113120 1344 pts/3 S 16:02 0:00 sh long_ping.sh
root 37451 0.0 0.0 112652 960 pts/3 S+ 16:03 0:00 grep --color=auto long
[root@localhost ~]# kill -9 36538

2、windows下bat脚本

windows下使用bat程序调用vbs脚本执行ping测试

@echo off
echo  ping test is on running please do not close the windows
cscript ping.vbs >> ping_log.txt
Long_ping.bat
Set shell = WScript.CreateObject("WScript.Shell")
Set re=New RegExp
re.Pattern = "^Reply|^Request"
Set myping=shell.Exec("ping www.baidu.com -t")
while Not myping.StdOut.AtEndOfStream
strLine = myping.StdOut.ReadLine()
r=re.Test(strLine)
WScript.Echo date & " "& time & chr(9) & strLine
If r Then
WScript.Echo date & " "& time & chr(9) & strLine
End if
Wend
Long_ping.vbs

 九、记录一次服务器被病毒攻击经过

1、登录服务器之后,首先使用ifconfig,确认收费流量是否正常,iftop 查看实时流量

2、last命令确认登陆信息

3、netstat -pan 查看网络进程

4、pstree 查看进程树、子进程等信息。

5、lsof

十、Socks5代理在系统重启后失效

重启系统后启动失败,因 SS5-3.8.9的bug,重启会删掉/var/run/ss5/ 导致无法创建pid文件

解决: 每次启动系统先创建 /var/run/ss5目录后再启动 ss5----->(mkdir /var/run/ss5)

echo mkdir  /var/run/ss5/ >> /etc/rc.d/rc.local

chmod  a+x  /etc/rc.d/rc.local

参考文档https://developer.aliyun.com/article/609449

十一、zabbix4.4升级至5.0作业记录

#1、安装5.0yum源
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
yum clean all

#2、编辑zabbix.repo,改为阿里云地址;注意[zabbix-frontend]中enabled=1需要更新web前端
  1 [zabbix]
  2 name=Zabbix Official Repository - $basearch
  3 baseurl=https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/$basearch/
  4 enabled=1
  5 gpgcheck=1
  6 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
  7 
  8 [zabbix-frontend]
  9 name=Zabbix Official Repository frontend - $basearch
 10 baseurl=https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/$basearch/frontend
 11 enabled=1
 12 gpgcheck=1
 13 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
 14 
 15 [zabbix-debuginfo]
 16 name=Zabbix Official Repository debuginfo - $basearch
 17 baseurl=http://repo.zabbix.com/zabbix/5.0/rhel/7/$basearch/debuginfo/
 18 enabled=0
 19 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
 20 gpgcheck=1
 21 
 22 [zabbix-non-supported]
 23 name=Zabbix Official Repository non-supported - $basearch
 24 baseurl=http://repo.zabbix.com/non-supported/rhel/7/$basearch/
 25 enabled=1
 26 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
 27 gpgcheck=1
 
 
#3、停止相关服务
systemctl stop zabbix-server
systemctl stop zabbix-agent
systemctl stop httpd
#4、备份数据库
#5、备份配置文件
mkdir /opt/zabbix-backup/
cp /etc/zabbix/zabbix_server.conf /opt/zabbix-backup/
cp /etc/httpd/conf.d/zabbix.conf  /opt/zabbix-backup/

#6、备份php files and zabbix binaries
cp -R /usr/share/zabbix/ /opt/zabbix-backup/
cp -R /usr/share/doc/zabbix-* /opt/zabbix-backup/

#7、升级web frontend 
yum remove zabbix-web-*
yum install centos-release-scl #全新5.0基于php7.2及更高版本,需要安装相关库
#安装下面两个scl时,需提前在zabbix.repo里开启[zabbix-frontend]中的enabled=1
yum install zabbix-web-mysql-scl
yum install zabbix-apache-conf-scl

#8、升级zabbix-server等相关服务
yum upgrade zabbix-server-mysql zabbix-web-mysql zabbix-agent
#9、重启相关服务
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fp
 

 十二、docker-compose设置代理

1、创建通过systemd配置docker服务的文件夹

mkdir /etc/systemd/system/docker.service.d

 

2、创建配置文件

vim /etc/systemd/system/docker.service.d/http-proxy.conf

 

3、写入配置文件内容

[Service]
 # NO_PROXY is optional and can be removed if not needed
 # Change proxy_url to your proxy IP or FQDN and proxy_port to your proxy port
 # For Proxy server which require username and password authentication, just add the proper username and password to the URL. (see example below)

 # Example without authentication
 Environment="HTTP_PROXY=http://proxy_url:proxy_port" "NO_PROXY=localhost,127.0.0.0/8"

 # Example with authentication
 # Environment="HTTP_PROXY=http://username:password@proxy_url:proxy_port" "NO_PROXY=localhost,127.0.0.0/8"

 

4、配置生效:重新加载,并验证生效

# 重新加载systemctl 
systemctl daemon-reload
# 验证配置
systemctl show docker --property Environment
# 重启服务
systemctl restart docker

 十二. zabbix磁盘io监控

1. 创建自定义配置项的独立配置文件
vim /etc/zabbix/zabbix_agentd.d/userparameter_iostat.conf

UserParameter=custom.disk.iostats.rrqm[*],/etc/zabbix/selfscript/disk-status-iostat.sh $1 "rrqm/s"
UserParameter=custom.disk.iostats.wrqm[*],/etc/zabbix/selfscript/disk-status-iostat.sh $1 "wrqm/s"
UserParameter=custom.disk.iostats.rps[*],/etc/zabbix/selfscript/disk-status-iostat.sh $1 "r/s"
UserParameter=custom.disk.iostats.wps[*],/etc/zabbix/selfscript/disk-status-iostat.sh $1 "w/s"
UserParameter=custom.disk.iostats.avgrq[*],/etc/zabbix/selfscript/disk-status-iostat.sh $1 "avgrq-sz"
UserParameter=custom.disk.iostats.avgqu[*],/etc/zabbix/selfscript/disk-status-iostat.sh $1 "avgqu-sz"
UserParameter=custom.disk.iostats.await[*],/etc/zabbix/selfscript/disk-status-iostat.sh $1 "await"
UserParameter=custom.disk.iostats.svctm[*],/etc/zabbix/selfscript/disk-status-iostat.sh $1 "svctm"
UserParameter=custom.disk.iostats.util[*],/etc/zabbix/selfscript/disk-status-iostat.sh $1 "%util"
UserParameter=custom.disk.iostats.rkB[*],/etc/zabbix/selfscript/disk-status-iostat.sh $1 "rkB/s"
UserParameter=custom.disk.iostats.wkB[*],/etc/zabbix/selfscript/disk-status-iostat.sh $1 "wkB/s"
UserParameter=custom.disk.iostats.iowait[*],/etc/zabbix/selfscript/disk-status-iostat.sh $1 "%iowait"

 

2. 创建脚本存放目录
mkdir -p /etc/zabbix/selfscript
chown zabbix:zabbix /etc/zabbix/selfscript/ -R

3. vim /etc/zabbix/selfscript/disk-status-iostat.sh 创建脚本

 

Device=$1
DISK=$2
case $DISK in
         rrqm)
            iostat -dxkt |grep "\b$Device\b"|tail -1|awk '{print $2}'
            ;;
         wrqm)
            iostat -dxkt |grep "\b$Device\b"|tail -1|awk '{print $3}'
            ;;
          rps)
            iostat -dxkt |grep "\b$Device\b"|tail -1|awk '{print $4}'
            ;;
          wps)
            iostat -dxkt |grep "\b$Device\b" |tail -1|awk '{print $5}'
            ;;
        rKBps)
            iostat -dxkt |grep "\b$Device\b" |tail -1|awk '{print $6}'
            ;;
        wKBps)
            iostat -dxkt |grep "\b$Device\b" |tail -1|awk '{print $7}'
            ;;
        avgrq-sz)
            iostat -dxkt |grep "\b$Device\b" |tail -1|awk '{print $8}'
            ;;
        avgqu-sz)
            iostat -dxkt |grep "\b$Device\b" |tail -1|awk '{print $9}'
            ;;
        await)
            iostat -dxkt |grep "\b$Device\b" |tail -1|awk '{print $10}'
            ;;
        r_await)
            iostat -dxkt |grep "\b$Device\b" |tail -1|awk '{print $11}'
            ;;
        w_await)
            iostat -dxkt |grep "\b$Device\b" |tail -1|awk '{print $12}'
            ;;
        svctm)
            iostat -dxkt |grep "\b$Device\b" |tail -1|awk '{print $13}'
            ;;
         %util)
            iostat -dxkt |grep "\b$Device\b" |tail -1|awk '{print $14}'
            ;;
         %iowait)
            iostat -c |grep -A 1 "\b$Device\b"|tail -1|awk '{print $4}'
            ;;
esac

4. 给脚本执行权限
chmod +x /etc/zabbix/selfscript/disk-status-iostat.sh

5. 重启zabbix客户端
systemctl restart zabbix-agent

6. 测试

zabbix_get -s 10.195.236.175 -k custom.disk.iostats.iowait[avg-cpu]

zabbix_get -s 10.195.236.175 -k custom.disk.iostats.util[sda]

十三.iptables白名单案例

ps:centos7,关闭firewalld

#!/bin/sh
# 先打开所有规则,否则ssh连接可能断掉
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

#清空所有默认规则
iptables -F
#清空所有自定义规则
iptables -X

#所有计数器归0
iptables -Z

# 放开所有
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

#定义白名单
iptables -N whitelist

#设置白名单的ip或ip段
iptables -A whitelist -s 10.195.249.225 -j ACCEPT

#重新设置iptables(允许自己发送包的返回通信)
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# 开启本地环路,使得ping 127.0.0.1这样的包以通过。
iptables -A INPUT -i lo -j ACCEPT
# 允许其它机器ping这台服务器
iptables -A INPUT -p icmp -j ACCEPT

#只有白名单才能访问,其它应用根据需求添加即可。
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 1088 -j whitelist
iptables -A INPUT -p icmp -j whitelist
#拦截应用的所有其他地址
iptables -A INPUT -p tcp --dport 1088 -j DROP


#配置写入文件,重启也生效。
service iptables save
#重启iptables服务
systemctl restart iptables

 十四、关闭ss5代理的日志输出

vim /etc/init.d/ss5,给如下三个ss5启动命令添加-m参数,关闭日志记录

 

十五、从一台机器映射到另一台机器

#1 打开 IP 转发(路由器设备是默认打开的),必须允许 IP 转发,否则即使设置了 nat 映射规则,也是不能发生映射的,因为不开启转发,包不能被发过去
echo 1 > /proc/sys/net/ipv4/ip_forward

#2 配置本地报文转接,本地链路的报文是不需要经过 PREROUTING 与 POSTROUTING 的,所以必须配置 OUTPUT 否则在本机上测试会发现转发规则无效!
iptables -t nat -A OUTPUT -p tcp -d 10.***.***.248 --dport 80 -j DNAT --to 10.195.***.***:80
#3 配置目的地址转换
iptables -t nat -A PREROUTING -p tcp -d 10.***.***.248 --dport 80 -j DNAT --to 10.195.***.***:80
#4 配置源地址转换
iptables -t nat -A POSTROUTING -p tcp -d 10.195.***.*** --dport 80 -j SNAT --to 10.***.***.248


# 查看 nat 链规则
iptables -t nat -L -n --line-number

# 删除规则 POSTROUTING 的规则 1
iptables -t nat -D POSTROUTING 1

 

#配置写入文件,重启也生效。
service iptables save
#重启iptables服务
systemctl restart iptables

posted @ 2019-01-15 09:46  he_ding  阅读(1383)  评论(0编辑  收藏  举报