ats Linux Bridge内联
Linux可以配置为在桥接模式下运行。 为网桥分配了两个或更多物理接口。 在接口
之间共享单个IP地址。 默认情况下,任何到达一个接口的数据包都会立即路由到另一个
网桥接口。
需要的Linux包:
bridge-utils
ebtables
在我们设置桥接模式的示例中,我们将使用本地地址192.168.1.11/24并将eth0
和eth1作为桥接接口;
brctl addbr br0 # create bridge device
brctl stp br0 off # Disable spanning tree protocol
brctl addif br0 eth0 # Add eth0 to bridge
brctl addif br0 eth1 # Add eth1 to bridge
ifconfig eth0 0 0.0.0.0 # Get rid of interface IP addresses
ifconfig eth1 0 0.0.0.0 # ditto # Set the bridge IP address and enable it
ifconfig br0 192.168.1.11 netmask 255.255.255.0 up
如果您还没有这样做,请记住添加一个默认路由,例如此路由为192.168.1.1。
ip route add default via 192.168.1.1

绿色箭头是源自客户端的数据包,红色箭头是源自源服务器的数据包。 未定向到本地地址的所有流量都将通过网桥。 我们需要分解一些流量并对其进行路由,以便将其路由到ATS。 这需要ebtables。 我们想要拦截的流是绿色1(从客户端到网桥)和红色1(源服务器到桥接)。
在此示例中,我们将拦截端口80(HTTP)流量。 我们将使用BROUTING链,因为它仅针对从外部发起并到达(转发启用)接口的数据包。 虽然看起来这将拦截所有端口80流量,但它只会影响上述两种流量。 -j redirect将数据包标记为转移到网桥而不转发,DROP目标将数据包放入正常的iptables路由中,以便我们可以对它们使用标准设备测试[1]。 虽然此示例仅处理端口80,但除端口值外,其他端口相同。 另请注意,此处的端口是从客户端和源服务器的角度来看的端口,而不是Traffic Server服务器端口。
ebtables -t broute -F # Flush the table
# inbound traffic
ebtables -t broute -A BROUTING -p IPv4 --ip-proto tcp --ip-dport 80 \
-j redirect --redirect-target DROP
# returning outbound traffic
ebtables -t broute -A BROUTING -p IPv4 --ip-proto tcp --ip-sport 80 \
-j redirect --redirect-target DROP
Traffic Server在第3层运行,因此我们需要使用iptables来正确处理IP数据包:
iptables -t mangle -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 \
-j TPROXY --on-ip 0.0.0.0 --on-port 8080 --tproxy-mark 1/1
iptables -t mangle -A PREROUTING -i eth0 -p tcp -m tcp --sport 80 \
-j MARK --set-mark 1/1
此时接口的方向性很重要。 例如,eth1是入站(客户端)接口,而eth0是出站(源服务器端)接口。 我们标记两个数据包流,以便我们可以对它们使用策略路由。 对于入站数据包,我们需要使用TPROXY强制接受数据包到外部IP地址。 对于返回出站数据包,将有一个套接字打开绑定到外部地址,我们只需要强制它在本地传递。 --on-ip的值为0,因为目标端口正在侦听并且未绑定到特定地址。 --on-port的值必须与Traffic Server服务器端口匹配。 否则它的值是任意的。 --dport和--sport从客户端和源服务器的角度指定端口。
一旦标记了流,我们就可以通过策略路由表强制它们通过环回接口在本地传递:
ip rule add fwmark 1/1 table 1
ip route add local 0.0.0.0/0 dev lo table 1
使用的标记是任意的,但它必须在iptables和路由规则之间保持一致。
在records.config中设置
proxy.config.http.server_ports value from --on-port (see below)
proxy.config.reverse_proxy.enabled 1
proxy.config.url_remap.remap_required 0
其他疑难解答
检查以确保iptables没有过滤(阻止)传入的HTTP连接。
您可以使用以下命令清除所有过滤器:
iptables -t filter --flush FORWARD
iptables -t filter --flush INPUT
这有点激烈,应该只用于测试/调试。 实时系统可能需要一些过滤器,但这超出了本文档的范围。 如果这样可以解决问题,那么您的过滤器集限制性太强。
请注意,此问题将阻止基本网桥(没有ATS)允许HTTP流量通过。
验证是否已启用IP数据包转发。
cat /proc/sys/net/ipv4/ip_forward
echo '1' > /proc/sys/net/ipv4/ip_forward
可以通过将其置于/etc/sysctl.conf中来保持此设置
net/ipv4/ip_forward=1
ats Linux Bridge内联的更多相关文章
- Linux 中 x86 的内联汇编
工程中需要用到内联汇编,找到一篇不错的文章,趁机学习下. 原文地址:http://www.ibm.com/developerworks/cn/linux/sdk/assemble/inline/ 如果 ...
- Linux C中内联汇编的语法格式及使用方法(Inline Assembly in Linux C)【转】
转自:http://www.linuxidc.com/Linux/2013-06/85221p3.htm 阅读Linux内核源码或对代码做性能优化时,经常会有在C语言中嵌入一段汇编代码的需求,这种嵌入 ...
- Neutron 理解(14):Neutron ML2 + Linux bridge + VxLAN 组网
学习 Neutron 系列文章: (1)Neutron 所实现的虚拟化网络 (2)Neutron OpenvSwitch + VLAN 虚拟网络 (3)Neutron OpenvSwitch + GR ...
- 最牛X的GCC 内联汇编
导读 正如大家知道的,在C语言中插入汇编语言,其是Linux中使用的基本汇编程序语法.本文将讲解 GCC 提供的内联汇编特性的用途和用法.对于阅读这篇文章,这里只有两个前提要求,很明显,就是 x86 ...
- GCC内联汇编入门
原文为GCC-Inline-Assembly-HOWTO,在google上可以找到原文,欢迎指出翻译错误. 中文版说明 由于译者水平有限,故译文出错之处,还请见谅.C语言的关键字不译,一些单词或词组( ...
- [翻译] GCC 内联汇编 HOWTO
目录 GCC 内联汇编 HOWTO 原文链接与说明 1. 简介 1.1 版权许可 1.2 反馈校正 1.3 致谢 2. 概览 3. GCC 汇编语法 4. 基本内联 5. 扩展汇编 5.1 汇编程序模 ...
- 嵌入式C语言自我修养 10:内联函数探究
10.1 属性声明:noinline & always_inline 这一节,接着讲 __atttribute__ 属性声明,__atttribute__ 可以说是 GNU C 最大的特色.我 ...
- ARM嵌入式开发中的GCC内联汇编__asm__
在针对ARM体系结构的编程中,一般很难直接使用C语言产生操作协处理器的相关代码,因此使用汇编语言来实现就成为了唯一的选择.但如果完全通过汇编代码实现,又会过于复杂.难以调试.因此,C语言内嵌汇编的方式 ...
- 通过调用C语言的库函数与在C代码中使用内联汇编两种方式来使用同一个系统调用来分析系统调用的工作机制
通过调用C语言的库函数与在C代码中使用内联汇编两种方式来使用同一个系统调用来分析系统调用的工作机制 前言说明 本篇为网易云课堂Linux内核分析课程的第四周作业,我将通过调用C语言的库函数与在C代码中 ...
随机推荐
- 1103. [POI2007]MEG-Megalopolis【树链剖分】
Description 在经济全球化浪潮的影响下,习惯于漫步在清晨的乡间小路的邮递员Blue Mary也开始骑着摩托车传递邮件了. 不过,她经常回忆起以前在乡间漫步的情景.昔日,乡下有依次编号为1.. ...
- net mvc中实现记录用户登录信息(记住登录效果)
现记录用户登录信息(记住登录效果) 本文讲述了使用cookies实现网站记住登录效果,效果如下: 主要实现方法,当用户选择记住登录时建立cookies保存用户名和用户密码,当用户登录不选择记住登录时, ...
- (转)获取安卓iOS上的微信聊天记录、通过Metasploit控制安卓
在这篇文章中我们将讨论如何获取安卓.苹果设备中的微信聊天记录,并演示如何利用后门通过Metasploit对安卓设备进行控制.文章比较基础.可动手性强,有设备的童鞋不妨边阅读文章边操作,希望能激发大家对 ...
- 20155314 2016-2017-2《Java程序设计》课程总结
20155314 2016-2017-2<Java程序设计>课程总结 每周作业链接汇总 预备作业1:刘子健的第一篇博客 预备作业2:刘子健的第二篇博客--有关CCCCC语言(・᷄ᵌ・᷅) ...
- --provider=docker时出现的问题
Vagrantfile类似: Vagrant.configure(") do |config| config.vm.box = "hashicorp/precise64" ...
- mysql测试数据创建
用存储过程方式创建几十几百万条测试数据,2核4G里插入1万条,约8.5秒,也就是24小时可以加大约1亿条记录. //创建库,用户create database dbTest;create user ' ...
- 拥抱.NET Core系列:MemoryCache 缓存选项 (转载)
阅读目录 MSCache项目 MemoryCacheOptions ExpirationScanFrequency SizeLimit CompactionPercentage 写在最后 在上一篇 ” ...
- 拥抱.NET Core系列:MemoryCache 缓存过期 (转载)
阅读目录 MSCache项目 MSCache提供的过期方式 绝对时间到期 滑动时间到期 自定义过期策略 过期策略组合拳 缓存过期回调 写在最后 在上一篇”拥抱.NET Core系列:MemoryCac ...
- 三层架构搭建(asp.net mvc + ef)
第一次写博客,想了半天先从简单的三层架构开始吧,希望能帮助到你! 简单介绍一下三层架构, 三层架构从上到下分:表现层(UI),业务逻辑层(BLL),数据访问层(DAL)再加上数据模型(Model),用 ...
- ubuntu 服务器配置
一.apache.svn服务器的搭建 1.安装apache2 apt-get install apache2 2.下载安装svn服务和svn-apache连接库 sudo apt-get instal ...