正在筛选分类:*BSD 下的文章 清除筛选 ✕
2014
04
26
10:25

freebsd 统计连接数查看外部IP

服务器上的一些统计数据:

 

1)统计80端口连接数

 

netstat -nat|grep -i “80”|wc -l

 

1

 

2)统计httpd协议连接数

 

ps -ef|grep httpd|wc -l

 

1

 

3)、统计已连接上的,状态为“established’

 

netstat -na|grep ESTABLISHED|wc -l

 

2

 

4)、查出哪个IP地址连接最多,将其封了.

 

 

netstat -na|grep ESTABLISHED|awk ‘{print $5}’|awk -F: ‘{print $1}’|sort|uniq -c|sort -r +0n

netstat -na|grep SYN|awk ‘{print $5}’|awk -F: ‘{print $1}’|sort|uniq -c|sort -r +0n

 

 

netstat快速查看一下TCP连接情况

netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’

通过man netstat可以了解SYN_RCVD的意义。SYN_RCVD表示当前未完成的TCP SYN队列

 

用命令:

 

# netstat -an | grep SYN | wc -l

 

$netstat -an | grep SYN_RECV | wc

97 582 7857

$netstat -an | grep 80 | wc

916 5500 74164

2014
02
27
08:19

FreeBSD中绑定多IP

vi /etc/rc.conf

以下是我在虚拟机中的一个绑定多IP示例:

 

# Created: Sat Apr 10 17:06:56 2010

# Enable network daemons for user convenience.

# Please make all changes to this file, not to /etc/defaults/rc.conf.

# This file now contains just the overrides from /etc/defaults/rc.conf.

# — sysinstall generated deltas —

ifconfig_em0=”inet 192.168.245.11 netmask 255.255.255.0″

gateway_enable=”NO”

defaultrouter=”192.168.245.2″

hostname=”192.168.245.11″

ifconfig_em0=”inet 192.168.245.14 netmask 255.255.255.0″

ifconfig_em0_alias0=”inet 192.168.245.15 netmask 255.255.255.0″

ifconfig_em0_alias1=”inet 192.168.245.16 netmask 255.255.255.0″

ifconfig_em0_alias2=”inet 192.168.245.17 netmask 255.255.255.0″

defaultrouter=”192.168.245.2″

hostname=”192.168.245.11″

sshd_enable=”yes”

 

最后执行如下命令,让rc.conf立即生效

# sh /etc/rc

2013
11
22
13:07

/usr was not properly dismounted解决办法

今天在FreeBSD用dmesg命令查看信息时,发现最后几行出现了错误 提示信息:

/usr was not properly dismounted
/tmp was not properly dismounted
/var was not properly dismounted

几经周折,终于解决了,解决方法如下:

shutdown -h now /halt/reboot/

2013
09
09
09:58

FreeBSD下查看各软件版本命令

查看FreeBSD版本: uname -a

root# uname -a

FreeBSD power 8.1-RELEASE FreeBSD 8.1-RELEASE #0: Mon Jul 19 02:36:49 UTC 2010 root@mason.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC amd64

查看apache版本: apachectl -v

root#apachectl -v

Server version: Apache/2.2.15 (FreeBSD)

Server built: Nov 26 2010 16:07:59

查看php版本:php -v

root#php -v

 

Copyright (c) 1997-2010 The PHP Group

Zend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies

with Zend Extension Manager v1.2.2, Copyright (c) 2003-2007, by Zend Technologies

with Zend Optimizer v3.3.0, Copyright (c) 1998-2007, by Zend Technologies

查看php模块:php -m

 

查看mysql版本:mysql -V(大写V哦)

root#mysql -V

mysql Ver 14.14 Distrib 5.1.53, for portbld-freebsd8.1 (amd64) using 5.2

2013
08
15
08:24

samba passwd的几种方式

passdb backend就是用户后台的意思。目前有三种后台:smbpasswd、tdbsam和ldapsam。sam应该是security account manager(安全账户管理)的简写。

 

1.smbpasswd

 

passdb backend = smbpasswd

 

