ita*_*ill 7 android android-vpn-service
According to the official documentation:
However, it is still not clear to me, and digging through dns66's source and Netguard's source did not help much either.
I am not sure it is supposed to be the server address, but I cannot think of anything else which is meaningful. What address do I set if I want to implement a localVPN, before establish()?
This is dns66's source, but I don't see why it adds these addresses (how does it know that 192.168.50.1 will work, if everything "fails")?:
// Determine a prefix we can use. These are all reserved prefixes for example
// use, so it's possible they might be blocked.
for (String prefix : new String[]{"192.0.2", "198.51.100", "203.0.113"}) {
try {
builder.addAddress(prefix + ".1", 24);
} catch (IllegalArgumentException e) {
continue;
}
format = prefix + ".%d";
break;
}
// For fancy reasons, this is the 2001:db8::/120 subnet of the /32 subnet reserved for
// documentation purposes. We should do this differently. Anyone have a free /120 subnet
// for us to use?
byte[] ipv6Template = new byte[]{32, 1, 13, (byte) (184 & 0xFF), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
if (hasIpV6Servers(config, dnsServers)) {
try {
InetAddress addr = Inet6Address.getByAddress(ipv6Template);
Log.d(TAG, "configure: Adding IPv6 address" + addr);
builder.addAddress(addr, 120);
} catch (Exception e) {
e.printStackTrace();
ipv6Template = null;
}
} else {
ipv6Template = null;
}
if (format == null) {
Log.w(TAG, "configure: Could not find a prefix to use, directly using DNS servers");
builder.addAddress("192.168.50.1", 24);
}
Run Code Online (Sandbox Code Playgroud)
Bridge您基本上添加了(提供整个互联网的路由器)的IP ,对我来说,执行以下操作就足够了:
import android.net.VpnService.Builder;
// ...
boolean is_ip_version_6_supported = true;
Builder builder = new Builder();
builder.setSession("My App's session");
// Specify address of the bridge (or router providing the whole internet),
// to use for IP version 4 and 6 connection capturing (like a firewall).
builder.addAddress("10.1.10.1", 32);
if (is_ip_version_6_supported) {
builder.addAddress("fd00:1:fd00:1:fd00:1:fd00:1", 128);
}
// ...
Run Code Online (Sandbox Code Playgroud)
注意:我也是初学者,所以,请随意编辑和改进我的帖子;-)
无论如何,您的应用程序将负责将本地捕获的数据包转发到 VPN 服务器并将远程的响应数据包注入回本地。
| 归档时间: |
|
| 查看次数: |
1162 次 |
| 最近记录: |