gre tunnel搭建
应用场景:
客户端(client)与服务器A在同一个运营商网络,应用部署在服务器B,服务器A 、B之间建立tunnel,A设置dnat,client通过访问A的8000端口来访问服务器B,B返回的响应通过tunnel到达A,A再返回给client。在dnat之上使用tunnel的原因是通过tunnel后,B接收到的请求源IP为client,而不是A。
client -----》 A 《=======tunnel=======》B
ip:192.168.1.1 ip:192.168.2.2
tunnel_ip:10.111.111.1 tunnel_ip:10.111.111.2
在A(linux) 搭建 gre tunnel过程:
1、创建gre tunnel:
/sbin/modprobe ip_gre /sbin/iptunnel add tun0 mode gre remote 192.168.2.2 local 192.168.1.1 /sbin/ifconfig tun0 10.111.111.1 /sbin/route add 10.111.111.2 tun0
2、设置iptables规则:
#这个规则很重要,某些特殊的网络会影响mtu的协商,所以要用这个规则来指写mtu /sbin/iptables -t mangle -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu #到apache端口的映射 /sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 8000 -j DNAT --to-destination 10.111.111.2:8000 #SNAT规则 /sbin/iptables -t nat -A POSTROUTING -o eth0 -p tcp -j SNAT --to-source 192.168.1.1
当B是bsd时,在B搭建 gre tunnel过程:
1、BSD 6.2的默认内核不支持ipfw的forward功能,需要重编一下kernel。找一个默认的SMP配置文件,在最后加上
options IPFIREWALL options IPDIVERT options IPFIREWALL_DEFAULT_TO_ACCEPT options IPFIREWALL_VERBOSE options IPFIREWALL_VERBOSE_LIMIT=10 options IPFIREWALL_FORWARD options DUMMYNET
编译内核重启(或者直接找一个编译好的来用)
2、做一个到napt服务器的tunnel。在BSD 4.x下,ipip tunnel工作良好,但在6.2下会有一些古怪的问题,小包通讯正常,大包就无法通过,因此要改用gre tunnel。通过下面的命令来创建tunnel,同时可以把这些命令写到/etc/rc.local,服务器启动的时候自动创建:
/sbin/ifconfig gre0 create /sbin/ifconfig gre0 tunnel 192.168.2.2 192.168.1.1 /sbin/ifconfig gre0 10.111.111.2/32 10.111.111.1
3、做转发规则。实现类似linux下ip route的功能,将从10.111.111.2发出的包,都转发给tunnel另一端的napt服务器。
/sbin/ipfw add 100 fwd 10.111.111.1 ip from 10.111.111.2 to any
也可以使用ipf来实现源地址路由的功能(不用重新编译内核)
1、创建tunnel跟上面的第2步一样
2、在ipf的rule文件添加规则:
pass out quick on bge0 to gre0:10.111.111.2 from 10.111.111.1 to any
/etc/rc.d/ipfilter restart即可
当B是linux时,在B搭建 gre tunnel过程:
1、装一个iproute的包,修改/etc/iproute2/rt_tables,添加自定义的table
201 mytunnel
2、做一条tunnel,步骤不再重复,假设得到tun0
3、添加ip route规则
#设置mytunnel表的默认路由,都指到tun0
/sbin/ip route add default dev tun0 table mytunnel mtu 1400 #添加一个规则,让所有从10.111.111.2发出的包都到mytunnel表里面去找路由 /sbin/ip rule add from 10.111.111.2 table mytunnel
gre tunnel搭建的更多相关文章
- gre tunnel
http://searchenterprisewan.techtarget.com/tip/GRE-tunnel-vs-IPsec-tunnel-What-is-the-difference Enca ...
- [转]深入理解 GRE tunnel
我以前写过一篇介绍 tunnel 的文章,只是做了大体的介绍.里面多数 tunnel 是很容易理解的,因为它们多是一对一的,换句话说,是直接从一端到另一端.比如 IPv6 over IPv4 的 tu ...
- GRE tunnel 2
1.GRE简介 通用路由封装协议GRE(Generic Routing Encapsulation)可以对某些网络层协议(如IPX.ATM.IPv6.AppleTalk等)的数据报文进行封装,使这些被 ...
- 深入理解 GRE tunnel
深入理解 GRE tunnel 时间 2012-11-08 19:05:22 A Geek's Page 原文 http://wangcong.org/blog/archives/2149 主题 ...
- Centos7 GRE Tunnel
一.关闭防火墙及selinux 二.CentOS7默认不加载gre内核模块,加载gre内核模块 # modprobe ip_gre 临时加载gre模块(重启后失效) # lsmod |grep g ...
- openstack网络(neutron)模式之GRE的基本原理
neutron网络目的是为OpenStack云更灵活的划分网络,在多租户的环境下提供给每个租户独立的网络环境. neutron混合实施了第二层的VLAN和第三层的路由服务,它可为支持的网络提供防火墙, ...
- 通用路由封装协议——GRE
一.GRE简介 通用路由封装协议GRE(Generic Routing Encapsulation)可以对某些网络层协议(如IPX.ATM.IPv6.AppleTalk等)的数据报文进行封装,使这些被 ...
- OVS-----CentOS7上搭建基于Open vSwitch的VxLAN隧道实验
一.关于VXLAN VXLAN 是 Virtual eXtensible LANs 的缩写,它是对 VLAN 的一个扩展,是非常新的一个 tunnel 技术,在Open vSwitch中应用也非常多. ...
- openvSwitch tunnel
ovs tunnel 实验拓扑 实验拓扑搭建基础脚本 #vbox虚拟机1 ip netns add left ip link add name veth1 type veth peer name sw ...
随机推荐
- bzoj 3944 杜教筛
题目中要求phi和miu的前缀和,利用杜教筛可以推出公式.我们令为 那么有公式 类比欧拉函数,我们可以推出莫比乌斯函数的和公式为 (公式证明懒得写了,主要核心是利用Dirichlet卷积的性质 ph ...
- NOIP2017 D2T3列队
这题我改了三天,考场上部分分暴力拿了50,考完试发现与正解很接近只是没写出来. 对于每一行和最后一列建n+1颗线段树,维护前缀和. 复杂度qlogn 假如你移动一个坐标为(x,y)的人,你要将第x行线 ...
- UVA11468 Substring --- AC自动机 + 概率DP
UVA11468 Substring 题目描述: 给定一些子串T1...Tn 每次随机选择一个字符(概率会给出) 构造一个长为n的串S,求T1...Tn不是S的子串的概率 直接把T1...Tn建成AC ...
- px,dp,sp以及像素密度
px px(pixel): 像素,是指在由一个数字序列表示的图像中的一个最小单位.在Android中,无论屏幕密度多少,一个像素单位对应一个屏幕像素单位,不会根据屏幕密度自动缩放,因此一般不推荐使用p ...
- trie--- POJ 3764 The xor-longest Path
The xor-longest Path Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 5453 Accepted: 1 ...
- 第一章 -- Java性能调优概述
写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------主要内容包括: 1.概述 2 ...
- AMScrollingNavbar框架(自动隐藏导航栏)使用简介
AMScrollingNavbar框架是一个可以上拉隐藏导航栏和下拉显示导航栏的框架,这个开源框架的调用也很简单,本章节就给大家介绍一下这个框架的用法. 一.下载及导入框架 AMScrollingNa ...
- 吐血推荐250部必看电影下载 IMDB TOP 250 download
中文名: IMDB Top 250合辑 TLF-MiniSD收藏版英文名: IMDB Top 250 TLF-MiniSD Collection版本: (更新至TOP119)[MiniSD]发行日期: ...
- Spring工具类ToStringBuilder用法简介
比如说我们需要打印某个方法的User参数对象 package test; /** * * @author zhengtian * @time 2012-6-28 */ public class Use ...
- 使用Redisson实现分布式锁
原文:https://www.jianshu.com/p/cde0700f0128 1. 可重入锁(Reentrant Lock) Redisson的分布式可重入锁RLock Java对象实现了jav ...