wiggin's Blog


  • 首页

  • 标签

  • 分类

Linux命令:iptables

Posted on 2018-11-16 | In Linux

iptables命令用于linux下防火墙规则管理,可以对指定协议、来源、端口的访问数据进行放行或丢弃

1、添加iptables规则

iptables -A INPUT -p tcp -s 192.168.0.104 --dport 3306 -j ACCEPT
iptables -A INPUT -p tcp --dport 3306 -j DROP
#-A INPUT or OUT 进还是出的规则
#-p tcp or udp协议
#-s 源ip地址 
#--dport 端口号
#-j ACCEPT 允许 REJECT 拒绝 DROP 丢弃

2、删除iptables规则

#查看规则行号
iptables -L -n INPUT --line-numbers
#-L --list 显示规则
#-n 端口显示数字
#--line-numbers 显示规则编号,用于删除
#删除规则
iptables -D INPUT 3

3、保存iptables规则,使之重启后有效

  • centos6

    service iptables save
    
    #或
    #修改/etc/sysconfig/iptables配置文件中的规则后重启服务
    service iptables restart
    
  • centos7(默认使用firewall,停用firewall后安装iptables,就与centos6相同)

    #停用firewall
    systemctl stop firewall .service        #停止firewall
    systemctl disable firewall.service  #禁止开机启动firewall
    firewall-cmd --status           #查看firewall状态
    #安装iptables
    yum install iptables-service
    systemctl enable iptables
    systemctl start iptables
    
  • ubuntu(使用iptables-save和iptables-restore)

    手动保存

    #1.保存iptables规则到文件
    #sudo iptables-save > /etc/iptables.rules会报错
    sudo bash -c 'iptables-save > /etc/iptables.rules'
    #2.设置网络配置文件中加载该文件
    vim /etc/network/interfaces
    加入pre-up iptables-restore < /etc/iptables.up.rules
    

    重启自动生效

    #1.新增网络关闭自动执行脚本
    vim /etc/network/if-post-down.d/iptables
    内容为
        #!/bin/bash
        iptables-save > /etc/iptables.rules
    #2.新增网络开启自动执行脚本
    sudo vim /etc/network/if-pre-up.d/iptables
    内容为
        #!/bin/bash
        iptables-restore < /etc/iptables.rules
    #3.给两个脚本执行权限
    sudo chmod +x /etc/network/if-post-down.d/iptables
    sudo chmod +x /etc/network/if-pre-up.d/iptables
    

4、常用功能

白名单规则

比如开通本机的22端口,允许192.168.1.0网段的服务器访问(-t filter表配置可以省略,默认就是这种表的配置)

iptables -A INPUT -s 192.168.1.0/24 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

或者

iptables -t filter -A INPUT -s 192.168.1.0/24 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT

开通本机的80端口,只允许192.168.1.150机器访问(32位掩码表示单机,单机指定时可以不加掩码)

iptables -t filter -A INPUT -s 192.168.1.150/32 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

然后保存规则,重启iptables

service iptables save
service iptables restart

或者在/etc/sysconfig/iptables文件里设置如下(其实上面在终端命令行里设置并save和restart防火墙后,就会自动保存规则到/etc/sysconfig/iptables这个文件中的):

cat /etc/sysconfig/iptables
    ......
    *filter
    :INPUT ACCEPT [442620:173026884]
    :FORWARD ACCEPT [118911:23993940]
    :OUTPUT ACCEPT [8215384:539509656]
    -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
    -A INPUT -p icmp -j ACCEPT 
    -A INPUT -i lo -j ACCEPT 
    -A INPUT -s 192.168.1.0/24 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
    -A INPUT -s 192.168.1.150/32 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

service iptables restart

NAT转发设置

比如访问本机(192.168.1.7)的8088端口转发到192.168.1.160的80端口;访问本机的33066端口转发到192.168.1.161的3306端口
准备工作:
本机打开ip_forword路由转发功能;192.168.1.160/161的内网网关要和本机网关一致!如果没有内网网关,就将网关设置成本机内网ip,并且关闭防火墙(防火墙要是打开了,就设置对应端口允许本机访问)

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 8088 -j DNAT --to-destination 192.168.1.160:80
iptables -t nat -A POSTROUTING -d 192.168.1.160/32 -p tcp -m tcp --sport 80 -j SNAT --to-source 192.168.1.7
iptables -t filter -A INPUT -p tcp -m state --state NEW -m tcp --dport 8088 -j ACCEPT

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 33066 -j DNAT --to-destination 192.168.1.161:3306
iptables -t nat -A POSTROUTING -d 192.168.1.161/32 -p tcp -m tcp --sport 3306 -j SNAT --to-source 192.168.1.7
iptables -t filter -A INPUT -p tcp -m state --state NEW -m tcp --dport 33066 -j ACCEPT

service iptables save
service iptables restart

或者在/etc/sysconfig/iptables文件里设置如下

