当前位置:首页 » 操作系统 » vpn客户端源码

vpn客户端源码

发布时间: 2022-08-22 20:42:45

㈠ 客户端在内网的话,怎么拨号“远程访问VPN”,其原理是

可以,不需要弄什么映射,分两种情况吧。

  1. pptp、l2tp、ipsec都会部分修改数据包的网络层和传输层,所以要求接入路由器和接收路由器支持对应协议。

  2. ssl由于只是数据部分加密,任何设备都支持。

㈡ VPN虚拟机

  1. 可以用openvpn

  2. 在虚拟机里面的系统安装openvpn服务器

  3. 真实电脑外面安装openvpn客户端

  4. 虚拟机网卡桥接模式。

㈢ 什么是vpn客户端

VPN虚拟专网是利用公共网络资源为用户构成专用网的一种业务,可被当做专网使用和管理,拥有同专有网络一样的安全性和可管理性。VPN虚拟专网的公共网络提供了高的扩展性和灵活性,成本大大低于自建专网的情形。

㈣ 查看PPTP,L2TP,IPSec和OpenVPN的区别的源代码

前面的 和后面的没关系

pptp 普通的经过加密的vpn 加密的内容可以被破解

L2tp ipsec 经过加密的vpn 比pptp更强 有没有破解就不清楚了

openvpn 国外的开源项目,有没有被破解只有破解的人知道恶劣

㈤ 服务器简单,可怎么做VPN客户端

第一步:点击右下角的网络图标,然后选择“打开网络和共享中心”,再选择“更改适配器设置”。
第二步:在“菜单栏”点击“文件”, 如果没有看到菜单栏,请按下键盘上的Alt按键,即可显示菜单栏,选择“新建传入连接”(这个比较的重要)。
第三步:勾选选择允许使用VPN连接到本机的用户,如果用户还未创建,请点击“添加用户”。
选择其他用户连接VPN的方式,这里选择“通过Internet”,如果你的显示多项,请选择正确的方式。
第四步:接着设置网络参数,如果对方连接后可以使用本地网络的DHCP服务器,那么可以跳过此设置。如果本地网络没有DHCP服务器,必须就必须设置一下,请点击“Internet协议版本4(TCP/IP)”,点“属性”按钮,选择“指定IP地址”,比如我的IP是192.168.1开头的,那么这里设置一个没有被使用的IP段即可,比如从192.168.1.180到192.168.1.199。设置后请按确定,然后点击“允许访问”。
第五步:按照上述设置之后,其他用户就可以利用上面的账号以及你的IP地址利用VPN连接到你的网络了。此外,如果你有防火墙请允许1723和1701端口;如果你是内网用户请在路由器上做1723和1701端口的映射,一般做1723就行了。还有,现在一般稳定的VPN都需要支付一些费用。

㈥ 如何在 Debian / Ubuntu 服务器上架设 L2TP / IPSec VPN

首先解释一个问题:在 iPhone 的 VPN 设置接口里(Settings >> General >> Network >> VPN),你可以看到三个标签:L2TP, PPTP, IPSec。但上面我们又讲本次介绍的 VPN 方式叫“L2TP / IPSec”,这两者究竟是什么关系?

这三个标签确实令人混淆,准确的写法应该是:L2TP over IPSec, PPTP, Cisco IPSec。PPTP 跟另外两者关系不大,且大家较为熟悉,暂且不提,L2TP 和 IPSec 的区别如下。

L2TP:一个“包装”协议,本身并不提供加密和验证的功能。

IPSec:在 IP 数据包的层级提供加密和验证功能,确保中间人无法解密或者伪造数据包。

本来,只用 IPSec 就可以实现 VPN,Mac OS X 和 linux 都支持。但是 Mac OS X 和 iPhone OS 都推荐使用 L2TP over IPSec,在两者的图形接口上也只能设置这个。L2TP / IPSec 是业界标准,微软也支持。而只用 IPSec 的常见于 Linux-to-Linux 的应用,比如将两个位于不同地区的办公室网络安全地连在一起。这多是固定 IP 路由器到固定 IP 路由器级别的连接,只需保证数据包不被中途截获或者伪造就可以,故使用 L2TP 的意义不大。L2TP / IPSec 主要是实现所谓“Road Warrior”的设置,即用变动的客户端连固定的服务器。

Cisco 的 VPN 用的也是 IPSec 加密,但那是一套不同于 L2TP 的私有包装协议,用于提供用户管理之类的功能,因此一般都需要用 Cisco 自家的 VPN 客户端连接。iPhone / iPad 的 VPN 设置接口中的 IPSec 标签里有 Cisco 的标识,就是这个原因。

以下是在 Ubuntu 和 Debian 主机上架设 L2TP / IPSec VPN 的步骤,一共十四步。你需要有服务器的 root 权限(所以 DreamHost, BlueHost, MediaTemple 这些服务供应商帮你把一切打点周到的主机就无缘了),也需要一些基本的 Linux 知识。不然的话,我们还是推荐您找一位比较熟技术的朋友帮忙。

