修改内网的tun配置流程

This commit is contained in:
free will committed 2021-11-02 17:02:17 +08:00
1 parent 3990869a94
commit aa66f72290
2 files changed
+21 -11

No files matched your search

@@ -95,6 +95,11 @@ public class SettingActivity extends MINVpnBaseActivity<SettingActivityPresenter
etPort.setText(String.valueOf(MINVpnSettingAPI.INSTANCE.getMirPort()));
etFirstRouterPrefix.setText(MINVpnSettingAPI.INSTANCE.getFirstRouterPrefix());
etServicePrefix.setText(MINVpnSettingAPI.INSTANCE.getServicePrefix());
// 外访
etIpAddress_Extra.setText(MINVpnSettingAPI.INSTANCE.getExtranetMirIpAddress());
etPort_Extra.setText(String.valueOf(MINVpnSettingAPI.INSTANCE.getExtranetMirPort()));
etFirstRouterPrefix_Extra.setText(MINVpnSettingAPI.INSTANCE.getExtranetFirstRouterPrefix());
etServicePrefix_Extra.setText(MINVpnSettingAPI.INSTANCE.getExtranetServicePrefix());
etBlockChainIp.setText(MINVpnSettingAPI.INSTANCE.getBlockChainIpAddress());
etVMSTCPPort.setText(String.valueOf(MINVpnSettingAPI.INSTANCE.getBcTcpPort()));
etVMSSSLPort.setText(String.valueOf(MINVpnSettingAPI.INSTANCE.getBcSslPort()));
@@ -295,30 +295,35 @@ public class VpnIntranetPreparation implements VpnPreparationInterface{
*/
@RequiresApi(api = Build.VERSION_CODES.Q)
private ParcelFileDescriptor configure(String parameters) throws IllegalArgumentException {
// 0. 先按照服务器的应答信息配置提取TUN的IP地址
// 1. 分解字符串从而获得VPN配置信息,并配置路由
VpnService.Builder builder = mService.new Builder();
for (String parameter : parameters.split(" ")) {
String[] fields = parameter.split(",");
try {
switch (fields[0].charAt(0)) {
case 'a':
case 'm': // mtu配置
builder.setMtu(Short.parseShort(fields[1]));
break;
case 'a': // tun网卡地址配置
builder.addAddress(fields[1], 24);
System.out.println("handshake ip: " + fields[1]);
allocatedAddress = fields[1];
break;
case 'r': // 路由域配置
builder.addRoute(fields[1], Integer.parseInt(fields[2]));
break;
case 'd': // dns服务器
builder.addDnsServer(fields[1]);
break;
case 's':
builder.addSearchDomain(fields[1]);
break;
}
} catch (NumberFormatException e) {
throw new IllegalArgumentException("Bad parameter: " + parameter);
}
}
// 1. 配置全局路由
VpnService.Builder builder = mService.new Builder();
builder.setMtu(1500); // 使用quick时,ip包要尽可能小,才能在MIN的链路层不分包(LpPacket)
System.out.println("!!!allocatedAddress: "+allocatedAddress);
builder.addAddress(allocatedAddress,24);
builder.addRoute("0.0.0.0",0);
// builder.addDnsServer("114.114.114.114");
builder.addDnsServer("8.8.8.8");
// 2. 创建一个接口
final ParcelFileDescriptor vpnInterface;
// 2.1 添加没有权限的目录(copy旧项目的,不知道这个目录指的哪个玩意儿)