Android 策略路由

    技术2022-07-12  93

    策略路由主要RouteController.cpp

    路由优先级:

    const uint32_t RULE_PRIORITY_VPN_OVERRIDE_SYSTEM = 10000;

    const uint32_t RULE_PRIORITY_VPN_OUTPUT_TO_LOCAL = 11000;

    const uint32_t RULE_PRIORITY_SECURE_VPN = 12000;

    const uint32_t RULE_PRIORITY_EXPLICIT_NETWORK = 13000;

    const uint32_t RULE_PRIORITY_OUTPUT_INTERFACE = 14000;

    const uint32_t RULE_PRIORITY_LEGACY_SYSTEM = 15000;

    const uint32_t RULE_PRIORITY_LEGACY_NETWORK = 16000;

    const uint32_t RULE_PRIORITY_LOCAL_NETWORK = 17000;

    const uint32_t RULE_PRIORITY_TETHERING = 18000;

    const uint32_t RULE_PRIORITY_IMPLICIT_NETWORK = 19000;

    const uint32_t RULE_PRIORITY_BYPASSABLE_VPN = 20000;

    const uint32_t RULE_PRIORITY_VPN_FALLTHROUGH = 21000;

    const uint32_t RULE_PRIORITY_DEFAULT_NETWORK = 22000;

    const uint32_t RULE_PRIORITY_DIRECTLY_CONNECTED = 23000;

    const uint32_t RULE_PRIORITY_UNREACHABLE = 32000;

    路由ID:

    const uint32_t ROUTE_TABLE_LOCAL_NETWORK = 97;

    const uint32_t ROUTE_TABLE_LEGACY_NETWORK = 98;

    const uint32_t ROUTE_TABLE_LEGACY_SYSTEM = 99;

    路由名字:

    const char* const ROUTE_TABLE_NAME_LOCAL_NETWORK = "local_network";

    const char* const ROUTE_TABLE_NAME_LEGACY_NETWORK = "legacy_network";

    const char* const ROUTE_TABLE_NAME_LEGACY_SYSTEM = "legacy_system";

    策略路由table路径定义:

    const char* const RT_TABLES_PATH = "/data/misc/net/rt_tables";

     

     

    MARK

    --set-xmark value [/ mask ] ,将掩码和XOR值给出的位归零到数据包标记(“nfmark”)中。如果省略掩码,则假定为0xFFFFFFFF。

    --set-mark value [/ mask ] ,将掩码和OR值给出的位归零到数据包标记(“nfmark”)中。如果省略掩码,则假定为0xFFFFFFFF。

    --and-mark bits ,将nfmark和 bits 进行与操作,助记符: --set-xmark   0/invbits。

    --or-mark bits ,将nfmark和 bits 进行或操作,助记符: --set-xmark   bits/bits。

    --xor-mark bits ,将nfmark和 bits 进行异或操作,助记符: --set-xmark   bits/0。

    Processed: 0.019, SQL: 9