一、安装 IPSec。如上所述,IPSec 会对 IP 数据包进行加密和验证。这意味着你的电脑 / 移动设备与服务器之间传输的数据无法被解密、也不能被伪造。我推荐用 openswan 这个后台软件包来跑 IPSec。

用以下命令安装 openswan:

sudo aptitude install openswan二、用文字编辑器打开 /etc/ipsec.conf,改成这样:

version 2.0
config setup
nat_traversal=yes
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
oe=off
protostack=netkey

conn L2TP-PSK-NAT
rightsubnet=vhost:%priv
also=L2TP-PSK-noNAT

conn L2TP-PSK-noNAT
authby=secret
pfs=no
auto=add
keyingtries=3
rekey=no
ikelifetime=8h
keylife=1h
type=transport
left=YOUR.SERVER.IP.ADDRESS
leftprotoport=17/1701
right=%any
rightprotoport=17/%any三、用文字编辑器打开 /etc/ipsec.secrets,改成这样:

YOUR.SERVER.IP.ADDRESS %any: PSK "YourSharedSecret"(别忘了把“YOUR.SERVER.IP.ADDRESS”这部分换成你的服务器的 IP 地址,把“YourSharedSecret”部分换成随便一个字串,例如你喜欢的一句话,等等。)

四、运行以下命令:

for each in /proc/sys/net/ipv4/conf/*
do
echo 0 > $each/accept_redirects
echo 0 > $each/send_redirects
done五、检查一下 IPSec 能否正常工作:

sudo ipsec verify如果在结果中看到“Opportunistic Encryption Support”被禁用了,没关系,其他项 OK 即可。

六、重启 openswan:

sudo /etc/init.d/ipsec restart七、安装 L2TP。常用的 L2TP 后台软件包是 xl2tpd,它和 openswan 是同一帮人写的。

运行以下命令:

sudo aptitude install xl2tpd八、用文字编辑器打开 /etc/xl2tpd/xl2tpd.conf,改成这样:

[global]
ipsec saref = yes

[lns default]
ip range = 10.1.2.2-10.1.2.255
local ip = 10.1.2.1
;require chap = yes
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes这里要注意的是 ip range 一项里的 IP 地址不能和你正在用的 IP 地址重合,也不可与网络上的其他 IP 地址冲突。

九、安装 ppp。这是用来管理 VPN 用户的。

sudo aptitude install ppp十、检查一下 /etc/ppp 目录里有没有 options.xl2tpd 这个文件,没有的话就建一个,文件内容如下:

require-mschap-v2
ms-dns 208.67.222.222
ms-dns 208.67.220.220
asyncmap 0
auth
crtscts
lock
hide-password
modem
debug
name l2tpd
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4注意 ms-dns 两行我填的是 OpenDNS。如果你想用其他的 DNS 服务器(例如谷歌的公共 DNS),请自行更换。

十一、现在可以添加一个 VPN 用户了。用文字编辑器打开 /etc/ppp/chap-secrets:

# user server password ip
test l2tpd testpassword *如果你之前设置过 PPTP VPN,chap-secrets 文件里可能已经有了其他用户的列表。你只要把 test l2tpd testpassword * 这样加到后面即可。

十二、重启 xl2tpd:

sudo /etc/init.d/xl2tpd restart十三、设置 iptables 的数据包转发:

iptables --table nat --append POSTROUTING --jump MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward十四、因为某种原因,openswan 在服务器重启后无法正常自动,所以我们可以在 /etc/rc.local 文件里写入如下语句:

iptables --table nat --append POSTROUTING --jump MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
for each in /proc/sys/net/ipv4/conf/*
do
echo 0 > $each/accept_redirects
echo 0 > $each/send_redirects
done
/etc/init.d/ipsec restart到这里,设置工作已经基本完成。你可以用 iPhone 或 iPad 试着连一下。记得在“Secret”中填入你在上述第三步里填的 YourSharedSecret。

如果连接成功,上网也没问题的话,恭喜你,大功告成。如果连不上,恐怕还得多做一步。

Ubuntu 9.10 自带的 openswan 版本是 2.6.22, Debian Lenny 带的版本是 2.4.12。这两个版本的 openswan 都有问题。我们的测试结果表明,2.6.24 版的 openswan 可以在上述两版的 Linux 操作系统下正常工作。所以如果做完以上十四步还是连不上的话,请考虑从源码编译 openswan 2.6.24 :

sudo aptitude install libgmp3-dev gawk flex bison
wget http://www.openswan.org/download/openswan-2.6.24.tar.gz
tar xf openswan-2.6.24.tar.gz
cd openswan-2.6.24
make programs
sudo make install编译需要一段时间。你的 Linux 内核版本需要高于 2.6.6。

然后可以删除原先通过 aptitude 安装的 openswan,并重启之:

sudo aptitude remove openswan
sudo /etc/init.d/ipsec restart

㈦ 通过hook connect 函数 实现 VPN功能是否可行

在android系统中,可以使用iptables控制单个应用网络访问。在google code上有一个开源项目-droidwall就是基于iptables实现的。除了iptables可以实现控制单个应用网络访问外,还可以通过拦截应用中的connect函数,达到控制应用访问网络的目的。下面从几个方面分析android应用中connect调用流程为例来实现拦截connect实现网络禁用和ip过滤。(以下分析基于4.2源码)


1.android中网络访问流程


1)android系统中访问网络可以通过Socket.java、URL.java、HttpPost.java、HttpGet.java等关键类来访问网络资源。通过代码追踪,这些类访问网络资源最终需要通过native方式,调用linux系统下的socket函数访问网络。在android4.2源码中,java层访问网络得native方法定义在源码路径libcore/luni/src/main/java/libcore/io/Posix.java中(4.0之前的网络系统、文件系统的native方法是独立分开得,4.0之后组织在Posix.java中)。如下是Posix.java中的代码片段:

public final class Posix implements Os { Posix() { } public native FileDescriptor accept(FileDescriptor fd, InetSocketAddress peerAddress) throws ErrnoException, SocketException; public native boolean access(String path, int mode) throws ErrnoException; public native void bind(FileDescriptor fd, InetAddress address, int port) throws ErrnoException, SocketException; ...... //对应linux下的connect系统调用 public native void connect(FileDescriptor fd, InetAddress address, int port) throws ErrnoException, SocketException;

2)Posix.java中的native方法实现源码路径libcore/luni/src/main/native/libcore_io_Posix.cpp文件中,native connect方法实现代码片段如下:

taticvoidPosix_connect(JNIEnv*env,jobject,jobjectjavaFd,jobjectjavaAddress,jintport)
{
sockaddr_storagess;
if(!inetAddressToSockaddr(env,javaAddress,port,&ss))
{
return;
}
constsockaddr*sa=reinterpret_cast<constsockaddr*>(&ss);
(void)NET_FAILURE_RETRY(env,int,connect,javaFd,sa,sizeof(sockaddr_storage));
}

有上代码可知,java层connect最终功能由linux系统connect函数实现。


2.so注入


so注入可以参考古河大哥牛逼的libInject(点击这里访问)。


3.拦截connect库编写


在connect中,获取传入的参数ip地址,根据需要把需要禁用的ip地址改为127.0.01.以下是我测试的拦截connect函数关键代码:

intnew_connect(intsockfd,conststructsockaddr*addr,socklen_taddrlen)
{
LOGDD("HOOK
====>newconnect****************");
charip[128]={0};
intport=-1;
if(addr->sa_family==AF_INET)
{
structsockaddr_in*sa4=(structsockaddr_in*)addr;
inet_ntop(AF_INET,(void*)(structsockaddr*)&sa4->sin_addr,ip,128);
port=ntohs(sa4->sin_port);
LOGDD("AF_INETIP===>%s:%d",ip,port);
}
elseif(addr->sa_family==AF_INET6)
{
structsockaddr_in6*sa6=(structsockaddr_in6*)addr;
char*ipv6=NULL;
inet_ntop(AF_INET6,(void*)(structsockaddr*)&sa6->sin6_addr,ip,128);
ipv6=strstr(ip,"f:");
if(NULL!=ipv6)
{
strcpy(ip,ipv6+2);
}
port=ntohs(sa6->sin6_port);
LOGDD("af_inet6
IP===>%s:%d",ip,port);
}
else
{
returnold_connect(sockfd,addr,addrlen);
}

if(strcmp(ip,"115.23.20.178")==0)
{

LOGDD("%s
==>127.0.0.1",ip);
structsockaddr_inmy_addr;
intmy_len=sizeof(structsockaddr_in);
bzero(&my_addr,sizeof(my_addr));
my_addr.sin_family=AF_INET;
my_addr.sin_port=htons(80);
my_addr.sin_addr.s_addr=inet_addr("127.0.0.1");

returnold_connect(sockfd,(constsockaddr*)&my_addr,sizeof(my_addr));
}
else
{
returnold_connect(sockfd,addr,addrlen);
}
}

4.拦截connect函数功效


1)禁用应用网络访问。

2)过滤广告ip

3)禁用定位功能

热点内容
vue引入ftp 发布:2025-07-10 18:24:07 浏览:971
ups蓄电池如何配置 发布:2025-07-10 18:15:31 浏览:983
三星手机初始密码是多少啊 发布:2025-07-10 18:10:49 浏览:776
固定服务器的地址 发布:2025-07-10 17:59:10 浏览:53
数据库堆表 发布:2025-07-10 17:57:17 浏览:164
服务器一般要求配置动态ip地址 发布:2025-07-10 17:46:17 浏览:444
主机什么配置可以玩原神 发布:2025-07-10 17:45:23 浏览:744
java学习平台 发布:2025-07-10 17:35:51 浏览:800
服务器的出生点如何造好看 发布:2025-07-10 17:30:50 浏览:543
xp系统移动硬盘加密 发布:2025-07-10 17:27:20 浏览:888