From cdc66ef65515971bb9ac66bc20c3bb73107369a8 Mon Sep 17 00:00:00 2001 From: CN_SZTL Date: Sun, 17 Nov 2019 11:07:24 +0800 Subject: [PATCH] passwall: try use ipt2socks replace redsocks2 --- package/lienol/ipt2socks/Makefile | 48 ++++++++++++++ package/lienol/luci-app-passwall/Makefile | 11 ++-- .../luasrc/controller/passwall.lua | 8 +-- .../luasrc/model/cbi/passwall/global.lua | 2 +- .../model/cbi/passwall/serverconfig.lua | 7 +- .../root/etc/config/passwall | 2 +- .../root/usr/share/passwall/app.sh | 65 ++++++++++++------- .../usr/share/passwall/dnsmasq.d/gfwlist.conf | 20 ++++++ .../root/usr/share/passwall/monitor.sh | 4 +- 9 files changed, 125 insertions(+), 42 deletions(-) create mode 100644 package/lienol/ipt2socks/Makefile diff --git a/package/lienol/ipt2socks/Makefile b/package/lienol/ipt2socks/Makefile new file mode 100644 index 0000000000..3e9e281fb8 --- /dev/null +++ b/package/lienol/ipt2socks/Makefile @@ -0,0 +1,48 @@ +# +# Copyright (C) 2014 OpenWrt-dist +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=ipt2socks +PKG_VERSION:=1.0.1 +PKG_RELEASE:=2 + +PKG_SOURCE_PROTO:=git +PKG_SOURCE_URL:=https://github.com/zfl9/ipt2socks.git +PKG_SOURCE_VERSION:=b9bd7d888f2f95a6d7306030c8a5e252732dc451 +PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION) +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz +PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)/$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION) + +include $(INCLUDE_DIR)/package.mk + +define Package/ipt2socks + SECTION:=net + CATEGORY:=Network + TITLE:=Utility for converting iptables (REDIRECT/TPROXY) to SOCKS5 + URL:=https://github.com/zfl9/ipt2socks + DEPENDS:=+libuv +endef + +define Package/ipt2socks/description +Utility for converting iptables (REDIRECT/TPROXY) to SOCKS5. +endef + +define Package/ipt2socks/conffiles +/etc/config/ipt2socks +endef + +#MAKE_FLAGS += INCLUDES="-I$(STAGING_DIR)/usr/include" +#MAKE_FLAGS += LDFLAGS="-L$(STAGING_DIR)/usr/lib" +MAKE_FLAGS += LIBS="-l:libuv_a.a" + +define Package/ipt2socks/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/ipt2socks $(1)/usr/bin +endef + +$(eval $(call BuildPackage,ipt2socks)) diff --git a/package/lienol/luci-app-passwall/Makefile b/package/lienol/luci-app-passwall/Makefile index 804b074fa0..e346ad06fb 100644 --- a/package/lienol/luci-app-passwall/Makefile +++ b/package/lienol/luci-app-passwall/Makefile @@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-passwall PKG_VERSION:=2.0 -PKG_RELEASE:=99-20191114 +PKG_RELEASE:=100-20191116 PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION) PO2LMO:=./po2lmo @@ -17,8 +17,8 @@ include $(INCLUDE_DIR)/package.mk define Package/$(PKG_NAME)/config menu "Configuration" -config PACKAGE_$(PKG_NAME)_INCLUDE_redsocks2 - bool "Include RedSocks2" +config PACKAGE_$(PKG_NAME)_INCLUDE_ipt2socks + bool "Include ipt2socks" default y config PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks @@ -83,13 +83,13 @@ define Package/$(PKG_NAME) PKGARCH:=all DEPENDS:=+curl +libcurl +libmbedtls +ca-bundle +ca-certificates +resolveip +iptables-mod-tproxy +kmod-ipt-tproxy +iptables-mod-ipopt +kmod-ipt-ipopt +ip +ipset +coreutils +coreutils-base64 +coreutils-nohup +luci-lib-jsonc +unzip \ +dnsmasq-full \ - +PACKAGE_$(PKG_NAME)_INCLUDE_redsocks2:redsocks2 \ + +PACKAGE_$(PKG_NAME)_INCLUDE_ipt2socks:ipt2socks \ +PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks:shadowsocks-libev-ss-redir \ +PACKAGE_$(PKG_NAME)_INCLUDE_ShadowsocksR:shadowsocksr-libev-alt \ +PACKAGE_$(PKG_NAME)_INCLUDE_Shadowsocks_socks:shadowsocks-libev-ss-local \ +PACKAGE_$(PKG_NAME)_INCLUDE_ShadowsocksR_socks:shadowsocksr-libev-ssr-local \ +PACKAGE_$(PKG_NAME)_INCLUDE_V2ray:v2ray \ - +PACKAGE_$(PKG_NAME)_INCLUDE_Trojan:trojan +redsocks2 \ + +PACKAGE_$(PKG_NAME)_INCLUDE_Trojan:trojan +ipt2socks \ +PACKAGE_$(PKG_NAME)_INCLUDE_Brook:brook \ +PACKAGE_$(PKG_NAME)_INCLUDE_kcptun:kcptun-client \ +PACKAGE_$(PKG_NAME)_INCLUDE_haproxy:haproxy \ @@ -128,7 +128,6 @@ endef define Package/$(PKG_NAME)/postinst #!/bin/sh chmod a+x $${IPKG_INSTROOT}/usr/share/passwall/* >/dev/null 2>&1 -rm -rf $${IPKG_INSTROOT}/etc/chinadns_chnroute.txt >/dev/null 2>&1 exit 0 endef diff --git a/package/lienol/luci-app-passwall/luasrc/controller/passwall.lua b/package/lienol/luci-app-passwall/luasrc/controller/passwall.lua index 83d24c4572..5242c76b8b 100644 --- a/package/lienol/luci-app-passwall/luasrc/controller/passwall.lua +++ b/package/lienol/luci-app-passwall/luasrc/controller/passwall.lua @@ -127,8 +127,8 @@ function server_status() i, i)) e["tcp_redir_server%s_status" % i] = luci.sys.call(string.format( - "ps -w | grep -v grep | grep -i -E '%s/TCP_%s|brook tproxy -l 0.0.0.0:%s' >/dev/null", - appname, i, listen_port)) == 0 + "ps -w | grep -v grep | grep -i -E '%s/TCP_%s|brook tproxy -l 0.0.0.0:%s|ipt2socks -T -l %s' >/dev/null", + appname, i, listen_port, listen_port)) == 0 end local udp_redir_server_num = luci.sys.exec( @@ -141,8 +141,8 @@ function server_status() i, i)) e["udp_redir_server%s_status" % i] = luci.sys.call(string.format( - "ps -w | grep -v grep | grep -i -E '%s/UDP_%s|brook tproxy -l 0.0.0.0:%s' >/dev/null", - appname, i, listen_port)) == 0 + "ps -w | grep -v grep | grep -i -E '%s/UDP_%s|brook tproxy -l 0.0.0.0:%s|ipt2socks -U -l %s' >/dev/null", + appname, i, listen_port, listen_port)) == 0 end local socks5_proxy_server_num = luci.sys.exec( diff --git a/package/lienol/luci-app-passwall/luasrc/model/cbi/passwall/global.lua b/package/lienol/luci-app-passwall/luasrc/model/cbi/passwall/global.lua index 5678eaa808..4c97f89b10 100644 --- a/package/lienol/luci-app-passwall/luasrc/model/cbi/passwall/global.lua +++ b/package/lienol/luci-app-passwall/luasrc/model/cbi/passwall/global.lua @@ -102,7 +102,7 @@ end o = s:option(ListValue, "dns_mode", translate("DNS Forward Mode")) o.rmempty = false o:reset_values() -if is_installed("openwrt_chinadns") or is_finded("chinadns") then +if is_installed("ChinaDNS") or is_finded("chinadns") then o:value("chinadns", "ChinaDNS") end if is_installed("dns2socks") or is_finded("dns2socks") then diff --git a/package/lienol/luci-app-passwall/luasrc/model/cbi/passwall/serverconfig.lua b/package/lienol/luci-app-passwall/luasrc/model/cbi/passwall/serverconfig.lua index f50b7887d0..bdf2738b2c 100644 --- a/package/lienol/luci-app-passwall/luasrc/model/cbi/passwall/serverconfig.lua +++ b/package/lienol/luci-app-passwall/luasrc/model/cbi/passwall/serverconfig.lua @@ -58,7 +58,8 @@ remarks.default = translate("Node Remarks") remarks.rmempty = false server_type = s:option(ListValue, "server_type", translate("Server Type")) -if is_installed("redsocks2") or is_finded("redsocks2") then +if ((is_installed("redsocks2") or is_finded("redsocks2")) or + (is_installed("ipt2socks") or is_finded("ipt2socks"))) then server_type:value("Socks5", translate("Socks5 Server")) end if is_finded("ss-redir") then @@ -352,8 +353,6 @@ server_type.validate = function(self, value) return value end -v2ray_transport.validate = function(self, value) - return value -end +v2ray_transport.validate = function(self, value) return value end return m diff --git a/package/lienol/luci-app-passwall/root/etc/config/passwall b/package/lienol/luci-app-passwall/root/etc/config/passwall index 522758a6d9..cf51f4ecb1 100644 --- a/package/lienol/luci-app-passwall/root/etc/config/passwall +++ b/package/lienol/luci-app-passwall/root/etc/config/passwall @@ -50,7 +50,7 @@ config global_rules option Pcap_WhiteList_update '0' option auto_update '0' option chnroute_version '2019-10-18' - option gfwlist_version '2019-10-28' + option gfwlist_version '2019-11-16' config global_app option v2ray_client_file '/usr/bin/v2ray/' diff --git a/package/lienol/luci-app-passwall/root/usr/share/passwall/app.sh b/package/lienol/luci-app-passwall/root/usr/share/passwall/app.sh index b5885f46e7..4cc12a0b6e 100644 --- a/package/lienol/luci-app-passwall/root/usr/share/passwall/app.sh +++ b/package/lienol/luci-app-passwall/root/usr/share/passwall/app.sh @@ -388,16 +388,20 @@ start_tcp_redir() { trojan_bin=$(find_bin trojan) [ -n "$trojan_bin" ] && $trojan_bin -c $config_file >/dev/null 2>&1 & elif [ "$TYPE" == "socks5" ]; then - redsocks_bin=$(find_bin redsocks2) - [ -n "$redsocks_bin" ] && { - local server=$(config_get $temp_server server) - local server_port=$(config_get $temp_server server_port) - local server_username=$(config_get $temp_server username) - local server_password=$(config_get $temp_server password) - local redsocks_config_file=$CONFIG_PATH/TCP_$i.conf - gen_redsocks_config $redsocks_config_file tcp $port $server $server_port $server_username $server_password - $redsocks_bin -c $redsocks_config_file >/dev/null & + local server=$(config_get $temp_server server) + local server_port=$(config_get $temp_server server_port) + local server_username=$(config_get $temp_server username) + local server_password=$(config_get $temp_server password) + ipt2socks_bin=$(find_bin ipt2socks) + [ -n "$ipt2socks_bin" ] && { + $ipt2socks_bin -T -l $port -b 0.0.0.0 -s $server -p $server_port -R >/dev/null & } + #redsocks_bin=$(find_bin redsocks2) + #[ -n "$redsocks_bin" ] && { + # local redsocks_config_file=$CONFIG_PATH/TCP_$i.conf + # gen_redsocks_config $redsocks_config_file tcp $port $server $server_port $server_username $server_password + # $redsocks_bin -c $redsocks_config_file >/dev/null & + #} elif [ "$TYPE" == "ss" -o "$TYPE" == "ssr" ]; then ss_bin=$(find_bin "$TYPE"-redir) [ -n "$ss_bin" ] && { @@ -435,23 +439,36 @@ start_udp_redir() { elif [ "$TYPE" == "trojan" ]; then trojan_bin=$(find_bin trojan) [ -n "$trojan_bin" ] && $trojan_bin -c $config_file >/dev/null 2>&1 & - redsocks_bin=$(find_bin redsocks2) - [ -n "$redsocks_bin" ] && { - local redsocks_config_file=$CONFIG_PATH/redsocks_UDP_$i.conf - gen_redsocks_config $redsocks_config_file udp $port "127.0.0.1" $socks5_port - $redsocks_bin -c $redsocks_config_file >/dev/null & + local server=$(config_get $temp_server server) + local server_port=$(config_get $temp_server server_port) + local server_username=$(config_get $temp_server username) + local server_password=$(config_get $temp_server password) + ipt2socks_bin=$(find_bin ipt2socks) + [ -n "$ipt2socks_bin" ] && { + $ipt2socks_bin -U -l $port -b 0.0.0.0 -s 127.0.0.1 -p $socks5_port -R >/dev/null & } + + #redsocks_bin=$(find_bin redsocks2) + #[ -n "$redsocks_bin" ] && { + # local redsocks_config_file=$CONFIG_PATH/redsocks_UDP_$i.conf + # gen_redsocks_config $redsocks_config_file udp $port "127.0.0.1" $socks5_port + # $redsocks_bin -c $redsocks_config_file >/dev/null & + #} elif [ "$TYPE" == "socks5" ]; then - redsocks_bin=$(find_bin redsocks2) - [ -n "$redsocks_bin" ] && { - local server=$(config_get $temp_server server) - local server_port=$(config_get $temp_server server_port) - local server_username=$(config_get $temp_server username) - local server_password=$(config_get $temp_server password) - local redsocks_config_file=$CONFIG_PATH/UDP_$i.conf - gen_redsocks_config $redsocks_config_file udp $port $server $server_port $server_username $server_password - $redsocks_bin -c $redsocks_config_file >/dev/null & + local server=$(config_get $temp_server server) + local server_port=$(config_get $temp_server server_port) + local server_username=$(config_get $temp_server username) + local server_password=$(config_get $temp_server password) + ipt2socks_bin=$(find_bin ipt2socks) + [ -n "$ipt2socks_bin" ] && { + $ipt2socks_bin -U -l $port -b 0.0.0.0 -s $server -p $server_port -R >/dev/null & } + #redsocks_bin=$(find_bin redsocks2) + #[ -n "$redsocks_bin" ] && { + # local redsocks_config_file=$CONFIG_PATH/UDP_$i.conf + # gen_redsocks_config $redsocks_config_file udp $port $server $server_port $server_username $server_password + # $redsocks_bin -c $redsocks_config_file >/dev/null & + #} elif [ "$TYPE" == "ss" -o "$TYPE" == "ssr" ]; then ss_bin=$(find_bin "$TYPE"-redir) [ -n "$ss_bin" ] && { @@ -1130,7 +1147,7 @@ stop() { clean_log source $APP_PATH/iptables.sh stop del_vps_port - kill_all pdnsd Pcap_DNSProxy brook dns2socks haproxy dns-forwarder chinadns dnsproxy + kill_all pdnsd Pcap_DNSProxy brook dns2socks haproxy dns-forwarder chinadns dnsproxy ipt2socks ps -w | grep -E "$CONFIG_TCP_FILE|$CONFIG_UDP_FILE|$CONFIG_SOCKS5_FILE" | grep -v "grep" | awk '{print $1}' | xargs kill -9 >/dev/null 2>&1 & ps -w | grep -E "$CONFIG_PATH" | grep -v "grep" | awk '{print $1}' | xargs kill -9 >/dev/null 2>&1 & ps -w | grep "kcptun_client" | grep "$KCPTUN_REDIR_PORT" | grep -v "grep" | awk '{print $1}' | xargs kill -9 >/dev/null 2>&1 & diff --git a/package/lienol/luci-app-passwall/root/usr/share/passwall/dnsmasq.d/gfwlist.conf b/package/lienol/luci-app-passwall/root/usr/share/passwall/dnsmasq.d/gfwlist.conf index 0011877194..5438ce58c8 100644 --- a/package/lienol/luci-app-passwall/root/usr/share/passwall/dnsmasq.d/gfwlist.conf +++ b/package/lienol/luci-app-passwall/root/usr/share/passwall/dnsmasq.d/gfwlist.conf @@ -192,6 +192,8 @@ server=/.6park.com/127.0.0.1#7913 ipset=/.6park.com/gfwlist server=/.6parker.com/127.0.0.1#7913 ipset=/.6parker.com/gfwlist +server=/.6parknews.com/127.0.0.1#7913 +ipset=/.6parknews.com/gfwlist server=/.7capture.com/127.0.0.1#7913 ipset=/.7capture.com/gfwlist server=/.7cow.com/127.0.0.1#7913 @@ -748,6 +750,8 @@ server=/.avdb.tv/127.0.0.1#7913 ipset=/.avdb.tv/gfwlist server=/.avfantasy.com/127.0.0.1#7913 ipset=/.avfantasy.com/gfwlist +server=/.avg.com/127.0.0.1#7913 +ipset=/.avg.com/gfwlist server=/.avgle.com/127.0.0.1#7913 ipset=/.avgle.com/gfwlist server=/.avidemux.org/127.0.0.1#7913 @@ -2436,6 +2440,8 @@ server=/.dm530.net/127.0.0.1#7913 ipset=/.dm530.net/gfwlist server=/.dmcdn.net/127.0.0.1#7913 ipset=/.dmcdn.net/gfwlist +server=/.dmhy.org/127.0.0.1#7913 +ipset=/.dmhy.org/gfwlist server=/.dmm.co.jp/127.0.0.1#7913 ipset=/.dmm.co.jp/gfwlist server=/.dns-dns.com/127.0.0.1#7913 @@ -2466,6 +2472,8 @@ server=/.dnvod.tv/127.0.0.1#7913 ipset=/.dnvod.tv/gfwlist server=/.doctorvoice.org/127.0.0.1#7913 ipset=/.doctorvoice.org/gfwlist +server=/.documentingreality.com/127.0.0.1#7913 +ipset=/.documentingreality.com/gfwlist server=/.dogfartnetwork.com/127.0.0.1#7913 ipset=/.dogfartnetwork.com/gfwlist server=/.dojin.com/127.0.0.1#7913 @@ -3138,6 +3146,8 @@ server=/.feedburner.com/127.0.0.1#7913 ipset=/.feedburner.com/gfwlist server=/.feeds.fileforum.com/127.0.0.1#7913 ipset=/.feeds.fileforum.com/gfwlist +server=/.feedx.net/127.0.0.1#7913 +ipset=/.feedx.net/gfwlist server=/.feelssh.com/127.0.0.1#7913 ipset=/.feelssh.com/gfwlist server=/.feer.com/127.0.0.1#7913 @@ -4272,6 +4282,8 @@ server=/.guaneryu.com/127.0.0.1#7913 ipset=/.guaneryu.com/gfwlist server=/.guangming.com.my/127.0.0.1#7913 ipset=/.guangming.com.my/gfwlist +server=/.guangnianvpn.com/127.0.0.1#7913 +ipset=/.guangnianvpn.com/gfwlist server=/.guardster.com/127.0.0.1#7913 ipset=/.guardster.com/gfwlist server=/.guishan.org/127.0.0.1#7913 @@ -4346,6 +4358,8 @@ server=/.hakkatv.org.tw/127.0.0.1#7913 ipset=/.hakkatv.org.tw/gfwlist server=/.handcraftedsoftware.org/127.0.0.1#7913 ipset=/.handcraftedsoftware.org/gfwlist +server=/.hanime.tv/127.0.0.1#7913 +ipset=/.hanime.tv/gfwlist server=/.hanunyi.com/127.0.0.1#7913 ipset=/.hanunyi.com/gfwlist server=/.hao.news/127.0.0.1#7913 @@ -5668,6 +5682,8 @@ server=/.lighti.me/127.0.0.1#7913 ipset=/.lighti.me/gfwlist server=/.lightnovel.cn/127.0.0.1#7913 ipset=/.lightnovel.cn/gfwlist +server=/.lightyearvpn.com/127.0.0.1#7913 +ipset=/.lightyearvpn.com/gfwlist server=/.lihkg.com/127.0.0.1#7913 ipset=/.lihkg.com/gfwlist server=/.like.com/127.0.0.1#7913 @@ -7576,6 +7592,8 @@ server=/.qvodzy.org/127.0.0.1#7913 ipset=/.qvodzy.org/gfwlist server=/.qxbbs.org/127.0.0.1#7913 ipset=/.qxbbs.org/gfwlist +server=/.qz.com/127.0.0.1#7913 +ipset=/.qz.com/gfwlist server=/.r18.com/127.0.0.1#7913 ipset=/.r18.com/gfwlist server=/.ra.gg/127.0.0.1#7913 @@ -10208,6 +10226,8 @@ server=/.waselpro.com/127.0.0.1#7913 ipset=/.waselpro.com/gfwlist server=/.washeng.net/127.0.0.1#7913 ipset=/.washeng.net/gfwlist +server=/.washingtonpost.com/127.0.0.1#7913 +ipset=/.washingtonpost.com/gfwlist server=/.watch8x.com/127.0.0.1#7913 ipset=/.watch8x.com/gfwlist server=/.watchinese.com/127.0.0.1#7913 diff --git a/package/lienol/luci-app-passwall/root/usr/share/passwall/monitor.sh b/package/lienol/luci-app-passwall/root/usr/share/passwall/monitor.sh index b131df6bff..65877875e5 100644 --- a/package/lienol/luci-app-passwall/root/usr/share/passwall/monitor.sh +++ b/package/lienol/luci-app-passwall/root/usr/share/passwall/monitor.sh @@ -48,7 +48,7 @@ for i in $(seq 1 $TCP_REDIR_SERVER_NUM); do fi fi [ -f "/var/etc/passwall/port/TCP_$i" ] && listen_port=$(echo -n `cat /var/etc/passwall/port/TCP_$i`) - icount=$(ps -w | grep -v grep | grep -i -E "${CONFIG}/TCP_${i}|brook tproxy -l 0.0.0.0:${listen_port}" | wc -l) + icount=$(ps -w | grep -v grep | grep -i -E "${CONFIG}/TCP_${i}|brook tproxy -l 0.0.0.0:${listen_port}|ipt2socks -T -l ${listen_port}" | wc -l) if [ $icount = 0 ]; then /etc/init.d/passwall restart exit 0 @@ -63,7 +63,7 @@ for i in $(seq 1 $UDP_REDIR_SERVER_NUM); do if [ "$temp_server" != "nil" ]; then [ "$temp_server" == "default" ] && temp_server=$TCP_REDIR_SERVER1 [ -f "/var/etc/passwall/port/UDP_$i" ] && listen_port=$(echo -n `cat /var/etc/passwall/port/UDP_$i`) - icount=$(ps -w | grep -v grep | grep -i -E "${CONFIG}/UDP_${i}|brook tproxy -l 0.0.0.0:${listen_port}" | wc -l) + icount=$(ps -w | grep -v grep | grep -i -E "${CONFIG}/UDP_${i}|brook tproxy -l 0.0.0.0:${listen_port}|ipt2socks -U -l ${listen_port}" | wc -l) if [ $icount = 0 ]; then /etc/init.d/passwall restart exit 0