Legacy Ipset Scripts - XIYO/asuswrt-merlin.ng-kr GitHub Wiki

이 μŠ€ν¬λ¦½νŠΈλ“€μ€ λ ˆκ±°μ‹œ 슀크립트둜 κ°„μ£Όλ˜λ©° μœ μ§€ λ³΄μˆ˜μžκ°€ μ—†μœΌλ©° 지원을 λ°›κΈ° μ–΄λ €μšΈ 수 μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ 이 μŠ€ν¬λ¦½νŠΈλ“€μ€ ipset 버전 4만 μ§€μ›ν•˜λ―€λ‘œ μƒˆλ‘œμš΄ λΌμš°ν„°λ₯Ό μ‚¬μš©ν•˜λŠ” 경우 이 μŠ€ν¬λ¦½νŠΈλ“€μ€ μž‘λ™ν•˜μ§€ μ•Šμ„ κ²ƒμž…λ‹ˆλ‹€. μ—¬κΈ°μ˜ 차트λ₯Ό μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€.

ν”Όμ–΄ κ°€λ””μ–Έ

λ‹€λ₯Έ 예둜 λΌμš°ν„°μ—μ„œ PeerGuardian κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.

이 슀크립트λ₯Ό /jffs/scripts/firewall-start에 μΆ”κ°€ν•˜μ§€ λ§ˆμ‹­μ‹œμ˜€. μ™œλƒν•˜λ©΄ μ‹€ν–‰ μ‹œκ°„μ΄ λ„ˆλ¬΄ 였래 κ±Έλ¦½λ‹ˆλ‹€ (~25λΆ„, RT-N66U κΈ°μ€€). λ‹€μŒ λ‚΄μš©μ„ /jffs/scripts/peerguardian.sh에 λ„£μœΌμ‹­μ‹œμ˜€.

#!/bin/sh
# ipset λͺ¨λ“ˆ λ‘œλ”©
lsmod | grep "ipt_set" > /dev/null 2>&1 || \
for module in ip_set ip_set_iptreemap ipt_set
do
    insmod $module
done
# λ‹€μ–‘ν•œ λΌμš°ν„°μ—λŠ” λ‹€λ₯Έ iptables ꡬ문이 있음
case $(uname -m) in
  armv7l)
    MATCH_SET='--match-set'
    ;;
  mips)
    MATCH_SET='--set'
    ;;
esac
```# PeerGuardian κ·œμΉ™
λ§Œμ•½ [ipset --swap BluetackLevel1 BluetackLevel1 2>&1 | grep 'Unknown set']" != "" ]이면
κ·Έλ ‡λ‹€λ©΄
ipset --create BluetackLevel1 iptreemap
[ -e /tmp/bluetack_lev1.lst ] || wget -q -O - "http://list.iblocklist.com/?list=bt_level1&fileformat=p2p&archiveformat=gz" | \
    gunzip | cut -d: -f2 | grep -E "^[-0-9.]+$" > /tmp/bluetack_lev1.lst
for IP in $(cat /tmp/bluetack_lev1.lst)
do
    ipset -A BluetackLevel1 $IP
done
fi
iptables -I FORWARD -m set $MATCH_SET BluetackLevel1 src,dst -j DROP

그리고 λ‹€μŒ λͺ…령을 μ‹€ν–‰ν•˜μ‹­μ‹œμ˜€:

sh /jffs/scripts/peerguardian.sh

μŠ€ν¬λ¦½νŠΈκ°€ μ™„λ£Œλ  λ•ŒκΉŒμ§€ SSH μ„Έμ…˜μ„ λ‹«μ§€ λ§ˆμ‹­μ‹œμ˜€. μŠ€ν¬λ¦½νŠΈλŠ” 8,000,000개 μ΄μƒμ˜ IP μ£Όμ†Œλ₯Ό μ°¨λ‹¨ν•©λ‹ˆλ‹€. 이 IP μ£Όμ†ŒλŠ” P2P ν™œλ™μ—μ„œ κ΄€μ°°λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

Peer Guardian V2

IPSET 4만 μ§€μ›ν•©λ‹ˆλ‹€.

μ•„λž˜λŠ” μœ„μ˜ peerguardian.sh 슀크립트의 속도 μ΅œμ ν™” λ²„μ „μž…λ‹ˆλ‹€. λ™μΌν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•˜μ§€λ§Œ 싀행에 30초 미만이 κ±Έλ¦½λ‹ˆλ‹€ (RT-N66Uμ—μ„œ μ΅œλ‹¨ μ‹€ν–‰ μ‹œκ°„μ€ 20μ΄ˆμ˜€μŠ΅λ‹ˆλ‹€). 이제 /jffs/scripts/firewall-startμ—μ„œ μ‹€ν–‰ν•  수 μžˆμ„ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

이 μŠ€ν¬λ¦½νŠΈλŠ” 두 개의 집합을 ν™œμš©ν•©λ‹ˆλ‹€. κΈ°λ³Έ "BluetackLevel1"κ³Ό μž„μ‹œ "BluetackLevel2"μž…λ‹ˆλ‹€. IP μ£Όμ†ŒλŠ” μž„μ‹œλ‘œ λ‘œλ“œλ˜κ³  λ‚˜μ€‘μ— 기본으둜 μŠ€μ™‘λ©λ‹ˆλ‹€. 이 μ ‘κ·Ό 방식 λ•Œλ¬Έμ— μ‹€ν–‰ 쀑인 λΌμš°ν„°μ—μ„œ 주기적으둜 μ‹€ν–‰ν•˜μ—¬ ν™œμ„± 집합을 μƒˆλ‘œ κ³ μΉ  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

#!/bin/sh
# PeerGuardian κ·œμΉ™
```# ipset λͺ¨λ“ˆ λ‘œλ”©

