分类
Linux

Linux系统参数调优参考

一、系统参数调优

[xxxxx@localhost:/#]vi /etc/sysctl.d/99-sysctl.conf

##added by zhoutao on 2011/10/17 
net.ipv4.tcp_max_syn_backlog = 10240 net.ipv4.tcp_max_tw_buckets = 400000  
net.ipv4.tcp_max_orphans = 60000  
net.ipv4.tcp_synack_retries = 3  
net.ipv4.tcp_fin_timeout = 3  
net.core.rmem_max = 16777216  
net.core.wmem_max = 16777216  
net.core.rmem_default = 1048576  
net.core.wmem_default = 1048576  
net.core.somaxconn = 16384  
net.ipv4.tcp_rmem = 4096 87380 16777216  
net.ipv4.tcp_wmem = 4096 65536 16777216  
net.core.netdev_max_backlog = 3000  
net.ipv4.tcp_congestion_control = cubic  
net.ipv4.ip_local_port_range = 1024 65535  
net.ipv4.tcp_tw_reuse = 1  
net.ipv4.neigh.default.unres_qlen = 6  
net.ipv4.neigh.default.proxy_qlen = 96  
net.ipv4.ip_nonlocal_bind = 1  
net.ipv4.tcp_keepalive_time = 60  
net.ipv4.tcp_keepalive_probes = 3  
net.ipv4.tcp_keepalive_intvl = 10  
fs.file-max = 360000  
net.ipv4.conf.all.log_martians=1  
net.nf_conntrack_max = 25000000  
net.netfilter.nf_conntrack_max = 25000000  
net.netfilter.nf_conntrack_tcp_timeout_established = 180  
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 1  
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60  
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120  
分类
Linux

一条命令设置文件夹755,文件644权限

虽然我们在VPS上搭建网站比网站比较自由,但是空间的安全设置都需要我们自己来做。一旦网站空间或者网页的不安全,可能会通过提权的方式影响其他的网站。当然,具体的安全老左不是太懂。主要是今天上午在遇到一个问题,由于转移出来的网站文件都是777权限,然后搬迁至主机中导致403错误提示,这是需要我们对所有的文件夹设置755,所有的网页文件设置644才可以解决。

很多人会发现,如果手工设置会非常的麻烦,因为每个文件夹下会有文件夹,也有文件。有没有一个命令可以直接设置呢?

SSH命令方法1

find . -exec sh -c "if [[ -d "{}" ]]; then chmod 755 "{}"; else chmod 644 "{}"; fi " \;

SSH命令方法2

find ./ -type d -print|xargs chmod 755;
find ./ -type f -print |xargs chmod 644;

通过以上的任意一个方法,都可以解决设置文件夹755,网页文件644权限。

分类
Linux

Octoshape支援多平台的P2P客户端

当需要收听高清的香港电台,或者,收看斯洛文尼亚的电视台,怎么办?哈哈。用octoshape啊。目前支持的节目如下:

安装非常方便,点击这里下载,然后运行安装,安装完后在开始菜单会添加一个程序组。之后,运行程序就可以了,会在系统栏出现一个图标。假如,现在想要收听香港电台普通话台,打开 http://www.rthk.org.hk 后,点击直播,听HD格式的节目即可。

也可以双击系统栏图标,会打开一个WEB页面,里面是所有的节目,点击一个之后根据提示操作,既可收听收看节目。

Linux系统下面:

最好安装Smplayer,openjava 6或者Sun-java。

sudo apt-get install smplayer openjdk-6-jdk
分类
Linux

Linux下ARP绑定

一.ARP协议简介

当主机上的需要发送一个数据到一个目的IP时,设备驱动程序并不能理解这个IP地址. 系统需要将IP地址转换为网络地址,再传递给设备驱动程序发送出去. ARP(地址解析协议)就是这样的一种网络协议.用于将高层协议地址(IP地址)转换为物理网络地址.linux内核中保存有一个ARP表,里面保存有IP地址和MAC地址的对应关系.使用arp命令可以查看主机的ARP表.

# arp -a  
 m1 (192.168.0.1) at 00:E0:4C:FF:D7:31 [ether] on eth0

二.ARP协议相关工具

1.arptables

a) arptables简介

arptables是用户空间工具,用来管理 linux内核中的ARP规则表.这些规则用来检查ARP帧.arptables类似于iptables,但没有那么复杂.iptables工作于ip层,用于对ip包进行管理.arptables工作与arp协议层,用于对arp数据帧进行管理.arptables可以像iptables那样对arp数据帧进行各种规则设置,可以ACCEPT,DROP等.

b) arptables的安装

CentOS下安装方法:

yum install arptables_jf.i386  

Ubuntu下安装方法:

sudo apt-get install arptables  

c) arptables命令的语法

 arptables [-t table] -[AD] chain rule-specification [options]  
 arptables [-t table] -[RI] chain rulenum rule-specification [options]  
 arptables [-t table] -D chain rulenum [options]  
 arptables [-t table] -[LFZ] [chain] [options]  
 arptables [-t table] -[NX] chain  
 arptables [-t table] -E old-chain-name new-chain-name  
 arptables [-t table] -P chain target [options]

