New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

谈谈 iOS8 中的 Network Extension #1

Open
zqqf16 opened this Issue Oct 14, 2016 · 24 comments

Comments

Projects
None yet
5 participants
@zqqf16
Owner

zqqf16 commented Oct 14, 2016

Anything about this post

@mavishsieh

This comment has been minimized.

Show comment
Hide comment
@mavishsieh

mavishsieh Oct 14, 2016

你好, 我現在可以連線到VPN server
但如果想要傳送封包到server或是接收封包的話, 是要參考哪個API?
(我上網做了些研究, 好像iOS9提供了NEPacketTunnelProvider and NWUDPSession API... 是這個嗎?)

mavishsieh commented Oct 14, 2016

你好, 我現在可以連線到VPN server
但如果想要傳送封包到server或是接收封包的話, 是要參考哪個API?
(我上網做了些研究, 好像iOS9提供了NEPacketTunnelProvider and NWUDPSession API... 是這個嗎?)

@zqqf16

This comment has been minimized.

Show comment
Hide comment
@zqqf16

zqqf16 Oct 14, 2016

Owner

@mavishsieh 嗯,得用 iOS 9 中提供的新接口,可以参考 Potatso 代码

Owner

zqqf16 commented Oct 14, 2016

@mavishsieh 嗯,得用 iOS 9 中提供的新接口,可以参考 Potatso 代码

@mavishsieh

This comment has been minimized.

Show comment
Hide comment
@mavishsieh

mavishsieh Oct 15, 2016

@zqqf16
那再請教一下,如果我用的protocol是IPSec,也就是說我們沒有要訂定新的秘密協議....也是得用iOS提供的新接口嗎?(我讀了NEPacketTunnelProvider相關介紹,那個主要是支援了non-standard VPN protocol的)

根據上面的問題,如果我一定得用NEPacketTunnelProvider and NWUDPSession API的話,那我在readPacket跟writePacket之前,自己得先加密,压缩,並根據格式打包數據嗎?

謝謝你的回覆,這個禮拜突然被assign要做VPN的task,我根本一頭霧水QQ

mavishsieh commented Oct 15, 2016

@zqqf16
那再請教一下,如果我用的protocol是IPSec,也就是說我們沒有要訂定新的秘密協議....也是得用iOS提供的新接口嗎?(我讀了NEPacketTunnelProvider相關介紹,那個主要是支援了non-standard VPN protocol的)

根據上面的問題,如果我一定得用NEPacketTunnelProvider and NWUDPSession API的話,那我在readPacket跟writePacket之前,自己得先加密,压缩,並根據格式打包數據嗎?

謝謝你的回覆,這個禮拜突然被assign要做VPN的task,我根本一頭霧水QQ

@zqqf16

This comment has been minimized.

Show comment
Hide comment
@zqqf16

zqqf16 Oct 15, 2016

Owner

@mavishsieh

  1. 如果用的是 IPSec,不用 NEPacketTunnelProvider,用 NEVPNProtocolIPSec 就可以了。
  2. 你指的是用 NEPacketTunnelProvider 自己实现 IPSec 协议?我认为有点够呛,没记错的话 NEPacketTunnelProvider 提供的是 IP/Socket 这层的协议,IPSec 要底层一些。
Owner

zqqf16 commented Oct 15, 2016

@mavishsieh

  1. 如果用的是 IPSec,不用 NEPacketTunnelProvider,用 NEVPNProtocolIPSec 就可以了。
  2. 你指的是用 NEPacketTunnelProvider 自己实现 IPSec 协议?我认为有点够呛,没记错的话 NEPacketTunnelProvider 提供的是 IP/Socket 这层的协议,IPSec 要底层一些。
@mavishsieh

This comment has been minimized.

Show comment
Hide comment
@mavishsieh

mavishsieh Oct 17, 2016