lsmod | grep "ipt_set" > /dev/null 2>&1 ||
for module in ip_set ip_set_iptreemap ipt_set; do insmod $module done


# λ‹€μ–‘ν•œ λΌμš°ν„°μ—λŠ” λ‹€λ₯Έ iptables ꡬ문이 있음

case $(uname -m) in armv7l) MATCH_SET='--match-set' ;; mips) MATCH_SET='--set' ;; esac


# BluetackLevel1 (κΈ°λ³Έ) 생성, μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” 경우

if [ "$(ipset --swap BluetackLevel1 BluetackLevel1 2>&1 | grep 'Unknown set')" != "" ]; then ipset --create BluetackLevel1 iptreemap &&
iptables -I FORWARD -m set $MATCH_SET BluetackLevel1 src,dst -j DROP fi


# 이 μΌμ‹œμ μΈ 집합은 μ•ˆμ „μ„ μœ„ν•΄ 파괴

ipset --destroy BluetackLevel2 > /dev/null 2>&1


# μ΅œμ‹  κ·œμΉ™ λ‘œλ“œ

(echo -e "-N BluetackLevel2 iptreemap\n" &&
nice wget -q -O - "http://list.iblocklist.com/?list=bt_level1&fileformat=p2p&archiveformat=gz" |
nice gunzip | nice cut -d: -f2 | nice grep -E "^[-0-9.]+$" |
nice sed 's/^/-A BluetackLevel2 /' &&
echo -e "\nCOMMIT\n"
) |
nice ipset --restore &&
nice ipset --swap BluetackLevel2 BluetackLevel1 &&
nice ipset --destroy BluetackLevel2

exit $?

IPSET 4만 μ§€μ›ν•©λ‹ˆλ‹€

λ§Œμ•½ ν•˜λ‚˜λ‘œ 묢인 λ‹€λ₯Έ λΈ”λ‘λ¦¬μŠ€νŠΈλ₯Ό κ°€μ§€κ³  μ‹Άλ‹€λ©΄, 이 μŠ€ν¬λ¦½νŠΈμ— μ—¬λŸ¬ λΈ”λ‘λ¦¬μŠ€νŠΈλ₯Ό μΆ”κ°€ν•  수 μžˆλŠ” λ³€ν˜• λ²„μ „μž…λ‹ˆλ‹€.