链(chain)
kernel表是用来区分不同设置的不同功能.规则的每个设置叫做一个”链”.每个链是有一个排序了的规则列表,用来于ARP帧相匹配.如果一个规则与一个ARP帧相匹配,一个”操作说明”会提供需要进行哪些操作.操作说明叫做”目标”.然而,如果帧与当前链中的当前规则不匹配,则继续与链中的下一条规则进行检查.用户可以建立一个新的链,作为规则的”目标”来使用.

目标(target)
包含有一个ARP帧与一个帧处理说明的防火墙规则说明叫做一个”目标”.当一个帧与一个规则相匹配时,则kernel按”目标”的定义进行下一步操作.“目标”可以是:ACCEPT,DROP.CONTINUE,RETURN,扩展定义或用户指定规则. ACCEPT表示允许这个帧通过.DROP表示这个帧将被丢弃.CONTINUE表示继续进行下一条规则.这样可以很方便的计算,有多少帧经过了某个规则.RETURN表示不在这个链中继续进行匹配,返回到上一条链的下一条规则.

表(table)
在kernel中只有一个ARP表.这个表是一个过滤器.你可以在arptables命令中使用-t filter参数.使用时,-t参数必须是arptables命令的第一个参数. -t,–table是一个过滤器,在kernel中仅有这一个表,它包含2个(2.4.x内核)或3个(2.6.x内核)内建规则:INPUT(发送帧的源主机),OUTPUT(本地产生的帧),FORWARD(由桥代码转发的帧).2.4.X内核中没有FORWARD规则.

arptables命令参数
命令行参数分为几个部分:命令部分,杂项部分,规则说明,匹配扩展,监视器扩展.
命令(command)

arptables命令参数用于指定在使用-t参数定义的表中的执行动作.如果你没有使用-t参数指定一个表名,则命令将应用于默认的过滤表.使用-Z命令时,命令行每次只能  使用一个命令.  
-A,–append 在指定的链结尾添加一个规则.  
-D,–delete 从指定的链中删除规则.这个命令有2种用法:  
1.指定要删除规则的序号,语法是: start_nr[:end_nr],可以使用负数.  
2.指定要删除规则的详细内容.  
-I,–insert 按序号,在指定的链中插入规则.如当前的序号为N,则可以使用-N到N+1作为插入序号.序号0表示表示在最后一条规则后插入新规则,等同于-A参数.
-R,–replace 替换链中指定的规则.如果当前的序号是N,则指定的序号可以是1到N之间的数字.  
-P,–policy 在链中设置指定目标的策略,可以为:ACCEPT,DROP或RETURN.  
-F,–flush 清空指定的链.如果没有指定链,则所有的链都将被清空.清空链不会改变链的策略.  
-Z,–zero 将指定链的计数器置0.如果没有指定链,则所有计数器都将置0.-Z命令可以与-L命令结合使用.当同时使用-Z,-L命令时,计数器的值会先被打印出来,然后置0.  
-L,–list 输出指定链中的规则.如果没有指定链,所有将输出所有链中的规则.  
-N,–new-chain 建立新的用户链.用户链的数量没有限制,但用户链的名称最多可以有31个字符.  
-X,–delete-chain 删除指定的用户链.用户链中必须为空.如果没有指定用户链,则所有为空的用户链将被删除.  
-E,–rename-chain 重命名指定链.你可以重命名一个用户链,也可以重命名一个标准链名.  
-V,–version 显示arptables程序的版本号.  
-h,–help 输出语法帮助信息.  
-j,–jump 目标  规则的目标.可以是:ACCEPT,DROP,CONTINUE,RETURN,目标扩展或用户定义链名.  
-s,–source-ip [!] IP地址[/掩码]  源IP地址  
-d,–destination-ip [!] IP地址[/掩码] 目的IP地址  
–source-mac [!] MAC地址[/掩码] 源MAC地址  
–destination-mac [!] MAC地址[/掩码]  目的MAC地址.  
-i,–in-interface [!] 设备名 用于接收帧的接口(应用于INPUT,FORWARD链).–in-if是这个选项的别名.  
-o,–out-interface [!] 设备名 用于发送帧的接口(应用于OUTPUT,FORWARD链).–out-if是这个选项的别名.  
-l,–h-length 长度[/掩码] 硬件长度(单位字节).  
–opcode 代码[/掩码] 操作码(2字节).可以使用:1=请求,2=回复,3=反解析请求,4=反解析回复, 5=动态反解析请求,6=动态反解析回复,7=动态反解析错误,8=逆向ARP请求, 9=ARP_NAK  
–h-type 类型[/掩码] 硬件类型(2字节,十六进制).可以使用:1=Ethernet.  
–proto-type 类型[/mask] 协议类型(2字节).可以使用:0×800=IPv4

d) arptables使用实例

