单独一台机器测试OpenVPN加密隧道的问题和解决

其实这篇文章和OpenVPN的关系倒不是很大,只是通过OpenVPN测试时暴露出的问题。这篇文章里面倒是包含了很多IP路由以及conntrack的细节内容。

有时候,为了节省机器,我希望在一台设备上模拟多个设备,当然,使用网络命名空间是可以的,但是我的内核版本不支持...所以我希望使用纯协议栈的方法来
做到。此时需要解决的问题并不比程序员在编写多线程程序时要少。你要知道什么是共享的,什么是独享的,什么时候什么字段会被什么模块修改...诸如此类,
不一而足...
      
先不谈OpenVPN,仅仅考虑一台机器上两个网卡的情况,如果你ping一个网卡上配置的地址,事实上结果是不会经过这个网卡的,因为在路由模块中,协
议栈会发现这事实上是自己和自己通信,因此会直接bypass掉真实网卡。现在加入OpenVPN,我希望的是数据包通过下面这个图上所标示的路径发出
去,但事实上没有,原因的注释也在图中:
无论你怎么用OpenVPN进行隔离,协议栈还是会发现tun1上的IP是本地IP之一。事实
上,conntrack1和conntrack2也是相同的保存在同一处的同一个conntrack。虽然是同一个conntrack,但是却在同一台机
器上被处理了两次,是为conntrack1和conntrack2。虽然这没有什么问题,但是我不是把conntrack模块给改了吗?改了之后就有问
题了,因为我把route信息cache在了conntrack结构体中,这样一来,上面conntrack1和conntrack2的路由信息明显不可
能是同一个,所以就会有问题。在这个场景下,不能用conntrack来cache路由信息。
       上图所示,错误原因也已经给出了,一些额外的分析也做过了,那么正确的方式应该是什么样的呢?下图给出:

时间: 2024-10-15 05:36:35

单独一台机器测试OpenVPN加密隧道的问题和解决的相关文章

CAS+ tomcat 在同一台机器测试如何启动动多个tomcat笔记(三)

首先假定你的机器上已经安装配置好了一个tomcat,我们先拷贝这个tomcat到另外一个目录或是改一个名字放在同一个目录也行,然后配置新的tomcat的环境变量,在环境变量中已经存在如下图配置好的tomcat的环境变量 现在我们在新建一个新的tomcat的环境变量如下图 然后到新的tomcat的D:\apache-tomcat-6.0.29-client\bin目录下,修改该目录下的所有.bat后缀的文件中的CATALINA_HOME修改为CATALINA_HOME2(就是我们新配置的变量名),

FastDFS简单安装配置-----同一台机器测试

环境:Ubuntu 14.04.1  FastDFS_v5.04 ip:10.1.20.145 1.  安装libfastcommon 下载地址:https://github.com/happyfish100/libfastcommon.git 在/usr/fastdfs目录下解压.编译: [email protected]: /usr/fastdfs# unzip unzip libfastcommon-master.zip cd libfastcommon-master ./make.sh

大开测试:性能- 如何解决负载均衡将压力作用到一台机器(连载15)

7.15  如何解决负载均衡将压力作用到一台机器 1.问题提出 如由IP地址为192.168.1.30.192.168.1.31.192.168.1.32的3台机器组成的Apache.Tomcat集群和负载均衡系统,发现客户端发出请求后,都将请求发送到了IP为192.168.1.30的机器上,请问这是为什么呢? 2.问题解答 随着互联网络技术的飞速发展,越来越多的应用已经从最早的单机操作变成基于互联网的操作.由于网络用户数量激增,网络访问路径过长,用户的访问质量容易受到严重影响,尤其是当用户与网

用Netcat,SSH构建的IP层加密隧道搭建VPN

[关于题外话在最后] 写作本文主要基于两点,首先是因为我前段时间写了几篇关于VPN的新解,收到了很多的邮件反馈,我也思考了很多,另一个方面是因为很多人问我怎么用QQ,P2P搭建一个IP层的VPN,我的回答是"我也不知道".我确实不知道,根本就没有试过,只是有个这样那样的想法...我主要是没有能力去Hack这些非Linux上的东西...所以说,我写这篇文章,用UNIX的方法"将多个小工具结合起来"实现我的那些没有实现的想法,抛砖引玉一下. 声明: 本文没有技术含量,甚

ssh两台机器建立信任关系无密码登陆

在建立信任关系之前先看看基于公钥.私钥的加密和认证. 私钥签名过程 消息-->[私钥]-->签名-->[公钥]-->认证 私钥数字签名,公钥验证 Alice生成公钥和私钥,并将公钥发送给Bob. Alice用自己的私钥生成签名,也就是加密. Alice将签名的信息发送给Bob. Bob用Alice的公钥进行解密,验证签名真伪. 公钥加密过程 消息-->[公钥]-->签名后的消息-->私钥-->解密后的消息 公钥加密,私钥解密 Bob生成自己的公钥和私钥,并将

单台机器部署zookeeper集群

做测试没有多台机器又不想做虚拟机, 通过单独配置zoo.conf实现单机器部署zookeeper集群. 1. 集群配置文件编写 zookeeper服务1: clientPort=2181 dataDir=/var/data/zookeeper/1.machine tickTime=2000 initLimit=5 syncLimit=2 server.1=127.0.0.1:20881:30881 server.2=127.0.0.1:20882:30882 server.3=127.0.0.1

如何确定Hadoop守护进程分别会在哪台机器上运行

经过一段时间的配置,Hadoop环境总算运行起来了,但是呢,为何主节点就没有跑tasktracker和datanode进程,slave节点也没有跑secondary进程,Hadoop是如何控制的呢? 经过看权威指南(267页)和跟群里同学讨论,还有自己测试,最终确定: tasktracker和datanode这两个守护进程 —— 只会在conf/slaves文件里指定的那些节点上运行 secondarynamenode 这个守护进程 —— 只会在conf/masters文件里指定的那个节点上运行

用pf透明地将流量从一台机器转到另一台机器上的缘起及实现方式对比

下面是也是我在12580工作时发生的事情,重新记录并发出来.这种特殊需求很考 验PF的功底.在新旧系统并存,做重构的时候有时很需要这种救急的作法.一.缘起miscweb1(172.16.88.228)的系统近段时间经常死掉,没有查到最终原因,现在的 策略是将其中一个端口上的服务摘出来,以确认问题,所以新准备了另一台机器 (172.16.88.116),由于miscweb1上还有别的服务,所以不能通过切换域名到新机器的 方式进行测试,另外也不方便让所有调用待迁移服务的部门手工改程序调用新的机器,这

Linux CentOS7 两台机器之间免输入密码相互登录(密钥对认证)

Linux CentOS7 两台机器之间免输入密码相互登录(密钥对认证) 两台机器为: 主机名:fxq-1,IP:192.168.42.181 主机名:fxq-2, IP:192.168.42.182 w命令可以查看当前登录用户的信息 [[email protected] ~]# w  23:59:42 up 12 min,  1 user,  load average: 0.00, 0.07, 0.11USER     TTY      FROM             [email prot