```shell
#!/bin/sh

logger "PeerGuardian κ·œμΉ™"

logger "ipset λͺ¨λ“ˆ λ‘œλ”©"
lsmod | grep "ipt_set" > /dev/null 2>&1 || \
for module in ip_set ip_set_iptreemap ipt_set; do
    insmod $module
done

case $(uname -m) in
  armv7l)
    MATCH_SET='--match-set'
    ;;
  mips)
    MATCH_SET='--set'
    ;;
esac

logger "BluetackLevel1 (κΈ°λ³Έ) 생성, μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” 경우"
if [ "$(ipset --swap BluetackLevel1 BluetackLevel1 2>&1 | grep 'Unknown set')" != "" ]; then
  ipset --create BluetackLevel1 iptreemap && \
  iptables -I FORWARD -m set $MATCH_SET BluetackLevel1 src,dst -j DROP
fi
logger "이 μΌμ‹œμ μΈ 집합은 μ•ˆμ „μ„ μœ„ν•΄ 파괴"
ipset --destroy BluetackLevel2 > /dev/null 2>&1

logger "μ΅œμ‹  κ·œμΉ™ λ‘œλ“œ"

(
	 
	(
		(
		 nice wget -q -O - "http://list.iblocklist.com/?list=dgxtneitpuvgqqcpfulq&fileformat=p2p&archiveformat=gz" | \
	         nice gunzip | nice cut -d: -f2 | nice grep -E "^[-0-9.]+$"  \
		) && \
		(
	 	 nice wget -q -O - "http://list.iblocklist.com/?list=llvtlsjyoyiczbkjsxpf&fileformat=p2p&archiveformat=gz" | \
        	 nice gunzip | nice cut -d: -f2 | nice grep -E "^[-0-9.]+$"  \
		) && \
		(
		 nice wget -q -O - "http://list.iblocklist.com/?list=ydxerpxkpcfqjaybcssw&fileformat=p2p&archiveformat=gz" | \
		 nice gunzip | nice cut -d: -f2 | nice grep -E "^[-0-9.]+$"  \
		)
	) | \
	(  
      		nice sed '/^$/d' | \
	        nice sed 's/^/-A BluetackLevel2 /' | \
		nice sed '1s/^/-N BluetackLevel2 iptreemap\n/' && \
		echo -e "\nCOMMIT\n" \
	)
#) > output
) | \
nice ipset --restore && \
nice ipset --swap BluetackLevel2 BluetackLevel1 && \
nice ipset --destroy BluetackLevel2

logger "Peerguarding κ·œμΉ™ μ’…λ£Œ"
exit $?

좜λ ₯은 λΌμš°ν„° λ‘œκ·Έμ— λ‚˜νƒ€λ‚  κ²ƒμž…λ‹ˆλ‹€:

May 29 09:03:21 admin: PeerGuardian κ·œμΉ™
May 29 09:03:21 admin: ipset λͺ¨λ“ˆ λ‘œλ”©
May 29 09:03:21 admin: BluetackLevel1 (κΈ°λ³Έ) 생성, μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” 경우
May 29 09:03:22 admin: 이 μΌμ‹œμ μΈ 집합은 μ•ˆμ „μ„ μœ„ν•΄ 파괴
May 29 09:03:22 admin: μ΅œμ‹  κ·œμΉ™ λ‘œλ“œ
May 29 09:04:04 admin: Peerguarding κ·œμΉ™ μ’…λ£Œ
```# Windows 10 좔적 λΉ„ν™œμ„±ν™”
_μ°Έκ³ : 이 κ°€μ΄λ“œλŠ” 378.55 μ΄μƒμ˜ asuswrt-merlin λ¦΄λ¦¬μŠ€μ—μ„œλ§Œ μž‘λ™ν•©λ‹ˆλ‹€. 380.57 이상 버전을 ꢌμž₯ν•©λ‹ˆλ‹€._

이 해결책은 두 λΆ€λΆ„μœΌλ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€:

1. μ›μΉ˜ μ•ŠλŠ” 도메인 λͺ©λ‘μ—μ„œ ν•΄κ²°λœ IPλ₯Ό dnsmasq와 ν•¨κ»˜ IP μ„ΈνŠΈλ‘œ μˆ˜μ§‘
2. λ°©ν™”λ²½ κ·œμΉ™μ„ μ‚¬μš©ν•˜μ—¬ μˆ˜μ§‘λœ IPλ‘œλΆ€ν„°μ˜ νŠΈλž˜ν”½ 차단