该方式是使用smb自己的工具smbpasswd来给系统用户(真实用户或者虚拟用户)设置一个Samba密码,客户端就用这个密码来访问Samba的资源。smbpasswd文件默认在/etc/samba目录下,不过有时候要手工建立该文件。

 

smbpasswd -a 用户名 #添加一个samba用户

smbpasswd -d 用户名 #禁用一个samba用户

smbpasswd -e 用户名 #恢复一个samba用户

smbpasswd -x 用户名 #删除一个samba用户

 

2.tdbsam

 

passdb backend = tdbsam

 

该方式则是使用一个数据库文件来建立用户数据库。数据库文件叫passdb.tdb,默认在/etc/samba目录下。passdb.tdb 用户数据库可以使用smbpasswd –a来建立Samba用户,不过要建立的Samba用户必须先是系统用户。我们也可以使用pdbedit命令来建立Samba账户并由其pdbedit管 理。

 

用户的建立可以先用mksmbpasswd建立一个smppasswd文件,然后用pdbedit将文件里的用户导入数据库。

 

cat /etc/passwd | mksmbpasswd > /etc/samba/smbpasswd

 

pdbedit命令的参数很多,我们列出几个主要的:

 

pdbedit -i smbpasswd:/etc/samba/smbpasswd

pdbedit -a username:新建Samba账户。

pdbedit -x username:删除Samba账户。

pdbedit -L:列出Samba用户列表,读取passdb.tdb数据库文件。

pdbedit -Lv:列出Samba用户列表的详细信息。

pdbedit -c “[D]” –u username:暂停该Samba用户的账号。

pdbedit -c “[]” –u username:恢复该Samba用户的账号。

 

3.ldapsam

 

passdb backend = smbpasswd

 

该方式则是基于LDAP的账户管理方式来验证用户。首先要建立LDAP服务,然后设置“passdb backend = ldapsam:ldap://LDAP Server”。

 

注:samba3.x的早期版本默认使用tdb库也就是smb.conf默认设定为passdb backend = tdbsam,只需要注释掉该行添加smb passwd file = /etec/samba/smbpasswd即可使用smbpasswd存储加密密钥。samba3.5.6更加规范了passdb backend参数的使用,取消了smb passwd file设定,如果简单注释掉passdb backend参数,密钥文件也不会被存储到smbpasswd。所以很多人说怎么修改smb.conf的配置,smbpasswd文件都无法生成,就算 手工创建,内容也是0字节。

 

这里只能说samba版本升级了,规则也变化了。现在无论是使用tdb数据库存储密钥还是smbpasswd文本存储密钥都要设定相对应的 passdb backend参数。要用传统的文本方式存储只需这样设定passdb backend = smbpasswd:/etc/samba/smbpasswd(后面跟的是绝对路径)>,不要再画蛇添足的写上smb passwd file = /etec/samba/smbpasswd,该参数已经不适用于新版本的samba了。

 

注意,这里的用户名必须是linux中存在的用户,可以使用useradd命令在系统中添加一个用户,然后再增加一个对应的samba用户,也 就是一个用户名使用的是两套密码。一个是系统用户密码,另一个密码存储在/etc/samba/smbpasswd文件中的samba密码,这样可以防止 系统用户密钥外泄带来的安全隐患。

 

除了上面的措施外,samba还提供了一个更安全的方法,用户名映射功能,这样做的好处是防止系统内的真实用户名暴露,在smb.conf中增 加username map = /etc/samba/smbuser设定,再手工建立该文件。username map参数详解,比如有一个系统用户名为shaogroup.com,同时我们也设定其为samba的登录名,虽然是两套独立的密码,但依然告诉了用户,我系统内 也存在shaogroup.com这个用户。严格的说这也是违背系统安全规则的,不法人士可能会利用该用户名暴力猜解获得系统内帐户权限。samba提供的用户名 映射功能,只需编辑smbuser文件,格式为:真实的用户名 = 映射出的用户名(随便自定义);shaogroup.com = nas_guest nas_nobody(可以映射出多个用户名,注意中间的空格)。设定完成后,我们只需将nas_guest告诉用户即可,无须担心真实的 shaogroup.com用户名暴露。

