Tag: Summary

  • iptables常用排错工具

    来自于

    Linux iptables Pocket Reference

    ethereal      Network protocol analyzer.       http://www.ethereal.com/
    Nessus      Remote security scanner.         http://www.nessus.org/intro.html
    nmap          Network mapper.                      http://www.insecure.org/nmap/
    ntop            Network traffic probe.                http://ntop.ethereal.com/ntop.html
    ping            Send ICMP ECHO_REQUEST to specific hosts.
    tcpdump    Packet capture and dumping.    http://www-nrg.ee.lbl.gov/
    traceroute  Print the route packets take to a specific host.

  • iptables之透明代理Transparent Proxying

    来自于

    Linux iptables Pocket Reference

    透明代理是一种截获指定向外连接并转向一台可以达到本来连接目的连接的一种方式,这种技术可以使你只设置代理服务,而不用给内网的每一台电脑设置访问方式。

    因为所有访问外部的流量都经过网关,所以所有的向外连接通过端口都是透明的。

    如果你在防火墙监听了一个HTTP代理,端口8888,例如Squid,你可以添加这样一条转出规则:

    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8888

     

     

    iptables做网关,针对端口级别的做转发,网关ip为{gateway}

    -A PREROUTING -d {gateway}/32 -p tcp -m tcp --dport 8989 -j DNAT --to-destination 192.168.1.2:9200 
    -A POSTROUTING -s 192.168.1.2/32 -o eth1 -p tcp -j SNAT --to-source {gateway}:8989 

    多个端口一对一映射

    {gateway}8989 <-> {lan_ip}:9200
    {gateway}8990 <-> {lan_ip}:9300
    
    -A PREROUTING  -d {gateway}/32 -p tcp -m tcp --dport 8989 -j DNAT --to-destination {lan_ip}:9200 
    -A PREROUTING  -d {gateway}/32 -p tcp -m tcp --dport 8990 -j DNAT --to-destination {lan_ip}:9300 
    -A POSTROUTING -s {lan_ip}/32 -o eth1 -p tcp -m tcp --dport 9200 -j SNAT --to-source {gateway}:8989 
    -A POSTROUTING -s {lan_ip}/32 -o eth1 -p tcp -m tcp --dport 9300 -j SNAT --to-source {gateway}:8990
  • CentOS6.2的iptables基础

    来自于

    Linux iptables Pocket Reference

    CentOS的iptables规则保存在/etc/sysconfig/iptables

    查看iptables的启动级别

    [root@localhost ~]# chkconfig --list iptables
    iptables        0:off   1:off   2:on    3:on    4:on    5:on    6:off

    调整启动级别可以用如下命令

    chkconfig --levels 345 iptables on

    启动iptables

    service iptables start

    停用iptables

    service iptables stop

    一些伪文件:(存在于/proc)

    /etc/sysctl.conf在启动里创建了/proc/sys,如配置pptp-vpn的时候,在sysctl.conf里加入net.ipv4.ip_forward=1开机后,查看/proc/sys/net/ipv4/ip_forward,就会发现变为1.

    /proc/sys/net/ipv4/ip_conntrack_max,当出现“ip_conntrack: table full, dropping packet”错误时,你需要在/etc/sysctl.conf加值。

    用uname -r可查看内核版本信息

    uname -a查看全部信息,具体见(manpage of uname).

    几个状态的说明

    ESTABLISHED 已经监测到双向发送的包

    INVALID 什么都没有

    NEW 有新的连接或监测到一部分

    RELATED 有新的连接,且新连接是基于已有连接

    连接监测主要是连接的前三个比特。

    conntrack 参数,(–ststatus选项)有

    ASSURED TCP连接,说明TCP已经连接,UDP雷同

    EXPECTED 说明连接是已知的

    SEEN_REPLY 说明已经监测到双向发送的包,参见ESTABLISHED

    内核统计

    内核会自动统计通过iptables的每一条规则的包和字节。

    例如,eth0代表内网,eth1代表外网

    iptables -A FORWARD -i eth1
    iptables -A FORWARD -o eth1
    iptables -A INPUT -i eth1
    iptables -A OUTPUT -o eth1

    iptables记录了与外网的交换的包和流量数,通过iptables -L -v查看 INPUT和OUTPUT的包和流量如下

    Chain INPUT (policy ACCEPT 27 packets, 1728 bytes)
    pkts bytes target prot opt in out source destination
    3 192 all -- eth1 any anywhere anywhere
    Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
    pkts bytes target prot opt in out source destination
    0 0 all -- eth1 any anywhere anywhere
    0 0 all -- any eth1 anywhere anywhere
    Chain OUTPUT (policy ACCEPT 21 packets, 2744 bytes)
    pkts bytes target prot opt in out source destination
    3 192 all -- any eth1 anywhere anywhere

    如查想指定哪些包通过NAT,把包-j(jump)到特殊目标ACCEPT.要早于其他NAT规则

    iptables -t nat -i eth1 ... -j ACCEPT

     

  • Centos6.2 x64 安装lamp环境

    参见:

    http://www.howtoforge.com/installing-apache2-with-php5-and-mysql-support-on-centos-6.2-lamp

    1、安装mysql:

    yum install mysql mysql-server

    设置开机启动,启动mysql

    chkconfig --levels 235 mysqld on
    /etc/init.d/mysqld start

    此时的mysql是没有root密码的,运行下面向导:

    mysql_secure_installation

    2、安装apache2

    yum install httpd

    设置apache开机启动,并启动apache,这里打开http://你的ip/可以看到apache的欢迎页面,记得把iptables的80端口打开

    chkconfig --levels 235 httpd on
    /etc/init.d/httpd start

    Apache在CentOS下默认程序路径为 /var/www/html ,默认配置文件 /etc/httpd/conf/httpd.conf. 扩展配置文件在 /etc/httpd/conf.d/

    3、安装php5和Apache PHP5模块

    yum install php

    安装好后必须重启apache服务

    /etc/init.d/httpd restart

    4、测试php是否可用

    vi /var/www/html/info.php

    写入如下内容,保存

    <?php
    phpinfo();
    ?>

    打开http://你的ip/info.php看到phpinfo页面

    5、让php5支持mysql

    在库里搜索php,找到支持mysql模块和组件

    yum search php

    按需选择安装

    yum install php-mysql php-gd php-imap php-ldap php-mbstring php-odbc php-pear php-xml php-xmlrpc

    重启apache2

    /etc/init.d/httpd restart

    打开http://你的ip/info.php可以看到mysql的支持情况

    6、安装phpmyadmin

    在官方库里没有phpmyadmin,现在导入RPMforge GPG key:

    rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
    yum install http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

    安装:

    yum install phpmyadmin

    改变apache中的phpmyadmin配置文件

    vi /etc/httpd/conf.d/phpmyadmin.conf

    注释掉<Directory “/usr/share/phpmyadmin”>…</Directory>这一节,这样做可以使phpmyadmin不限于本地打开

    接下来改变phpMyAdmin从cookie认证到http认证

    vi /usr/share/phpmyadmin/config.inc.php

    改后为

    $cfg['Servers'][$i]['auth_type'] = 'http';

    重启Apache:

    /etc/init.d/httpd restart

    此时CentOS 6.2 x86_64下的LAMP环境配置完成

    :)EOT

     

  • wc命令统计当前目录下指定文件

    查看当前目录下文件的个数

    ls -l | grep "^-" | wc -l

    查看当前目录下文件的个数,包括子目录下的文件

    ls -lR| grep "^-" | wc -l

    查看某目录下目录的个数,包括子目录

    ls -lR| grep "^d" | wc -l

    上面命令主要要素说明:

    ls -l

    长列表输出该目录下文件及目录信息

    grep “^-”

    把文件过滤出来;如果只保留目录就是 grep “^d”

    wc -l

    统计输出信息的行数,因一行信息对应一个文件,所以也是文件的个数

  • mysql备份和还原数据库

    备份服务器上所有数据库,加上–opt表示采用优化(Optimize)方式。

    mysqldump -uroot -ppasswd --opt --all-databases > allbackupfile.sql

    mysqldump -uroot -ppasswd -A > allbackupfile.sql

    备份指定数据库

    mysqldump -uroot -ppasswd databasename > /tmp/dbbackup.sql

    备份指定的表,写在要备份的库后面

    mysqldump -uroot -ppasswd databasename table1 table2 > /tmp/tables.sql

    还原MySQL数据库的命令(还原表就不用加表名了)

    mysql -hhostname -uusername -ppassword databasename < backup.sql

    还原为utf-8

    mysql -uusername -ppassword databasename --default-character-set=utf8 < backup.sql

    mysqldump 加 where

    mysqldump -uroot -ppasswd databasename table1 --where "table1.a=1" > /tmp/table.sql

    使用–tab方式备份和还原数据库

    首先将备份文件存在/home/jpuyy/blog,这时会生成以表名命名的.sql和.txt文件,.sql保存了表的创建语句,.txt保存了以默认分隔符的纯数据文本。

    mysqldump -u root -p --tab=/home/jpuyy/blog database

    接下来需要导入数据库时

    mysqladmin create newdatabase
    cat /home/jpuyy/blog/*.sql | mysql newdatabase
    mysqlimport newdatabase /home/jpuyy/blog/*.txt

     

    只导出表结构

    mysql -hhostname -uusername -ppassword -d databasename > backup.sql

    简单的每小时备份脚本

    #/bin/bash
    datetime=`date +%F-%H:%M`
    mysqldump -udba -p'passwd' --opt --all-databases > all-databases-$datetime.sql
    gzip all-databases-$datetime.sql