λ¨Όμ € JFFS μ‚¬μš©μž μ •μ˜ μŠ€ν¬λ¦½νŠΈμ™€ ꡬ성을 WebUIμ—μ„œ ν™œμ„±ν™”ν•˜μ‹­μ‹œμ˜€. λ‹€μŒ λͺ©λ‘μ˜ μ›μΉ˜ μ•ŠλŠ” 도메인을 `/jffs/configs/windows-10-tracking-hosts.txt`에 λ„£μœΌμ‹­μ‹œμ˜€:

a.ads1.msn.com a.ads2.msads.net a.ads2.msn.com a.rad.msn.com a-0001.a-msedge.net a-0002.a-msedge.net a-0003.a-msedge.net a-0004.a-msedge.net a-0005.a-msedge.net a-0006.a-msedge.net a-0007.a-msedge.net a-0008.a-msedge.net a-0009.a-msedge.net ac3.msn.com ad.doubleclick.net adnexus.net adnxs.com ads.msn.com ads1.msads.net ads1.msn.com aidps.atdmt.com aka-cdn-ns.adtech.de a-msedge.net apps.skype.com az361816.vo.msecnd.net az512334.vo.msecnd.net b.ads1.msn.com b.ads2.msads.net b.rad.msn.com bs.serving-sys.com c.atdmt.com c.msn.com cdn.atdmt.com cds26.ams9.msecn.net choice.microsoft.com choice.microsoft.com.nsatc.net compatexchange.cloudapp.net corp.sts.microsoft.com corpext.msitadfs.glbdns2.microsoft.com cs1.wpc.v0cdn.net db3aqu.atdmt.com df.telemetry.microsoft.com diagnostics.support.microsoft.com ec.atdmt.com fe2.update.microsoft.com.akadns.net feedback.microsoft-hohm.com feedback.search.microsoft.com feedback.windows.com flex.msn.com g.msn.com h1.msn.com i1.services.social.microsoft.com i1.services.social.microsoft.com.nsatc.net lb1.www.ms.akadns.net live.rads.msn.com m.adnxs.com m.hotmail.com msedge.net msftncsi.com msnbot-65-55-108-23.search.msn.com msntest.serving-sys.com oca.telemetry.microsoft.com oca.telemetry.microsoft.com.nsatc.net pre.footprintpredict.com preview.msn.com pricelist.skype.com rad.live.com rad.msn.com redir.metaservices.microsoft.com reports.wes.df.telemetry.microsoft.com s.gateway.messenger.live.com s0.2mdn.net schemas.microsoft.akadns.net secure.adnxs.com secure.flashtalking.com services.wes.df.telemetry.microsoft.com settings-sandbox.data.microsoft.com settings-win.data.microsoft.com sls.update.microsoft.com.akadns.net sqm.df.telemetry.microsoft.com sqm.telemetry.microsoft.com sqm.telemetry.microsoft.com.nsatc.net static.2mdn.net statsfe1.ws.microsoft.com statsfe2.update.microsoft.com.akadns.net statsfe2.ws.microsoft.com survey.watson.microsoft.com telecommand.telemetry.microsoft.com telecommand.telemetry.microsoft.com.nsatc.net telemetry.appex.bing.net telemetry.microsoft.com telemetry.urs.microsoft.com view.atdmt.com vortex.data.microsoft.com vortex-bn2.metron.live.com.nsatc.net vortex-cy2.metron.live.com.nsatc.net vortex-sandbox.data.microsoft.com vortex-win.data.microsoft.com watson.live.com watson.microsoft.com watson.ppe.telemetry.microsoft.com watson.telemetry.microsoft.com watson.telemetry.microsoft.com.nsatc.net wes.df.telemetry.microsoft.com www.msftncsi.com