@zqqf16
首先很謝謝你的回覆 :)
其實我想做的是用IPSec protocol跟VPN server連線後,能夠傳送數據到server且接收回傳數據
一開始我讀了您寫的文章 (http://blog.zorro.im/posts/iOS8-Network-Extension.html)
一步一步照著做的確可以與VPN server連線... 但在這之後我不知道要怎麼傳送與接收數據了
所以想請教你有任何建議或是推薦的方法嗎?

mavishsieh commented Oct 17, 2016

@zqqf16
首先很謝謝你的回覆 :)
其實我想做的是用IPSec protocol跟VPN server連線後,能夠傳送數據到server且接收回傳數據
一開始我讀了您寫的文章 (http://blog.zorro.im/posts/iOS8-Network-Extension.html)
一步一步照著做的確可以與VPN server連線... 但在這之後我不知道要怎麼傳送與接收數據了
所以想請教你有任何建議或是推薦的方法嗎?

@zqqf16

This comment has been minimized.

Show comment
Hide comment
@zqqf16

zqqf16 Oct 17, 2016

Owner

@mavishsieh
这个问题貌似可以在 client 端访问一个保留 IP,比如 240.240.240.240 这样的,然后在 server 端用 iptables 做重定向到本机。

Owner

zqqf16 commented Oct 17, 2016

@mavishsieh
这个问题貌似可以在 client 端访问一个保留 IP,比如 240.240.240.240 这样的,然后在 server 端用 iptables 做重定向到本机。

@mavishsieh

This comment has been minimized.

Show comment
Hide comment
@mavishsieh

mavishsieh Oct 17, 2016

@zqqf16
恩...我指的是與VPN server連線後,能夠傳送數據到VPN server且接收VPN server所回傳數據
我不懂的是 我不是在一開始就知道IP的地址了?為什麼需要重定向呢?

mavishsieh commented Oct 17, 2016

@zqqf16
恩...我指的是與VPN server連線後,能夠傳送數據到VPN server且接收VPN server所回傳數據
我不懂的是 我不是在一開始就知道IP的地址了?為什麼需要重定向呢?

@zqqf16

This comment has been minimized.

Show comment
Hide comment
@zqqf16

zqqf16 Oct 17, 2016

Owner

@mavishsieh
Sorry, 上一个回答有误……
太久没搞 IPSec ,有点记不清了,等我晚上验证一下~

Owner

zqqf16 commented Oct 17, 2016

@mavishsieh
Sorry, 上一个回答有误……
太久没搞 IPSec ,有点记不清了,等我晚上验证一下~

@mavishsieh

This comment has been minimized.

Show comment
Hide comment
@mavishsieh

mavishsieh Oct 17, 2016

@zqqf16
Ohhh, Nvm :)
你應該也在上班吧 加油加油 👍
晚上再麻煩你了
我自己繼續研究~

mavishsieh commented Oct 17, 2016

@zqqf16
Ohhh, Nvm :)
你應該也在上班吧 加油加油 👍
晚上再麻煩你了
我自己繼續研究~

@mavishsieh

This comment has been minimized.

Show comment
Hide comment
@mavishsieh

mavishsieh Oct 18, 2016

Good morning :)

我上網看了些資料後, 我突然異想天開的有了個想法:在用NEVPNProtocolIPSec與NEVPNManager連接上VPN server後, 用GCDAsyncUdpSocket來開啟一個socket與server進行通訊....(因為VPN的IPSec protocol是在TCP/IP的第二層,然後Socket好像是在TCP/IP model第三跟第四層中間)

想知道大神您的看法, 知道這個做法是不是太天馬行空了 :|

Thanks and regards,
Mavis

mavishsieh commented Oct 18, 2016

Good morning :)

我上網看了些資料後, 我突然異想天開的有了個想法:在用NEVPNProtocolIPSec與NEVPNManager連接上VPN server後, 用GCDAsyncUdpSocket來開啟一個socket與server進行通訊....(因為VPN的IPSec protocol是在TCP/IP的第二層,然後Socket好像是在TCP/IP model第三跟第四層中間)

想知道大神您的看法, 知道這個做法是不是太天馬行空了 :|

Thanks and regards,
Mavis

@yanlinhong

This comment has been minimized.

Show comment
Hide comment
@yanlinhong

yanlinhong Dec 3, 2016

有个问题想请教一下大神
用Ios8的ipsec api实现了vpn连接,但是现在需要做一个 vpn的域名白名单,名单内的域名可以使用vpn,名单外的不经过vpn,不知道大神有没有办法

yanlinhong commented Dec 3, 2016

有个问题想请教一下大神
用Ios8的ipsec api实现了vpn连接,但是现在需要做一个 vpn的域名白名单,名单内的域名可以使用vpn,名单外的不经过vpn,不知道大神有没有办法

@yanlinhong

This comment has been minimized.

Show comment
Hide comment
@yanlinhong

yanlinhong Dec 3, 2016

如果 用 NEPacketTunnelProvider 自己实现 IPSec 协议 ,不知道有没有相关资料可以看看
Thanks

yanlinhong commented Dec 3, 2016

如果 用 NEPacketTunnelProvider 自己实现 IPSec 协议 ,不知道有没有相关资料可以看看
Thanks

@zqqf16

This comment has been minimized.

Show comment
Hide comment
@zqqf16

zqqf16 Dec 3, 2016

Owner

@yanlinhong

  1. IPSec 支持 split tunnel,可以查一下 strongSwan 的配置文档
  2. 自己实现 IPSec 协议在目前的 iOS 上不可能
Owner

zqqf16 commented Dec 3, 2016

@yanlinhong

  1. IPSec 支持 split tunnel,可以查一下 strongSwan 的配置文档
  2. 自己实现 IPSec 协议在目前的 iOS 上不可能
@suzee

This comment has been minimized.

