用pf透明地将流量从一台机器转到另一台机器上的缘起及实现方式对比
一、缘起
miscweb1(172.16.88.228)的系统近段时间经常死掉,没有查到最终原因,现在的
所以通过网络层的策略透明地实现,将流量从miscweb1上转到新机器上(用户仍然访问 miscweb1,但实际上是由新机器提供的服务),将是一个简便易行、修改最小的方式。
二、用PF实现透明转发的几种方式及对比
1、miscweb1代理转发
在miscweb1上: . 起用pf . 起用三层数据包转发功能(net.inet.ip.forwarding=1) . 增加下面的pf策略
int_if="bce0" new_dump="172.16.88.116" rdr pass on $int_if proto tcp from any to any port 9999 -> $new_dump nat pass on $int_if from any to $new_dump port 9999 -> ($int_if)
rdr数据包进入(ip_input)miscweb1时,修改目标地址到新机器上,因为起用了三层转 发,它发现目标地址是不是本机的地址(而是新机器的IP),随即通过int_if转发出去(ip_forward)。
nat在数据包即将从int_if发出去之前(ip_output),将源地址改成int_if的接口IP地址,这样新机器 看到的请求都是来源于miscweb1,这样,不需要对新机器做任何修改,回来的流量都会通过miscweb1。
在新机器上: 不需要做任何修改
特点: . 请求及返回的流量都经过miscweb1,相当于做了代理 . 新机器上显示请求都是来源于miscweb1,看不到真实的客户端地址 . 只修改了miscweb1,新机器及客户端不需要做任何修改
2、miscweb1及新机器协同实现代理转发
在miscweb1上:
. 起用pf . 起用三层数据包转发功能(net.inet.ip.forwarding=1) . 增加下面的pf策略
int_if="bce0" new_dump="172.16.88.116" rdr pass on
$int_if proto tcp from any to any port 9999 ->
$new_dump
rdr数据包进入(ip_input)miscweb1时,修改目标地址到新机器上,因为起用了三层转 发,它发现目标地址是不是本机的地址(而是新机器IP),随即通过int_if转发出去(ip_forward)。
在新机器上: . 起用pf . 增加下面的pf策略
int_if="bce0" old_dump="172.16.88.228" pass in quick on $int_if reply-to ($int_if $old_dump) proto tcp from any to any port 9999
reply-to策略在收到数据包时,记住回包时的转发地址,回给misceweb1,因为msicweb1是用 rdr进行转发,需要返回的数据也通过它,如果没有这策略,新机器会将这些回包直接发给缺省 网关。
特点: . 请求及返回的流量都经过miscweb1,相当于做了代理 . 新机器上显示请求能看到真实的客户端地址 . miscweb1和新机器都需要修改,协同操作,客户端不需要修改
3、miscweb1上单臂进行单方向的流量转发
在miscweb1上:
. 起用pf . 起用三层数据包转发功能(net.inet.ip.forwarding=1) . 增加下面的pf策略
int_if="bce0" new_dump="172.16.88.116" pass in quick on $int_if route-to ($int_if $new_dump) proto tcp from any to any port 9999 no state
route-to策略将包直接转发给新机器,注意后面的"no state",这个让pf对这个策略不生成状态,也就不 按状态表转发,每个符合这条规则的包都将进行规则匹配。原因是freebsd使用的pf落后于openbsd很多 ,不支持sloppy(松散地记录状态)记录状态方式,这要在流量单臂通过(回来的流量不通过时),导致后续 的包不能通过状态表的严格检查而中断连接。
在新机器上:
. 修改rc.conf.local,将miscweb1的ip(172.16.88.228)绑定在新蛋机的loopback接口上
特点: . 客户发过来的包都经过miscweb1,新机器回的数据包直接返回给客户端,不通过miscweb1 . 新机器上能看到客户端的真实IP . miscweb1和新机器都需要修改,协同操作,客户端不需要修改
三、其它事项
freebsd上起用pf的步骤
1、加载pf相关的内核模块
运行命令: kldload pf
修改起动配置文件(/boot/loader.conf)增加下面的配置行,让机器每次起动自动加载pf模块): pf_load="YES"
2、起用pf,freebsd下pf缺省没有起用pf(disabled)
运行命令: pfctl -e
修改起动配置文件(/etc/rc.conf.local),增加下面一行,让机器每次起动自动起用pf功能: pf_enable="YES"
用pf透明地将流量从一台机器转到另一台机器上的缘起及实现方式对比的更多相关文章
- TCP/IP(三)数据链路层~2
一.局域网 1.1.局域网和以太网的区别和联系 局域网:前面已经介绍了,其实就是学校里面.各个大的公司里,自己组件的一个小型网络,这种就属于局域网. 以太网:以太网(Ethernet)指的是由Xero ...
- Networking 基本术语/概念
目录 文章目录 目录 基本概念 冲突域(Collision Domain) 广播域(Broadcast Domain) 冲突域与广播域的区别 IP 网络数据传输方式 物理网络设备 发展简述 中继器(R ...
- PF防火墙
PF防火墙 点击认领 PF防火墙 ( 全称:Packet Filter ) 是 UNIX LIKE 系统上进行 TCP/IP 流量过滤和网络地址转换的软件系统.PF 同样也能提供 TCP/ ...
- 大约PF_RING/Intel 82599/透明VPN一些事
接近崩溃的边缘,如今,在医院这篇文章地方的想法,小病,我宁愿不吃药瓶.一台笔记本电脑,但无法上网,我不称职.想知道的东西.唯一可用3G,不开的热点.由于没人给我报销流程.这个周末,我只有一天,由于下雨 ...
- WebP 在减少图片体积和流量上的效果如何?MIP技术实践分享
作者 | Jackson 编辑 | 尾尾 不论是 PC 还是移动端,图片一直占据着页面流量的大头,在图片的大小和质量之间如何权衡,成为了长期困扰开发者们的问题.而 WebP 技术的出现,为解决该问题提 ...
- hadoop 透明加密
hadoop 透明加密 hadoop 透明加密 kms transparent 2015年04月09日 18:12:20 糖糖_ 阅读数:12248 标签: transparenthadoop kms ...
- Linux下安装流量监控工具iftop
在Linux系统中,top命令可以查看系统资源包括内存,CPU占用信息,查看和探测网络状态可以使用netstat,nmap等工具,实时流量监控可以使用iftop,下面是在CentOS7系列系统上安装i ...
- Qt——透明无边框Widget的bug
Experience 最近在封装一些类的时候,打算做一个窗口框架,能实现拖动.缩放.最大最小化.基本样式等功能,可不慎遇见一件无比蛋疼的事情,QWidget最小化后再恢复正常界面,最小化按钮居然仍处于 ...
- 定制Android透明按钮
自己在学习和做例子的过程中,常常会需要按钮,由于系统自带按钮样式不太好看,所以需要我们自己来定制项目得按钮,我常常采用2中方法: 1.是制作9-patch的图片,这样能够匹配文字内容的长短. 2.是指 ...
随机推荐
- VC、MFC中设置控件的背景色、标题、字体颜色、字体要注意的地方[转]
在MFC中设置控件的背景色.字体.字体颜色.标题等属性主要是利用OnCtlColor函数来实现. 如: HBRUSH CAlarm::OnCtlColor(CDC* pDC, CWnd* pWnd, ...
- Web性能优化之图片优化
http://get.jobdeer.com/6513.get 其中APNG和WebP格式出现的较晚,尚未被Web标准所采纳,只有在特定平台或浏览器环境可以预知的情况下加以采用,虽然均可以在不支持的环 ...
- 【转】深入浅出REST
转自:http://www.infoq.com/cn/articles/rest-introduction 不知你是否意识到,围绕着什么才是实现异构的应用到应用通信的“正确”方式,一场争论正进行的如火 ...
- Visual Studio 2012 使用SvcUtil在MVC4客户端引用WCF服务
已创建服务. 若要测试此服务,需要创建一个客户端,并将其用于调用该服务.可以使用下列语法,从命令行中使用 svcutil.exe 工具来进行此操作: svcutil.exe http://localh ...
- UVALive 4221 Walk in the Park 扫描线
Walk in the Park 题目连接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemi ...
- Looksery Cup 2015 D. Haar Features 暴力
D. Haar Features Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/549/prob ...
- Codeforces Gym 100463D Evil DFS
Evil Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100463/attachments Descr ...
- [连载]JavaScript讲义(05)--- 数据处理
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamFja2ZydWVk/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA ...
- 2013 Fench Open quart-semifnl press conference
http://v.youku.com/v_show/id_XNTY3NTAwOTA4.html?firsttime=179 Novak, very congradutlations, to rea ...
- innobackupex 恢复实验
[root@localhost backup]# pwd /backup [root@localhost backup]# ll 总用量 drwxr root root Jul : basebacku ...