iptables 笔记

看看服务器都已经应用了哪些规则

iptables -L -n
iptables -Z

清理掉全部的规则

iptables -F
iptables -X

定义自己的规则

特别小心, 如果没有开放 ssh 端口就把 INPUT 的全部 DROP, shell 就掉了.
确保有一个 ssh 22 端口是开放的.
另一个保险是确保 iptables 不是启动运行, 这样还可以通过管理后台执行服务器重启来挽救. 否则…. 你的懂的

iptables -I INPUT 1 -m state --state RELATED,ESTABLISHED -j ACCEPT

# 各个链的规则
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

# 允许 ping
iptables -A INPUT -p icmp -j ACCEPT
# 允许回环地址
iptables -A INPUT -i lo -j ACCEPT

# ssh 端口记录日志
iptables -A INPUT 1 -p tcp --dport 22 -m limit --limit 3/minute --limit-burst 8 -j LOG --log-prefix ssh-burst:

# 10s 内, 超过5次请求, 抛弃
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 10 --hitcount 5 -j DROP
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 10 --hitcount 5 -j LOG --log-prefix ssh-conn-max-time:

iptables -A INPUT -p tcp --dport 25000 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 25000 -m state --state NEW -m recent --update --seconds 10 --hitcount 10 -j DROP
iptables -A INPUT -p tcp --dport 25000 -m state --state NEW -m recent --update --seconds 10 --hitcount 10 -j LOG --log-prefix app-conn-max-time:

# 限制某些端口的最大连接数
iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 5  -j DROP
iptables -A INPUT -p tcp --syn --dport 25000 -m connlimit --connlimit-above 10 -j DROP

# 开放的端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 25000 -j ACCEPT
iptables -A INPUT -p tcp --dport 20000 -j ACCEPT
iptables -A INPUT -p tcp --dport 9100 -j ACCEPT

# 这条规则用在INPUT链默没有DROP的情况, 作用与-P DROP相同, 当前面所有的规则都没匹配时, 自然落到这个 REJECT 上.
iptables -A INPUT -j REJECT --reject-with icmp-host-prohibited
iptables -A FORWARD -j REJECT --reject-with icmp-host-prohibited

删除某条记录

方法1, 把配置的那个 A 换成 D

iptables -L -n --line-numbers 使用 --line-numbers 打印行, 然后删除行
例如: iptables -D INPUT 2

保存所有改动

/etc/init.d/iptables save

mysql 数据导出和导入

导出

mysqldump -C -u root --opt --flush-logs --quick  dbname | gzip > file.gz
-C 使用压缩协议
-u 用户名
--opt Same as --add-drop-table, --add-locks, --create-options, 等, 其实默认是开启的

导入

gunzip <  file.tgz | mysql -u root -p "password" dbname

一个全量备份脚本

#!/bin/sh
PATH=$PATH:$HOME/bin:/home/mysql/app/mysql/bin
export PATH
cd `dirname $0`
db=hpos
dd=`date +%Y_%m%d_%H%M`
sql_file=db_backup_$dd.sql.gz
ig=''

# 忽略一些表
for i in table_ignore_1 table_ignore_2
do
   ig=$ig' --ignore-table='$db.$i
done

#echo $ig
mysqldump -u root --opt --flush-logs --quick $ig $db | gzip > $sql_file

centos 6 mini 安装 vmware tools 无法启动的问题

错误信息

vmware-tools-thinprint start/running
initctl: Job failed to start
Unable to start services for VMware Tools

尝试安装 fuse-libs

yum install fuse-libs

手工启动

/etc/vmware-tools/services.sh restart
Stopping VMware Tools services in the virtual machine:
   Guest operating system daemon:                          [确定]
   VMware User Agent (vmware-user):                        [确定]
   Blocking file system:                                   [确定]
   Unmounting HGFS shares:                                 [确定]
   Guest filesystem driver:                                [确定]
   VM communication interface socket family:               [确定]
   VM communication interface:                             [确定]
   Checking acpi hot plug                                  [确定]
Starting VMware Tools services in the virtual machine:
   Switching to guest configuration:                       [确定]
   VMware Automatic Kmods:                                 [确定]
   VM communication interface:                             [确定]
   VM communication interface socket family:               [确定]
   Guest filesystem driver:                                [确定]
   Mounting HGFS shares:                                   [确定]
   Blocking file system:                                   [确定]
   Guest operating system daemon:                          [确定]

问题解决

centos 6.x docker 安装

centos7 安装 docker 比较简单. 直接:

yum install docker

完成!

centos 6 按照如下步骤:

step 0: // 建议执行.

yum update

step 1:

yum install epel-release

step 2:

fix Cannot retrieve metalink for repository: epel error

问题依旧则:
sudo sed -i "s/mirrorlist=https/mirrorlist=http/" /etc/yum.repos.d/epel.repo

yum upgrade ca-certificates --disablerepo=epel

step 3:

yum install docker-io

完成!

后记

阿里云需要手工创建 bridge 才能使用.