diff --git a/docs/en/config/outbounds/freedom.md b/docs/en/config/outbounds/freedom.md index 826161a..a4e3e0f 100644 --- a/docs/en/config/outbounds/freedom.md +++ b/docs/en/config/outbounds/freedom.md @@ -6,36 +6,40 @@ Freedom is an outbound protocol that can be used to send (normal) TCP or UDP dat ```json { - "domainStrategy": "AsIs", + "targetStrategy": "AsIs", "redirect": "127.0.0.1:3366", "userLevel": 0, "fragment": { "packets": "tlshello", "length": "100-200", - "interval": "10-20" // ms + "interval": "10-20", // ms + "maxSplit": "300-400" }, "noises": [ { "type": "base64", "packet": "7nQBAAABAAAAAAAABnQtcmluZwZtc2VkZ2UDbmV0AAABAAE=", - "delay": "10-16" + "delay": "10-16", + "applyTo": "ip" }, { "type": "rand", "packet": "10-20", - "delay": "10-16" + "delay": "10-16", + "applyTo": "ipv4" }, { "type": "str", "packet": "hiGFW", - "delay": "10-16" + "delay": "10-16", + "applyTo": "ipv6" } ], "proxyProtocol": 0 } ``` -> `domainStrategy`: "AsIs" +> `targetStrategy`: "AsIs" > "UseIP" | "UseIPv6v4" | "UseIPv6" | "UseIPv4v6" | "UseIPv4" > "ForceIP" | "ForceIPv6v4" | "ForceIPv6" | "ForceIPv4v6" | "ForceIPv4" @@ -59,6 +63,10 @@ When using the `"UseIP"` mode and the `sendThrough` field is specified in the [o When using the `"UseIPv4"` or `"UseIPv6"` mode, Freedom will only use the corresponding IPv4 or IPv6 address. If `sendThrough` specifies a mismatched local address, the connection will fail. ::: +::: tip TIP 3 +When using the `"UseIP"` or `ForceIP` mode, and when network is UDP, Freedom tries to select the same IP-type as original-target-ip-type(before sniffing), to prevent MTU problems, and prevent detection by GFW. +::: + > `redirect`: address_port Freedom will force all data to be sent to the specified address (instead of the address specified in the inbound). @@ -83,6 +91,8 @@ A key-value map used to control TCP fragmentation,under some circumstances it `"interval"`: time between fragments(ms) +`"maxSplit"`: the maximum number of split fragments per packet, for example if we have a packet with 100-bytes size, and we set length to "1", and set maxSplit to "50", we send 49 1-bytes-packet with one 51-bytes-packet. + ::: warning ⚠️ "noise":{} is deptecated,only "noises":[{}] is supported in 24.9.16 and later ::: @@ -104,6 +114,14 @@ if type is set to "base64" this field will take a base64 encoded string If not specified, the default value is 0. +`"applyTo"`: three mode are supported: "ipv4"/"ipv6"/"ip", if not specified, the default value is "ip". + +if "ipv4", noise is sent only when remote address(after resolving domain to ip) is IPv4. + +if "ipv6", noise is sent only when remote address(after resolving domain to ip) is IPv6. + +if "ip", noise is always sent. + > `proxyProtocol`: number The value of `proxyProtocol` represents the PROXY Protocol version. default value is `0`.