转自:https://blog.csdn.net/hustsselbj/article/details/45866681

如果用树莓派当作路由器转发有线和无线网络,则需要对iptables进行相关配置。配置NAT转发的话,MASQUERADE一条规则是关键。

iptables共3个tables(filter nat mangle,现在貌似是4个表)5条chains(PREROUTING INPUT FORWARDING OUTPUT POSTROUTING)4个连接跟踪数据包状态(NEW INVALID ESTABLISHED RELATED).
用iptables -t [table] -L查看每个表。五条链的数据包转发流程如下:
 

基本语法:iptables -t table -命令 -匹配 -j 动作/目标

1. 清除规则
iptables -F
iptables -X
iptables -Z
iptables -F -t nat
iptables -X -t nat
iptables -Z -t nat
 
2. 设置默认策略
一般策略:filter的INPUT和FORWARD都是DROP然后配置指定的ACCEPT,OUTPUT则是ACCEPT然后配置指定的DROP。
先不要关闭filter的INPUT,配置完关键的22等端口的ACCEPT之后再设置iptables -P INPUT DROP
关闭filter表的FORWARD:iptables -P FORWARD DROP,考虑到如果作为路由器,可以打开FORWARD,后面的对filter的FORWARD则不用再配置。
关闭filter表的OUTPUT:iptables -P OUTPUT DROP,一般是开启OUTPUT:iptables -P OUTPUT ACCEPT
开启nat表的三个链:PREROUTING OUTPUT POSTROUTING,默认都是ACCEPT可以不用设置。
     iptables -t nat -P PREROUTING ACCEPT
     iptables -t nat -P OUTPUT ACCEPT
     iptables -t nat -P POSTROUTING ACCEPT
 
3. 设置filter表
开启回环地址:iptables -A INPUT -i lo -p all -j ACCEPT
     iptables -A OUTPUT -o lo -p all -j ACCEPT
连接状态设置:iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
丢弃非法链接:iptables -A INPUT -m state --state INVALID -j DROP
     iptables -A OUTPUT -m state --state INVALID -j DROP
     iptables -A FORWARD -m state --state INVALID -j DROP
 
设置一些常用端口的开启:
     允许访问本机的SSH:
     iptables -A INPUT -p tcp --dport 22 -j ACCEPT
     iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
 
     如果自身做了web服务器,则需要开启80端口的INPUT的OUTPUT:
     iptables -A INPUT -p tcp --dport 80 -j ACCEPT
     iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
     如果自身做了邮件服务器,则开启25,110
     iptables -A INPUT -p tcp --dport 25 -j ACCEPT
     iptables -A INPUT -p tcp --dport 110 -j ACCEPT
     iptables -A INPUT -p udp--dport 110 -j ACCEPT
     如果自身做了FTP服务器,则开启21
     iptables -A INPUT -p tcp --dport 21 -j ACCEPT
     如果自身做了DNS服务器,则开启53
     iptables -A INPUT -p tcp --dport 53-j ACCEPT
     iptables -A INPUT -p udp --dport 53 -j ACCEPT
     使用dnsmasq的DHCP服务还要开启67端口的UDP
     iptables -A INPUT -p udp--dport 67 -j ACCEPT
     
     允许ping
     iptables -A OUTPUT -p icmp -j ACCEPT
     iptables -A INPUT -p icmp -j ACCEPT
 
    
     设置内网转发:
     iptables -A FORWARD -s 192.168.0.0/16 -j ACCEPT
     iptables -A FORWARD -d 192.168.0.0/16 -j ACCEPT
     
     限制只能转发部分端口:
     访问外界网站则需要80端口转发:
     iptables -A FORWARD -p tcp --dport 80 -j ACCEPT
 
     设置DNS转发,注意自身的namenode要添加一些DNS?:
     iptables -A FORWARD -p tcp --dport 53 -j ACCEPT
     iptables -A FORWARD -p udp --dport 53 -j ACCEPT
 
     允许内网主机收发邮件:
     iptables -A FORWARD -p tcp --dport 25 -j ACCPET
     iptables -A FORWARD -p tcp --dport 110 -j ACCEPT
     iptables -A FORWARD -p udp --dport 110 -j ACCEPT
     iptables -A FORWARD -p tcp --dport 143 -j ACCEPT
     iptables -A FORWARD -p udp --dport 143 -j ACCEPT
     iptables -A FORWARD -p tcp --dport 993 -j ACCEPT
     iptables -A FORWARD -p udp --dport 993 -j ACCEPT
     iptables -A FORWARD -p tcp --dport 995 -j ACCEPT
     iptables -A FORWARD -p udp --dport 995 -j ACCEPT
     允许内网主机登录QQ:
     iptables -A FORWARD -p tcp --dport 8000 -j ACCEPT
     iptables -A FORWARD -p udp --dport 8000 -j ACCEPT
     iptables -A FORWARD -p tcp --dport 443 -j ACCEPT
     iptables -A FORWARD -p udp --dport 4000 -j ACCEPT
 
     当filter的FORWARD设置为DROP时,必须要设置接口转发,eth0连接外网,eth1连接内网:
     iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
     iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
 
     丢弃坏的TCP包:
     iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j ACCEPT
     处理IP碎片数量,放置攻击,允许每秒100个
     iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
     设置ICMP包过滤,允许每秒1个包,限制触发条件是10个包
     iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT
         
     
4. 设置nat表
     开启NAT:
     iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/16 -j MASQUERADE
     防止外网用内网IP欺骗:
     iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP
     iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP
     iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP
     转发80端口到内网某台主机的80端口
     iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.3:80 
     禁止与某个IP的所有连接:
     iptables -t nat -A PREROUTING -d 211.101.46.253 -j DROP
     禁止某个端口:
     iptables -t nat -A PREROUTING -p tcp --dport 21 -j DROP
 
5. 保存iptables并重启
     iptables-save > /etc/iptables/iptables.rules
     systemctl reload iptables
 
6. 设置net.ipv4.ip_forward为1
     每次重启都要设置
     echo 1 > /proc/sys/net/ipv4/ip_forward     
     或者:
     sysctl -w net.ipv4.ip_forward=1  
     为了使重启仍然生效:
     /etc/sysctl.d/40-ip-forward.conf
     net.ipv4.ip_forward=1
     ipv6相关的转发?对应的文件是在/proc/sys/net/ipv6/conf/下
     net.ipv6.conf.default.forwarding=1
     net.ipv6.conf.all.forwarding=1

树莓派做路由器_配置防火墙filter和nat转发_转载的更多相关文章

  1. linux配置防火墙详细步骤(iptables命令使用方法)

    通过本教程操作,请确认您能使用linux本机.如果您使用的是ssh远程,而又不能直接操作本机,那么建议您慎重,慎重,再慎重! 通过iptables我们可以为我们的Linux服务器配置有动态的防火墙,能 ...

  2. 用树莓派做3G无线路由器

    第一篇博客献给我做了很长时间的课程设计,也就是题目所说的3G无线路由器.本次开发所使用的开发平台为树莓派开发板,下面进入正题..... 目标:将树莓派设置成为一个3G无线路由器,通过华为的E261拨号 ...

  3. Linux网络——配置防火墙的相关命令

    Linux网络——配置防火墙的相关命令 摘要:本文主要学习了如何在Linux系统中配置防火墙. iptables命令 iptables准确来讲并不是防火墙,真正的防火墙是运行于系统内核中的netfil ...

  4. Cisco SG300系列交换机划分VLan与普通路由器连接配置

    思科SG300系列三层交换机是针对中小企业设计的一款产品,Marvell 主控和128M Ram,最大支持52个千兆RJ45端口和2个SFP端口,因公司业务需求,最近也进行了解和配置,具体型号为 SG ...

  5. Linux配置防火墙8080端口

    1.查看防火墙状态,哪些端口开放了 /etc/init.d/iptables status 2.配置防火墙 vi /etc/sysconfig/iptables ################### ...

  6. 阿里云ECS每天一件事D2:配置防火墙

    在linux中配置防火墙是一件比较有风险的事情,尤其是在ECS中,一个不当心的操作,可能就会需要重置服务器. 包括阿里云的官方建议,不要配置防火墙,没有必要什么的吧啦吧啦…… (http://bbs. ...

  7. CentOS6.5 配置防火墙+允许指定ip访问端口

    参考博文: iptables防火墙只允许指定ip连接指定端口.访问指定网站 一.配置防火墙 打开配置文件 [root@localhost ~]# vi /etc/sysconfig/iptables ...

  8. 新CCIE笔记-路由器的配置

    CCIE重修笔记之路由器基本配置与最简单的路由. 路由器与交换机的基本配置命令 全局配置模式下有多种子模式 (华为可以跳跃切换模式) 思科命令行技巧 Tab键补全,也可以直接保留缩写 问号'?'类似l ...

  9. Linux配置防火墙端口 8080端口

    1.查看防火墙状态,哪些端口开放了 /etc/init.d/iptables status 2.配置防火墙 vi /etc/sysconfig/iptables   ################# ...

随机推荐

  1. 基于python语言的经典排序法(冒泡法和选择排序法)

    前 每逢周末就遇雨期,闲暇之余,捣鼓了下python,心心念想学习,今天就在电脑上装了个2.7,学习了下经典算法,冒泡与选择排序法 第一次写关于python的文章,说的不当之处,多多指正,我积极改正 ...

  2. window10 还原精灵 破解版 冰点

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha=======

  3. 发布Docker 镜像到dockerhub

    公有仓库 docker提供了一个类似于github的仓库dockerhub, 网址 https://hub.docker.com/ 需要注册使用 注意要保证image的tag是账户名,如果镜像名字不对 ...

  4. Java 多线程 interrupt方法

    interrupt 下面是interrupt方法的文档的一部分: * <p> If this thread is blocked in an invocation of the {@lin ...

  5. db2调优

    系统上线两个月左右,请IBM工程师对数据库进行了一次调优,主要收获感觉有以下几点: 1,应用服务器一定要与数据库服务器分开 2,如果存在多个数据库,一定要硬盘分开(io忙) 3,每个数据库的数据与日志 ...

  6. linux find命令用法

    Linux下find命令在目录结构中搜索文件,并执行指定的操作.Linux下find命令提供了相当多的查找条件,功能很强大.由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时 ...

  7. [Android Pro] Android P版本 新功能介绍和兼容性处理(三)Android Studio 3.0 ~ 3.2 其他特性

    cp : https://blog.csdn.net/yi_master/article/details/80067198 1:JAVA8特性支持 1)Base64.java 在升级到as3.0之后, ...

  8. Error-MVCr:找到了多个与 URL 匹配的控制器类型。如果多个控制器上的特性路由与请求的 URL 匹配,则可能会发生这种情况。

    ylbtech-Error-MVCr:找到了多个与 URL 匹配的控制器类型.如果多个控制器上的特性路由与请求的 URL 匹配,则可能会发生这种情况. 1.返回顶部 1. 找到了多个与 URL 匹配的 ...

  9. Android典型界面设计(7) ——DrawerLayout+Fragement+ViewPager+PagerTabStrip实现双导航

    一.问题描述 在Android典型界面设计(3)的我们实现了双导航效果,即外层底部导航和内部区域的头部导航,如网易新闻等很多应用采用了这种导航,但Google提供DrawerLayout可实现抽屉式导 ...

  10. tmux 共享窗口大小

    http://www.cnblogs.com/bamanzi/p/tmux-share-windows-between-sessions.html