邢栋博客

邢栋博客,Action博客,记录工作和生活中的点点滴滴

Linux最大线程数限制及当前线程数查询
/proc/sys/kernel/pid_max #查系统支持的最大线程数,一般会很大,相当于理论值

/proc/sys/kernel/thread-max

max_user_process(ulimit -u) #系统限制某用户下最多可以运行多少进程或线程

/proc/sys/vm/max_map_count
linux下制作不用密码可立即登入的 ssh 用户
1. 客户端建立两把钥匙:
//[vbirdtsai@clientlinux ~]$ ssh-keygen [-t rsa|dsa] <==可选 rsa 或 dsa
[vbirdtsai@clientlinux ~]$ ssh-keygen  <==用预设的方法建立密钥
Generating public/private rsa key pair.
Enter file in which to save the key (/home/vbirdtsai/.ssh/id_rsa): <==按 enter
Created directory '/home/vbirdtsai/.ssh'. <==此目录若不存在则会主动建立
Enter passphrase (empty for no passphrase): <==按 Enter 不给密码
Enter same passphrase again: <==再输入一次 Enter 吧!
Your identification has been saved in /home/vbirdtsai/.ssh/id_rsa. <==私钥档
Your public key has been saved in /home/vbirdtsai/.ssh/id_rsa.pub. <==公钥档
The key fingerprint is:
0f:d3:e7:1a:1c:bd:5c:03:f1:19:f1:22:df:9b:cc:08 vbirdtsai@clientlinux.centos.vbird

[vbirdtsai@clientlinux ~]$ ls -ld ~/.ssh; ls -l ~/.ssh
drwx------. 2 vbirdtsai vbirdtsai 4096 2011-07-25 12:58 /home/vbirdtsai/.ssh
-rw-------. 1 vbirdtsai vbirdtsai 1675 2011-07-25 12:58 id_rsa      <==私钥档
-rw-r--r--. 1 vbirdtsai vbirdtsai  416 2011-07-25 12:58 id_rsa.pub  <==公钥档
2. 将公钥档案数据上传到服务器上:
[vbirdtsai@clientlinux ~]$ scp ~/.ssh/id_rsa.pub dmtsai@192.168.100.254:~
3. 将公钥放置服务器端的正确目录与文件名:
# 1. 建立 ~/.ssh 档案,注意权限需要为 700 喔!
[dmtsai@www ~]$ ls -ld .ssh
ls: .ssh: 没有此一档案或目录
# 由于可能是新建的用户,因此这个目录不存在。不存在才作底下建立目录的行为

[dmtsai@www ~]$ mkdir .ssh; chmod 700 .ssh
[dmtsai@www ~]$ ls -ld .ssh
drwx------. 2 dmtsai dmtsai 4096 Jul 25 13:06 .ssh
# 权限设定中,务必是 700 且属于使用者本人的账号与群组才行!

# 2. 将公钥档案内的数据使用 cat 转存到 authorized_keys 内
[dmtsai@www ~]$ ls -l *pub
-rw-r--r--. 1 dmtsai dmtsai 416 Jul 25 13:05 id_rsa.pub <==确实有存在

[dmtsai@www ~]$ cat id_rsa.pub >> .ssh/authorized_keys
[dmtsai@www ~]$ chmod 644 .ssh/authorized_keys
[dmtsai@www ~]$ ls -l .ssh
-rw-r--r--. 1 dmtsai dmtsai 416 Jul 25 13:07 authorized_keys
# 这个档案的权限设定中,就得要是 644 才可以!不可以搞混了!

Client 必须制作出 Public & Private 这两把 keys,且 Private 需放到 ~/.ssh/ 内;
Server 必须要有 Public Key ,且放置到用户家目录下的 ~/.ssh/authorized_keys,同时目录的权限 (.ssh/) 必须是 700 而档案权限则必须为 644 ,同时档案的拥有者与群组都必须与该账号吻合才行。
私房菜服务器架设篇之防火墙学习笔记
Tcp Wrappers

1.哪些服务支持
由super daemon (xinetd) 所管理的服务
支持libwrap.so模块的服务
yum install xinetd
chkconfig xinetd on //要先进行此命令才能看到下面的
chkconfig --list //列出的结果都可以使用tcp wrappers 来管理

ldd $(which rsyslogd sshd xinetd httpd) 
for name in rsyslogd sshd xinetd httpd;do echo $name;ldd $(which $name) |grep libwrap;done//是否包含libwrap这个库

2. /etc/hosts.{allow|deny}的设置方式 
先以/etc/hosts.allow进行优先比较,该规则符合就予以放行
再以/etc/hosts.deny比对,规则符合就予以抵挡
若不在这两个文件内,亦即规则都不符合,最终则予以放行

