add options to gui to enable kcp (#583)
* add test to kcp * add options to gui to enable kcp
This commit is contained in:
@@ -120,6 +120,21 @@ function searchListenerSuggestions(e: { query: string }) {
|
|||||||
listenerSuggestions.value = ret
|
listenerSuggestions.value = ret
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface BoolFlag {
|
||||||
|
field: keyof NetworkConfig
|
||||||
|
help: string
|
||||||
|
}
|
||||||
|
|
||||||
|
const bool_flags: BoolFlag[] = [
|
||||||
|
{ field: 'latency_first', help: 'latency_first_help' },
|
||||||
|
{ field: 'use_smoltcp', help: 'use_smoltcp_help' },
|
||||||
|
{ field: 'enable_kcp_proxy', help: 'enable_kcp_proxy_help' },
|
||||||
|
{ field: 'disable_kcp_input', help: 'disable_kcp_input_help' },
|
||||||
|
{ field: 'disable_p2p', help: 'disable_p2p_help' },
|
||||||
|
{ field: 'bind_device', help: 'bind_device_help' },
|
||||||
|
{ field: 'no_tun', help: 'no_tun_help' },
|
||||||
|
]
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
@@ -188,11 +203,18 @@ function searchListenerSuggestions(e: { query: string }) {
|
|||||||
|
|
||||||
<Panel :header="t('advanced_settings')" toggleable collapsed>
|
<Panel :header="t('advanced_settings')" toggleable collapsed>
|
||||||
<div class="flex flex-col gap-y-2">
|
<div class="flex flex-col gap-y-2">
|
||||||
|
|
||||||
<div class="flex flex-row gap-x-9 flex-wrap">
|
<div class="flex flex-row gap-x-9 flex-wrap">
|
||||||
<div class="flex flex-col gap-2 basis-5/12 grow">
|
<div class="flex flex-col gap-2 basis-5/12 grow">
|
||||||
<div class="flex items-center">
|
<label> {{ t('flags_switch') }} </label>
|
||||||
<Checkbox v-model="curNetwork.latency_first" input-id="use_latency_first" :binary="true" />
|
<div class="flex flex-row flex-wrap">
|
||||||
<label for="use_latency_first" class="ml-2"> {{ t('use_latency_first') }} </label>
|
|
||||||
|
<div class="basis-64 flex" v-for="flag in bool_flags">
|
||||||
|
<Checkbox v-model="curNetwork[flag.field]" :input-id="flag.field" :binary="true" />
|
||||||
|
<label :for="flag.field" class="ml-2"> {{ t(flag.field) }} </label>
|
||||||
|
<span class="pi pi-question-circle ml-2 self-center" v-tooltip="t(flag.help)"></span>
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -69,6 +69,29 @@ upload_bytes: 上传
|
|||||||
download_bytes: 下载
|
download_bytes: 下载
|
||||||
loss_rate: 丢包率
|
loss_rate: 丢包率
|
||||||
|
|
||||||
|
flags_switch: 功能开关
|
||||||
|
|
||||||
|
latency_first: 开启延迟优先模式
|
||||||
|
latency_first_help: 忽略中转跳数,选择总延迟最低的路径
|
||||||
|
|
||||||
|
use_smoltcp: 使用用户态协议栈
|
||||||
|
use_smoltcp_help: 使用用户态 TCP/IP 协议栈,避免操作系统防火墙问题导致无法子网代理。
|
||||||
|
|
||||||
|
enable_kcp_proxy: 启用 KCP 代理
|
||||||
|
enable_kcp_proxy_help: 将 TCP 流量转为 KCP 流量,降低传输延迟,提升传输速度。
|
||||||
|
|
||||||
|
disable_kcp_input: 禁用 KCP 输入
|
||||||
|
disable_kcp_input_help: 禁用 KCP 入站流量,其他开启 KCP 代理的节点无法连接到本节点。
|
||||||
|
|
||||||
|
disable_p2p: 禁用 P2P
|
||||||
|
disable_p2p_help: 禁用 P2P 模式,所有流量通过手动指定的服务器中转。
|
||||||
|
|
||||||
|
bind_device: 仅使用物理网卡
|
||||||
|
bind_device_help: 仅使用物理网卡,避免 EasyTier 通过其他虚拟网建立连接。
|
||||||
|
|
||||||
|
no_tun: 无 TUN 模式
|
||||||
|
no_tun_help: 不使用 TUN 网卡,适合无管理员权限时使用。本节点仅允许被访问。访问其他节点需要使用 SOCK5
|
||||||
|
|
||||||
status:
|
status:
|
||||||
version: 内核版本
|
version: 内核版本
|
||||||
local: 本机
|
local: 本机
|
||||||
@@ -113,3 +136,4 @@ event:
|
|||||||
VpnPortalClientDisconnected: VPN门户客户端已断开连接
|
VpnPortalClientDisconnected: VPN门户客户端已断开连接
|
||||||
DhcpIpv4Changed: DHCP IPv4地址更改
|
DhcpIpv4Changed: DHCP IPv4地址更改
|
||||||
DhcpIpv4Conflicted: DHCP IPv4地址冲突
|
DhcpIpv4Conflicted: DHCP IPv4地址冲突
|
||||||
|
|
||||||
|
|||||||
@@ -35,6 +35,13 @@ export interface NetworkConfig {
|
|||||||
latency_first: boolean
|
latency_first: boolean
|
||||||
|
|
||||||
dev_name: string
|
dev_name: string
|
||||||
|
|
||||||
|
use_smoltcp?: boolean
|
||||||
|
enable_kcp_proxy?: boolean
|
||||||
|
disable_kcp_input?: boolean
|
||||||
|
disable_p2p?: boolean
|
||||||
|
bind_device?: boolean
|
||||||
|
no_tun?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
export function DEFAULT_NETWORK_CONFIG(): NetworkConfig {
|
export function DEFAULT_NETWORK_CONFIG(): NetworkConfig {
|
||||||
@@ -67,8 +74,15 @@ export function DEFAULT_NETWORK_CONFIG(): NetworkConfig {
|
|||||||
'wg://0.0.0.0:11011',
|
'wg://0.0.0.0:11011',
|
||||||
],
|
],
|
||||||
rpc_port: 0,
|
rpc_port: 0,
|
||||||
latency_first: true,
|
latency_first: false,
|
||||||
dev_name: '',
|
dev_name: '',
|
||||||
|
|
||||||
|
use_smoltcp: false,
|
||||||
|
enable_kcp_proxy: false,
|
||||||
|
disable_kcp_input: false,
|
||||||
|
disable_p2p: false,
|
||||||
|
bind_device: true,
|
||||||
|
no_tun: false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ pub fn gen_default_flags() -> Flags {
|
|||||||
data_compress_algo: CompressionAlgoPb::None.into(),
|
data_compress_algo: CompressionAlgoPb::None.into(),
|
||||||
bind_device: true,
|
bind_device: true,
|
||||||
enable_kcp_proxy: false,
|
enable_kcp_proxy: false,
|
||||||
disable_kcp_input: true,
|
disable_kcp_input: false,
|
||||||
disable_relay_kcp: true,
|
disable_relay_kcp: true,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -525,6 +525,31 @@ impl NetworkConfig {
|
|||||||
if let Some(dev_name) = self.dev_name.clone() {
|
if let Some(dev_name) = self.dev_name.clone() {
|
||||||
flags.dev_name = dev_name;
|
flags.dev_name = dev_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if let Some(use_smoltcp) = self.use_smoltcp {
|
||||||
|
flags.use_smoltcp = use_smoltcp;
|
||||||
|
}
|
||||||
|
|
||||||
|
if let Some(enable_kcp_proxy) = self.enable_kcp_proxy {
|
||||||
|
flags.enable_kcp_proxy = enable_kcp_proxy;
|
||||||
|
}
|
||||||
|
|
||||||
|
if let Some(disable_kcp_input) = self.disable_kcp_input {
|
||||||
|
flags.disable_kcp_input = disable_kcp_input;
|
||||||
|
}
|
||||||
|
|
||||||
|
if let Some(disable_p2p) = self.disable_p2p {
|
||||||
|
flags.disable_p2p = disable_p2p;
|
||||||
|
}
|
||||||
|
|
||||||
|
if let Some(bind_device) = self.bind_device {
|
||||||
|
flags.bind_device = bind_device;
|
||||||
|
}
|
||||||
|
|
||||||
|
if let Some(no_tun) = self.no_tun {
|
||||||
|
flags.no_tun = no_tun;
|
||||||
|
}
|
||||||
|
|
||||||
cfg.set_flags(flags);
|
cfg.set_flags(flags);
|
||||||
Ok(cfg)
|
Ok(cfg)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,6 +40,13 @@ message NetworkConfig {
|
|||||||
optional bool latency_first = 19;
|
optional bool latency_first = 19;
|
||||||
|
|
||||||
optional string dev_name = 20;
|
optional string dev_name = 20;
|
||||||
|
|
||||||
|
optional bool use_smoltcp = 21;
|
||||||
|
optional bool enable_kcp_proxy = 22;
|
||||||
|
optional bool disable_kcp_input = 23;
|
||||||
|
optional bool disable_p2p = 24;
|
||||||
|
optional bool bind_device = 25;
|
||||||
|
optional bool no_tun = 26;
|
||||||
}
|
}
|
||||||
|
|
||||||
message MyNodeInfo {
|
message MyNodeInfo {
|
||||||
|
|||||||
@@ -364,6 +364,7 @@ pub async fn subnet_proxy_three_node_test(
|
|||||||
#[values("tcp", "udp", "wg")] proto: &str,
|
#[values("tcp", "udp", "wg")] proto: &str,
|
||||||
#[values(true, false)] no_tun: bool,
|
#[values(true, false)] no_tun: bool,
|
||||||
#[values(true, false)] relay_by_public_server: bool,
|
#[values(true, false)] relay_by_public_server: bool,
|
||||||
|
#[values(true, false)] enable_kcp_proxy: bool,
|
||||||
) {
|
) {
|
||||||
let insts = init_three_node_ex(
|
let insts = init_three_node_ex(
|
||||||
proto,
|
proto,
|
||||||
@@ -382,6 +383,12 @@ pub async fn subnet_proxy_three_node_test(
|
|||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if cfg.get_inst_name() == "inst1" && enable_kcp_proxy {
|
||||||
|
let mut flags = cfg.get_flags();
|
||||||
|
flags.enable_kcp_proxy = true;
|
||||||
|
cfg.set_flags(flags);
|
||||||
|
}
|
||||||
|
|
||||||
cfg
|
cfg
|
||||||
},
|
},
|
||||||
relay_by_public_server,
|
relay_by_public_server,
|
||||||
|
|||||||
Reference in New Issue
Block a user