μ €λŠ” μœ„ λͺ©λ‘μ„ [μ—¬κΈ°](https://github.com/10se1ucgo/DisableWinTracking/blob/master/dwt.py#L320)μ—μ„œ κ°€μ Έμ™”μŠ΅λ‹ˆλ‹€. 이제 λ‹€μŒ λ‚΄μš©μ„ `/jffs/scripts/firewall-start`에 λ„£μœΌμ‹­μ‹œμ˜€:

```shell
#!/bin/sh
JFFS_CONFIG_DIR=/jffs/configs
BLOCKED_HOSTS_FILE=${JFFS_CONFIG_DIR}/windows-10-tracking-hosts.txt
DNSMASQ_CFG=${JFFS_CONFIG_DIR}/dnsmasq.conf.add
if [ ! -f $DNSMASQ_CFG ] || [ "$(grep Win10tracking $DNSMASQ_CFG)" = "" ];
then
  rm -f $DNSMASQ_CFG
  for i in `cat $BLOCKED_HOSTS_FILE`;
  do
    echo "ipset=/$i/Win10tracking" >> $DNSMASQ_CFG
  done
  service restart_dnsmasq
fi
```# ipset λͺ¨λ“ˆ λ‘œλ”©

lsmod | grep "ipt_set" > /dev/null 2>&1 ||
for module in ip_set ip_set_nethash ip_set_iphash ipt_set do insmod $module done


# IP μ„ΈνŠΈ 생성

if [ "$(ipset --swap Win10tracking Win10tracking 2>&1 | grep 'Unknown set')" != "" ]; then ipset -N Win10tracking iphash fi


# iptables κ·œμΉ™ 적용

iptables-save | grep Win10tracking > /dev/null 2>&1 && exit case $(uname -m) in armv7l) iptables -I FORWARD -m set --match-set Win10tracking src,dst -j DROP ;; mips) iptables -I FORWARD -m set --set Win10tracking src,dst -j DROP ;; esac


슀크립트λ₯Ό μ‹€ν–‰ κ°€λŠ₯ν•˜κ²Œ λ§Œλ“€κ³  λΌμš°ν„°λ₯Ό λ‹€μ‹œ μ‹œμž‘ν•˜μ—¬ μ μš©ν•˜μ‹­μ‹œμ˜€:

chmod +x /jffs/scripts/firewall-start reboot


μž‘λ™ μ—¬λΆ€λ₯Ό ν™•μΈν•˜λ €λ©΄ λͺ‡ κ°€μ§€ μ‚¬μ΄νŠΈ (예: view.atdmt.com)λ₯Ό μ—΄λ €κ³  μ‹œλ„ν•œ λ‹€μŒ "λΈ”λž™ 리슀트"에 일뢀 IP μ£Όμ†Œκ°€ ν¬ν•¨λ˜μ–΄ μžˆλŠ”μ§€ ν™•μΈν•˜μ‹­μ‹œμ˜€:

ipset --list Win10tracking


λ˜λŠ” μœ„μ˜ 슀크립트λ₯Ό `/jffs/scripts/windows-10-tracking-blocker`에 λ„£κ³  `/jffs/scripts/firewall-start`μ—μ„œ ν•΄λ‹Ή 슀크립트λ₯Ό ν˜ΈμΆœν•˜μ‹­μ‹œμ˜€.

***
# Windows Spy Blocker

[Windows Spy Blocker](https://github.com/crazy-max/WindowsSpyBlocker)λŠ” λ‹€μ–‘ν•œ ν”„λ‘œμ νŠΈμ—μ„œ μ‚¬μš©ν•˜λŠ” μ €μž₯μ†Œλ‘œ, 주둜 [pi-hole](https://pi-hole.net/) 및 [LEDE Project](https://lede-project.org/)와 같은 ν”„λ‘œμ νŠΈμ—μ„œ μ‚¬μš©λ©λ‹ˆλ‹€. DNSCrypt, OpenWrt λ˜λŠ” simplewallκ³Ό 같은 λ‹€μ–‘ν•œ 도ꡬ와 ν•¨κ»˜ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Windows Spy Blocker 차단 κ·œμΉ™μ—λŠ” ν˜„μž¬ μ—…λ°μ΄νŠΈλœ [dnsmask용 λͺ©λ‘](https://github.com/crazy-max/WindowsSpyBlocker/blob/master/data/openwrt/win10/spy/dnsmasq.conf)이 ν¬ν•¨λ˜μ–΄ 있으며, 이 λͺ©λ‘μ€ 이전 μž₯μ—μ„œ 닀룬 [Windows 10 좔적 λΉ„ν™œμ„±ν™”](https://github.com/10se1ucgo/DisableWinTracking)의 `windows-10-tracking-hosts.txt`보닀 μ΅œμ‹ μž…λ‹ˆλ‹€.