Documentation for iOS Tor VPN implementation. Below are the different components that we'll probably need.
---------
Currently, only macOS and iOS are supported, although Linux support is almost there.
API Documentation
Running it requires root privileges in order to create a
In order to route traffic through the interface, you need to modify the route table:
Style Guide
- Check out CONTRIBUTING.md
- Signing git commits
- Pull request code review process
- Test coverage
- LICENSE (permissive / same as Tor)
- Writing memory-safe code
Tor.framework
- Wrap Tor binary
- Wrap control port
- Standalone iOS 8 framework
- Separate repo
- Tor Control Port
- Tor Manual
TorPacketTunnelProvider
- Separate repo
- Integrates Tor.framework
- NEPacketTunnelProvider
- Integrates tun2socks
- Prevent information leaks via domain/IP whitelist
tun2socks
- Separate repo
- Convert Conrad's Notes to README.md
- tun2socks-iOS - Currently Empty
- tun2socks-iOS - @linusyang branch
- tun2socks - Upstream tun2socks repo
- lwIP - Lightweight TCP/IP stack written in C
- tun2socks - Swift wrapper
tun2socks-rust
- Rewrite this as resuable Rust crate for memory safety and portability?
- Write Obj-C or Swift wrapper for exported Rust C API
Tor for iOS App UI
- Get designer(s)
- Keep It Simple
- Prevent users from accidentally leaking information
- Get feedback from designers on how to implement on-demand whitelist
- Sketch out some storyboards (use iOS Storyboards?)
- OS X support (???)
Helpful Links
NETunnelProviderManager
- Class reference
- WWDC Session about Network Extensions
- Sample code
- ShadowVPN-iOS - Includes Swift PacketTunnelProvider Example
- shadowsocks-iOS - Issue 124: "Adopting iOS 9 network extension points" discussion thread
- NEKit - A toolkit for NetworkExtension Framework
Secure Coding
Tor
Rust
Learning Rust
- Rust in Detail: Writing Scalable Chat Service from Scratch
- Rust Once, Run Everywhere (Rust/C FFI)
- Rust Style Guide
Rust IDE
from https://github.com/iCepa/iCepa-Docs---------
tun2tor
A rust library to provide a virtual utun interface to Tor.tun2tor
is a Rust library that creates a utun
(userspace tunnel) interface, and connects it to to a stream-based proxy like tor
. It is primarily intended to be embedded in the iCepa project, but it can also be used as a standalone utility.Currently, only macOS and iOS are supported, although Linux support is almost there.
tun2tor
uses tokio
for async IO and LwIP
for its TCP implementation (for now).API Documentation
Running
Runningtun2tor
as a standalone utility is primarily useful for debugging at the moment. Here is how to get it running:$ git clone --recursive https://github.com/iCepa/tun2tor.git
$ cd tun2tor
$ cargo build
$ sudo target/debug/tun2tor
$ tor --DnsPort 12345
utun
interface. tun2tor
is currently hardcoded in main.rs
to create an interface with an IP address of 172.30.20.1
, look for a SOCKS proxy at 127.0.0.1:9050
, and look for a DNS server at 127.0.0.1:12345
.In order to route traffic through the interface, you need to modify the route table:
$ sudo route add 8.8.8.8 172.30.20.1
$ dig @8.8.8.8 facebookcorewwwi.onion
from https://github.com/iCepa/tun2tor
No comments:
Post a Comment