# 命令行放行某个端口

#/sbin/iptables -I INPUT -p tcp --dport 端口号 -j ACCEPT

#/etc/rc.d/init.d/iptables save

 

可是觉得命令行太复杂了怎么办?那就记住下面的脚本并让它自动执行吧,详细说明请看注释

 

# iptables 防火墙脚本 

#!/bin/bash  

sports="53 80 22 3306"  # 自己机器对外开放的端口  

dports="53 80 20 21 22 3306"  # internet的数据可以进入自己机器的端口 

 

# 初始化 

init(){ 

    iptables -F 

    iptables -X 

    iptables -t nat -F 

    iptables -t nat -X 

# 启动 

start(){ 

    echo " * Starting firewall and allowing everyone..." 

    init 

    iptables -A INPUT -i ! eth0 -j ACCEPT  

 

    # 开放端口 

    for Port in $sports ; do  

        iptables -A INPUT -i eth0 -p tcp --sport $Port -j ACCEPT  

        iptables -A INPUT -i eth0 -p udp --sport $Port -j ACCEPT  

    done  

    for Port in $dports ; do  

        iptables -A INPUT -i eth0 -p tcp --dport $Port -j ACCEPT  

        iptables -A INPUT -i eth0 -p udp --dport $Port -j ACCEPT  

    done  

    iptables -A INPUT -i eth0 -p tcp -j REJECT --reject-with tcp-reset  

    iptables -A INPUT -i eth0 -p udp -j REJECT --reject-with icmp-port-unreachable 

    echo "Done!" 

# 停止 

stop(){ 

    echo " * Stopping firewall and allowing everyone..." 

    iptables -F 

    iptables -X 

    iptables -t nat -F 

    iptables -t nat -X 

    iptables -t mangle -F 

    iptables -t mangle -X 

    iptables -P INPUT ACCEPT 

    iptables -P FORWARD ACCEPT 

    iptables -P OUTPUT ACCEPT 

    echo "Done!" 

# 重启 

restart(){ 

    stop 

    start 

status(){ 

     iptables -L 

case "$1" in 

    start) 

        start ;; 

    stop) 

        stop ;; 

    restart) 

        restart ;; 

    status) 

        status;; 

    *) 

        echo "Usage: iptables {start|stop|restart}" 

        exit 1 

esac 

exit 0 

## 注意:请将eth0替换成你的网卡号!