启动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)----CentOS2(192.168.1.2/192.168.2.1)----CentOS3(192.168.2.2/192.168.3.1)----CentOS4(192.168.3.2/192.168.4.1)----CentOS5(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
iptables-restore
#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