30选5玩法|福彩30选5开奖结果321|
 

分类:Linux

Linux

linux 程序被Killed,如何精准查看日志

No Comments Linux

1.网上查经常是,查看日志,需要达到文件夹 log 找messages

cd /var/log/

发现massage是按天储存的,?#19994;?#22825;的文件不显示,小白很无奈

2.在日志文件找kill

vi maillog-20180701 以编辑方法或者 可以通过cat 或tail 命令来查看

发现也看不懂什么

3.直接寻找错误,发现一个好方法:

------中间广告---------

dmesg | egrep -i -B100 ‘killed process’

## 或:
egrep -i ‘killed process’ /var/log/messages
egrep -i -r ‘killed process’ /var/log

## 或:
journalctl -xb | egrep -i ‘killed process’

把最近的killed process信息都输出了。感谢博客https://blog.csdn.net/green1893/article/details/78192017

4.?#38382;?#35828;明

total-vm:31354724kB, anon-rss:30636060kB, file-rss:476kB, shmem-rss:0kB
1
我这个报错信息
百度说 RSS:指明了当前实际占用了多少内存
内存是30的,anon-rss值为30636060kBkB.RSS代表?#30333;?#30041;集大小?#20445;?#21363;当前在进程中为RAM分配的内存量。file-rss是交换文件中对于该系统中所有进程为0KB的内存量。

明显的内存不够用了,接下来调代码啦
———————
作者:水…琥珀
来源:CSDN
原文:https://blog.csdn.net/shuihupo/article/details/80905641
版权声明:本文为博主原创文章,转载请附上博文链接!

Linux通过Shell脚本命令修改密码的两种方式

No Comments Linux

使用脚本修改密码

很多时候我们可能需要远程执行服务器上的脚本来修改账号密码,此?#26412;?#27809;有办法进行交互了。

此时可以使用如下两种方式修改密码:

方式1: 试了不行

echo "password" | passwd testuser --stdin > /dev/null 2>&1

方式2: 这个可以

echo testuser:password|chpasswd

注:

1.密码字符串的双引号,可有可无,见上面 方式1 和 方式2 的例子

2.如果密码中包含 $ 字符,需要使用反斜线进行转义,如:

 

echo testuser:password\$|chpasswd

总结

以上所述是小编给大家介绍的Linux通过Shell脚本命令修改密码的两种方式,希望对大家有所帮助,如果大家有任?#25105;?#38382;请给我留言,小编会及?#34987;?#22797;大?#19994;摹?#22312;此也非常感谢大家对脚本之家网站的支持!

https://www.jb51.net/article/140708.htm

一看必会系列:useradd -p新建用户登录不了系统解决方案

No Comments Linux

 

 

1。先建用户

useradd jeff003

2 再设置密码

passwd jeff003

111111

3.cat /etc/shadow  查看?#29992;?#21518;的密码

 

jeff003:$6$4MbjRKVY$UNqUhN485ZMgOL0IuLBh09ok1ERlksSPnmD.2SwxLeOWHxQtx.3u6l8toNJWFnWFO1a1QdhQSJBKASp2EZ7/t/:17968:0:99999:7:::

4.使用命令生成用户 及密码 useradd –p ‘?#29992;?#23494;码’ 用户名

useradd  -p ‘$6$4MbjRKVY$UNqUhN485ZMgOL0IuLBh09ok1ERlksSPnmD.2SwxLeOWHxQtx.3u6l8toNJWFnWFO1a1QdhQSJBKASp2EZ7/t/’ jeff004

一看必会系列:etcd 单机集群部署

No Comments Linux

etcd 单机集群部署

下载
https://github.com/etcd-io/etcd/releases/tag/v3.3.12

ETCD_VER=v3.3.12

# choose either URL
GOOGLE_URL=https://storage.googleapis.com/etcd
GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
DOWNLOAD_URL=${GOOGLE_URL}

rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test

curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test –strip-components=1
rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz

/tmp/etcd-download-test/etcd –version
ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl version

也可以下载后将
etcd*  复制到/usr/local/bin  就可以直接使用etcd  etcdctl命令了

 

创建
[email protected]:~# tree /opt/etcd -L 2
/opt/etcd
?#25193;ぉ?conf
│   ?#25193;ぉ?node1.yml   配置文件
│   ?#25193;ぉ?node2.yml
│   └── node3.yml
└── data
    ?#25193;ぉ?node1       节点数据目录
    ?#25193;ぉ?node2
    ?#25193;ぉ?node3
    └── node4

6 directories, 3 files
[email protected]:~#

各节点配置文件
[email protected]:~# cat /opt/etcd/conf/*

name: node1
data-dir: /opt/etcd/data/node1
listen-client-urls: ‘http://0.0.0.0:9002′
advertise-client-urls: ‘http://0.0.0.0:9002′
listen-peer-urls: ‘http://0.0.0.0:9001′
initial-advertise-peer-urls: ‘http://0.0.0.0:9001′
initial-cluster: node1=http://0.0.0.0:9001,node2=http://0.0.0.0:9003,node3=http://0.0.0.0:9005
initial-cluster-token: etcd-cluster-1
initial-cluster-state: new

name: node2
data-dir: /opt/etcd/data/node2
listen-client-urls: ‘http://0.0.0.0:9004′
advertise-client-urls: ‘http://0.0.0.0:9004′
listen-peer-urls: ‘http://0.0.0.0:9003′
initial-advertise-peer-urls: ‘http://0.0.0.0:9003′
initial-cluster: node1=http://0.0.0.0:9001,node2=http://0.0.0.0:9003,node3=http://0.0.0.0:9005
initial-cluster-token: etcd-cluster-1
initial-cluster-state: new

name: node3
data-dir: /opt/etcd/data/node3
listen-client-urls: ‘http://0.0.0.0:9006′
advertise-client-urls: ‘http://0.0.0.0:9006′
listen-peer-urls: ‘http://0.0.0.0:9005′
initial-advertise-peer-urls: ‘http://0.0.0.0:9005′
initial-cluster: node1=http://0.0.0.0:9001,node2=http://0.0.0.0:9003,node3=http://0.0.0.0:9005
initial-cluster-token: etcd-cluster-1
initial-cluster-state: new
[email protected]:~#

启动脚本
nohup etcd –config-file=/opt/etcd/conf/node1.yml &
nohup etcd –config-file=/opt/etcd/conf/node2.yml &
nohup etcd –config-file=/opt/etcd/conf/node3.yml &
[email protected]:~#

 

?#38382;?#35828;明:
● –data-dir 指定节点的数据存储目录,若不指定,则默认是当前目录。这些数据包括节点ID,集群ID,集群初始化配置,Snapshot文件,若未指 定–wal-dir,?#22815;?#23384;储WAL文件
● –wal-dir 指定节点的was文件存储目录,若指定了该?#38382;瑆al文件会和其他数据文件分开存储
● –name 节点名称
● –initial-advertise-peer-urls 告知集群其他节点的URL,tcp2380端口用于集?#21644;?#20449;
● –listen-peer-urls 监听URL,用于与其他节点通讯
● –advertise-client-urls 告知客户端的URL, 也就是服务的URL,tcp2379端口用于监听客户端请求
● –initial-cluster-token 集群的ID
● –initial-cluster 集群中所有节点
● –initial-cluster-state 集群状态,new为新创建集群,existing为已存在的集群

在etcd1、etcd2上分别做相似操作,只需将脚本中–advertise-client-urls 和 –initial-advertis-peer-urls ?#38382;?#20462;改一?#24405;?#21487;。

注意:上面的初始化只是在集群初始化时运行一次,之后节点的服务有重启,必须要去掉initial?#38382;?#21542;则报错。

验证
[email protected]:~# etcdctl –endpoints http://127.0.0.1:9002,http://127.0.0.1:9004,http://127.0.0.1:9006 member list

b5b6e1baef01d74: name=node2 peerURLs=http://0.0.0.0:9003 clientURLs=http://0.0.0.0:9004 isLeader=false
7f630db3033b1564: name=node1 peerURLs=http://0.0.0.0:9001 clientURLs=http://0.0.0.0:9002 isLeader=false
fd1de2479ca19cfa: name=node3 peerURLs=http://0.0.0.0:9005 clientURLs=http://0.0.0.0:9006 isLeader=true
[email protected]:~#

[email protected]:~# etcdctl –endpoints http://127.0.0.1:9006 cluster-health
member b5b6e1baef01d74 is healthy: got healthy result from http://0.0.0.0:9004
member 7f630db3033b1564 is healthy: got healthy result from http://0.0.0.0:9002
member fd1de2479ca19cfa is healthy: got healthy result from http://0.0.0.0:9006
cluster is healthy
[email protected]:~#

修改节点信息

[email protected]:~# etcdctl –endpoints http://127.0.0.1:9006 member update fd1de2479ca19cfa http://192.168.10.67:9006
Updated member with ID fd1de2479ca19cfa in cluster
[email protected]:~# etcdctl –endpoints http://127.0.0.1:9006 cluster-health
member b5b6e1baef01d74 is healthy: got healthy result from http://0.0.0.0:9004
member 7f630db3033b1564 is healthy: got healthy result from http://0.0.0.0:9002
member fd1de2479ca19cfa is healthy: got healthy result from http://0.0.0.0:9006