# arp -a  
 m1 (192.168.0.1) at 00:E0:4C:FF:D7:31 [ether] on eth0  

显示当前ARP表信息
当前ARP表中保存有一个主机的arp信息,m1主机,ip地址192.168.0.1

# arptables -D INPUT -s 192.168.0.1 -j DROP  

设置arp规则,将所有192.168.0.1的arp包全部丢弃.

# arp -d 192.168.0.1 -i eth0  

使用arp命令,删除arp表中的192.168.0.1的记录.

# arp -a  
 m1 (192.168.0.1) at on eth0  

arp表中已没有m1主机的信息.

# ping 192.168.0.1  
 PING m1 (192.168.0.1) 56(84) bytes of data.  
 From m2 (192.168.0.2) icmp_seq=2 Destination Host Unreachable  
 From m2 (192.168.0.2) icmp_seq=3 Destination Host Unreachable  
 From m2 (192.168.0.2) icmp_seq=4 Destination Host Unreachable  

由于无法获得m1主机MAC信息,所以,无法与m1主机进行通信.

# arptables -D INPUT -s 192.168.0.1 -j DROP  

删除arptables规则.

# arp -a  
m1 (192.168.0.1) at 00:E0:4C:FF:D7:31 [ether] on eth0  

arp表中重新记录了m1的MAC信息.

# ping 192.168.0.1  
PING m1 (192.168.0.1) 56(84) bytes of data.  
64 bytes from m1 (192.168.0.1): icmp_seq=1 ttl=64 time=0.315 ms  

一般情况下,我们可以做如下的规则定义:

 arptables -F  
 arptables -A IN –src-mac ! 网关MAC -j DROP  
 arptables -A IN -s ! 网关IP -j DROP

查询arptables状态

 arptables -L

2.arpwatch

a) arpwatch简介

arpwatch用来监听网络中的ARP数据包并进行记录,同时将监听到的变化通过E-mail来报告给系统管理员. arpwatch使用pcap(3)来监听本地以太接口的arp数据包.

b) arpwatch的安装

CentOS下安装方法:

yum install arpwatch.i386  

Ubuntu下安装方法:

sudo apt-get install arpwatch  

c)arpwath命令的语法

 arpwatch [ -dN ]  
 [ -f datafile ]  
 [ -i interface ]  
 [ -n net[/width ]]  
 [ -r file ]  
 [ -s sendmail_path ]  
 [ -p ]  
 [ -a ]  
 [ -m addr ]  
 [ -u username ]  
 [ -R seconds ]  
 [ -Q ]  
 [ -z ignorenet/ignoremask ]  
 -d 标记用来启用调试模式.  
 -f 标记用来设置使用的数据库名,默认是arp.dat.  
 -i 用来指定网络接口.  
 -n 用于说明本地网络.  
 -r 指定读取一个由tcpdump或pcapture生成信息文件,而不从网络接口中  
 读取.\\-s 用于指定sendmail程序的路径.  
 -p 指定禁用”混合模式”.网络接口不是”混合模式”时,ARP广播也可以通过.  
 -a 默认情况下,arpwatch仅记录默认网络接口上,第一个IP地址子网的arp  
 信息.使用-a参数,则记录网络接口上所有IP地址子网的arp信息.  
 -m 指定一个用于接收变更信息的邮件地址.  

d)arpwatch使用实例

# arpwatch -i eth0 -s root@localhost.localdomain  

监听eth0接口,并将arp的变更信息,发送到本地的root用户邮箱中.

3.手动arp绑定的方式。

如果服务器作为内网网关使用,可以在内网网卡界面

ifconfig eth1 -arp  

关闭ARP响应(假设eth1是内网网卡)

arp -f /etc/arp.list #设置静态ARP表  

以下是ARP(8) 关于arp.list格式的描述,

Cause the file filename to be read and multiple entries to be set in the ARP tables. Entries in the file should be of the form hostname ether_addr [temp] [pub] with argument meanings as given above. Leading whitespace and empty lines are ignored. A `#’ character will mark the rest of the line as a comment.

分类
Linux

Create Your Own Socks5 proxy

Do you know that you can create your own socks5 proxy with just one command:

ssh -f -N -D 5050 "USERNAME"@SSHserver.com  

-f -N option is just to run ssh in background, the important option is -D.

from FreeBSD SSH(1) man:

-D [bind_address:]port

Specifies a local “dynamic” application-level port forwarding. This works by allocating a socket to listen to port on the local side.

For windows users they can do it with putty

C:\>putty.exe -ssh "USERNAME"@SSHserver.com -pw "PASSWORD" -P 22 -D 5050  

what we did is that we connect to a ssh server (could by your remote linux or unix server, or a free shell account you have) and give it option to create a tunnel with port forwarding for port 5050

if you set your browser to use socks5 proxy with the address 127.0.0.1 and port 5050, the traffic will be forwarded to the tunnel and you will browse the internet through the remote ssh server.

to disable port forwarding in your server, edit /etc/ssh/sshd_config and set “AllowTcpForwarding yes” to “no”