cat /etc/sysconfig/iptables
    ......
    *nat
    :PREROUTING ACCEPT [60:4250]
    :INPUT ACCEPT [31:1973]
    :OUTPUT ACCEPT [3:220]
    :POSTROUTING ACCEPT [3:220]
    -A PREROUTING -p tcp -m tcp --dport 8088 -j DNAT --to-destination 192.168.1.160:80                              //PREROUTING规则都放在上面
    -A PREROUTING -p tcp -m tcp --dport 33066 -j DNAT --to-destination 192.168.1.161:3306
    -A POSTROUTING -d 192.168.1.160/32 -p tcp -m tcp --sport 80 -j SNAT --to-source 192.168.1.7             //POSTROUTING规则都放在下面
    -A POSTROUTING -d 192.168.1.161/32 -p tcp -m tcp --sport 3306 -j SNAT --to-source 192.168.1.7
    .....
    *filter
    :INPUT ACCEPT [16:7159]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [715:147195]
    -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A INPUT -p icmp -j ACCEPT
    -A INPUT -i lo -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 8088 -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 33066 -j ACCEPT
    .....
service iptables restart

查看规则列表

iptables -L                      //列出设置的规则,默认列出的是filter表下的规则
iptables -L -t nat            //如果列出nat表下规则,就加-t参数

Centos7中安装LNMP

Posted on 2018-10-30 | In Linux

安装LNMP

安装过程

  1. 下载

    访问下载地址,找到需要安装的版本的下载地址
    如:http://soft1.vpser.net/lnmp/lnmp1.5-full.tar.gz

    wget http://soft1.vpser.net/lnmp/lnmp1.5-full.tar.gz
    

    为了防止安装时掉线,建议使用screen

    yum install screen  #安装screen
    screen -S lnmp      #指定screen作业的名称
    #开始执行安装过程,如果掉线执行下面命令恢复
    screen -r lnmp      #恢复离线的screen作业
    screen -list            #列出所有会话
    
  2. 解压安装

    tar -zxvf lnmp1.5-full.tar.gz
    cd lnmp1.5-full
    ./install.sh {lnmp|lnmpa|lamp}  #需选择安装的类型
    #按照提示选择mysql、php版本安装
    

默认安装目录

Nginx:/usr/local/nginx/
MySQL:/usr/local/mysql/
MariaDB:/usr/local/mariadb/
PHP:/usr/local/php/
多PHP目录:/usr/local/php5.6/ 版本号随安装版本不同而不同
PHP扩展插件配置文件目录:/usr/local/php/conf.d/
PHPMyAdmin:/home/wwwroot/default/phpmyadmin/
默认虚拟主机网站目录:/home/wwwroot/default/
Nginx日志目录:/home/wwwlogs/

配置文件

Nginx主配置文件:/usr/local/nginx/conf/nginx.conf
MySQL/MariaDB配置文件:/etc/my.cnf
PHP配置文件:/usr/local/php/etc/php.ini
PHP-FPM配置文件:/usr/local/php/etc/php-fpm.conf
PureFtpd配置文件:/usr/local/pureftpd/etc/pure-ftpd.conf
Apache配置文件:/usr/local/apache/conf/httpd.conf

各应用对应的文件

Nginx

  • 安装目录

    /usr/local/nginx
    
  • 配置文件

    /usr/local/nginx/conf
    
  • 日志文件
    日志文件在配置文件中设置

    error_log  错误日志
    http{log_format}        日志格式
    http{access_log}    nginx访问日志
    server{access_log}  server访问日志
    
    默认设置
    /usr/local/nginx/logs/error.log
    /usr/local/nginx/logs/access.log
    /usr/local/nginx/logs/host.access.log
    
  • PID

    /usr/local/nginx/logs/nginx.pid
    
  • listen

    监听端口:80
    监听进程用户:在`/usr/local/nginx/conf`文件中`user www;`配置
    

Mysql

  • 安装目录

    Mysql:/usr/local/mysql
    MariaDB:/usr/local/mariadb/
    
  • 配置文件

    /etc/my.cnf
    
  • 日志文件

    /usr/local/mysql/var/目录下
    通过下面查询语句查看日志设置及路径 
    show global variables like '%LOG%';
    
  • listen

    监听端口:3306
    监听socket:/tmp/mysql.sock
    

    PHP

  • 安装目录

    /usr/local/php
    
  • 配置文件

    /usr/local/php/etc/php-fpm.conf
    /usr/local/php/etc/php.ini
    
  • 日志文件

    /usr/local/php/var/log/php-fpm.log
    /usr/local/php/var/log/slow.log
    
  • PID

    /usr/local/php/var/run/php-fpm.pid
    
  • Listen

    监听socket:/tmp/php-cgi.sock
    监听进程用户:在`/usr/local/php/etc/php-fpm.conf`文件中`listen.owner = www`配置
    

Mac下Python多版本管理pyenv和pyenv-virtualenv

Posted on 2018-10-29 | In Python

一、pyenv安装和使用

1、安装

brew update
brew install pyenv

2、配置

  1. 编辑配置文件

    vim ~/.zshrc    #使用zsh shell
    vim ~/.bash_profile #使用系统默认
    

    在.zshrc或.bash_profile文件最后写入

    # pyenv
    echo 'eval "$(pyenv init -)"' >> ~/.zshrc
    
  2. 使配置生效

    source ~/.zshrc
    #或
    source ~/.bash_profile  
    