Show comment
Hide comment
@suzee

suzee Dec 7, 2016

您好,请问可以通过NEPacketTunnelProvider实现L2TP吗? 有没有相关资料可以看看
Thanks

suzee commented Dec 7, 2016

您好,请问可以通过NEPacketTunnelProvider实现L2TP吗? 有没有相关资料可以看看
Thanks

@zqqf16

This comment has been minimized.

Show comment
Hide comment
@zqqf16

zqqf16 Dec 7, 2016

Owner

@suzee L2TP 也不能实现

Owner

zqqf16 commented Dec 7, 2016

@suzee L2TP 也不能实现

@suzee

This comment has been minimized.

Show comment
Hide comment
@suzee

suzee Dec 8, 2016

请问您有构建成功的 Potatso 源码或者是通过NEPacketTunnelProvider截取流量的源码?本人小白,构建packettunnel,开启vpn连接后无法跳转到PacketTunnelProvider中的startTunnel方法中

suzee commented Dec 8, 2016

请问您有构建成功的 Potatso 源码或者是通过NEPacketTunnelProvider截取流量的源码?本人小白,构建packettunnel,开启vpn连接后无法跳转到PacketTunnelProvider中的startTunnel方法中

@suzee

This comment has been minimized.

Show comment
Hide comment
@suzee

suzee Dec 8, 2016

@zqqf16
非常感谢大神的回答,求继续解惑ing🙏🙏🙏

suzee commented Dec 8, 2016

@zqqf16
非常感谢大神的回答,求继续解惑ing🙏🙏🙏

@zqqf16

This comment has been minimized.

Show comment
Hide comment
@zqqf16

zqqf16 Dec 8, 2016

Owner

@suzee 没有源码,很长时间不做这个了

Owner

zqqf16 commented Dec 8, 2016

@suzee 没有源码,很长时间不做这个了

@yanlinhong

This comment has been minimized.

Show comment
Hide comment
@yanlinhong

yanlinhong Dec 8, 2016

@zqqf16
非常感谢,
使用NEVPNProtocolIPSec api构建vpn,不做全局代理,对一些自己认可的域名进行代理流量,不知道您有没有了解过

yanlinhong commented Dec 8, 2016

@zqqf16
非常感谢,
使用NEVPNProtocolIPSec api构建vpn,不做全局代理,对一些自己认可的域名进行代理流量,不知道您有没有了解过

@zqqf16

This comment has been minimized.

Show comment
Hide comment
@zqqf16

zqqf16 Dec 8, 2016

Owner

@yanlinhong 需要在服务端配置,可以搜关键词 “strongSwan IPSec Split-Tunneling”

Owner

zqqf16 commented Dec 8, 2016

@yanlinhong 需要在服务端配置,可以搜关键词 “strongSwan IPSec Split-Tunneling”

@yanlinhong

This comment has been minimized.

Show comment
Hide comment
@yanlinhong

yanlinhong Dec 8, 2016

@zqqf16 您的意思是无法在客户端实现吗

yanlinhong commented Dec 8, 2016

@zqqf16 您的意思是无法在客户端实现吗

@zqqf16

This comment has been minimized.

Show comment
Hide comment
@zqqf16

zqqf16 Dec 8, 2016

Owner

@yanlinhong 当年我做的时候,客户端是没有方法实现的,现在不知道可不可以。
IPSec 在建立连接时,服务端会把规则下发给客户端,客户端会创建相应的 SA/SP。这块在 iOS 的 Racoon 里实现的,没有暴露给上层。

Owner

zqqf16 commented Dec 8, 2016

@yanlinhong 当年我做的时候,客户端是没有方法实现的,现在不知道可不可以。
IPSec 在建立连接时,服务端会把规则下发给客户端,客户端会创建相应的 SA/SP。这块在 iOS 的 Racoon 里实现的,没有暴露给上层。

@yanlinhong

This comment has been minimized.

Show comment
Hide comment
@yanlinhong

yanlinhong commented Dec 12, 2016

@zqqf16 谢谢

@JohnChenYiHui

This comment has been minimized.

Show comment
Hide comment
@JohnChenYiHui

JohnChenYiHui Dec 17, 2016

各位大神,我使用NetworkExtension.framework搭建了一个IPSec的VPN,连接失败,说是连接VPN协议失败,在服务器端显示“Aggressive Mode PSK disabled for security reasons”,由于不是Main Mode,而是Aggressive Mode,连接不了,这个Main Mode在哪更改?

JohnChenYiHui commented Dec 17, 2016

各位大神,我使用NetworkExtension.framework搭建了一个IPSec的VPN,连接失败,说是连接VPN协议失败,在服务器端显示“Aggressive Mode PSK disabled for security reasons”,由于不是Main Mode,而是Aggressive Mode,连接不了,这个Main Mode在哪更改?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment