1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter-feeds.git synced 2025-03-09 15:40:03 +00:00

Merge branch 'test' into develop

This commit is contained in:
suyuan 2020-11-27 16:21:06 +08:00
commit 4262e9fc01
13 changed files with 73 additions and 40 deletions

View file

@ -906,13 +906,13 @@ window.setTimeout(function()
<% if curifname == "all" then %> <% if curifname == "all" then %>
<strong><%:Download:%></strong> <strong><%:Download:%></strong>
<embed id="dnsvg" style="width:100%; height:300px; border:1px solid #000000; background-color:#FFFFFF" src="<%=resource%>/bandwidth.svg" /> <embed id="dnsvg" style="width:100%; height:300px; border:1px solid #000000; background-color:#FFFFFF" src="<%=resource%>/svg/bandwidth.svg" />
<div style="text-align:right"><small id="dnscale">-</small></div> <div style="text-align:right"><small id="dnscale">-</small></div>
<table style="width:100%; table-layout:fixed" cellspacing="5" id="download_stats"> <table style="width:100%; table-layout:fixed" cellspacing="5" id="download_stats">
</table> </table>
<strong><%:Upload:%></strong> <strong><%:Upload:%></strong>
<embed id="upsvg" style="width:100%; height:300px; border:1px solid #000000; background-color:#FFFFFF" src="<%=resource%>/bandwidth.svg" /> <embed id="upsvg" style="width:100%; height:300px; border:1px solid #000000; background-color:#FFFFFF" src="<%=resource%>/svg/bandwidth.svg" />
<div style="text-align:right"><small id="upscale">-</small></div> <div style="text-align:right"><small id="upscale">-</small></div>
<table style="width:100%; table-layout:fixed" cellspacing="5" id="upload_stats"> <table style="width:100%; table-layout:fixed" cellspacing="5" id="upload_stats">
</table> </table>
@ -920,7 +920,7 @@ window.setTimeout(function()
<% else %> <% else %>
<embed id="bwsvg" style="width:100%; height:300px; border:1px solid #000000; background-color:#FFFFFF" src="<%=resource%>/bandwidth.svg" /> <embed id="bwsvg" style="width:100%; height:300px; border:1px solid #000000; background-color:#FFFFFF" src="<%=resource%>/svg/bandwidth.svg" />
<div style="text-align:right"><small id="scale">-</small></div> <div style="text-align:right"><small id="scale">-</small></div>
<br /> <br />

View file

@ -32,8 +32,9 @@
-%> -%>
<%+header%> <%+header%>
<% <%
local ucic = luci.model.uci.cursor() local ucic = luci.model.uci.cursor()
menuentry = ucic:get("openmptcprouter","settings","menu") or "openmptcprouter" local menuentry = ucic:get("openmptcprouter","settings","menu") or "openmptcprouter"
local statuslogo = ucic:get("openmptcprouter","settings","statuslogo") or "openmptcprouter.png"
%> %>
<link rel="stylesheet" type="text/css" href="<%=resource%>/openmptcprouter/css/wanstatus.css?v=git-20"/> <link rel="stylesheet" type="text/css" href="<%=resource%>/openmptcprouter/css/wanstatus.css?v=git-20"/>
<script type="text/javascript" src="<%=resource%>/seedrandom.js?v=git-20"></script> <script type="text/javascript" src="<%=resource%>/seedrandom.js?v=git-20"></script>
@ -107,7 +108,7 @@ menuentry = ucic:get("openmptcprouter","settings","menu") or "openmptcprouter"
} }
} }
temp += '<tr><td></td></tr><tr><td><a href="#" id="omr">'; temp += '<tr><td></td></tr><tr><td><a href="#" id="omr">';
var equipmentIcon = '<img src="<%=resource%>/openmptcprouter.png" style:"top: 0px;" />'; var equipmentIcon = '<img src="<%=resource%>/<%=statuslogo%>" style:"top: 0px;" />';
var title = String.format("%s (%s)", mArray.openmptcprouter.hostname, mArray.openmptcprouter.local_addr); var title = String.format("%s (%s)", mArray.openmptcprouter.hostname, mArray.openmptcprouter.local_addr);
var statusMessageClass = ""; var statusMessageClass = "";
var statusIcon = "<%=resource%>/openmptcprouter/images/statusOK.png"; var statusIcon = "<%=resource%>/openmptcprouter/images/statusOK.png";

View file

@ -737,15 +737,15 @@
local upload = "0" local upload = "0"
download = uci:get("network",ifname,"downloadspeed") or "0" download = uci:get("network",ifname,"downloadspeed") or "0"
upload = uci:get("network",ifname,"uploadspeed") or "0" upload = uci:get("network",ifname,"uploadspeed") or "0"
if download == "0" or upload == "0" then --if download == "0" or upload == "0" then
if nixio.fs.access("/etc/init.d/sqm") then -- if nixio.fs.access("/etc/init.d/sqm") then
download = uci:get("sqm",ifname,"download") -- download = uci:get("sqm",ifname,"download")
upload = uci:get("sqm",ifname,"upload") -- upload = uci:get("sqm",ifname,"upload")
else -- else
download = uci:get("qos",ifname,"download") -- download = uci:get("qos",ifname,"download")
upload = uci:get("qos",ifname,"upload") -- upload = uci:get("qos",ifname,"upload")
end -- end
end --end
%> %>
<div class="cbi-value" data-index="14"> <div class="cbi-value" data-index="14">
<label class="cbi-value-title"><%:MPTCP over VPN%></label> <label class="cbi-value-title"><%:MPTCP over VPN%></label>

View file

@ -814,6 +814,12 @@ if [ "$(pgrep v2ray)" = "" ] && [ "$(uci -q get v2ray.main.enabled)" = "1" ] &&
sleep 5 sleep 5
fi fi
if [ "$(pgrep rpcd)" = "" ] && [ -f /etc/init.d/rpcd ]; then
_log "Can't find rpcd, restart it..."
/etc/init.d/rpcd restart
sleep 5
fi
if [ "$(uci -q get v2ray.main.enabled)" = "1" ] && [ -f /etc/init.d/v2ray ] && [ "$(pgrep -f omr-tracker-v2ray)" = "" ]; then if [ "$(uci -q get v2ray.main.enabled)" = "1" ] && [ -f /etc/init.d/v2ray ] && [ "$(pgrep -f omr-tracker-v2ray)" = "" ]; then
_log "Can't find omr-tracker-v2ray, restart omr-tracker..." _log "Can't find omr-tracker-v2ray, restart omr-tracker..."
/etc/init.d/omr-tracker restart /etc/init.d/omr-tracker restart

View file

@ -65,6 +65,7 @@ _check_master() {
add_list openvpn.omr.remote=$ip add_list openvpn.omr.remote=$ip
commit openvpn commit openvpn
EOF EOF
/etc/init.d/openmptcprouter-vps get_openvpn_key $name >/dev/null 2>/dev/null
/etc/init.d/shadowsocks-libev restart >/dev/null 2>/dev/null /etc/init.d/shadowsocks-libev restart >/dev/null 2>/dev/null
/etc/init.d/v2ray restart >/dev/null 2>/dev/null /etc/init.d/v2ray restart >/dev/null 2>/dev/null
/etc/init.d/glorytun restart >/dev/null 2>/dev/null /etc/init.d/glorytun restart >/dev/null 2>/dev/null
@ -88,7 +89,7 @@ _check_backup() {
_check_server $ip $port _check_server $ip $port
[ "$server_ping" = true ] && [ "$(uci -q get shadowsocks-libev.sss0.server | tr -d '\n')" = "$ip" ] && break [ "$server_ping" = true ] && [ "$(uci -q get shadowsocks-libev.sss0.server | tr -d '\n')" = "$ip" ] && break
[ "$server_ping" = true ] && [ "$(uci -q get shadowsocks-libev.sss0.server | tr -d '\n')" != "$ip" ] && { [ "$server_ping" = true ] && [ "$(uci -q get shadowsocks-libev.sss0.server | tr -d '\n')" != "$ip" ] && {
logger -t "OMR-Tracker-Server" "User backup server $1 ($ip)" logger -t "OMR-Tracker-Server" "Use backup server $1 ($ip)"
uci -q batch <<-EOF >/dev/null uci -q batch <<-EOF >/dev/null
set shadowsocks-libev.sss0.server=$ip set shadowsocks-libev.sss0.server=$ip
commit shadowsocks-libev commit shadowsocks-libev
@ -105,6 +106,7 @@ _check_backup() {
add_list openvpn.omr.remote=$ip add_list openvpn.omr.remote=$ip
commit openvpn commit openvpn
EOF EOF
/etc/init.d/openmptcprouter-vps get_openvpn_key $name >/dev/null 2>/dev/null
/etc/init.d/shadowsocks-libev restart >/dev/null 2>/dev/null /etc/init.d/shadowsocks-libev restart >/dev/null 2>/dev/null
/etc/init.d/v2ray restart >/dev/null 2>/dev/null /etc/init.d/v2ray restart >/dev/null 2>/dev/null
/etc/init.d/glorytun restart >/dev/null 2>/dev/null /etc/init.d/glorytun restart >/dev/null 2>/dev/null

View file

@ -2,7 +2,7 @@
# Copyright (C) 2018 Ycarus (Yannick Chabanois) <ycarus@zugaina.org> # Copyright (C) 2018 Ycarus (Yannick Chabanois) <ycarus@zugaina.org>
# Released under GPL 3. See LICENSE for the full terms. # Released under GPL 3. See LICENSE for the full terms.
START=09 START=9
STOP=98 STOP=98
boot() { boot() {

View file

@ -78,7 +78,7 @@ MY_DEPENDS := \
!TARGET_mvebu:kmod-usb-net-huawei-cdc-ncm !TARGET_mvebu:kmod-usb-net-rndis !TARGET_mvebu:kmod-usb-net-cdc-ether !TARGET_mvebu:kmod-usb-net-ipheth !TARGET_mvebu:usbmuxd \ !TARGET_mvebu:kmod-usb-net-huawei-cdc-ncm !TARGET_mvebu:kmod-usb-net-rndis !TARGET_mvebu:kmod-usb-net-cdc-ether !TARGET_mvebu:kmod-usb-net-ipheth !TARGET_mvebu:usbmuxd \
kmod-rt2800-usb kmod-rtl8xxxu kmod-rtl8192cu kmod-net-rtl8192su \ kmod-rt2800-usb kmod-rtl8xxxu kmod-rtl8192cu kmod-net-rtl8192su \
!TARGET_mvebu:luci-proto-qmi wpad-basic kmod-mt7601u kmod-rtl8187 \ !TARGET_mvebu:luci-proto-qmi wpad-basic kmod-mt7601u kmod-rtl8187 \
luci-app-mlvpn mlvpn 464xlat !TARGET_mvebu:kmod-usb-net-smsc75xx kmod-zram kmod-swconfig swconfig kmod-ipt-nat kmod-ipt-nat6 luci-app-https-dns-proxy kmod-tcp-nanqinlang iptables-mod-ipopt igmpproxy ss iptraf-ng \ luci-app-mlvpn mlvpn 464xlat !TARGET_mvebu:kmod-usb-net-smsc75xx kmod-zram kmod-swconfig swconfig kmod-ipt-nat kmod-ipt-nat6 luci-app-https-dns-proxy kmod-tcp-nanqinlang kmod-tcp-bbr2 iptables-mod-ipopt igmpproxy ss iptraf-ng \
luci-app-acl block-mount blockd fstools luci-app-shutdown libwebp luci-proto-gre tcptraceroute luci-proto-mbim kmod-rtl8xxxu kmod-ath9k-htc luci-app-ttyd luci-mod-dashboard (TARGET_x86||TARGET_x86_64):rtl8192eu-firmware kmod-usb2 libustream-wolfssl (TARGET_x86||TARGET_x86_64):kmod-ixgbevf \ luci-app-acl block-mount blockd fstools luci-app-shutdown libwebp luci-proto-gre tcptraceroute luci-proto-mbim kmod-rtl8xxxu kmod-ath9k-htc luci-app-ttyd luci-mod-dashboard (TARGET_x86||TARGET_x86_64):rtl8192eu-firmware kmod-usb2 libustream-wolfssl (TARGET_x86||TARGET_x86_64):kmod-ixgbevf \
hwinfo (TARGET_x86||TARGET_x86_64):dmidecode hwinfo (TARGET_x86||TARGET_x86_64):dmidecode
# luci-theme-bootstrap luci-theme-openwrt-2020 luci-theme-openwrt luci-app-status # luci-theme-bootstrap luci-theme-openwrt-2020 luci-theme-openwrt luci-app-status

View file

@ -6,7 +6,7 @@ START=99
USE_PROCD=1 USE_PROCD=1
EXTRA_COMMANDS="set_pihole backup_send backup_get backup_list set_vps_firewall" EXTRA_COMMANDS="set_pihole backup_send backup_get backup_list set_vps_firewall get_openvpn_key"
_parse_result() { _parse_result() {
result=$("echo $1 | jsonfilter -q -e '@.result'") result=$("echo $1 | jsonfilter -q -e '@.result'")
@ -114,6 +114,27 @@ _set_openvpn_vps() {
fi fi
} }
get_openvpn_key() {
servername=$2
[ -z "$vps_config" ] && vps_config=$(_get_json "config")
[ -z "$vps_config" ] && return
openvpn_client_key="$(echo "$vps_config" | jsonfilter -q -e '@.openvpn.client_key')"
[ -n "$openvpn_client_key" ] && {
echo $openvpn_client_key | base64 -d > /etc/luci-uploads/client.key
}
openvpn_client_crt="$(echo "$vps_config" | jsonfilter -q -e '@.openvpn.client_crt')"
[ -n "$openvpn_client_crt" ] && {
echo $openvpn_client_crt | base64 -d > /etc/luci-uploads/client.crt
}
openvpn_client_ca="$(echo "$vps_config" | jsonfilter -q -e '@.openvpn.client_ca')"
[ -n "$openvpn_client_ca" ] && {
echo $openvpn_client_ca | base64 -d > /etc/luci-uploads/ca.crt
}
[ -n "$openvpn_client_key" ] && [ -n "$openvpn_client_crt" ] && [ -n "$openvpn_client_ca" ] && {
/etc/init.d/openvpn restart
}
}
_get_ss_redir() { _get_ss_redir() {
config_get cf_ebpf $1 ebpf config_get cf_ebpf $1 ebpf
[ "$cf_ebpf" = "1" ] && ebpf="true" [ "$cf_ebpf" = "1" ] && ebpf="true"
@ -166,7 +187,7 @@ _set_ss_server_vps() {
if [ "$current_obfs_plugin" != "$obfs_plugin" ] || [ "$current_obfs_type" != "$obfs_type" ] || [ "$current_port" != "$port" ] || [ "$current_method" != "$method" ] || [ "$current_key" != "$key" ] || [ "$current_ebpf" != "$ebpf" ] || [ "$current_obfs" != "$obfs" ] || [ "$current_fast_open" != "$fast_open" ] || [ "$current_no_delay" != "$no_delay" ]; then if [ "$current_obfs_plugin" != "$obfs_plugin" ] || [ "$current_obfs_type" != "$obfs_type" ] || [ "$current_port" != "$port" ] || [ "$current_method" != "$method" ] || [ "$current_key" != "$key" ] || [ "$current_ebpf" != "$ebpf" ] || [ "$current_obfs" != "$obfs" ] || [ "$current_fast_open" != "$fast_open" ] || [ "$current_no_delay" != "$no_delay" ]; then
local settings local settings
settings='{"port": '$port',"method":"'$method'","fast_open":'$fast_open',"reuse_port":true,"no_delay":'$no_delay',"mptcp":true,"key":"'$key'","ebpf":'$ebpf',"obfs":'$obfs',"obfs_plugin":"'$obfs_plugin'","obfs_type":"'$obfs_type'"}' settings='{"port": '$port',"method":"'$method'","fast_open":'$fast_open',"reuse_port":true,"no_delay":'$no_delay',"mptcp":true,"key":"'$key'","ebpf":'$ebpf',"obfs":'$obfs',"obfs_plugin":"'$obfs_plugin'","obfs_type":"'$obfs_type'"}'
echo $(_set_json "shadowsocks" "$settings") _set_json "shadowsocks" "$settings"
fi fi
} }
@ -906,7 +927,7 @@ _set_vps_firewall() {
vps_config="" vps_config=""
_login _login
[ -z "$token" ] && { [ -z "$token" ] && {
logger -t "OMR-VPS" "Can't get token, try later" logger -t "OMR-VPS" "Can't get ${fwservername} token, try later"
uci -q batch <<-EOF >/dev/null uci -q batch <<-EOF >/dev/null
set openmptcprouter.${fwservername}.admin_error=1 set openmptcprouter.${fwservername}.admin_error=1
EOF EOF
@ -967,7 +988,7 @@ _set_config_from_vps() {
[ -z "$vps_config" ] && vps_config=$(_get_json "config") [ -z "$vps_config" ] && vps_config=$(_get_json "config")
[ -z "$vps_config" ] && return [ -z "$vps_config" ] && return
logger -t "OMR-VPS" "Get config from VPS..." logger -t "OMR-VPS" "Get config from server ${servername}..."
noerror=1 noerror=1
# get VPS ip # get VPS ip
vpsip="$(uci -q get openmptcprouter.${servername}.ip)" vpsip="$(uci -q get openmptcprouter.${servername}.ip)"
@ -1371,7 +1392,7 @@ _backup_send() {
vps_config="" vps_config=""
_login _login
[ -z "$token" ] && { [ -z "$token" ] && {
logger -t "OMR-VPS" "Can't get token, try later" logger -t "OMR-VPS" "Can't get ${servername} token, try later"
uci -q batch <<-EOF >/dev/null uci -q batch <<-EOF >/dev/null
set openmptcprouter.${servername}.admin_error=1 set openmptcprouter.${servername}.admin_error=1
EOF EOF
@ -1412,7 +1433,7 @@ _backup_get_and_apply() {
vps_config="" vps_config=""
_login _login
[ -z "$token" ] && { [ -z "$token" ] && {
logger -t "OMR-VPS" "Can't get token, try later" logger -t "OMR-VPS" "Can't get ${servername} token, try later"
uci -q batch <<-EOF >/dev/null uci -q batch <<-EOF >/dev/null
set openmptcprouter.${servername}.admin_error=1 set openmptcprouter.${servername}.admin_error=1
EOF EOF
@ -1446,7 +1467,7 @@ _backup_list() {
vps_config="" vps_config=""
_login _login
[ -z "$token" ] && { [ -z "$token" ] && {
logger -t "OMR-VPS" "Can't get token, try later" logger -t "OMR-VPS" "Can't get ${servername} token, try later"
uci -q batch <<-EOF >/dev/null uci -q batch <<-EOF >/dev/null
set openmptcprouter.${servername}.admin_error=1 set openmptcprouter.${servername}.admin_error=1
EOF EOF
@ -1483,6 +1504,7 @@ _config_service() {
[ -z "$(uci -q get openmptcprouter.${servername}.password)" ] && return [ -z "$(uci -q get openmptcprouter.${servername}.password)" ] && return
[ -z "$(uci -q get openmptcprouter.${servername}.port)" ] && return [ -z "$(uci -q get openmptcprouter.${servername}.port)" ] && return
[ -z "$(uci -q get openmptcprouter.${servername}.ip)" ] && return [ -z "$(uci -q get openmptcprouter.${servername}.ip)" ] && return
[ "$(uci -q get openmptcprouter.${servername}.disabled)" = "1" ] && return
token="" token=""
vps_config="" vps_config=""
_login _login
@ -1491,9 +1513,9 @@ _config_service() {
_ping_server _ping_server
status=$? status=$?
if $(exit $status); then if $(exit $status); then
reason="can ping server" reason="can ping server ${servername}"
else else
reason="can't ping server" reason="can't ping server ${servername}"
fi fi
port="$(uci -q get openmptcprouter.${servername}.port)" port="$(uci -q get openmptcprouter.${servername}.port)"
server="$(uci -q get openmptcprouter.${servername}.ip)" server="$(uci -q get openmptcprouter.${servername}.ip)"
@ -1505,19 +1527,21 @@ _config_service() {
if [ "$(uci -q get openmptcprouter.${servername}.username)" != "openmptcprouter" ]; then if [ "$(uci -q get openmptcprouter.${servername}.username)" != "openmptcprouter" ]; then
reason="$reason, custom username" reason="$reason, custom username"
fi fi
logger -t "OMR-VPS" "Can't get token, try later ($reason)" logger -t "OMR-VPS" "Can't get ${servername} token, try later ($reason)"
uci -q batch <<-EOF >/dev/null uci -q batch <<-EOF >/dev/null
set openmptcprouter.${servername}.admin_error=1 set openmptcprouter.${servername}.admin_error=1
EOF EOF
return return
} }
error=0 error=0
[ "$(uci -q get openmptcprouter.${servername}.get_config)" = "1" ] && { [ "$(uci -q get openmptcprouter.${servername}.get_config)" = "1" ] && [ "$(uci -q get openmptcprouter.${servername}.master)" = "1" ] && {
_set_config_from_vps _set_config_from_vps
_get_gre_tunnel _get_gre_tunnel
} }
_get_vps_config [ "$(uci -q get openmptcprouter.${servername}.master)" = "1" ] && {
_get_vps_config
}
[ -z "$vps_config" ] && vps_config=$(_get_json "config") [ -z "$vps_config" ] && vps_config=$(_get_json "config")
[ -z "$vps_config" ] && return [ -z "$vps_config" ] && return
user_permission="$(echo "$vps_config" | jsonfilter -q -e '@.user.permission')" user_permission="$(echo "$vps_config" | jsonfilter -q -e '@.user.permission')"

View file

@ -6,9 +6,9 @@ uci -q batch <<-EOF >/dev/null
commit system commit system
set rpcd.@rpcd[0].timeout=120 set rpcd.@rpcd[0].timeout=120
commit rpcd commit rpcd
luci.apply.timeout='20' set luci.apply.timeout='20'
commit luci commit luci
fstab.@global[0].check_fs='1' set fstab.@global[0].check_fs='1'
commit fstab commit fstab
EOF EOF

View file

@ -229,8 +229,8 @@ ss_rules_iptchains_init_() {
fi fi
;; ;;
udp) udp)
ip rule add fwmark 1 lookup 100 ip rule add fwmark 1 lookup 100 || true
ip route add local default dev lo table 100 ip route add local default dev lo table 100 || true
forward_rules="-A ssr_${rule}_forward -p udp -j TPROXY --on-port "$o_redir_udp_port" --tproxy-mark 0x01/0x01" forward_rules="-A ssr_${rule}_forward -p udp -j TPROXY --on-port "$o_redir_udp_port" --tproxy-mark 0x01/0x01"
;; ;;
esac esac

View file

@ -211,8 +211,8 @@ ss_rules6_iptchains_init_() {
fi fi
;; ;;
udp) udp)
ip -f inet6 rule add fwmark 1 lookup 100 ip -f inet6 rule add fwmark 1 lookup 100 || true
ip -f inet6 route add local default dev lo table 100 ip -f inet6 route add local default dev lo table 100 || true
forward_rules="-A ssr6_${rule}_forward -p udp -j TPROXY --on-port "$o_redir_udp_port" --tproxy-mark 0x01/0x01" forward_rules="-A ssr6_${rule}_forward -p udp -j TPROXY --on-port "$o_redir_udp_port" --tproxy-mark 0x01/0x01"
;; ;;
esac esac

View file

@ -229,8 +229,8 @@ v2r_rules_iptchains_init_() {
fi fi
;; ;;
udp) udp)
ip rule add fwmark 1 lookup 100 ip rule add fwmark 1 lookup 100 || true
ip route add local default dev lo table 100 ip route add local default dev lo table 100 || true
forward_rules="-A v2r_${rule}_forward -p udp -j TPROXY --on-port "$o_redir_udp_port" --tproxy-mark 0x01/0x01" forward_rules="-A v2r_${rule}_forward -p udp -j TPROXY --on-port "$o_redir_udp_port" --tproxy-mark 0x01/0x01"
;; ;;
esac esac

View file

@ -215,8 +215,8 @@ v2ray_rules6_iptchains_init_() {
fi fi
;; ;;
udp) udp)
ip -f inet6 rule add fwmark 1 lookup 100 ip -f inet6 rule add fwmark 1 lookup 100 || true
ip -f inet6 route add local default dev lo table 100 ip -f inet6 route add local default dev lo table 100 || true
forward_rules=" forward_rules="
-A v2r6_${rule}_forward -p udp -j TPROXY --on-port "$o_redir_udp_port" --tproxy-mark 0x01/0x01 -A v2r6_${rule}_forward -p udp -j TPROXY --on-port "$o_redir_udp_port" --tproxy-mark 0x01/0x01
-A v2r6_${rule}_forward -p tcp -j TPROXY --on-port "$o_redir_udp_port" --tproxy-mark 0x01/0x01 -A v2r6_${rule}_forward -p tcp -j TPROXY --on-port "$o_redir_udp_port" --tproxy-mark 0x01/0x01