如果你想更新一个节点的IP(peerURLS),首先你需要知道那个节点的ID,就是最前面的一段b5b6e1baef01d74
[email protected]:~# etcdctl –endpoints http://127.0.0.1:9006 member list
b5b6e1baef01d74: name=node2 peerURLs=http://0.0.0.0:9003 clientURLs=http://0.0.0.0:9004 isLeader=false
7f630db3033b1564: name=node1 peerURLs=http://0.0.0.0:9001 clientURLs=http://0.0.0.0:9002 isLeader=false
fd1de2479ca19cfa: name=node3 peerURLs=http://192.168.10.67:9006 clientURLs=http://0.0.0.0:9006 isLeader=true
[email protected]:~#

删除一个节点
[email protected]:~# etcdctl –endpoints http://127.0.0.1:9006 member remove fd1de2479ca19cfa
Removed member fd1de2479ca19cfa from cluster

验证
[email protected]:~# etcdctl –endpoints http://127.0.0.1:9002 member list
b5b6e1baef01d74: name=node2 peerURLs=http://0.0.0.0:9003 clientURLs=http://0.0.0.0:9004 isLeader=true
7f630db3033b1564: name=node1 peerURLs=http://0.0.0.0:9001 clientURLs=http://0.0.0.0:9002 isLeader=false

增加一个节点
[email protected]:~# etcdctl –endpoints http://127.0.0.1:9002 member add node3 http://0.0.0.0:9005
Added member named node3 with ID 3979a731e0408e32 to cluster

提示信息
ETCD_NAME="node3"
ETCD_INITIAL_CLUSTER="node2=http://0.0.0.0:9003,node3=http://0.0.0.0:9005,node1=http://0.0.0.0:9001"
ETCD_INITIAL_CLUSTER_STATE="existing"
[email protected]:~#

验证是否正常
[email protected]:/opt/etcd/conf# etcdctl –endpoints http://127.0.0.1:9002 member list
b5b6e1baef01d74: name=node2 peerURLs=http://0.0.0.0:9003 clientURLs=http://0.0.0.0:9004 isLeader=true
3979a731e0408e32[unstarted]: peerURLs=http://0.0.0.0:9005        -----状态不对
7f630db3033b1564: name=node1 peerURLs=http://0.0.0.0:9001 clientURLs=http://0.0.0.0:9002 isLeader=false
[email protected]:/opt/etcd/conf#

解决
清空目标节点etcd3的data-dir
节点删除后,集群中的成员信息会更新,新节点是作为一个全新的节点加入集群,如果data-dir有数据,
etcd启动?#34987;?#35835;取己经存在的数据,仍然用老的memberID会造成无法加入集群,所以一定要清空新节点的data-dir。

[email protected]:/opt/etcd/conf# rm -rf /opt/etcd/data/node3/

这里的initial标?#19988;?#23450;要指定为existing,如果为new,则会?#36828;?#29983;成一个新的memberID,
这和前面添加节点时生成的ID不一致,故日志中会报节点ID不匹配的错。

正确配置如下
[email protected]:/opt/etcd/conf# vim node3.yml
name: node3
data-dir: /opt/etcd/data/node3
listen-client-urls: ‘http://0.0.0.0:9006′
advertise-client-urls: ‘http://0.0.0.0:9006′
listen-peer-urls: ‘http://0.0.0.0:9005′
initial-advertise-peer-urls: ‘http://0.0.0.0:9005′
initial-cluster: node1=http://0.0.0.0:9001,node2=http://0.0.0.0:9003,node3=http://0.0.0.0:9005
initial-cluster-token: etcd-cluster-1
initial-cluster-state: existing    —[]这里由new改为existing:
修改–advertise-client-urls 和 –initial-advertis-peer-urls ?#38382;?#20462;改为etcd3的,–initial-cluster-state改为existing

 

启动node3
nohup etcd –config-file=/opt/etcd/conf/node3.yml &

ps -ef |grep etcd
root     12747     1  1 12:39 pts/0    00:00:05 etcd –config-file=/opt/etcd/conf/node1.yml
root     12748     1  1 12:39 pts/0    00:00:06 etcd –config-file=/opt/etcd/conf/node2.yml
root     12966 31275  0 12:44 pts/0    00:00:01 etcd –config-file=/opt/etcd/conf/node3.yml

验证,结果正确
[email protected]:~# etcdctl –endpoints http://127.0.0.1:9004 get jdccie
http://www.rygqfb.tw
[email protected]:~# etcdctl –endpoints http://127.0.0.1:9006 get jdccie
http://www.rygqfb.tw
[email protected]:~#

[email protected]:~# etcdctl –endpoints http://127.0.0.1:9004 set ssl sslvpn.ccie.wang
sslvpn.ccie.wang
[email protected]ker:~# etcdctl –endpoints http://127.0.0.1:9006 get ssl
sslvpn.ccie.wang
[email protected]:~#

节点扩容

1 加节点
etcdctl –endpoints http://127.0.0.1:9002 member add node4 http://0.0.0.0:9007
Added member named node4 with ID 63bd58b500460e51 to cluster

ETCD_NAME="node4"
ETCD_INITIAL_CLUSTER="node2=http://0.0.0.0:9003,node3=http://0.0.0.0:9005,node4=http://0.0.0.0:9007,node1=http://0.0.0.0:9001"
ETCD_INITIAL_CLUSTER_STATE="existing"

2.生成node4配置
[email protected]:~# cat /opt/etcd/conf/node4.yml
name: node4
data-dir: /opt/etcd/data/node4
listen-client-urls: ‘http://0.0.0.0:9008′
advertise-client-urls: ‘http://0.0.0.0:9008′
listen-peer-urls: ‘http://0.0.0.0:9007′
initial-advertise-peer-urls: ‘http://0.0.0.0:9007′
initial-cluster: node1=http://0.0.0.0:9001,node2=http://0.0.0.0:9003,node3=http://0.0.0.0:9005,node4=http://0.0.0.0:9007
initial-cluster-token: etcd-cluster-1
initial-cluster-state: existing
[email protected]:~#

3.启动node4

nohup etcd –config-file=/opt/etcd/conf/node4.yml > node4.log &
 
验证进程
ps -ef |grep etcd
root     12747     1  0 12:39 pts/0    00:00:46 etcd –config-file=/opt/etcd/conf/node1.yml
root     12748     1  0 12:39 pts/0    00:00:58 etcd –config-file=/opt/etcd/conf/node2.yml
root     12966 31275  0 12:44 pts/0    00:00:42 etcd –config-file=/opt/etcd/conf/node3.yml
root     18667 31275  0 14:15 pts/0    00:00:00 etcd –config-file=/opt/etcd/conf/node4.yml

验证member
[email protected]:~# etcdctl –endpoints http://127.0.0.1:9002 member list
b5b6e1baef01d74: name=node2 peerURLs=http://0.0.0.0:9003 clientURLs=http://0.0.0.0:9004 isLeader=true
3979a731e0408e32: name=node3 peerURLs=http://0.0.0.0:9005 clientURLs=http://0.0.0.0:9006 isLeader=false
63bd58b500460e51: name=node4 peerURLs=http://0.0.0.0:9007 clientURLs=http://0.0.0.0:9008 isLeader=false
7f630db3033b1564: name=node1 peerURLs=http://0.0.0.0:9001 clientURLs=http://0.0.0.0:9002 isLeader=false
[email protected]:~#

验证端口
[email protected]:~# netstat -ntlp |grep 900
tcp6       0      0 :::9001                 :::*                    LISTEN      12747/etcd         
tcp6       0      0 :::9002                 :::*                    LISTEN      12747/etcd         
tcp6       0      0 :::9003                 :::*                    LISTEN      12748/etcd         
tcp6       0      0 :::9004                 :::*                    LISTEN      12748/etcd         
tcp6       0      0 :::9005                 :::*                    LISTEN      12966/etcd         
tcp6       0      0 :::9006                 :::*                    LISTEN      12966/etcd         
tcp6       0      0 :::9007                 :::*                    LISTEN      18667/etcd         
tcp6       0      0 :::9008                 :::*                    LISTEN      18667/etcd         
[email protected]:~#

 

验证数据  9008为node4
[email protected]:~# etcdctl –endpoints http://127.0.0.1:9008 get jdccie
http://www.rygqfb.tw
[email protected]:~#

 

 

数据一致性验证
[email protected]:~# etcdctl –endpoints http://127.0.0.1:9002 set jdccie http://www.rygqfb.tw
http://www.rygqfb.tw

[email protected]:~# etcdctl –endpoints http://127.0.0.1:9002 get jdccie
http://www.rygqfb.tw
[email protected]:~# etcdctl –endpoints http://127.0.0.1:9004 get jdccie
http://www.rygqfb.tw
[email protected]:~# etcdctl –endpoints http://127.0.0.1:9006 get jdccie
http://www.rygqfb.tw
[email protected]:~#

那么问题来了
?#24405;?#30340;节点。原来节点配置不变?#37027;?#20917;下。重启node1 集群是否正常

验证一下
1063  ps -ef |grep etcd
1064  kill -9 12747
1065  sh +x etcd-cluster1.sh
 
脚本etcd-cluster1.sh
#!/bin/bash
nohup etcd –config-file=/opt/etcd/conf/node1.yml >> node1.log &
nohup etcd –config-file=/opt/etcd/conf/node2.yml >> node2.log &
nohup etcd –config-file=/opt/etcd/conf/node3.yml >> node3.log &
nohup etcd –config-file=/opt/etcd/conf/node4.yml >> node4.log &                     

集群仍存在。并且选择了 node2为主节点
[email protected]:~# etcdctl –endpoints http://127.0.0.1:9008 member list
b5b6e1baef01d74: name=node2 peerURLs=http://0.0.0.0:9003 clientURLs=http://0.0.0.0:9004 isLeader=true
3979a731e0408e32: name=node3 peerURLs=http://0.0.0.0:9005 clientURLs=http://0.0.0.0:9006 isLeader=false
63bd58b500460e51: name=node4 peerURLs=http://0.0.0.0:9007 clientURLs=http://0.0.0.0:9008 isLeader=false
7f630db3033b1564: name=node1 peerURLs=http://0.0.0.0:9001 clientURLs=http://0.0.0.0:9002 isLeader=false
[email protected]:~#

附节点配置
cat /opt/etcd/conf/*

name: node1
data-dir: /opt/etcd/data/node1
listen-client-urls: ‘http://0.0.0.0:9002′
advertise-client-urls: ‘http://0.0.0.0:9002′
listen-peer-urls: ‘http://0.0.0.0:9001′
#initial-advertise-peer-urls: ‘http://0.0.0.0:9001′
#initial-cluster: node1=http://0.0.0.0:9001,node2=http://0.0.0.0:9003,node3=http://0.0.0.0:9005
#initial-cluster-token: etcd-cluster-1
#initial-cluster-state: new

name: node2
data-dir: /opt/etcd/data/node2
listen-client-urls: ‘http://0.0.0.0:9004′
advertise-client-urls: ‘http://0.0.0.0:9004′
listen-peer-urls: ‘http://0.0.0.0:9003′
#initial-advertise-peer-urls: ‘http://0.0.0.0:9003′
#initial-cluster: node1=http://0.0.0.0:9001,node2=http://0.0.0.0:9003,node3=http://0.0.0.0:9005
#initial-cluster-token: etcd-cluster-1
#initial-cluster-state: new

name: node3
data-dir: /opt/etcd/data/node3
listen-client-urls: ‘http://0.0.0.0:9006′
advertise-client-urls: ‘http://0.0.0.0:9006′
listen-peer-urls: ‘http://0.0.0.0:9005′
initial-advertise-peer-urls: ‘http://0.0.0.0:9005′
initial-cluster: node1=http://0.0.0.0:9001,node2=http://0.0.0.0:9003,node3=http://0.0.0.0:9005
initial-cluster-token: etcd-cluster-1
initial-cluster-state: existing

name: node4
data-dir: /opt/etcd/data/node4
listen-client-urls: ‘http://0.0.0.0:9008′
advertise-client-urls: ‘http://0.0.0.0:9008′
listen-peer-urls: ‘http://0.0.0.0:9007′
initial-advertise-peer-urls: ‘http://0.0.0.0:9007′
initial-cluster: node1=http://0.0.0.0:9001,node2=http://0.0.0.0:9003,node3=http://0.0.0.0:9005,node4=http://0.0.0.0:9007
initial-cluster-token: etcd-cluster-1
initial-cluster-state: existing

一看必会系列:aliyunvpn 与 strongswan s2s对接配置

No Comments Linux

一定成功

 

阿里云vpn 网关与 strongswan s2s对接配置

 

{
  "LocalSubnet": "对端内网IP段/24",
  "RemoteSubnet": "阿里内网IP段/24",
  "IpsecConfig": {
    "IpsecPfs": "group2",
    "IpsecEncAlg": "aes",
    "IpsecAuthAlg": "sha1",
    "IpsecLifetime": 86400
  },
  "Local": "对端公网IP",
  "Remote": "阿里端公网IP",
  "IkeConfig": {
    "IkeAuthAlg": "sha1",
    "LocalId": "对端VM内网IP",
    "IkeEncAlg": "aes256",
    "IkeVersion": "ikev1",
    "IkeMode": "aggressive",
    "IkeLifetime": 86400,
    "RemoteId": "阿里端公网IP",
    "Psk": "g24J$%#$",
    "IkePfs": "group2"
  }
}

 

config setup
     uniqueids=no
conn %default
     authby=psk
     type=tunnel
conn tomyidc
     keyexchange=ikev1
     left=对端VM内网IP
     leftsubnet=本端内网IP段/24
     leftid=对端VM内网IP
     right=阿里端公网IP
     rightsubnet=阿里内网IP段/24
     rightid=阿里端公网IP
     auto=route
     ike=aes256-sha1-modp1024
     ikelifetime=86400s
     esp=aes-sha1-modp1024
     lifetime=86400s
     type=tunnel
     aggressive=yes

 

Listening IP addresses:
  对端VM内网IP
Connections:
     tomyidc:  对端VM内网IP…阿里端公网IP  IKEv1 Aggressive
     tomyidc:   local:  [对端VM内网IP] uses pre-shared key authentication
     tomyidc:   remote: [阿里端公网IP] uses pre-shared key authentication
     tomyidc:   child:  对端内网IP段/24 === 阿里内网IP段/24 TUNNEL
Routed Connections:
     tomyidc{1}:  ROUTED, TUNNEL, reqid 1
     tomyidc{1}:   对端内网IP段/24 === 阿里内网IP段/24
Security Associations (1 up, 0 connecting):
     tomyidc[1]: ESTABLISHED 4 minutes ago, 对端VM内网IP[对端VM内网IP]…阿里端公网IP[阿里端公网IP]
     tomyidc[1]: IKEv1 SPIs: 13f2e09ad624bad8_i* af1d8f540aef12d3_r, pre-shared key reauthentication in 23 hours
     tomyidc[1]: IKE proposal: AES_CBC_256/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024
     tomyidc{2}:  INSTALLED, TUNNEL, reqid 1, ESP in UDP SPIs: ce59cad4_i c0ed3fcf_o
     tomyidc{2}:  AES_CBC_128/HMAC_SHA1_96/MODP_1024, 0 bytes_i, 4272 bytes_o (60 pkts, 200s ago), rekeying in 23 hours
     tomyidc{2}:   对端内网IP段/24 === 阿里内网IP段/24
[[email protected] strongswan]#

https://www.strongswan.org/testing/testresults/ikev1/net2net-psk/moon.statusall

 

中间出现的故障

"Error writing to socket: Invalid argument".
 
原因为 left 相关信息需要写成VM的IP 不是公网的IP

linux 修改max user processes

No Comments Linux

最近在对tomcat 的一个 项目进行 压测, 普通用户 启动 tomcat 的时候 压力上去以后就会报 java.lang.OutOfMemoryError 的错误, 这种错误 按道理来说都是 系统 max user processes 的问题。

 

 

 

当时我登陆了服务器查看 系统 的 ulimit

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 514585
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 655360
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 514585
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

 
 

发现 并没有什么问题, 那就奇怪了, 问题一直困扰了很久,都没有?#19994;?#38382;题。

 

后来我们使用了 root 用户去启动 tomcat 的时候,再进行压测,发现问题得到了解决,没有再出现

java.lang.OutOfMemoryError 的错误。

 

难道 root 用户 跟 普通 用户 ulimit 的值 不一样?

 

这次我们?#35874;?#21040; 普通用户 下, 查看系统的 ulimit 发现

 

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 514585
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 655360
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 4096
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

 

为什么 普通用户下 max user processes 的值只有 4096 呢。那么这个值是从那里控制的呢?

 

按道理来说 ulimit 的数值都是 通过 /etc/security/limits.conf 来修改的,可是我?#19988;?#32463;针对 /etc/security/limits.conf 做了 修改,但是为何 max user processes 的数值会不同呢?

 

后来我们发现 ulimit 下面 nproc 的数值 原来是通过 /etc/security/limits.d/20-nproc.conf 这里面的文件控制的。 我们查看 /etc/security/limits.d/20-nproc.conf  文件

 

# Default limit for number of user’s processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.
 
*          soft    nproc     4096
root       soft    nproc     unlimited

一看必会系列:ubuntu 18.10 安装vncserver

No Comments Linux

 

sudo apt-get install openssh-server

sudo apt install net-tools

sudo apt install tightvncserver
 
  sudo apt install xfce4 xfce4-goodies
 
 
修改 ~/.vnc$ vim ~/.vnc/xstartup

#!/bin/sh
#xfce4-session &
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
startxfce4 &

  #!/bin/sh
xfce4-session &


#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &

启动vncserver  会要求输入帐号密码

查看端口号  netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name   
tcp        0      0 0.0.0.0:5901            0.0.0.0:*               LISTEN      3865/Xtightvnc

下载客户端
https://bintray.com/tigervnc/stable/tigervnc  或者vncviewer?#22841;?/p>

连接方式

server ip:端口号

本例
1.1.1.1:5901

弄完即可访问


鼠标不动
能看到桌面不点点
看到桌面点没反应

重启服务器即可

关服务
vncserver -kill :1
vncserver -kill :2
vncserver -kill :xxx

开服务
vncserver

调整分辨率,方便操作

vim /usr/bin/vncserver
$geometry = "1024×768";

https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-vnc-on-ubuntu-14-04:

一看必会系列:ubuntu 18.10 安装vncserver

No Comments Linux

 

sudo apt-get install openssh-server

sudo apt install net-tools

sudo apt install tightvncserver
 
  sudo apt install xfce4 xfce4-goodies
 
 
修改 ~/.vnc$ vim ~/.vnc/xstartup
  #!/bin/sh
xfce4-session &


#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &

启动vncserver  会要求输入帐号密码

查看端口号  netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name   
tcp        0      0 0.0.0.0:5901            0.0.0.0:*               LISTEN      3865/Xtightvnc

下载客户端
https://bintray.com/tigervnc/stable/tigervnc  或者vncviewer?#22841;?/p>

连接方式

server ip:端口号

本例
1.1.1.1:5901

弄完即可访问


鼠标不动
能看到桌面不点点
看到桌面点没反应

重启服务器即可

关服务
vncserver -kill :1
vncserver -kill :2
vncserver -kill :xxx

开服务
vncserver

调整分辨率,方便操作

vim /usr/bin/vncserver
$geometry = "1024×768";

https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-vnc-on-ubuntu-14-04:

设置Sysctl.conf用以提高Linux的性能(最完整的sysctl.conf优化方案)

No Comments Linux

Sysctl是一个允许您改变正在运行中的Linux系统的接口。它包含一些 TCP/IP 堆栈和虚拟内存系统的高级选项, 这可以让有经验的管理员提高引人注目的系统性能。用sysctl可以读取设置超过五百个系统变量。基于这点,sysctl(8) 提供两个功能:读取和修改系统设置。

查看所有可读变量:

% sysctl -a

读一个指定的变量,例如 kern.maxproc:

% sysctl kern.maxproc kern.maxproc: 1044

要设置一个指定的变量,直接用 variable=value 这样的语法:

# sysctl kern.maxfiles=5000

kern.maxfiles: 2088 -> 5000

您可以使用sysctl修改系统变量,也可以通过编辑sysctl.conf文件来修改系统变量。sysctl.conf 看起来很像 rc.conf。它用 variable=value 的?#38382;?#26469;设定值。指定的值在系统进入多用户模式之后被设定。并不是所有的变量都可以在这个模式下设定。

sysctl 变量的设置通常是字符串、数字或者布尔型。 (布尔型用 1 来表示’yes’,用 0 来表示’no’)。

sysctl -w kernel.sysrq=0

sysctl -w kernel.core_uses_pid=1

sysctl -w net.ipv4.conf.default.accept_redirects=0

sysctl -w net.ipv4.conf.default.accept_source_route=0

sysctl -w net.ipv4.conf.default.rp_filter=1

sysctl -w net.ipv4.tcp_syncookies=1

sysctl -w net.ipv4.tcp_max_syn_backlog=2048

sysctl -w net.ipv4.tcp_fin_timeout=30

sysctl -w net.ipv4.tcp_synack_retries=2

sysctl -w net.ipv4.tcp_keepalive_time=3600

sysctl -w net.ipv4.tcp_window_scaling=1

sysctl -w net.ipv4.tcp_sack=1

配置sysctl

编辑此文件:

vi /etc/sysctl.conf

如果该文件为空,则输入以下内容,否则请根据情况自己做调整:

# Controls source route verification

# Default should work for all interfaces

net.ipv4.conf.default.rp_filter = 1

# net.ipv4.conf.all.rp_filter = 1

# net.ipv4.conf.lo.rp_filter = 1

# net.ipv4.conf.eth0.rp_filter = 1

# Disables IP source routing

# Default should work for all interfaces

net.ipv4.conf.default.accept_source_route = 0

# net.ipv4.conf.all.accept_source_route = 0

# net.ipv4.conf.lo.accept_source_route = 0

# net.ipv4.conf.eth0.accept_source_route = 0

# Controls the System Request debugging functionality of the kernel

kernel.sysrq = 0

# Controls whether core dumps will append the PID to the core filename.

# Useful for debugging multi-threaded applications.

kernel.core_uses_pid = 1

# Increase maximum amount of memory allocated to shm

# Only uncomment if needed!

# kernel.shmmax = 67108864

# Disable ICMP Redirect Acceptance

# Default should work for all interfaces

net.ipv4.conf.default.accept_redirects = 0

# net.ipv4.conf.all.accept_redirects = 0

# net.ipv4.conf.lo.accept_redirects = 0

# net.ipv4.conf.eth0.accept_redirects = 0

# Enable Log Spoofed Packets, Source Routed Packets, Redirect Packets

# Default should work for all interfaces

net.ipv4.conf.default.log_martians = 1

# net.ipv4.conf.all.log_martians = 1

# net.ipv4.conf.lo.log_martians = 1

# net.ipv4.conf.eth0.log_martians = 1

# Decrease the time default value for tcp_fin_timeout connection

net.ipv4.tcp_fin_timeout = 25

# Decrease the time default value for tcp_keepalive_time connection

net.ipv4.tcp_keepalive_time = 1200

# Turn on the tcp_window_scaling

net.ipv4.tcp_window_scaling = 1

# Turn on the tcp_sack

net.ipv4.tcp_sack = 1

# tcp_fack should be on because of sack

net.ipv4.tcp_fack = 1

# Turn on the tcp_timestamps

net.ipv4.tcp_timestamps = 1

# Enable TCP SYN Cookie Protection

net.ipv4.tcp_syncookies = 1

# Enable ignoring broadcasts request

net.ipv4.icmp_echo_ignore_broadcasts = 1

# Enable bad error message Protection

net.ipv4.icmp_ignore_bogus_error_responses = 1

# Make more local ports available

# net.ipv4.ip_local_port_range = 1024 65000

# Set TCP Re-Ordering value in kernel to ‘5′

net.ipv4.tcp_reordering = 5

# Lower syn retry rates

net.ipv4.tcp_synack_retries = 2

net.ipv4.tcp_syn_retries = 3

# Set Max SYN Backlog to ‘2048′

net.ipv4.tcp_max_syn_backlog = 2048

# Various Settings

net.core.netdev_max_backlog = 1024

# Increase the maximum number of skb-heads to be cached

net.core.hot_list_length = 256

# Increase the tcp-time-wait buckets pool size

net.ipv4.tcp_max_tw_buckets = 360000

# This will increase the amount of memory available for socket input/output queues

net.core.rmem_default = 65535

net.core.rmem_max = 8388608

net.ipv4.tcp_rmem = 4096 87380 8388608

net.core.wmem_default = 65535

net.core.wmem_max = 8388608

net.ipv4.tcp_wmem = 4096 65535 8388608

net.ipv4.tcp_mem = 8388608 8388608 8388608

net.core.optmem_max = 40960

如果希望屏蔽别人 ping 你的主机,则加入以下代码:

# Disable ping requests

net.ipv4.icmp_echo_ignore_all = 1

编辑完成后,请执行以下命令使变动立即生效:

/sbin/sysctl -p

/sbin/sysctl -w net.ipv4.route.flush=1

 

###################
所有rfc相关的选项都是默认启用的,因此网上的那些还自己写rfc支持的都可以扔掉了:)
###############################

net.inet.ip.sourceroute=0
net.inet.ip.accept_sourceroute=0
#############################
通过源路由,攻击者可以尝试到达内部IP地址 –包括RFC1918中的地址,所以
不接受源路由信息包可以防止你的内部网络被探测。
#################################

net.inet.tcp.drop_synfin=1
###################################
安全?#38382;?#32534;译内核的时候加了options TCP_DROP_SYNFIN才可以用,可以阻止某些OS探测。
##################################

kern.maxvnodes=8446
#################http://www.bsdlover.cn#########
vnode 是对文件或目录的一种内部表达。 因此, 增加可以被操作系统利用的 vnode 数量将?#26723;?#30913;盘的 I/O。
一般而言, 这是由操作系统自行完成的,也不需要加以修改。但在某些时候磁盘 I/O 会成为瓶颈,
而系统的 vnode 不足, 则这一配置应被增加。此时需要考虑是非活跃和?#38556;?#20869;存的数量。
要查看当前在用的 vnode 数量:
# sysctl vfs.numvnodes
vfs.numvnodes: 91349
要查看最大可用的 vnode 数量:
# sysctl kern.maxvnodes
kern.maxvnodes: 100000
如果当前的 vnode 用量接近最大值,则将 kern.maxvnodes 值增大 1,000 可能是个好主意。
您应继续查看 vfs.numvnodes 的数值, 如果它再次攀升到接近最大?#26723;?#31243;度,
仍需继续提高 kern.maxvnodes。 在 top(1) 中显示的内存用量应有显著变化,
更多内存会处于活跃 (active) 状态。
####################################

kern.maxproc: 964
#################http://www.bsdlover.cn#########
Maximum number of processes
####################################
kern.maxprocperuid: 867
#################http://www.bsdlover.cn#########
Maximum processes allowed per userid
####################################
因为我的maxusers设置的是256,20+16*maxusers=4116。
maxprocperuid至少要比maxproc少1,因为init(8) 这个系统程序绝对要保持在运作状态。
我给它设置的2068。

kern.maxfiles: 1928
#################http://www.bsdlover.cn#########
系统中支持最多同时开启的文件数量,如果你在运行数据库或大的很吃描述符的进程,那么应该设置在20000以上,
比如kde这样的桌面环?#24120;?#23427;同时要用的文件非常多。
一般推荐设置为32768或者65536。
####################################

kern.argmax: 262144
#################http://www.bsdlover.cn#########
maximum number of bytes (or characters) in an argument list.
命令行下最多支持的?#38382;?#27604;如你在用find命令来批?#21487;?#38500;一些文件的时候
find . -name "*.old" -delete,如果文件数超过了这个数字,那么会提示你数字太多的。
可以利用find . -name "*.old" -ok rm {} \;来删除。
默认的?#38382;?#24050;经足够多了,因此不建议再做修改。
####################################

kern.securelevel: -1
#################http://www.bsdlover.cn#########
-1:这是系统默认级别,没有提供任?#25991;?#26680;的保护错误; 
0:基本上作用不多,当你的系统刚启动就是0级别的,当进入多用户模式的时候就?#36828;?#21464;成1级了。 
1:在这个级别上,有如?#24405;?#20010;限制: 
a. 不能通过kldload或者kldunload加载或者?#23545;?#21487;加载内核模块; 
b. 应用程序不能通过/dev/mem或者/dev/kmem直接写内存; 
c. 不能直接往已经装在(mounted)的磁盘写东西,也就是不能格式化磁盘,但是可以通过标准的内核接口执行写操作; 
d. 不能启动X-windows,同时不能使用chflags来修改文件属性; 
2:在 1 级别的基础上还不能写没装载的磁盘,而且不能在1秒之内制造多次警告,这个是防止DoS控制台的; 
3:在 2 级别的级别上不允许修改IPFW防火墙的规则。 
如果你已经装了防火墙,并且把规则设好了,不轻易改动,那么建议使用3级别,如果你没有装防火墙,而且还准备装防火墙的话,不建议使用。
我们这里推荐使用 2 级别,能够避免比较多对内核攻击。
####################################

kern.maxfilesperproc: 1735
#################http://www.bsdlover.cn#########
每个进程能够同时打开的最大文件数量,网上很多资料写的是32768
除非用异步I/O或大量线程,打开这么多的文件恐怕是不太正常的。
我个人建议不做修改,保留默认。
####################################

kern.ipc.maxsockbuf: 262144
#################http://www.bsdlover.cn#########
最大的套接字缓冲区,网上有建议设置为2097152(2M)、8388608(8M)的。
我个?#35828;故?#24314;议不做修改,保持默认的256K即可,缓冲区大了可能造成碎片、阻塞或者丢包。
####################################

kern.ipc.somaxconn: 128
#################http://www.bsdlover.cn#########
最大的等待连接完成的套接字队列大小,即并发连接数。
高负载服务器和受到Dos攻击的系统也许会因为这个队列被塞满而不能提供正常服务。
默认为128,推荐在1024-4096之间,根据机器和实?#26159;?#20917;需要改动,数字越大占用内存也越大。
####################################

kern.ipc.nmbclusters: 4800
#################http://www.bsdlover.cn#########
这个值用来调整系统在开机后所要分配给网络 mbufs 的 cluster 数量,
由于每个 cluster 大小为 2K,所以当这个值为 1024 时,也是会用到 2MB 的核心内存空间。
假设我们的网页同时约有 1000 个联机,而 TCP 传送及接收的暂存区大小都是 16K,
则最糟?#37027;?#20917;下,我们会需要 (16K+16K) * 1024,也就是 32MB ?#30446;?#38388;,
然而所需的 mbufs 大概是这个空间的二倍,也就是 64MB,所?#36816;?#38656;的 cluster 数量为 64MB/2K,也就是 32768。
对于内存有限的机器,建议值是 1024 到 4096 之间,而当拥有海?#30475;?#20648;器空间时,我们可以将它设定为 4096 到 32768 之间。
我们可以使用 netstat 这个指令并?#30001;喜问?-m 来查看目前所使用的 mbufs 数量。
要修改这个值必须在一开机就修改,所以只能在 /boot/loader.conf 中加入修改的设定
kern.ipc.nmbclusters=32768
####################################

kern.ipc.shmmax: 33554432
#################http://www.bsdlover.cn#########
共享内存和信号灯("System VIPC")如果这些过小的话,有些大型的软件将无法启动
安装xine和mplayer提示的设置为67108864,即64M,
如果内存多的话,可以设置为134217728,即128M
####################################

kern.ipc.shmall: 8192
#################http://www.bsdlover.cn#########
共享内存和信号灯("System VIPC")如果这些过小的话,有些大型的软件将无法启动
安装xine和mplayer提示的设置为32768
####################################

kern.ipc.shm_use_phys: 0
#################http://www.bsdlover.cn#########
如果我们将它设成 1,则所有 System V 共享内存 (share memory,一种程序间沟通的方式)部份都会被留在实体的内存 (physical memory) 中,
而不会被放到?#25165;?#19978;的 swap 空间。我们知道物理内存的存取速度?#25172;才?#24555;许多,而当物理内存空间不足时,
部份数据会被放到虚拟的内存上,从物理内存和虚拟内存之间移转的动作就叫作 swap。如果时常做 swap 的动作,
则需要一直对?#25165;?#20316; I/O,速度会很慢。因此,如果我们有大量的程序 (数百个) 需要共同分享一个小的共享内存空间,
或者是共享内存空间很大时,我们可以将这个值打开。
这一项,我个人建议不做修改,除非你的内存非常大。
####################################

kern.ipc.shm_allow_removed: 0
#################http://www.bsdlover.cn#########
共享内存是否允许移除?这项似乎是在fb下装vmware需要设置为1的,否则会有加载SVGA出错的提示
作为服务器,这项不动也罢。
####################################

kern.ipc.numopensockets: 12
#################http://www.bsdlover.cn#########
已经开启的socket数目,可以在最繁忙的时候看看它是多少,然后就可以知道maxsockets应该设置成多少了。
####################################

kern.ipc.maxsockets: 1928
#################http://www.bsdlover.cn#########
这是用来设定系统最大可以开启的 socket 数目。如果您的服务器会提供大量的 FTP 服务,
而且常快速的传输一些小档案,您也许会发现常传输到一半就中断。因为 FTP 在传输档案时,
每一个档案都必须开启一个 socket 来传输,但关闭 socket 需要一?#38382;?#38388;,如果传输速度很快,
而档案又多,则同一时间所开启的 socket 会超过原本系统所许可的值,这时我们就必须把这个?#26723;?#22823;一点。
除了 FTP 外,也许有其它网络程序?#19981;?#26377;这种问题。
然而,这个值必须在系统一开机就设定好,所以如果要修改这项设定,我们必须修改 /boot/loader.conf 才行
kern.ipc.maxsockets="16424"
####################################

kern.ipc.nsfbufs: 1456
#################http://www.bsdlover.cn#########
经常使用 sendfile(2) 系统调用的繁忙的服务器, 
有必要通过 NSFBUFS 内核选项或者在 /boot/loader.conf (查看 loader(8) 以获得更多?#38468;? 中设置它的值来调节 sendfile(2) 缓存数量。
这个?#38382;?#38656;要调节的普通原因是在进程中看到 sfbufa 状态。sysctl kern.ipc.nsfbufs 变量在内核配置变量中是只读的。 
这个?#38382;?#26159;由 kern.maxusers 决定的,然而它可能有必要因此而调整。
在/boot/loader.conf里加入
kern.ipc.nsfbufs="2496"
####################################

kern.maxusers: 59
#################http://www.bsdlover.cn#########
maxusers 的值决定了处理程序所容许的最大值,20+16*maxusers 就是你将得到的所容许处理程序。
系统一开机就必须要有 18 个处理程序 (process),即便是简单的执行指令 man 又会产生 9 个 process,
所以将这个值设为 64 应该是一个合理的数目。
如果你的系统会出现 proc table full 的讯息的话,可以就把它设大一点,例如 128。
除非您的系统会需要同时开启很多档案,否则请不要设定超过 256。

可以在 /boot/loader.conf 中加入该选项的设定,
kern.maxusers=256
####################################

kern.coredump: 1
#################http://www.bsdlover.cn#########
如果设置为0,则程序异常退出时不会生成core文件,作为服务器,不建议这样。
####################################

kern.corefile: %N.core
#################http://www.bsdlover.cn#########
可设置为kern.corefile="/data/coredump/%U-%P-%N.core"
其中 %U是UID,%P是进程ID,%N是进程名,当然/data/coredump必须是一个实际存在的目录
####################################

vm.swap_idle_enabled: 0
vm.swap_idle_threshold1: 2
vm.swap_idle_threshold2: 10
#########################
在有很多用户进入、离开系统和有很多?#38556;?#36827;程的大的多用户系统中很有用。
可以让进程更快地进入内存,但它会吃掉更多的交换和磁盘带宽。
系统默认的页面调度算法已经很好了,最好不要更改。
########################

vfs.ufs.dirhash_maxmem: 2097152
#########################
默认的dirhash最大内存,默认2M
增加它有助于改善单目录超过100K个文件时的反复读目录时的性能
建议修改为33554432(32M)
#############################

vfs.vmiodirenable: 1
#################
这个变量控制目录是否被系统缓存。大多数目录是小的,在系统中只使用单个片断(典型的是1K)并且在缓存中使用的更小 (典型的是512字节)。
当这个变量设置为关闭 (0) 时,缓存器仅仅缓存固定数量的目录,即使您有很大的内存。 
而将其开启 (设置为1) 时,则允许缓存器用 VM 页面缓存来缓存这些目录,让所有可用内存来缓存目录。
不利的是最小的用来缓存目录的核心内存是大于 512 字节的物理页面大小(通常是 4k)。
我们建议如果您在运行任何操作大量文件的程序时保持这个选项打开的默?#29616;怠?#160;
这些服务包括 web 缓存,大容量邮件系统和新闻系统。
尽管可能会浪费一些内存,但打开这个选项通常不会?#26723;?#24615;能。但?#25925;?#24212;该检验一下。
####################

vfs.hirunningspace: 1048576
############################
这个值决定了系统可以将多少数据放在写入储存设备的等候区。通常使用默?#29616;?#21363;可,
但当我们有多颗?#25165;?#26102;,我们可以将它调大为 4MB 或 5MB。
注意这个设置成很高的值(超过缓存器的写极限)会导致?#26723;?#24615;能。
不要盲目的把它设置太高!高的数值会导致同时发生的读操作的迟延。
#############################

vfs.write_behind: 1
#########################
这个选项预设为 1,也就是打开的状态。在打开时,在系统需要写入数据在?#25165;?#25110;其它储存设备上时,
它会等到?#21344;?#20102;一个 cluster 单位的数据后再一次写入,否则会在一个暂存区空间有写入需求?#26412;?#31435;即写到?#25165;?#19978;。
这个选项打开时,对于一个大的连续的文件写入速度非常有帮助。但如果您遇到有很多行程?#21448;?#22312;等待写入动作时,您可能必须关闭这个功能。
############################

net.local.stream.sendspace: 8192
##################################
本地套接字连接的数据发送空间
建议设置为65536
###################################
net.local.stream.recvspace: 8192
##################################
本地套接字连接的数据接收空间
建议设置为65536
###################################

net.inet.ip.portrange.lowfirst: 1023
net.inet.ip.portrange.lowlast: 600
net.inet.ip.portrange.first: 49152
net.inet.ip.portrange.last: 65535
net.inet.ip.portrange.hifirst: 49152
net.inet.ip.portrange.hilast: 65535
###################
以上六项是用来控制TCP及UDP所使用的port?#27573;В?#36825;个?#27573;?#34987;分成三个部份,低?#27573;А?#39044;设?#27573;А?#21450;高?#27573;А?
这些是你的服务器主动发起连接时的临时端口的?#27573;В?#39044;设的已经1万多了,一般的应用就足够了。
如果是比较忙?#26723;腇TP server,一般也不会同时提供给1万多人访问的,
当然如果很不幸,你的服务器就要提供很多,那么可以修改first的值,比如直接用1024开始
#########################

net.inet.ip.redirect: 1
#########################
设置为0,屏蔽ip重定向功能
###########################

net.inet.ip.rtexpire: 3600
net.inet.ip.rtminexpire: 10
########################
很多apache产生的CLOSE_WAIT状态,这种状态是等待客户端关闭,但是客户端那边并没有正常的关闭,于是留下很多这样的东东。
建议?#22841;?#25913;为2
#########################

net.inet.ip.intr_queue_maxlen: 50
########################
Maximum size of the IP input queue,如果下面的net.inet.ip.intr_queue_drops一直在增加,
那就说明你的队列空间不足了,那么可以考虑增加该值。
##########################
net.inet.ip.intr_queue_drops: 0
####################
Number of packets dropped from the IP input queue,如果你sysctl它一直在增加,
那么增加net.inet.ip.intr_queue_maxlen的值。
#######################

net.inet.ip.fastforwarding: 0
#############################
如果打开的话每个目标地址一次转发成功以后它的数据都将被记录进路由表和arp数据表,节约路由的计算时间
但会需要大量的内核内存空间来保存路由表。
如果内存够大,打开吧,呵呵
#############################

net.inet.ip.random_id: 0
#####################
默认情况下,ip包的id号是连续的,而这些可能会被攻击者利用,比如可以知道你nat后面带了多少主机。
如果设置成1,则这个id号是随机的,嘿嘿。
#####################

net.inet.icmp.maskrepl: 0
############################
防止广播风暴,关闭其他广播探测的响应。默认即是,无须修改。
###############################

net.inet.icmp.icmplim: 200
##############################
限制系统发送ICMP速率,改为100吧,或者保留也可,并不会给系统带来太大的压力。
###########################
net.inet.icmp.icmplim_output: 1
###################################
如果设置成0,就不会看到提示说Limiting icmp unreach response from 214 to 200 packets per second 等等了
不过禁?#25925;?#20986;容易让我们忽视攻击的存在。这个自己看着办吧。
######################################

net.inet.icmp.drop_redirect: 0
net.inet.icmp.log_redirect: 0
###################################
设置为1,屏蔽ICMP重定向功能
###################################
net.inet.icmp.bmcastecho: 0
############################
防止广播风暴,关闭广播ECHO响应,默认即是,无须修改。
###############################

net.inet.tcp.mssdflt: 512
net.inet.tcp.minmss: 216
###############################
数据包数据段最小值,以上两个选项最好不动!或者只修改mssdflt为1460,minmss不动。
原因详见http://www.bsdlover.cn/security/2007/1211/article_4.html
#############################

net.inet.tcp.keepidle: 7200000
######################
TCP的套接?#20540;目障?#26102;间,默认时间太长,可以改为600000(10分钟)。
##########################

net.inet.tcp.sendspace: 32768
#################http://www.bsdlover.cn#########
最大的待发送TCP数据缓冲区空间,应用程序将数据放到这里就认为发?#32479;?#21151;了,系统TCP堆栈保证数据的正常发送。
####################################
net.inet.tcp.recvspace: 65536
###################################
最大的接受TCP缓冲区空间,系统从这里将数据分发给不同的套接字,增大该空间可提高系统?#24067;?#25509;受数据的能力以提高性能。
###################################
这二个选项分别控制了网络 TCP 联机所使用的传送及接收暂存区的大小。预设的传送暂存区为 32K,而接收暂存区为 64K。
如果需要加速 TCP 的传输,可以将这二个?#26723;?#22823;一点,但缺点是太大的值会造?#19978;?#32479;核心占用太多的内存。
如果我们的机器会同时服务数百或数千个网络联机,那么这二个选项最好维持默?#29616;擔?#21542;则会造?#19978;?#32479;核心内存不足。
但如果我们使用的是 gigabite 的网络,将这二个?#26723;?#22823;会有明显效能的提升。
传送及接收的暂存区大小可以分开调整,
例如,假设我们的系统主要做为网页服务器,我们可以将接收的暂存区调小一点,并将传送的暂存区调大,如此一来,我们就可以避免占去太多的核心内存空间。

net.inet.udp.maxdgram: 9216
#########################
最大的发送UDP数据缓冲区大小,网上的资料大多都是65536,我个人认为没多大必要,
如果要调整,可以试试24576。
##############################
net.inet.udp.recvspace: 42080
##################
最大的接受UDP缓冲区大小,网上的资料大多都是65536,我个人认为没多大必要,
如果要调整,可以试试49152。
#######################
以上四项配置通常不会导致问题,一般说来网络流量是不对称的,因此应该根据实?#26159;?#20917;调整,并观察其效果。
如果我们将传送或接收的暂存区设为大于 65535,除非服务器本身及客户端所使用的操作系统都支持 TCP 协议的 windows scaling extension (请参考 RFC 1323 文件)。
FreeBSD默认已支持 rfs1323 (即 sysctl 的 net.inet.tcp.rfc1323 选项)。
###################################################

net.inet.tcp.log_in_vain: 0
##################
记录下任何TCP连接,这个一般情况下不应该更改。
####################

net.inet.tcp.blackhole: 0
##################################
建议设置为2,接收到一个已经关闭的端口发来的所有包,直接drop,如果设置为1则是只针对TCP包
#####################################

net.inet.tcp.delayed_ack: 1
###########################
当一台计算机发起TCP连接请求时,系统会回应ACK应答数据包。
该选项设置是否延迟ACK应答数据包,把它和包含数据的数据包一起发送。
在高速网络和低负载?#37027;?#20917;下会略微提高性能,但在网络连接较差的时候,
对方计算机得不到应答会?#20013;?#21457;起连接请求,反而会让网络更加拥堵,?#26723;?#24615;能。
因此这个值我建议您看情况而定,如果您的网速不是问题,可以将封包数量减少一半
如果网络不是特别好,那么就设置为0,有请求就先回应,这样其实浪费的网通、电信的带宽速率而不是你的处理时间:)
############################

net.inet.tcp.inflight.enable: 1
net.inet.tcp.inflight.debug: 0
net.inet.tcp.inflight.rttthresh: 10
net.inet.tcp.inflight.min: 6144
net.inet.tcp.inflight.max: 1073725440
net.inet.tcp.inflight.stab: 20
###########################
限制 TCP 带宽延迟积和 NetBSD 的 TCP/Vegas 类似。 
它可以通过将 sysctl 变量 net.inet.tcp.inflight.enable 设置成 1 来启用。 
系统将尝试计算每一个连接的带宽延迟积,并将排队的数据量限制在恰好能保持最优吞吐量的水平上。
这一特性在您的服务器同时向使用普通调制解调器,千兆以太网,乃至更高速度的光与网络连接 (或其他带宽延迟积很大的连接) 的时候尤为重要,
特别是当您同时使用滑动窗缩放,或使用了大的发送窗口的时候。 
如果启用了这个选项,您还应该把 net.inet.tcp.inflight.debug 设置为 0 (禁用调试),
对于生产环境而言, 将 net.inet.tcp.inflight.min 设置成至少 6144 会很有?#20040;Α?#160;
然而, 需要注意的是,这个值设置过大事实上相当于禁用了连接带宽延迟积限制功能。
这个限制特性减少了在路由和交换包队列的堵塞数据数量,?#24067;?#23569;了在本地主机接口队列阻塞的数据的数量。
在少数的等候队列?#23567;?#20132;互式连接,尤其是通过慢速的调制解调器,也能用低的 往返时间操作。
但是,注意这只影响到数据发送 (上载/服务端)。对数据接收(下载)没有效果。
调整 net.inet.tcp.inflight.stab 是 不 推荐的。
这个?#38382;?#30340;默?#29616;?#26159; 20,表示把 2 个最大包加入到带宽延迟积窗口的计算?#23567;?#160;
额外的窗口似的算法更为稳定,并改善对于多变网络环境的相应能力, 
但?#19981;?#23548;致慢速连接下的 ping 时间增长 (尽管?#25925;?#20250;比没有使用 inflight 算法低许多)。 
对于这些情形, 您可能会希望把这个?#38382;?#20943;少到 15, 10, 或 5; 
并可能因此而不得不减少 net.inet.tcp.inflight.min (比如说, 3500) 来得到希望的效果。
减少这些?#38382;?#30340;值, 只应作为最后不得已时的手段来使用。
############################

net.inet.tcp.syncookies: 1
#########################
SYN cookies是一种用于通过选择?#29992;?#30340;初始化TCP序列号,可以对回应的包做验证来?#26723;蚐YN’洪水’攻击的影响的技术。
默认即是,不需修改
########################

net.inet.tcp.msl: 30000
#######################
这个值网上很多文章都推荐的7500,
还可以改的更小一些(如2000或2500),这样可以加快不正常连接的释放过程(三次?#24080;?秒、FIN_WAIT4秒)。
#########################
net.inet.tcp.always_keepalive: 1
###########################
帮助系统清除没有正常断开的TCP连接,这增加了一些网络带宽的使用,但是一些死掉的连接最终能被识别并清除。
死的TCP连接是被拨号用户存取的系统的一个特别的问题,因为用户经常断开modem而不正确的关?#26632;?#21160;的连接。
#############################

net.inet.udp.checksum: 1
#########################
防止不正确的udp包的攻击,默认即是,不需修改
##############################

net.inet.udp.log_in_vain: 0
#######################
记录下任何UDP连接,这个一般情况下不应该修改。
#######################

net.inet.udp.blackhole: 0
####################
建议设置为1,接收到一个已经关闭的端口发来的所有UDP包直接drop
#######################

net.inet.raw.maxdgram: 8192
#########################
Maximum outgoing raw IP datagram size
很多文章建议设置为65536,好像没多大必要。
######################################
net.inet.raw.recvspace: 8192
######################
Maximum incoming raw IP datagram size
很多文章建议设置为65536,好像没多大必要。
#######################

net.link.ether.inet.max_age: 1200
####################
调整ARP清理的时间,通过向IP路由缓冲填充伪造的ARP条目可以让恶意用户产生资源耗竭和性能减低攻击。
这项似乎大家都未做改动,我建议不动或者稍微减少,比如300(HP-UX默认的5分钟)
#######################

net.inet6.ip6.redirect: 1
###############################
设置为0,屏蔽ipv6重定向功能
###########################

net.isr.direct: 0
#################http://www.bsdlover.cn#########
所有MPSAFE的网络ISR对包做立即响应,提高网卡性能,设置为1。
####################################

hw.ata.wc: 1
#####################
这个选项用来打开 IDE ?#25165;?#24555;取。当打开时,如果有数据要写入?#25165;?#26102;,?#25165;?#20250;假装已完成写入,并将数据快取起来。
这种作法会加速?#25165;?#30340;存取速度,但当系统异常关机时,比?#20808;?#26131;造成数据?#25856;А?
不过由于关闭这个功能所带来的速度差异实在太大,建议?#25925;?#20445;留原本打开的状态吧,不做修改。
###################

security.bsd.see_other_uids: 1
security.bsd.see_other_gids: 1
#####################
不允许用户看到其他用户的进程,因此应该改成0,
#######################

———————
作者:21aspnet
来源:CSDN
原文:https://blog.csdn.net/21aspnet/article/details/6584792
版权声明:本文为博主原创文章,转载请附上博文链接!

linux下IPTABLES配置详解 INPUT OUTPUT 为DORP的处理方式

No Comments Linux

linux下IPTABLES配置详解 INPUT OUTPUT 为DORP的处理方式

-A RH-Firewall-1-INPUT -p tcp -m state –state NEW -m tcp –dport 24000 -j ACCEPT
-A RH-Firewall-1-INPUT -s 121.10.120.24 -p tcp -m tcp –dport 18612 -j ACCEPT

如果你的IPTABLES基础知识还不了解,建议先去看看.

开始配置

我们来配置一个filter表的防火墙.

(1)查看本机关于IPTABLES的设?#20204;?#20917;

[[email protected] ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination       

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination       

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination       

Chain RH-Firewall-1-INPUT (0 references)
target     prot opt source               destination         
ACCEPT     all  –  0.0.0.0/0            0.0.0.0/0           
ACCEPT     icmp –  0.0.0.0/0            0.0.0.0/0           icmp type 255 
ACCEPT     esp  –  0.0.0.0/0            0.0.0.0/0           
ACCEPT     ah   –  0.0.0.0/0            0.0.0.0/0           
ACCEPT     udp  –  0.0.0.0/0            224.0.0.251         udp dpt:5353 
ACCEPT     udp  –  0.0.0.0/0            0.0.0.0/0           udp dpt:631 
ACCEPT     all  –  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
ACCEPT     tcp  –  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
ACCEPT     tcp  –  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:80 
ACCEPT     tcp  –  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:25 
REJECT     all  –  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 
可以看出我在安装linux时,选择了有防火墙,并且开放了22,80,25端口.

如果你在安装linux时没有选择启动防火墙,是这样的

[[email protected] ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination       

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination       

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

什么规则都没有.

(2)清除原有规则.

不管你在安装linux时是否启动了防火墙,如果你想配置属于自己的防火墙,那就清除现在filter的所有规则.

[[email protected] ~]# iptables -F      清除预设表filter中的所有规则链的规则
[[email protected] ~]# iptables -X      清除预设表filter中使用者?#36828;?#38142;中的规则

我们在来看一下

[[email protected] ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination       

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination       

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination    

什么都没有了吧,和我们在安装linux时没有启动防火墙是一样的.(提前说一句,这些配置就像用命令配置IP一样,重起就会失去作用),怎么保存.

[[email protected] ~]# /etc/rc.d/init.d/iptables save

这样就可以写到/etc/sysconfig/iptables文件里了.写入后记得把防火墙重起一下,才能起作用.

[[email protected] ~]# service iptables restart

现在IPTABLES配置表里什么配置都没有了,那我们开始我们的配置吧

(3)设定预设规则

[[email protected] ~]# iptables -P INPUT DROP

[[email protected] ~]# iptables -P OUTPUT ACCEPT

[[email protected] ~]# iptables -P FORWARD DROP
上面的意思是,当超出了IPTABLES里filter表里的两个链规则(INPUT,FORWARD)时,不在这两个规则里的数据包怎么处理呢,那就是DROP(放弃).应该说这样配置是很安全的.我们要控制流入数据包

而对于OUTPUT链,也就是流出的包我们不用做太多限制,而是采取ACCEPT,也就是说,不在着个规则里的包怎么办呢,那就是通过.

可以看出INPUT,FORWARD两个链采用的是允许什么包通过,而OUTPUT链采用的是不允许什么包通过.

这样设?#27809;故?#25402;合理的,当然你也可以三个链都DROP,但这样做我认为是没有必要的,而且要写的规则就会增加.但如果你只想要有限的几个规则是,如只做WEB服务器.?#25925;?#25512;荐三个链都是DROP.

注:如果你是远程SSH登陆的话,当你输入第一个命令回?#26723;?#26102;候就应该掉了.因为你没有设置任何规则.

怎么办,去本机操作呗!

(4)添加规则.

首先添加INPUT链,INPUT链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链

为了能采用远程SSH登陆,我们要开启22端口.

[[email protected] ~]# iptables -A INPUT -p tcp –dport 22 -j ACCEPT

[[email protected] ~]# iptables -A OUTPUT -p tcp –sport 22 -j ACCEPT

(注:这个规则,如果你把OUTPUT 设置成DROP的就要写上这一部,好多人都是望了写这一部规则导致,始终无法SSH.在远程一下,是不是好了.

其他的端口也一样,如果开启了web服务器,OUTPUT设置成DROP的话,同样也要添加一条链:

[[email protected] ~]# iptables -A OUTPUT -p tcp –sport 80 -j ACCEPT ,其他同理.)

如果做了WEB服务器,开启80端口.

[[email protected] ~]# iptables -A INPUT -p tcp –dport 80 -j ACCEPT
如果做了邮件服务器,开启25,110端口.

[[email protected] ~]# iptables -A INPUT -p tcp –dport 110 -j ACCEPT
[[email protected] ~]# iptables -A INPUT -p tcp –dport 25 -j ACCEPT
如果做了FTP服务器,开启21端口

[[email protected] ~]# iptables -A INPUT -p tcp –dport 21 -j ACCEPT

[[email protected] ~]# iptables -A INPUT -p tcp –dport 20 -j ACCEPT

如果做了DNS服务器,开启53端口

[[email protected] ~]# iptables -A INPUT -p tcp –dport 53 -j ACCEPT

如果你还做了其他的服务器,需要开启哪个端口,照写就行了.

上面主要写的都是INPUT链,凡是不在上面的规则里的,都DROP

允许icmp包通过,也就是允许ping,

[[email protected] ~]# iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT设置成DROP的话)

[[email protected] ~]# iptables -A INPUT -p icmp -j ACCEPT  (INPUT设置成DROP的话)

允许loopback!(不?#25442;?#23548;致DNS无法正常关闭等问题)

IPTABLES -A INPUT -i lo -p all -j ACCEPT (如果是INPUT DROP)
IPTABLES -A OUTPUT -o lo -p all -j ACCEPT(如果是OUTPUT DROP)

下面写OUTPUT链,OUTPUT链默认规则是ACCEPT,所以我们就写需要DROP(放弃)的链.

减少不安全的端口连接

[[email protected] ~]# iptables -A OUTPUT -p tcp –sport 31337 -j DROP

[[email protected] ~]# iptables -A OUTPUT -p tcp –dport 31337 -j DROP

有些些特洛伊木马会扫描端口31337到31340(即黑客语言中的 elite 端口)上的服务。既然合法服务都不使用这些非标准端口来通信,阻塞这些端口能够有效地减少你的网络上可能被感染的机器和它们的远程主服务器进行独立通信的机会

还有其他端口也一样,像:31335、27444、27665、20034 NetBus、9704、137-139(smb),2049(NFS)端口也应被禁止,我在这写的也不全,有兴趣的朋友应该去查一下相关资料.

当然出入更安全?#30446;?#34385;你也可以包OUTPUT链设置成DROP,那你添加的规则就多一些,就像上边添加

允许SSH登陆一样.照着写就行了.

下面写一下更加细致的规则,就是限制到?#31243;?#26426;器

如:我们只允许192.168.0.3的机器进行SSH连接

[[email protected] ~]# iptables -A INPUT -s 192.168.0.3 -p tcp –dport 22 -j ACCEPT

如果要允许,或限制一段IP地址可用 192.168.0.0/24 表示192.168.0.1-255端的所有IP.

24表示子网掩码数.但要记得把 /etc/sysconfig/iptables 里的这一行删了.

-A INPUT -p tcp -m tcp –dport 22 -j ACCEPT 因为它表示所有地址都可以登陆.

或采用命令方式:

[[email protected] ~]# iptables -D INPUT -p tcp –dport 22 -j ACCEPT

然后保存,我再说一边,反是采用命令的方式,只在当时生效,如果想要重起后也起作用,那就要保存.写入到/etc/sysconfig/iptables文件里.

[[email protected] ~]# /etc/rc.d/init.d/iptables save

这样写 !192.168.0.3 表示除了192.168.0.3的ip地址

其他的规则连接也一样这么设置.

在下面就是FORWARD链,FORWARD链的默认规则是DROP,所以我们就写需要ACCETP(通过)的链,对正在转发链的监控.

开启转发功能,(在做NAT时,FORWARD默认规则是DROP时,必须做)

[[email protected] ~]# iptables -A FORWARD -i eth0 -o eth1 -m state –state RELATED,ESTABLISHED -j ACCEPT

[[email protected] ~]# iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT

丢弃?#26723;腡CP包

[[email protected] ~]#iptables -A FORWARD -p TCP ! –syn -m state –state NEW -j DROP

处理IP碎片数量,防止攻击,允许每秒100个

[[email protected] ~]#iptables -A FORWARD -f -m limit –limit 100/s –limit-burst 100 -j ACCEPT

设置ICMP包过滤,允许每秒1个包,限制触发条件是10个包.

[[email protected] ~]#iptables -A FORWARD -p icmp -m limit –limit 1/s –limit-burst 10 -j ACCEPT

我在前面只所以允许ICMP包通过,就是因为我在这里有限制.

二,配置一个NAT表放火墙

1,查看本机关于NAT的设?#20204;?#20917;

[[email protected] rc.d]# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination       

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
SNAT       all  –  192.168.0.0/24       anywhere            to:211.101.46.235

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination  

我的NAT已经配置好了的(只是提供最简单的代理上网功能,还没有添加防火墙规则).关于怎么配置NAT,参考我的另一篇文章

当然你如果还没?#20449;?#32622;NAT的话,你也不用清除规则,因为NAT在默认情况下是什么都没有的

如果你想清除,命令是

[[email protected] ~]# iptables -F -t nat

[[email protected] ~]# iptables -X -t nat

[[email protected] ~]# iptables -Z -t nat

2,添加规则

添加基本的NAT地址转换,(关于如何配置NAT可以看我的另一篇文章),

添加规则,我们只添加DROP链.因为默认链全是ACCEPT.

防止外网用内网IP欺骗

[[email protected] sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP
[[email protected] sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP
[[email protected] sysconfig]# iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP
如果我们想,比如阻止MSN,QQ,BT等的话,需要?#19994;?#23427;们所用的端口或者IP,(个人认为没有太大必要)

例:

禁止与211.101.46.253的所有连接

[[email protected] ~]# iptables -t nat -A PREROUTING  -d 211.101.46.253 -j DROP

禁用FTP(21)端口

[[email protected] ~]# iptables -t nat -A PREROUTING -p tcp –dport 21 -j DROP

这样写?#27573;?#22826;大了,我们可以更精确的定义.

[[email protected] ~]# iptables -t nat -A PREROUTING  -p tcp –dport 21 -d 211.101.46.253 -j DROP

这样只禁用211.101.46.253地址的FTP连接,其他连接还可以.如web(80端口)连接.

按照我写的,你只要?#19994;絈Q,MSN等其他软件的IP地址,和端口,以及基于什么协议,只要照着写就行了.

最后:

drop非法连接
[[email protected] ~]# iptables -A INPUT   -m state –state INVALID -j DROP
[[email protected] ~]# iptables -A OUTPUT  -m state –state INVALID -j DROP
[[email protected] ~]# iptables-A FORWARD -m state –state INVALID -j DROP
允许所有已经建立的和相关的连接
[[email protected] ~]# iptables-A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
[[email protected] ~]# iptables-A OUTPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

[[email protected] ~]# /etc/rc.d/init.d/iptables save

这样就可以写到/etc/sysconfig/iptables文件里了.写入后记得把防火墙重起一下,才能起作用.

[[email protected] ~]# service iptables restart

别忘了保存,不行就写一部保存一次.你可以一边保存,一边做实验,看看是否达到你的要求,

上面的所有规则我都试过,没有问题.

写这篇文章,用了我将近?#22791;?#26376;的时间.查找资?#24076;?#33258;己做实验,希望对大家有所帮助.如有不全?#23433;?#23436;善的地方还请提出.

因为本篇文章以配置为主.关于IPTABLES的基础知?#37117;?#25351;令命令说明等我会尽快传上,当然你可以去网上搜索一下,?#25925;?#24456;多的.

Linux防火墙iptables学习?#22987;?/a>

一、概要
1、防火墙分类
      ①包过滤防火墙(pack filtering)在网络层对数据包进行选择过滤,采用访问控制列表(Access control table-ACL)检查数据流的源地址,目的地址,源和目的端口,IP等信息。
      ②代理服务器型防火墙
2、iptables基础
      ①规则(rules)?#21644;?#32476;管理员预定义的条件
      ②链(chains): 是数据包传播的路径
      ③表(tables):内置3个表filter表,nat表,mangle表分别用于实现包过滤网络地址转换和包重构的功能
      ④filter表是系统默认的,INPUT表(进入的包),FORWORD(转发的包),OUTPUT(处理本地生成的包),filter表只能对包进行授受和丢弃的操作。
      ⑤nat表(网络地址转换),PREROUTING(修改即将到来的数据包),OUTPUT(修改在路由之前本地生成的数据包),POSTROUTING(修改即将出去的数据包)
      ⑥mangle表,PREROUTING,OUTPUT,FORWORD,POSTROUTING,INPUT
3、其它
   iptables是按?#36134;?#24207;读取规则
   防火墙规则的配置建议
    Ⅰ 规则力求简单
    Ⅱ 规则的顺序很重要
    Ⅲ 尽量优化规则
    Ⅳ 做好?#22987;?
二、配置
1、iptables命令格式
     iptables [-t 表] -命令 匹配 操作 (大小写敏感)
   动作选项
     ACCEPT          接收数据包
     DROP             丢弃数据包
     REDIRECT      将数据包重新转向到本机或另一台主机的某一个端口,通常功能实现透明代理或对外开放内网的某些服务
     SNAT             源地址转换
     DNAT             目的地址转换
     MASQUERADE       IP伪装
     LOG               日志功能
2、定义规则
   ①先拒绝所有的数据包,然后再允许需要的数据包
      iptalbes -P INPUT DROP
      iptables -P FORWARD DROP
      iptables -P OUTPUT ACCEPT
   ②查看nat表所有链的规则列表
      iptables -t nat -L
   ③增加,插入,删除和替换规则
     iptables [-t 表名] <-A|I|D|R> 链名 [规则编号] [-i|o 网卡名称] [-p 协议类型] [-s 源ip|源子网] [–sport 源端口号] [-d 目的IP|目标子网] [–dport 目标端口号] [-j 动作]
    ?#38382;?A 增加
               -I 插入
               -D 删除
               -R 替换
三、例子
①iptables -t filter -A INPUT -s 192.168.1.5 -i eth0 -j DROP
禁止IP为192.168.1.5的主机从eth0访问本机②iptables -t filter -I INPUT 2 -s 192.168.5.0/24 -p tcp –dport 80 -j DROP
禁止子网192.168.5.0访问web服务③iptables -t filter -I INPUT 2 -s 192.168.7.9 -p tcp –dport ftp -j DROP
禁止IP为192.168.7.9访问FTP服务
④iptables -t filter -L INPUT
查看filter表中INPUT链的规则
⑤iptables -t nat -F
删除nat表中的所有规则
⑥iptables -I FORWARD -d wwww.playboy.com -j DROP
禁止访问
www.playboy.com网站
⑦iptables -I FORWARD -s 192.168.5.23 -j DROP
禁止192.168.5.23上网

30选5玩法