例子:开放本机的127.0.0.1可以进行任何本机的服务,让局域网(192.168.1.0/24可以使用rsync,同时10.0.0.100也能够使用rsync,但其他来源则不允许使用rsync\
cat /etc/xinetd.d/rsysc

vim /etc/hosts.allow
All:127.0.0.1
rsync:192.168.1.0/255.255.255.0 10.0.0.100

vim /etc/hosts.deny
rsync:All



Linux的数据包过滤软件 iptables
1. 不同linux内核版本的防火墙软件 uname -a //查看内核版本
version2.0:使用ipfwadm
version2.2:使用ipchains这个防火墙机制
version2.4与2.6:主要使用iptables这个防火墙机制


2.iptables语法
iptables [-t tables] [-L] [-nv]
选项与参数:
-t:后面接table,例如nat或filter,若省略此项目,则使用默认的filter
-L:列出目前的table的规则
-n:不进行IP与HOSTNAME的反查,显示信息的速度会快很多
-v:列出更多的信息,包括通过该规则的数据包总位数,相关的网络接口

范例:列出filter table 3 条链的规则
iptables -L -n
范例:列出nat table 3 条链的规则
iptables -t nat -L -n

target:代表进行的操作,ACCEPT是放行,而REJECT则是拒绝,此外,尚有DROP(丢弃)的项目
prot:代表使用的数据包协议,主要有TCP、UDP及ICMP3中数据包格式
opt:额外的选项说明
source:代表此规则是针对哪个来源IP进行限制
destination:代表此规则是针对哪个目标IP进行限制

iptables-save [-t table] //会列出完整的防火墙规则,只是并没有格式化输出而已
选项与参数:
-t:可以仅针对某些表格来输出,例如仅针对NAT或Filter等
iptables-save

iptables [-t tables] [-FXZ]
选项与参数:
-F:清除所有的已定制的规则
-X:除掉所有用户自定义的chain(应该说的是tables)
-Z:将所有的chain的计数与流量统计都归零

范例:清除本机防火墙(filter)的所有规则
iptables -F
iptables -X
iptables -Z


定义默认策略
当数据包不在我们设置的规则之内时,则该数据包的通过与否,是以Policy的设置为准

iptables [-t nat] -P [INPUT,OUTPUT,FORWARD] [ACCEPT,DROP]
选项与参数:
-P:定义策略(Policy)。注意,这个P为大写
ACCEPT:该数据包可接受
DROP:该数据包直接丢弃,不会让Client端知道为何丢弃

范例:将本机的INPUT设置为DROP,其他设置未ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables-save

数据包的基础比对:ip、网络及接口设备
iptables [-AI 链名] [-io 网络接口] [-p 协议] [-s 来源IP/网络] [-d 目标IP/网络] -j [ACCEPT|DROP|REJECT|LOG]
选项与参数:
-AI 链名:针对某条链进行规则的插入或累加
 -A:新增加一条规则,该规则增加在原规则的最后面。例如原来已经有四条规则,使用-A就可以加上第五条规则
 -I:插入一条规则。如果没有指定此规则的顺序,默认是插入变成第一条规则。例如原本有四条规则,使用-I则该规则变成第一条,原本四条变成2-5条
 链:有input/output/forward等,此链名称又与-io有关

-io:网络接口,设置数据包进出的接口规范
-i:数据包所进入的那个网络接口,例如eth0、lo等接口。需要INPUT链配合
-o:数据包所传出的那个网络接口,需要与output配合

-p:协定:设置此规则适用于哪种数据包格式
   主要的数据包格式有:tcp udp icmp 及 all

-s:来源 IP/网络,设置此规则之数据包的来源地址,可指定当单纯的ip或网络,例如:
IP:192.168.0.100
网络:192.168.0.0/24 192.168.0.0/255.255.255.0
若规范为不许时,则加上!即可,例如 -s ! 192.168.100.0/24 表示不接受192.168.100.0/24

-d:目标 IP/网络 同 -s ,只不过这里指的是目标的IP或网络

-j:后面接操作,主要的操作有接受ACCEPT 丢弃DROP、拒绝REJECT 及记录LOG

范例:设置lo成为受细嫩的设备,亦即进出lo的数据包都予以接受
iptables -A INPUT -i lo -j ACCEPT
范例:只要是来自网络的192.168.100.0/24的数据包就通通接受
iptables -A INPUT -i eth1 -s 192.168.100.0/24 -j ACCEPT
范例:只要是来自192.168.100.10就接受,但来自192.168.100.230 这个恶意来源的就丢弃
iptables -A INPUT -i eth1 -s 192.168.100.10 -j ACCEPT
iptables -A INPUT -i eth1 -s 192.168.100.230 -j DROP
iptables-save //查看

如果已经放行了192.168.100.0/24,那这个 192.168.100.230 -j DROP 就不会被用到了,如果想要记录
iptables -A INPUT -s 192.168.2.200 -j LOG
iptables -L -n


TCP、UDP的规则比对:针对端口设置

iptables [-AI 链] [-io 网络接口] [-p tcp,udp] [-s 来源IP/网络] [--sport 端口范围] [-d 目标IP/网络] [--dport 端口范围] -j [ACCEPT|DROP|REJECT]
选项与参数:
--sport 端口范围:限制来源的端口号码,端口号码可以是连续的,例如1024:65535
--dport 端口范围:限制目标的端口号码
想要使用--dport --sport时,需要加上-p tcp或-p udp的参数才能成功

范例:想要连接进入本机port 21 的数据包都阻挡掉
iptables -A INPUT -i eth0 -p tcp --dport 21 -j DROP
范例:想连接到本台主机的网上邻居(udp port 137,138 tcp port 139 445)就放行
iptables -A INPUT -i eth0 -p udp --dport 137:138 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 139 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 445 -j ACCEPT
范例:只要来自192.168.1.0/24的1024:65535端口的数据包,且想要连接到本机的ssh port就予以阻挡,可以这样做
iptables -A INPUT -i eth0 -p tcp -s 192.168.1.0/24 --sport 1024:65535 --dport ssh -j DROP
范例:将来自任何地方来源 port 1:1023的主动连接到本机端的1:1023连接丢弃 ,主动连接的SYN标志
iptables -A INPUT -i eth0 -p tcp --sport 1:1023 --dport 1:1023 --syn -j DROP


iptables 外挂模块:mac与state
iptables -A INPUT [-m state] [--state 状态]
选项与参数:
-m:一些iptables的外挂模块,主要常见的有
state:状态模块
mac:网卡硬件地址
--state:一些数据包的状态,主要有
INVALID:无效的数据包,例如数据破损的数据包状态
ESTABLISHED:已经连接成功的连接状态
NEW:想要新建立连接的数据包状态
RELATED:这个最常用、表示这个数据包是与主机发送出去的数据有关

范例:只要已建立连接或与已发出请求相关的数据包就予以通过,不合法数据就丢弃
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -m state --state INVALID -j DROP
范例:针对局域网内的aa:bb:cc:dd:ee:ff 主机开放其连接
iptables -A INPUT -m mac --mac-source aa:bb:cc:dd:ee:ff -j ACCEPT   //--mac-source:就是来源主机的mac



ICMP数据包规则的比对:针对是否响应ping来设置
iptables -A INPUT [-p icmp] [--icmp-type 类型] -j ACCEPT
选项与参数:
--icmp-type:后面必须要接ICMP的数据包类型,也可以使用代号,例如 8 代表 echo request 的意思
范例:让0,3,4,11,12,14,16,18的icmp type可以进入主机
vim somefile
#!/bin/bash
icmp_type = "0,3,4,11,12,14,16,18"
for typeicmp in $icmp_type
do
iptables -A INPUT -i eth0 -p icmp --icmp-type $icmp_type -j ACCEPT
done
------
sh somefile



超简单的客户端防火墙设计与防火墙规则存储
规则: 规则清零 默认策略 信任本机 回应数据包 信任用户
vim bin/firewall.sh
#!/bin/bash
PATH=/sbin:/bin:/usr/sbin/:/usr/bin;export PATH
#1.清除规则
iptables -F
iptables -X
iptables -Z
#2.设置策略
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
#3-5 指定各项规则
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
#iptables -A INPUT eth0 -s 192.168.0.1/24 -j ACCEPT0
#6 写入防火墙规则配置文件
/etc/init.d/iptables save
----------------
sh bin/firewall.sh //执行脚本



IPv4的内核管理功能:/proc/sys/net/ipv4/*

1. /proc/sys/net/ipv4/tcp_syncookies
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
当启动SYN Cookie 时,主机在发送SYN/ACK确认数据包前,会要求Client端在短时间内回复一个序号,包括IP PORT等。若正确,则为可信任的。
不适合用在负载很高的服务器内。

2./proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
内核取消ping回应的设置值有两个,分别是/proc/sys/net/ipv4内的icmp_echo_ignore_broadcasts(仅有ping broadcast地址时才取消ping的回应)及icmp_echo_ignore_all(全部的ping都不回应).建议设置icmp_echo_ignore_broadcasts
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

3./proc/sys/net/ipv4/conf/网络接口/*
例如 /proc/sys/net/ipv4/conf/eth0/内
rp_filter:称为你想路径过滤,可以通过分析网络接口的路由信息,配合数据包的来源地址,分析数据包是否为合理.不合理则予以丢弃,建议启动
log_martisans:这个设置数据可以用来启动记录不合法的ip来源的功能


设置单机防火墙的一个实例
外部网络使用eth0(如果是拨号,有可能使用ppp0)
内部网络使用eth1,且内部使用192.168.100.0/24这个class
主机默认开放的服务有www ssh https等
实际设置
iptables.rule:设置最基本的规则,包括清除防火墙规则、加载模块、设置服务可接受等.
iptables.deny:设置独挡某些而已主机的进入
iptables.allow:设置允许某些自定义的后门来源主机进入

mkdir -p /usr/local/action/iptables
cd /usr/local/action/iptables
vim iptables.rule
#!/bin/bash
# 请先输入您的相关参数,不要输入错误了!
  EXTIF="eth0"             # 这个是可以连上 Public IP 的网络接口
  INIF="eth1"              # 内部 LAN 的连接接口;若无则写成 INIF=""
  INNET="192.168.100.0/24" # 若无内部网域接口,请填写成 INNET=""
  export EXTIF INIF INNET

# 第一部份,针对本机的防火墙设定!##########################################
# 1. 先设定好核心的网络功能:
  echo "1" > /proc/sys/net/ipv4/tcp_syncookies
  echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
  for i in /proc/sys/net/ipv4/conf/*/{rp_filter,log_martians}; do
        echo "1" > $i
  done
  for i in /proc/sys/net/ipv4/conf/*/{accept_source_route,accept_redirects,\
send_redirects}; do
        echo "0" > $i
  done

# 2. 清除规则、设定默认政策及开放 lo 与相关的设定值
  PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin; export PATH
  iptables -F
  iptables -X
  iptables -Z
  iptables -P INPUT   DROP
  iptables -P OUTPUT  ACCEPT
  iptables -P FORWARD ACCEPT
  iptables -A INPUT -i lo -j ACCEPT
  iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# 3. 启动额外的防火墙 script 模块
  if [ -f /usr/local/virus/iptables/iptables.deny ]; then
        sh /usr/local/virus/iptables/iptables.deny
  fi
  if [ -f /usr/local/virus/iptables/iptables.allow ]; then
        sh /usr/local/virus/iptables/iptables.allow
  fi
  if [ -f /usr/local/virus/httpd-err/iptables.http ]; then
        sh /usr/local/virus/httpd-err/iptables.http
  fi

# 4. 允许某些类型的 ICMP 封包进入
  AICMP="0 3 3/4 4 11 12 14 16 18"
  for tyicmp in $AICMP
  do
    iptables -A INPUT -i $EXTIF -p icmp --icmp-type $tyicmp -j ACCEPT
  done

# 5. 允许某些服务的进入,请依照你自己的环境开启
# iptables -A INPUT -p TCP -i $EXTIF --dport  21 --sport 1024:65534 -j ACCEPT # FTP
# iptables -A INPUT -p TCP -i $EXTIF --dport  22 --sport 1024:65534 -j ACCEPT # SSH
# iptables -A INPUT -p TCP -i $EXTIF --dport  25 --sport 1024:65534 -j ACCEPT # SMTP
# iptables -A INPUT -p UDP -i $EXTIF --dport  53 --sport 1024:65534 -j ACCEPT # DNS
# iptables -A INPUT -p TCP -i $EXTIF --dport  53 --sport 1024:65534 -j ACCEPT # DNS
# iptables -A INPUT -p TCP -i $EXTIF --dport  80 --sport 1024:65534 -j ACCEPT # WWW
# iptables -A INPUT -p TCP -i $EXTIF --dport 110 --sport 1024:65534 -j ACCEPT # POP3
# iptables -A INPUT -p TCP -i $EXTIF --dport 443 --sport 1024:65534 -j ACCEPT # HTTPS


# 第二部份,针对后端主机的防火墙设定!###############################
# 1. 先加载一些有用的模块
  modules="ip_tables iptable_nat ip_nat_ftp ip_nat_irc ip_conntrack 
ip_conntrack_ftp ip_conntrack_irc"
  for mod in $modules
  do
      testmod=`lsmod | grep "^${mod} " | awk '{print $1}'`
      if [ "$testmod" == "" ]; then
            modprobe $mod
      fi
  done

# 2. 清除 NAT table 的规则吧!
  iptables -F -t nat
  iptables -X -t nat
  iptables -Z -t nat
  iptables -t nat -P PREROUTING  ACCEPT
  iptables -t nat -P POSTROUTING ACCEPT
  iptables -t nat -P OUTPUT      ACCEPT

# 3. 若有内部接口的存在 (双网卡) 开放成为路由器,且为 IP 分享器!
  if [ "$INIF" != "" ]; then
    iptables -A INPUT -i $INIF -j ACCEPT
    echo "1" > /proc/sys/net/ipv4/ip_forward
    if [ "$INNET" != "" ]; then
        for innet in $INNET
        do
            iptables -t nat -A POSTROUTING -s $innet -o $EXTIF -j MASQUERADE
        done
    fi
  fi
  # 如果你的 MSN 一直无法联机,或者是某些网站 OK 某些网站不 OK,
  # 可能是 MTU 的问题,那你可以将底下这一行给他取消批注来启动 MTU 限制范围
  # iptables -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss \
  #          --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu

# 4. NAT 服务器后端的 LAN 内对外之服务器设定
# iptables -t nat -A PREROUTING -p tcp -i $EXTIF --dport 80 \
#          -j DNAT --to-destination 192.168.1.210:80 # WWW

# 5. 特殊的功能,包括 Windows 远程桌面所产生的规则,假设桌面主机为 1.2.3.4
# iptables -t nat -A PREROUTING -p tcp -s 1.2.3.4  --dport 6000 \
#          -j DNAT --to-destination 192.168.100.10
# iptables -t nat -A PREROUTING -p tcp -s 1.2.3.4  --sport 3389 \
#          -j DNAT --to-destination 192.168.100.20

# 6. 最终将这些功能储存下来吧!
  /etc/init.d/iptables save
------------------------ 脚本end
 
 假如我要让一个 140.116.44.0/24 这个网域的所有主机来源可以进入我的主机的话,那么这个档案的内容可以写成这样:
  [root@www iptables]# vim iptables.allow
#!/bin/bash
# 底下则填写你允许进入本机的其他网域或主机啊!
  iptables -A INPUT -i $EXTIF -s 140.116.44.0/24 -j ACCEPT

# 底下则是关于抵挡的档案设定法!
[root@www iptables]# vim iptables.deny
#!/bin/bash
# 底下填写的是『你要抵挡的那个咚咚!』
  iptables -A INPUT -i $EXTIF -s 140.116.44.254 -j DROP

[root@www iptables]# chmod 700 iptables.*



范例:假设对外的 IP 固定为 192.168.1.100 ,若不想使用伪装,该如何处理?
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.1.100

范例:假设你的 NAT 服务器对外 IP 有好几个,那你想要轮流使用不同的 IP 时,又该如何设定?举例来说,你的 IP 范围为 192.168.1.210~192.168.1.220
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.1.210-192.168.1.220

范例:假设内网有部主机 IP 为 192.168.100.10 ,该主机是可对 Internet 开放的 WWW 服务器。你该如何透过 NAT 机制,将 WWW 封包传到该主机上?
假设 public IP 所在的接口为 eth0 ,那么你的规则就是:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.100.10:80 

-j REDIRECT --to-ports <port number>
# 这个也挺常见的,基本上,就是进行本机上面 port 的转换就是了!
# 不过,特别留意的是,这个动作仅能够在 nat table 的 PREROUTING 以及
# OUTPUT 链上面实行而已喔!

范例:将要求与 80 联机的封包转递到 8080 这个 port
[root@www ~]# iptables -t nat -A PREROUTING -p tcp  --dport 80  -j REDIRECT --to-ports 8080
# 这玩意最容易在你使用了非正规的 port 来进行某些 well known 的协议,
# 例如使用 8080 这个 port 来启动 WWW ,但是别人都以 port 80 来联机,
# 所以,你就可以使用上面的方式来将对方对你主机的联机传递到 8080 啰!



npam命令详解

npam命令详解

npam [扫描类型] [扫描参数] [hosts地址与范围]

选项与参数:
[扫描类型]
-sT:扫描TCP数据包已建立的连接 conneted
-sS:扫描TCP数据包带有SYN标卷的数据
-sP:以ping的方式进行扫描
-sU:以UDP的数据格式进行扫描
-sO:以IP的协议进行主机的扫描
[扫描参数]
-pT:使用TCP里头的ping方式进行扫描,可以获知目前有几台计算机存在
-pI:使用实际的ping(带有IMCP数据包的)来进行扫描
-p:这个是port range,例如 1024-,80-1023,30000-60000等的使用方式[hosts地址与范围]
192.168.1.100
192.168.1.0/24
192.168.*.*
192.168.1.0-50,60-100,103,200

范例一:使用默认参数扫描本机所启动的port(只会扫描TCP)
yum install nmap
nmap localhost

范例二:同时扫描本机的TCP/UDP端口
nmap -sTU localhost

范例三:通过IMCP数据包的检测,分析局域网内有几台主机是启动的
nmap -sP 192.168.1.0/24
如果想要将各个主机的启动port做检测
nmap 192.168.1.0/24


私房菜服务器架设篇之连接internet读书笔记

1.观察内核所捕捉到的网卡信息
dmesg |grep -in eth

查看相关的设备芯片数据
lspci |grep -i ethernet

2.观察网卡的模块

lsmod |grep 1000

modinfo e1000

3.编译网卡驱动程序

a.下载驱动程序
b.解压与编译
tar -zxvf e1000.tar.gz -C /usr/local/src
cd /usr/local/src/e1000/src
make install
c.模块的测试与处理
1.先删除已经加载在内存中的旧模块
rmmod e1000 
2.加载新模块
modprobe e1000
modinfo e1000
d.设置开机启动网卡模块
vim /etc/modprobe.d/ether.conf
alias eth0 e1000
alias eth1 e1000
sync;reboot

e.尝试配置ip
ifconfig eth0 192.168.1.1000

4.Linux网络相关配置文件
IP,Netmask,DHCP,Gateway等
/etc/sysconfig/network-scripts/ifcfg-eth0
主机名
/etc/sysconfig/network
DNS IP
/etc/resolv.conf
私有IP对应的主机名
/etc/hosts
其他
/etc/services  //这个文件记录构建在TCP/IP上面的各种协议,包括HTTP、FTP、SSH、Telnet等服务所定义的port number
/etc/protocols //这个文件是定义在IP数据包协议的相关数据,包括ICMP/TCP/UDP的数据包协议的定义等。
启动命令
/etc/init.d/network restart
ifup eth0(ifdown eth0) //关闭或者启动某个网络接口


Nginx/LVS/HAProxy负载均衡软件的优缺点详解(转)
(总结)Nginx/LVS/HAProxy负载均衡软件的优缺点详解
一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术。具体的应用需求还得具体分析,如果是中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了;如果机器不少,可以用DNS轮询,LVS所耗费的机器还是比较多的;大型网站或重要的服务,且服务器比较多时,可以考虑用LVS。

一种是通过硬件来进行进行,常见的硬件有比较昂贵的F5和Array等商用的负载均衡器,它的优点就是有专业的维护团队来对这些服务进行维护、缺点就是花销太大,所以对于规模较小的网络服务来说暂时还没有需要使用;另外一种就是类似于Nginx/LVS/HAProxy的基于Linux的开源免费的负载均衡软件,这些都是通过软件级别来实现,所以费用非常低廉。

目前关于网站架构一般比较合理流行的架构方案:Web前端采用Nginx/HAProxy+Keepalived作负载均衡器;后端采用MySQL数据库一主多从和读写分离,采用LVS+Keepalived的架构。当然要根据项目具体需求制定方案。
下面说说各自的特点和适用场合。

一、Nginx
Nginx的优点是:

1、工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构,它的正则规则比HAProxy更为强大和灵活,这也是它目前广泛流行的主要原因之一,Nginx单凭这点可利用的场合就远多于LVS了。
2、Nginx对网络稳定性的依赖非常小,理论上能ping通就就能进行负载功能,这个也是它的优势之一;相反LVS对网络稳定性依赖比较大,这点本人深有体会;
3、Nginx安装和配置比较简单,测试起来比较方便,它基本能把错误用日志打印出来。LVS的配置、测试就要花比较长的时间了,LVS对网络依赖比较大。
3、可以承担高负载压力且稳定,在硬件不差的情况下一般能支撑几万次的并发量,负载度比LVS相对小些。
4、Nginx可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点,不过其中缺点就是不支持url来检测。比如用户正在上传一个文件,而处理该上传的节点刚好在上传过程中出现故障,Nginx会把上传切到另一台服务器重新处理,而LVS就直接断掉了,如果是上传一个很大的文件或者很重要的文件的话,用户可能会因此而不满。
5、Nginx不仅仅是一款优秀的负载均衡器/反向代理软件,它同时也是功能强大的Web应用服务器。LNMP也是近几年非常流行的web架构,在高流量的环境中稳定性也很好。
6、Nginx现在作为Web反向加速缓存越来越成熟了,速度比传统的Squid服务器更快,可以考虑用其作为反向代理加速器。
7、Nginx可作为中层反向代理使用,这一层面Nginx基本上无对手,唯一可以对比Nginx的就只有lighttpd了,不过lighttpd目前还没有做到Nginx完全的功能,配置也不那么清晰易读,社区资料也远远没Nginx活跃。
8、Nginx也可作为静态网页和图片服务器,这方面的性能也无对手。还有Nginx社区非常活跃,第三方模块也很多。

Nginx的缺点是:
1、Nginx仅能支持http、https和Email协议,这样就在适用范围上面小些,这个是它的缺点。
2、对后端服务器的健康检查,只支持通过端口来检测,不支持通过url来检测。不支持Session的直接保持,但能通过ip_hash来解决。



二、LVS
LVS:使用Linux内核集群实现一个高性能、高可用的负载均衡服务器,它具有很好的可伸缩性(Scalability)、可靠性(Reliability)和可管理性(Manageability)。

LVS的优点是:
1、抗负载能力强、是工作在网络4层之上仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的,对内存和cpu资源消耗比较低。
2、配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率。
3、工作稳定,因为其本身抗负载能力很强,自身有完整的双机热备方案,如LVS+Keepalived,不过我们在项目实施中用得最多的还是LVS/DR+Keepalived。
4、无流量,LVS只分发请求,而流量并不从它本身出去,这点保证了均衡器IO的性能不会收到大流量的影响。
5、应用范围比较广,因为LVS工作在4层,所以它几乎可以对所有应用做负载均衡,包括http、数据库、在线聊天室等等。

LVS的缺点是:
1、软件本身不支持正则表达式处理,不能做动静分离;而现在许多网站在这方面都有较强的需求,这个是Nginx/HAProxy+Keepalived的优势所在。
2、如果是网站应用比较庞大的话,LVS/DR+Keepalived实施起来就比较复杂了,特别后面有Windows Server的机器的话,如果实施及配置还有维护过程就比较复杂了,相对而言,Nginx/HAProxy+Keepalived就简单多了。

三、HAProxy
HAProxy的特点是:
1、HAProxy也是支持虚拟主机的。
2、HAProxy的优点能够补充Nginx的一些缺点,比如支持Session的保持,Cookie的引导;同时支持通过获取指定的url来检测后端服务器的状态。
3、HAProxy跟LVS类似,本身就只是一款负载均衡软件;单纯从效率上来讲HAProxy会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的。
4、HAProxy支持TCP协议的负载均衡转发,可以对MySQL读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,大家可以用LVS+Keepalived对MySQL主从做负载均衡。
5、HAProxy负载均衡策略非常多,HAProxy的负载均衡算法现在具体有如下8种:
① roundrobin,表示简单的轮询,这个不多说,这个是负载均衡基本都具备的;
② static-rr,表示根据权重,建议关注;
③ leastconn,表示最少连接者先处理,建议关注;
④ source,表示根据请求源IP,这个跟Nginx的IP_hash机制类似,我们用其作为解决session问题的一种方法,建议关注;
⑤ ri,表示根据请求的URI;
⑥ rl_param,表示根据请求的URl参数’balance url_param’ requires an URL parameter name;
⑦ hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求;
⑧ rdp-cookie(name),表示根据据cookie(name)来锁定并哈希每一次TCP请求。

四、总结
Nginx和LVS对比的总结:
1、Nginx工作在网络的7层,所以它可以针对http应用本身来做分流策略,比如针对域名、目录结构等,相比之下LVS并不具备这样的功能,所以Nginx单凭这点可利用的场合就远多于LVS了;但Nginx有用的这些功能使其可调整度要高于LVS,所以经常要去触碰触碰,触碰多了,人为出问题的几率也就会大。
2、Nginx对网络稳定性的依赖较小,理论上只要ping得通,网页访问正常,Nginx就能连得通,这是Nginx的一大优势!Nginx同时还能区分内外网,如果是同时拥有内外网的节点,就相当于单机拥有了备份线路;LVS就比较依赖于网络环境,目前来看服务器在同一网段内并且LVS使用direct方式分流,效果较能得到保证。另外注意,LVS需要向托管商至少申请多一个ip来做Visual IP,貌似是不能用本身的IP来做VIP的。要做好LVS管理员,确实得跟进学习很多有关网络通信方面的知识,就不再是一个HTTP那么简单了。
3、Nginx安装和配置比较简单,测试起来也很方便,因为它基本能把错误用日志打印出来。LVS的安装和配置、测试就要花比较长的时间了;LVS对网络依赖比较大,很多时候不能配置成功都是因为网络问题而不是配置问题,出了问题要解决也相应的会麻烦得多。
4、Nginx也同样能承受很高负载且稳定,但负载度和稳定度差LVS还有几个等级:Nginx处理所有流量所以受限于机器IO和配置;本身的bug也还是难以避免的。
5、Nginx可以检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点。目前LVS中 ldirectd也能支持针对服务器内部的情况来监控,但LVS的原理使其不能重发请求。比如用户正在上传一个文件,而处理该上传的节点刚好在上传过程中出现故障,Nginx会把上传切到另一台服务器重新处理,而LVS就直接断掉了,如果是上传一个很大的文件或者很重要的文件的话,用户可能会因此而恼火。
6、Nginx对请求的异步处理可以帮助节点服务器减轻负载,假如使用apache直接对外服务,那么出现很多的窄带链接时apache服务器将会占用大 量内存而不能释放,使用多一个Nginx做apache代理的话,这些窄带链接会被Nginx挡住,apache上就不会堆积过多的请求,这样就减少了相当多的资源占用。这点使用squid也有相同的作用,即使squid本身配置为不缓存,对apache还是有很大帮助的。
7、Nginx能支持http、https和email(email的功能比较少用),LVS所支持的应用在这点上会比Nginx更多。在使用上,一般最前端所采取的策略应是LVS,也就是DNS的指向应为LVS均衡器,LVS的优点令它非常适合做这个任务。重要的ip地址,最好交由LVS托管,比如数据库的 ip、webservice服务器的ip等等,这些ip地址随着时间推移,使用面会越来越大,如果更换ip则故障会接踵而至。所以将这些重要ip交给 LVS托管是最为稳妥的,这样做的唯一缺点是需要的VIP数量会比较多。Nginx可作为LVS节点机器使用,一是可以利用Nginx的功能,二是可以利用Nginx的性能。当然这一层面也可以直接使用squid,squid的功能方面就比Nginx弱不少了,性能上也有所逊色于Nginx。Nginx也可作为中层代理使用,这一层面Nginx基本上无对手,唯一可以撼动Nginx的就只有lighttpd了,不过lighttpd目前还没有能做到 Nginx完全的功能,配置也不那么清晰易读。另外,中层代理的IP也是重要的,所以中层代理也拥有一个VIP和LVS是最完美的方案了。具体的应用还得具体分析,如果是比较小的网站(日PV小于1000万),用Nginx就完全可以了,如果机器也不少,可以用DNS轮询,LVS所耗费的机器还是比较多的;大型网站或者重要的服务,机器不发愁的时候,要多多考虑利用LVS。

现在对网络负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术:

第一阶段:利用Nginx或HAProxy进行单点的负载均衡,这一阶段服务器规模刚脱离开单服务器、单数据库的模式,需要一定的负载均衡,但是仍然规模较小没有专业的维护团队来进行维护,也没有需要进行大规模的网站部署。这样利用Nginx或HAproxy就是第一选择,此时这些东西上手快, 配置容易,在七层之上利用HTTP协议就可以。这时是第一选择。

第二阶段:随着网络服务进一步扩大,这时单点的Nginx已经不能满足,这时使用LVS或者商用Array就是首要选择,Nginx此时就作为LVS或者Array的节点来使用,具体LVS或Array的是选择是根据公司规模和预算来选择,Array的应用交付功能非常强大,本人在某项目中使用过,性价比也远高于F5,商用首选!但是一般来说这阶段相关人才跟不上业务的提升,所以购买商业负载均衡已经成为了必经之路。

第三阶段:这时网络服务已经成为主流产品,此时随着公司知名度也进一步扩展,相关人才的能力以及数量也随之提升,这时无论从开发适合自身产品的定制,以及降低成本来讲开源的LVS,已经成为首选,这时LVS会成为主流。
最终形成比较理想的基本架构为:Array/LVS — Nginx/Haproxy — Squid/Varnish — AppServer。

原文地址 http://www.ha97.com/5646.html





Linux安装rz/sz命令及简单使用
Linux安装rz/sz命令及简单使用

wget https://ohse.de/uwe/releases/lrzsz-0.12.20.tar.gz
tar -zxvf lrzsz-0.12.20.tar.gz 
cd lrzsz-0.12.20
./configure
make && make install 

安装成功后这个时候 已经可以使用 lrz lsz 命令完成发送文件到本地或者本地文件上传到服务器
默认是把这两个命令安装到 /usr/local/bin/ 目录下的

cd /usr/bin
ln -s /usr/local/bin/lrz rz
ln -s /usr/local/bin/lsz sz

这个时候就可以使用 rz sz 命令了

sz命令发送文件到本地:
#sz filename
    rz命令本地上传文件到服务器:
#rz
    执行该命令后,在弹出框中选择要上传的文件即可。

说明:如果使用的是第三方的连接工具(SecureCRT),可以在第三方软件的设置里,设置上传和下载的目录。


优惠券
广告位-淘宝
最新微语