3、安装zlib

brew install zlib

#如果命令pyenv install 3.7.0报错需执行下面命令
ln -s /usr/local/Cellar/zlib/1.2.11/lib/* /usr/local/lib
ln -s /usr/local/Cellar/zlib/1.2.11/include/* /usr/local/include

4、使用

  • 查看可安装版本

    pyenv install --list    #查看可安装版本
    
  • 安装指定版本

    pyenv install 3.7.0     #安装指定版本
    
  • 查看当前python版本

    pyenv version       #查看当前python版本
    
  • 查看已安装python版本

    pyenv versions      #查看已安装python版本
    
  • 设置python版本

    pyenv global 3.7.0  #对所有的Shell全局有效,版本号写入~/.pyenv/version文件
    pyenv local 3.7.0   #对当前目录有效,版本号写入当前目录下的.python-version文件
    pyenv shell 3.7.0   #对当前会话有效
    
  • 重置python版本设置

    pyenv shell --unset
    pyenv local --unset
    
  • 卸载版本

    pyenv uninstall 3.7.0   
    

二、pyenv-virtualenv安装和使用

1、安装

brew update
brew install pyenv-virtualenv

2、配置

  1. 编辑配置文件

    vim ~/.zshrc    #使用zsh shell
    vim ~/.bash_profile #使用系统默认
    

    在.zshrc或.bash_profile文件最后写入

    # pyenv-virtualenv
    if which pyenv-virtualenv-init > /dev/null;
      then eval "$(pyenv virtualenv-init -)";
    fi      
    
  2. 使配置生效

    source ~/.zshrc
    #或
    source ~/.bash_profile  
    

3、使用

  • 从当前版本创建虚拟环境

    pyenv virtualenv py370
    
  • 指定版本创建虚拟环境

    pyenv virtualenv 3.7.0 py370
    
  • 查看已创建的虚拟环境

    pyenv versions
    
  • 激活和停用虚拟环境

    #手动激活
    pyenv activate py370
    pyenv deactivate
    
    #自动激活,进入目录自动激活
    pyenv local py370
    
  • 删除现有虚拟环境

    pyenv uninstall py370
    

Python多版本管理virtualenv、virtualenvwrapper

Posted on 2018-10-29 | In Python

一、virtualenv安装和使用

1、安装

pip install virtualenv

2、创建虚拟环境

virtualenv --no-site-packages -p /usr/local/bin/python3 venv3
    --no-site-packages不复制系统环境中已安装的第三方包
    -p /usr/local/bin/python3指定新建python解释器程序的路径

3、激活venv3虚拟环境

source venv3/bin/activate

4、退出venv3虚拟环境

source venv3/bin/deactivate

Linux环境(与Windows区别:目录bin变成Scripts)

二、virtualenvwrapper安装和使用

因为virtualenv不便于虚拟环境集中管理,可以使用virtualenvwrapper提供统一的命令来管理虚拟环境

1、安装

pip install virtualenvwrapper
pip install virtualenvwrapper-win       #Windows使用该命令

2、配置

  1. 编辑配置文件

    vim ~/.zshrc    #使用zsh shell
    vim ~/.bash_profile #使用系统默认
    

    在.zshrc或.bash_profile文件最后写入

    # virtualenvwrapper
    echo 'export WORKON_HOME=~/Venvs' >> ~/.zshrc #指定虚拟环境目录存放位置
    echo 'source /usr/local/bin/virtualenvwrapper.sh' >> ~/.zshrc
    
  2. 使配置生效

    source ~/.zshrc
    #或
    source ~/.bash_profile  
    

3、使用

  • 创建虚拟环境

    mkvirtualenv venv
    
  • 查看当前虚拟目录

    workon
    
  • 切换虚拟目录

    workon py3
    
  • 退出虚拟环境

    deactivate
    
  • 删除虚拟环境

    rmvirtualenv venv
    

三、问题

1、Mac下安装virtualenvwrapper时报错

Cannot uninstall 'six'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

先升级six,再安装virtualenvwrapper

sudo python -m pip install --upgrade six #正常升级命令执行报错,需使用下面命令
sudo python -m pip install --upgrade --ignore-installed six

Hexo使用-添加分类和标签

Posted on 2018-10-21 | In Hexo

添加分类

1、创建分类显示页

hexo new page categories  
#创建了source/categories/index.md文件    

index.md文件中添加内容

type: "categories"

2、创建文章页

hexo new title pagename  
#创建了source/_posts/pagename.md文件

pagename.md文件中添加内容

categories: 
    - Linux

添加标签

1、创建标签显示页

hexo new page tags  
#创建了source/tags/index.md文件

index.md文件中添加内容

type: "tags"

2、创建文章页

hexo new title pagename 
#创建了source/_posts/pagename.md文件

pagename.md文件中添加内容

tags: 
    - 新页面
1…4567

wiggin

31 posts
9 categories
7 tags
RSS
© 2025 wiggin
Powered by Hexo
|
Theme — NexT.Gemini v5.1.4
本站访客数: