路由及iptables学习笔记

  1. 云栖社区>
  2. 博客>
  3. 正文

路由及iptables学习笔记

科技小先锋 2017-11-22 14:54:00 浏览1124
展开阅读全文
启动linux路由功能

echo "echo 1 >/proc/sys/net/ipv4/ip_forward" >> /etc/rc.d/rc.local
或者修改
vi /etc/sysctl.conf net.ipv4.ip_forward =1  也是开启路由转发功能

查看\添加\修改\删除linux静态路由
route -n 显示当前路由表
netstat -rn 显示当前路由表
route add -net 添加到哪儿个网络的路由
route add -host 添加到哪儿台计算机的路由
route add default gw 添加默认路由(找不到合适的路由,才找这个路由,级别最低)
route delete 删除路由

举例:
route add -net 202.38.85.0 netmask 255.255.255.0 dev eth0
route add -net 192.168.1.0 netmask 255.255.255.192 dev eth1
route add -net 192.168.1.64 netmask 255.255.255.192 dev eth2
route add -net 192.168.1.128 netmask 255.255.255.192 dev eth3
route add -net 192.168.1.192 netmask 255.255.255.192 dev eth4

最后指定默认网关:
route add default gw 202.38.85.1

route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.2.1
netconfig -d eth1 此命令是给eth1配置ip等信息

简要协议下5台机器的地址分配图:

CentOS1(192.168.1.1<eth0>)----CentOS2(192.168.1.2<eth0>/192.168.2.1<eth1>)----CentOS3(192.168.2.2<eth0>/192.168.3.1<eth1>)----CentOS4(192.168.3.2<eth0>/192.168.4.1<eth1>)----CentOS5(<eth0>192.168.4.2)
CentOS1设置了缺省网关192.168.1.2
centOS5设置了缺省网管192.168.4.1

CentOS2 CentOS3 CentOS4 开启了路由转换功能
vi /etc/sysctl.conf net.ipv4.ip_forward =1(0改做1)  也是开启路由转发功能

当我们从CentOS1 ping CentOS2的eth1网口ip时,是可以ping通的,因为CentOS2具有路由转换功能
当我们从CentOS1 ping CentOS3的eth0网口时会出现如下景象:
[root@centos ~]#ping 192.168.2.2
PING 192.168.2.2 (192.168.2.2) 56()84 bytes of data.

就此不动了,这是表明ping包已经送达,但是没有回应信息,为什么会这样呢?具体说一下,ping包从万能路由出去到CentOS2的eth0端口,然后经过centos2的路由表转换到达Centos2的eth1端口,通过直连的网线到达192.168.2.2,CentOS3的eth0网口相应ping包,但是他的相应包不知道如何到达192.168.1.1.所以CentOS1的发出去的ping包没有返回,就一直等着。我们应该在CentOS3上,添加路由规则:
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.2.1
然后在CentOS1上ping 192.168.4.1 不通,那就应该在CentOS2上添加路由
route add -net 192.168.4.0 netmask 255.255.255.0 gw 192.168.2.2
在CentOS3上添加路由
route add -net 192.168.4.0 netmask 255.255.255.0 gw 192.168.3.2
这样就通了

zabra动态路由的设置
安装之后支持RIP协议和OSPF协议,安装情况明天再说。

网络层防火墙:

ip数据报:源ip地址 目标IP地址 源端口,目标端口 协议类型(tcp还是udp),7位标志位(syn ack urg)等

网络地址转换NAT(network address transcate)

NAT: 保护的就是内网,所以就是以内网为参照物的
SNAT(源地址转换,内网出去) 
DNAT(目标地址转换 外网进来)

在linux的内核中使用netfilter架构实现防火墙功能
iptables是linux系统中为用户提供的netfilter管理工具,用于实现对linux内核中网络防火墙的管理

iptables 缺省有5条规则链:

    PREROUTING--->FORWARD--->POSTROUTING--->
    (DNAT)    |           |   (SNAT)
             |             |
           INPUT      OUTPUT
             |             ^  
             |             |
            V            |
        上层应用程序(接收或发送网络数据)

规则链<--->检查点
iptables缺省有3个规则表
filter:用于设置包过滤
nat:用于设置地址转换
mangle:用于设置网络流量整形等应用
不同的规则表由不同的规则链组成
FILTER:INPUT,FORWARD OUTPUT

NAT:PREROUTING POSTROUTING OUTPUT

MANGLE:PREROUTING POSTROUTING INPUT OUTPUT 和FORWARD

规则链 是由匹配条件组成的最终要有一个操作。

iptables有三个主要命令:
iptables 是主要管理命令,
iptables-save命令是将当前系统的防火墙设置保存在一个文本文件中。
iptables-restore恢复

iptables服务启动脚本
/etc/rc.d/init.d/iptables
iptables配置文件与策略设置文件
iptables配置文件
/etc/sysconfig/iptables-config
策略配置文件
/etc/sysconfig/iptables

iptables [-t 要操作的表] <操作命令> [要操作的链] [规则号码][匹配条件][-j 匹配后要做的动作]

针对链的操作有:
-L:列出表中的所有规则
-F:清除链中的所有规则
-P:设置链的默认操作 ACCEPT REJECT DROP
-Z:计数器清零
-N:定义一个新的规则链
-X:删除一个规则链

不加要操作的规则链的名字,就会对整个表操作

针对规则的操作:
-A:追加一个规则
-I:插入一个规则
-D:删除一个规则

在规则链中,规则是有顺序的,所以才有-A和-I参数出现

查看防火墙的状态 iptables -L (显示过滤表中的所有规则链)
[root@centos ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
[root@centos ~]# 

iptables命令设置在系统中是即时生效的。

iptables-save命令缺省只是将配置信息显示到标准输出上
如果需要将iptables-save命令的输出保存,需要将命令输出结果重定向到指定文件中
iptables-save>/etc/sysconfig/iptables(service iptables save等价)
或:
iptables-save>ipt.v1.0
使用iptables-save命令可以将多个版本的配置保存到不同的文件中

恢复:
iptables-restore</etc/sysconfig/iptables或者
iptables-restore<ipt.v1.0恢复

#iptables -t nat -L 列出nat表的规则
#iptables -F清空filter表中所有规则
#iptables -t nat -F
删除表中的自定义规则链
#iptables [-t table] -X [chain]

在INPUT规则链中添加规则,允许来自lo网络接口中的所有数据包
iptables -t filter -A INPUT -i lo -j ACCEPT

在INPUT规则链中添加规则,允许eth0网络接口中来自192.168.1.0/24子网的所有数据包
iptables -A INPUT -i eth0 -s 192.168.1.0/24 -j ACCEPT

实例分析

单服务器的防护
如何做网关
如何限制内网用户
内网如何做对外服务器。

单服务器的防护:
弄清对外服务的对象
书写规则
    网络接口lo的处理
    状态检测的处理
    协议+端口的处理
实例:一个普通的web服务器
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp -m multiport 22,80 -j ACCEPT
iptables -A INPUT -m state --state RELATED(相关的),ESTABLISHED(已建立链接的) -j ACCEPT
iptables -p INPUT DROP
注意:确保规则循序正确,弄清逻辑关系,学会时刻使用-vnl

RELATED(相关的):在已有链接的基础上建立新链接
ESTABLISHED(已建立链接的):已经建立链接的

主机防火墙策略:
#iptables -F    #清空所有包过滤规则
#iptables -X    #删除所有自定义规则链
#iptables -Z    #所有统计数据清零
#iptables -P INPUT DROP #默认规则丢弃
#iptables -A INPUT -i lo -j ACCEPT 
#iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
#iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
#iptables -A INPUT -i eth0 -p tcp --dport 3128 -j ACCEPT
#iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#service iptables save

网关服务器配置实例:
配置需求:
    服务器网接口eth0的IP地址为192.168.1.1/24,eth0网络接口与公司的内部网络相连
    服务器的网络接口ppp0是主机的拨号网络接口,具有公网IP地址
    局域网中的所有主机都需要通过Linux网管服务器与外部互联网通信

关键配置命令:
#iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE

另外举例:
#iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to 192.168.0.20
#iptables -t nat -L

目标地址转换:DNAT

#iptables -t nat -A PREROUTING -d 192.168.106.200 -p tcp --dport 80 -j DNAT --to 192.168.156.200:80



本文转自guoli0813 51CTO博客,原文链接:http://blog.51cto.com/guoli0813/360632,如需转载请自行联系原作者

网友评论

登录后评论
0/500
评论
科技小先锋
+ 关注