标签: ipsec

如何编写VPN服务器

我决定用Java编写自己的轻量级VPN服务器.从编程的角度来看,在我看来,VPN服务器只是一个传递代理,可以加密来自客户端的流量,并在服务器上对其进行解密.有人能指出我写这种服务器的骨架吗?

我知道有很多开箱即用甚至是开源的,但不幸的是,即使我知道几种Web编程语言,我看到的C代码示例也没有以我能理解的方式记录/构建.

我想象的我需要的部分是:

  • 客户端对象的线程工厂
  • 客户端的套接字连接器
  • 创建IPSec认证头的方法(AH)
  • 创建IPSec封装安全负载(ESP)的方法
  • 互联网安全协会和密钥管理协议(ISAKMP)的东西
  • Internet密钥交换(IKE)
  • PKI证书验证模块
  • 证书库(SQLLite)
  • Oakley密钥生成(适用于IKE和ISAKMP)
  • 一些反重播防止包

我计划使用通用模块(并创建适配器)的部分是Cryptographic Algorythms(尽管AES看起来像DES/3DES - Noobs这样的窗口,但最好是AES)

如果有人可以为IPSec VPN服务器所需的部件添加更多细节,请随时提供.因为有必要从我可以告诉的旧Linux硬件上运行它,服务器应该是IPSec而不是SSLVPN热点.目标平台是一个旧的1.5 Ghz intel盒子,我用2 GB的DDR2 ram,镜像的100 GB硬盘和2 GB的Nic.

从好的方面来看,因为有很多类型的客户端VPN,我很确定不需要为我的需求制作一个.

java vpn ipsec

26
推荐指数
1
解决办法
2万
查看次数

在Android中以编程方式创建L2TP/IPSec VPN连接

我读到Android >=4不再包含VPN连接配置文件(例如:),L2TP/IPSec并且只提供了一个基本处理程序VpnService.

现在我们必须自己实现一切,是否有任何提供基本L2TP/IPSec通信代码的java库?

我希望能够使用此库,将其与VPN服务集成并在Android应用程序中使用它.

在此先感谢大家.

java vpn android ipsec l2tp

15
推荐指数
0
解决办法
1625
查看次数

Linux中的KLIPS和Netkey IPSEC堆栈之间的区别

我知道两者都是Linux内核中的IPSEC堆栈,并且KLIPS较旧,Netkey较新,但除此之外我没有找到其他文档.我想知道它们之间真正的技术差异.这里有谁可以告诉我差异或分享一些文档来源?

任何帮助,将不胜感激.

linux ipsec

13
推荐指数
2
解决办法
8415
查看次数

原生Android VPN以编程方式

存在这个问题的变体,但我似乎无法理解某些东西.

如果您在ICS/4.0中的功能结束时阅读,请注意

企业还可以利用平台内置的标准VPN客户端来访问L2TP和IPSec协议.

我的假设是,因为它不在"开发人员"部分下,所以我们没有获得除VpnService API之外的开发人员API访问.我看过ToyVPN,这只是无用的,因为我需要一个真正的IPSec IKEv1 XAuth连接来连接到企业防火墙.

我找到了几个需要root和VPNCilla的解决方案,虽然我没有能够成功建立连接但显然没有.

这是否意味着除非我们在Java中实现协议或使用NDK(如StrongSwan与IKEv2一样),否则实际上无法以编程方式为IPSec IKEv1 XAuth网关/防火墙创建配置文件或连接到IPSec IKEv1 XAuth网关/防火墙?

vpn enterprise android ipsec xauth

11
推荐指数
1
解决办法
2602
查看次数

无法在iOS上使用NEVPNManager创建IPSEC连接

我正在尝试在我的iOS应用程序中创建IPSEC VPN连接.

我设置配置的代码如下所示:

-(void)setUpConfig
   NEVPNManager *manager = [NEVPNManager sharedManager];

    int status = manager.connection.status;

    if (status == NEVPNStatusConnected) {
        manager.connection stopVPNTunnel];
    } else {
        [manager loadFromPreferencesWithCompletionHandler:^(NSError *error) {
            NSError *startError;

        if (error) {
            NSLog(@"Load config failed [%@]", error.localizedDescription);
            return;
        }

        NEVPNProtocolIPSec *p = (NEVPNProtocolIPSec *)self.manager.protocol;
        if (!p) {
            p = [[NEVPNProtocolIPSec alloc] init];
        }

        NSString *filePath = [[NSBundle mainBundle] pathForResource:@"base64_encoded_cert" ofType:@"txt"];
        NSString *certBase64String = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:NULL];
        NSString *certPassword = @"cert_import_password";

        NSString *vpnUsername = @"myUsername";
        NSString *vpnPassword = @"myPassword";
        NSString …
Run Code Online (Sandbox Code Playgroud)

vpn frameworks objective-c ipsec ios8

10
推荐指数
1
解决办法
5131
查看次数

如何在加密之前在tcpdump中查看传出的ESP数据包

我有两个终端系统之间有Ipsec隧道的设置.当我在传出接口上捕获数据包时,例如eth0,我只能看到加密的ESP数据包从我的系统中传出.我必须去查看接收端以查看实际传输的内容,即在接收端我可以在解密后看到数据包.类似地,接收者发送的确认.它在linux内核中是如何工作的?有没有办法在加密之前在tcpdump中查看发送方的数据包?

linux encryption ipsec tcpdump

9
推荐指数
1
解决办法
1万
查看次数

AWS的站点到站点OpenSWAN VPN隧道问题

我们在两个AWS区域和我们的colo工具之间有一个带有Openswan的VPN隧道(使用AWS的指南:http://aws.amazon.com/articles/5472675506466066).常规使用工作正常(ssh等),但我们在所有区域之间的隧道上遇到了一些MySQL问题.在Linux服务器上使用mysql命令行客户端并尝试使用MySQL Connector J进行连接它基本上会停止...它似乎打开了连接,但随后被卡住了.它不会被拒绝或任何东西,只是挂在那里.

在最初的研究认为这是一个MTU问题,但我已经搞砸了很多,没有运气.

与服务器的连接工作正常,我们可以选择要使用的数据库等,但是使用Java连接器后,看起来Java客户端在进行查询后没有收到任何网络流量.

当在linux上的MySQL客户端中运行select时,我们可以在它死之前获得最多2或3行.

有了这个说法,我还在AWS端有一个单独的openswan VPN,用于客户端(mac和iOS)vpn连接.一切都通过客户端VPN很好地工作,一般看起来更稳定.我注意到的主要区别是静态连接使用"隧道"作为类型,客户端使用"传输",但是当将静态隧道连接切换到传输时,它说有30个打开的连接并且不起作用.

我对OpenSWAN很新,所以希望有人可以帮我指出让静态隧道正常工作以及客户端VPN的正确方向.

一如既往,这是我的配置文件:

用于BOTH静态隧道服务器的ipsec.conf:

# basic configuration
config setup
# Debug-logging controls:  "none" for (almost) none, "all" for lots.
# klipsdebug=none
# plutodebug="control parsing"
# For Red Hat Enterprise Linux and Fedora, leave protostack=netkey
protostack=netkey
nat_traversal=yes
virtual_private=
oe=off
# Enable this if you see "failed to find any available worker"
# nhelpers=0

#You may put your configuration (.conf) file in the "/etc/ipsec.d/" and uncomment this.
include /etc/ipsec.d/*.conf
Run Code Online (Sandbox Code Playgroud)

VPC1-to-colo tunnel …

mysql linux vpn ipsec amazon-web-services

8
推荐指数
1
解决办法
5589
查看次数

shrewsoft命令行界面,用于连接和终止ubuntu上的vpn

Shrewsoft [ 1 ]提供了一个命令行界面,用于自动设置vpn隧道,无需任何用户干预,例如使用以下命令

ikec -u username -p password -r configuration -a

有没有办法检测连接尝试是否成功,例如通过读取实时日志,以及如何使用命令行在一段时间后终止vpn隧道.任何帮助都会很明显.

shell ubuntu vpn ipsec

8
推荐指数
1
解决办法
4537
查看次数

你能以编程方式在tcp连接上使用IPsec而不是用户级SSL/TLS吗?

我不是要设置VPN.我想保护可能在用户模式或内核守护进程中实现的服务之间的tcp会话.如果不是内核要求,TLS可能就足够了.

第一个目标是Linux; 如果有任何指针,用户或内核模式中的任何示例代码的指针都会花花公子.

我发现的所有现有示例都是关于创建VPN并在受保护的目录中使用一堆静态配置,所有这些我都想避免.我想我会在收听之前看看setsockopt的东西来定义键,但到目前为止还没有发现任何东西.

ssl ipsec

8
推荐指数
1
解决办法
138
查看次数

在Android上以编程方式设置VPN

我需要在android上以编程方式实现VPN IPsec,即连接,断开我自己的应用程序内的按钮点击,而无需明确询问用户.遇到了VpnService(https://developer.android.com/reference/android/net/VpnService.html)及其实现,即toyvpn(https://android.googlesource.com/platform/development/+/master/samples/ ToyVpn/src/com/example/android/toyvpn /)

一些线程已经在讨论相同的问题:

但没有找到任何满意的答案.我推断的是,要么我必须自己编写整个实现.或者关于Android中隐藏API的内容.

vpn android ipsec

7
推荐指数
0
解决办法
1843
查看次数