iptables防火墙详解(三)
来源:互联网 发布:thumbnails java 编辑:程序博客网 时间:2024/06/14 07:34
linux 高级路由 策略路由(mangle表) lartc(linux advanced routing and traffic control)http://www.lartc.org# rpm -qa |grep iproute--iproute工具包软件iproute-3.10.0-74.el7.x86_64ip命令就属于iproute软件包ip addrip neighip ruleip routeip tunnel==============================================# ip rule list0:from all lookup local 32766:from all lookup main 32767:from all lookup default# cat /etc/iproute2/rt_tables## reserved values#255local254main253default0unspec## local##1inr.ruhep# ip route list/show table local/255# ip route list/show table main/254# ip route list/show table default/253=============================================================50 内网用户 ---------》路由器1--》 猫1 (快网络) 50 内网用户 ----------》路由器2 --》猫2 (慢网络)应用实例1: ---------》路由器1--》 猫1 (快网络) | |100 内网用户 ----linux路由 | | ---------》路由器2 --》 猫2 (慢网络)linux路由器有两条上网线路,一个快,一个慢有这样的需求:内网用户需要给钱共享上网,有人给钱多,需要快线路,有人给钱少,需要快线路,这样的话,我们就可以使用策略路由了模拟的话使用下面的图:172.16.25.2 ----------》VM2(连到br0) 线路一 |192.168.100.128 |172.16.25.1 br0 VM1(连到virbr1)----linux路由192.168.100.1 virbr1 公网 |192.168.101.1 virbr2 | ---------》VM3 (连到vribr2) 线路二192.168.101.128 上图架构中:1.把VM1网关指向192.168.100.12,把linux路由器的网关指向172.16.25.23.linux路由打开ip_forward4,这四台的iptables都关闭先测试:在VM1上ping一个外网IP(如 ping 8.8.8.8),这个时候在VM2和VM3上抓包,但只能在VM2上抓到相关的包,表示数据包从VM2出去# tcpdump -i eth0 icmp and src 192.168.100.128然后通过下面的策略让VM1ping的包从VM3出去下面就是在linux路由上进行操作来实现:操作命令:echo 200 t1 >> /etc/iproute2/rt_tablesip rule add from 192.168.100.128 table t1 ip route add default via 192.168.101.128 dev virbr2 table t1ip route flush cache--如果加错了规则,想删掉,就使用ip rule del table t1删除规则,再ip route del default via 192.168.101.128 dev virbr2 table t1删除t1路由表的网关操作完后,测试1,在内网ping 8.8.8.82,在两个模拟外网路由器的机器上抓包# tcpdump -i eth0 icmp and src 192.168.100.1283,结果这次只能在VM3上抓到包,OK应用实例2:172.16.25.2 ----------》VM2(连到br0) 线路一 |192.168.100.128 |172.16.25.1 br0 VM1(连到virbr1)----linux路由192.168.100.1 virbr1 公网 |192.168.101.1 virbr2 | ---------》VM3 (连到vribr2) 线路二192.168.101.128 要实现不同类型的包走不同的线路:如80的访问走一条线,其它的走另外一条线路实现不同类型的包的策略路由,就要借助于iptables的mangle表的set mark功能1,在linux路由器上使用策略路由实现# iptables -t mangle -A PREROUTING -i virbr1 -p tcp --dport 80 -j MARK --set-mark 1--把从内网进来要出去的80的包打标记为1# echo 100 http.out >> /etc/iproute2/rt_tables --建一张叫http.out的表,表编号100# ip rule add fwmark 1 table http.out pref 20000 --指定打了标记为1的所有包都走http.out这张路由表,并指定优先级为20000# ip route add default via 192.168.101.128 dev virbr2 table http.out --指定http.out表从virbr2出去找192.168.101.128# ip route flush cache--刷新路由缓存2,测试测试一:在内网192.168.100.128客户端上elinks 8.8.8.8在模拟两个线路的机器上都执行下面的命令tcpdump -i eth0 tcp port 80--只有线路二上能抓到包,OK测试二:在内网192.168.100.128客户端上ping 8.8.8.8在模拟两个线路的机器上都执行下面的命令tcpdump -i eth0 icmp--只有线路一上能抓到包,OK--从上面就可以看到出去的80端口的包和其它的包走的路线不一致iptables的mangle表打标记的应用举例:1,刚讲的例二2,iptables的mangle打标记+tc 做流量控制(这个课程不讨论,有兴趣上网去搜)3,iptables的mangle打标记+LVS 做负载均衡============================================================================问题:要求:写出这个电信用户访问到双线web服务器时的IP变化过程(只写源IP,目标IP,和做SNAT还是DNAT等)你觉得有没有问题?192.168.100.100 192.168.2.100电信用户 网通用户 | |192.168.100.1 | | 192.168.2.1 电信用户家里路由器 网通用户家里路由器 51.1.2.3 | |61.1.2.3 |www.abc.com | | |71.1.2.3 | |81.1.2.3 机房电信路由器 机房网通路由器10.1.1.1 | |172.16.2.1 | | | | 10.1.1.100 eth0 双线web服务器 eth1172.16.2.100实验环境:精简一点可以使用下面的四台虚拟来做,并且要注意宿主机(真实机)不能在这里扮演角色,因为宿主机和任何虚拟机都是可以直接通的下图中,电信客户端和网通客户端就没有使用去模拟路由器NAT,直接用一台虚拟机用两个网卡来模拟两个角色172.16.25.2 br0 客户端 virbr1192.168.100.129 | | | | | |172.16.25.3 br0 virbr1192.168.100.128 机房电信路由器1 机房网通路由器2192.168.101.128 virbr2 virbr3192.168.102.128 | | | | 192.168.101.129 virbr2 双线服务器 virbr3 192.168.102.129准备好上图架构的ip后第一步:在双线web服务器安装并启动httpd,做一个主页方便测试# yum install httpd httpd-devel# echo "main page" > /var/www/html/index.html# systemctl start httpd第二步:电信路由器上做dnat(还要打开ip_forward) # systemctl restart firewalld.service# firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.101.129网通路由器上做dnat(还要打开ip_forward) # systemctl restart firewalld.service# firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.102.129第三步:在双线web服务器上使用策略路由实现# ip rule0:from all lookup local 32766:from all lookup main 32767:from all lookup default # echo 100 dianxin >> /etc/iproute2/rt_tables # echo 200 wangtong >> /etc/iproute2/rt_tables # ip rule add from 192.168.101.129 table dianxin# ip rule add from 192.168.102.129 table wangtong# ip route add default via 192.168.101.128 table dianxin# ip route add default via 192.168.102.128 table wangtong第四步:客户端elinks测试,两个线路都ok
阅读全文
0 0
- iptables防火墙详解(三)
- Linux防火墙iptables详解(三)--iptables命令详解和举例
- iptables防火墙详解(一)
- iptables防火墙详解(二)
- Linux 防火墙iptables 学习笔记(三)iptables命令详解和举例
- Linux防火墙iptables学习笔记(三)iptables命令详解和举例
- Linux 防火墙iptables 学习笔记(三)iptables命令详解和举例
- Linux 防火墙iptables 学习笔记(三)iptables命令详解和举例
- Linux防火墙iptables学习笔记(三)iptables命令详解和举例
- Linux防火墙iptables学习笔记(三)iptables命令详解和举例
- Linux防火墙iptables学习笔记(三)iptables命令详解和举例
- Linux防火墙iptables学习笔记(三)iptables命令详解和举例
- Linux防火墙iptables学习笔记(三)iptables命令详解和举例
- Linux防火墙iptables学习笔记(三)iptables命令详解和举例
- Linux 防火墙iptables (三)iptables常用基本案例
- Linux防火墙 配置文件 iptables详解 (补充)
- iptables防火墙配置详解
- iptables防火墙配置详解
- 多么痛的领悟---关于RMB数据类型导致的元转分分转元的bug
- iptables防火墙详解(二)
- 进程间通信(二)有名管道
- Unity3D开发之3D按钮的声音播放
- Mybatis组件与其生命周期
- iptables防火墙详解(三)
- 数组和遍历
- 贝叶斯算法详解
- 浏览器的工作原理
- Cloudera Manager 5 Overview
- linux valgrind调试工具
- ping命令执行过程详解
- java 缓存
- C语言里面的&和*的理解