Open7

ユーザランドTCP/IP実装によるtun2socksが割といっぱい有る

okuokuokuoku

MiniSockのテスト環境を作るにあたって、任意のデバイスのネットワークをSocks5に変換する必要がある。例えば、 Google ChromeのSocks5はUDPをサポートしていない という問題があるので、ShadowsocksなVPN経由で変換するのが良いんじゃないかという気がしている。

ただしShadowsocksのようなVPNを経由するソリューションを採る場合、ポートのlistenを表現できない問題はある。まぁそもそもモバイル端末でサーバを動かすケース自体が割とレアケースな気はするが。。

... というかGitHubのタグ https://github.com/topics/tun2socks だとtop2がArchivedになってるトピックって凄いな。。

TCP/IPスタックの必要性

ShadowsocksやSocks5は今製作しているMiniSockと同様にTCPやUDPのレベルでしか転送を実施できない。このため、AndroidやiOS上のVPNソリューションとしてこれらのproxyを実装するためには、カーネルが生成してくるTCP/UDP接続を一旦デバイス上で終端してやる必要がある。

qemuで Slirp ベースのネットワークエミュレーションをやるのに似ている。