2013
08
06
16:15

FreeBSD系统优化防止ddos

1)这个话题有点大,我相信我做的只是其中很小的一部分,同时很多人也会问我,是不是要编译内核,这边的回答是不需要编译任何内核,只需要copy文件,然后重启一下服务器就可以了。

 

2)加载文件修改

# vi /boot/loader.conf #加入如下文本

kern.dfldsiz=”2147483648″ # Set the initial data size limit

kern.maxdsiz=”2147483648″ # Set the max data size

kern.ipc.nmbclusters=”0″ # Set the number of mbuf clusters

kern.ipc.nsfbufs=”66560″ # Set the number of sendfile(2) bufs

##解释:

a. 第一,第二行主要是为了突破1G内存设置的

b. 第三行其实是bsd的一个bug,当系统并发达到一个数量级的时候,系统会crash,这个是非常糟糕的事情,所幸更改了这个参数后,在高并发的时候,基本可以没有类似情况,当然非常bt的情况,还得进一步想办法

c. 第四行是读取的文件数,如果你下载的文件比较大,且比较多,加大这个参数,是非常爽的

 

3)Sysctl修改

#vi /etc/rc.local

sysctl kern.ipc.maxsockets=100000 ##增加并发的socket,对于ddos很有用

sysctl kern.ipc.somaxconn=65535 ##打开文件数

sysctl net.inet.tcp.msl=2500 ##timeout时间

 

4)通过上述的简单优化,会给你带来意外的惊喜,如果有兴趣的兄弟,可以尝试一下看看,绝无副作用。

2013
08
06
16:10

freebsd卸载及重新安装程序

以php5-pcre为例:

cd /usr/ports/devel/php5-pcre

make deinstall rmconfig clean

make build

make install

make clean

apachectl gracefull

 

 

完整删除软件

进入 cd /var/db/pkg

找到你要删除的软件

pkg_delete nginx-0.5.33

也可以使用如[pkg_delete p5-D* ]通配符,一次删除多个软件

2013
08
06
16:09

FreeBSD与Linux下date取日期的方法

今天日期(CST格式):

FreeBSD:

test# date

2011年 03月 22日 星期二 09:27:47 CST

Debian:

[root@shaobo ~]# date

2011年 03月 22日 星期二 09:27:47 CST

 

今天日期(数字格式):

FreeBSD:

test# date +%Y%m%d

20110322

Debian:

[root@shaobo ~]# date +%Y%m%d

20110322

 

昨天日期(数字格式):

FreeBSD:

test# date -v -1d +%Y%m%d

20110321

Debian:

[root@shaobo ~]# date +%Y%m%d –date=’1 days ago’

20110321

[root@shaobo ~]# date –date=’yesterday’ +%Y%m%d

20110321

 

前天日期(数字格式):

FreeBSD:

test# date -v -2d +%Y%m%d

20110320

Debian:

[root@shaobo ~]# date +%Y%m%d –date=’2 days ago’

20110320

 

明天日期:

FreeBSD:

test# date -v +1d +%Y%m%d

20110323

Debian:

[root@shaobo ~]# date +%Y%m%d –date=’tomorrow’

20110323

[root@shaobo ~]# date -d “1 day” “+%Y%m%d”

20110323

 

后天日期:

FreeBSD:

test# date -v +2d +%Y%m%d

20110324

Debian:

[root@shaobo ~]# date -d “2 day” “+%Y%m%d”

20110324

 

date +%s 可以得到UNIX的时间戳;

[root@shaobo ~]# date +%s

1300758867

[root@shaobo ~]# vi utc.sh

#!/bin/sh

date -d ‘1970-01-01 UTC ‘$1′ seconds’ +”%Y%m%d”

[root@shaobo ~]# chmod +x utc.sh

[root@shaobo ~]# ./utc.sh 1300758867

20110322

2013
08
06
15:29

FreeBSD crontab的用法

使用权限 : 所有使用者

使用方式 :

crontab [ -u user ] file

crontab [ -u user ] { -l | -r | -e }

说明 :

crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。

参数 :

crontab-e: 执行文字编辑器来设定时程表,FREEBSD内定的文字编辑器是 VI,如果你想用别的文字编辑器,可以编辑/root/.cshrc文件setenv  EDITOR  vi 改为setenv  EDITOR  ee

crontab-r: 删除目前的时程表

crontab-l: 列出目前的时程表

crontab file [-u user]-用指定的文件替代目前的crontab。

 

 

时程表的格式如下 :

f1            f2                   f3                f4                  f5                program

分钟    小时    月份中的第几日   月份    星期中的第几天   要执行的程序。

 

当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推

当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推

当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推

当 f1 为 a, b, c,… 时表示第 a, b, c,… 分钟要执行,f2 为 a, b, c,… 时表示第 a, b, c…个小时要执行,其馀类推

使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设定时程表。

Linux中,个人用户的crontab放在/var/spool/cron下

FreeBSD中,个人用户的crontab放在/var/cron/tabs下

 

二者都有/etc/crontab文件,在这个文件中执行crontab定时任务要加入执行用户。

 

重启crontab使生效

freebsd下:/etc/rc.d/cron restart

linux下:/etc/init.d/crond restart

 

2013
07
26
08:46

FreeBSD下Mount总结

一、mount FAT/FAT32分区(C盘为例)

mount -t msdos /dev/ad0s1 /mnt

mount_msdos /dev/ad0s1 /mnt     #for 4.xmount_msdosfs /dev/ad0s1 /mnt   #for 5.x

二、mout Windows的扩展分区(FAT/FAT32)

命令和“一”一样,只是要记住:扩展分区从s5开始,例如mount D盘,可用:

mount -t msdos /dev/ad0s5 /mntmount_msdos /dev/ad0s5 /mnt     #for 4.xmount_msdosfs /dev/ad0s5 /mnt   #for 5.x

三、mount NTFS分区(C盘为例)

mount -t ntfs /dev/ad0s1 /mnt

mount_ntfs /dev/ad0s1 /mnt

[注意]

1.chinese/gbfs 的 ntfs 似乎有问题,不建议玩家级用户使用

2.要让mount上的windows 分区(或CD-ROM)显示中文,需要升级你的ports,再安装gbfs:

#cd /usr/ports/chinese/gbfs#make install clean

然后编译内核,注释掉”options CD9660″,”options MSDOS”。

3.在5.1-current上不用安装gbfs,用:

mount_msdosfs -L zh_CN.GB18030 /dev/ad0sX /mnt

命令就可以支持FAT32分区上的中文文件名,当然,locale可以不用18030,zh_CN.eucCN, zh_CN.GBK都可以!

四、mount Linux Ext2fs/Ext3fs

在内核里面加入“options EXT2FS”,编译内核。mount 的时候用“mount_ext2fs”命令即可,ext3fs的mount也用“mount_ext2fs”。

五、mount 普通数据光盘

mount_cd9660 /dev/acd0 /cdrom

六、mount ISO 文件

在5.x中如下

mdconfig -a -t vnode -f abc.iso -u 1mount_cd9660 /dev/md1 /cdrom

4.8的版本

vnconfig /dev/vn0 /home/xiaoche/a.isomount -t cd9660 /dev/vn0 /mntumount /mntvnconfig -u /dev/vn0

七、mount CD、VCD、DVD

播放CD、VCD、DVD不用先mount上。如果你一定要mount上,可以这样:

#mount_cd9660 -s 0 /dev/acd0 /cdrom

八、mount 软盘

1.Format:

# /usr/sbin/fdformat -f 1440 /dev/fd0

2.Run disklabel:

# /sbin/disklabel -B -r -w /dev/fd0 fd1440

3.Create New FS:

# /sbin/newfs_msdos /dev/fd0

4.Mount & Use

#mount_msdosfs /dev/fd0 /mnt

九、mount usb

确保内核中有如下项:

device scbusdevice dadevice cd

在GENERIC中默认都有,如果没有,请编译内核。大多数U盘用的是FAT文件系统,所以用以下命令挂载:

mount -t msdos /dev/da0 /mnt

十、mount ZIP软盘

#mount_msdosfs /dev/afd0s4 /mnt/zip