ããŒã¢ã³ãRFCããããã¯ãŒã¯ãç 究ãããªãŒãã³ãœãŒã¹ãæšé²ããã®ã« Spotify ãã©ã®ããã«åœ¹ç«ã€ãã ãããã¯ãæ¯æããã§ããªãããã©ãããŠããã¬ãã¢ã ã°ããºã欲ããå Žåã¯ã©ããªãã§ããããã
éå§
XNUMXæ¥ç®ã«ãSpotifyãIPã¢ãã¬ã¹ã®åœã«åºã¥ããŠåºåã衚瀺ããŠããããšãå€æããã äžéšã®åœã§ã¯åºåããŸã£ããèŒžå ¥ãããŠããªãããšãææãããã ããšãã°ããã©ã«ãŒã·å ±ååœã ãããŠãéãã¬ãã¢ã ã¢ã«ãŠã³ãã§ã®åºåãç¡å¹ã«ãããšãããçŽ æŽããããèšç»ãç«æ¡ãããŸããã
Spotify ã«ã€ããŠå°ã
äžè¬çã«èšã£ãŠãSpotify ã«ã¯å¥åŠãªããªã·ãŒããããŸãã ç§ãã¡ã®å åŒã¯ããã¬ãã¢ã ãè³Œå ¥ããããã«ããªãã²ããããªããã°ãªããŸããããããã£ãŒã«ã®å Žæãæµ·å€ã«å€æŽããPayPal ã§ã®ã¿æ¯æãå¯èœãªé©åãªã®ããã«ãŒããæ¢ããŸããPayPal ã¯æè¿æåãããããã倧éã®æžé¡ãèŠæ±ããŸãã äžè¬ã«ãããã¯åéºã§ããããŸãããé åºãç°ãªããŸãã ã»ãšãã©ã®äººã¯ã¢ãã€ã«çã®ããã«ãããè¡ããšæããŸãããç§ã¯ããã«èå³ããããŸããã ãããã£ãŠã以äžã®ãã¹ãŠã¯ãã¹ã¯ãããçã®å Žåã«ã®ã¿åœ¹ã«ç«ã¡ãŸãã ãŸããæ©èœã®æ¡åŒµã¯ããããŸããã äœåãªãã®ã®äžéšãã«ããããã ãã§ãã
ãªãããã»ã©è€éãªã®ã§ãããã?
ãããŠãSpotify ã®èšå®ã« Socks-proxy ããŒã¿ãç»é²ãããšãã«ããæããŸããã åé¡ã¯ããã°ã€ã³ãšãã¹ã¯ãŒãã䜿çšãããœãã¯ã¹ã®èªèšŒãæ©èœããªãããšã§ããããšãå€æããŸããã ããã«ãéçºè ã¯å®æçã«ãããã·ã䜿çšããŠäœããè¡ããŸãããããã·ãèš±å¯ããããçŠæ¢ããããç Žã£ããããããããªããµã€ãã§ã®è°è«å šäœãçºçããŸãã
äžå®å®ãªæ©èœã«äŸåãããããä¿¡é Œæ§ãé«ãèå³æ·±ããã®ãèŠã€ããããšã«ããŸããã
ããã®ã©ããã§èªè
ã¯ããå°ããªããã°ãªããŸããïŒãªããããåããªãã®ã ssh
éµä»ã -D
ããã§çµããã§ããïŒ ãããŠäžè¬çã«ã圌ã¯æ£ããã§ãããã ãããã第äžã«ãåæãããæ¥ç¶ã«ã€ããŠèããªãããã«ããããã«ããããæªéåããautossh ãšåéã«ããå¿
èŠããããŸãã ãããŠç¬¬äºã«ãã·ã³ãã«ãããŠéå±ã§ãã
é çªã«
ãã€ãã®ããã«ãå·Šããå³ãäžããäžã®é ã«ããåçŽãªãã¢ã€ãã¢ãå®è£ ããããã«å¿ èŠãªãã¹ãŠã説æããŠã¿ãŸãããã
ãŸããããã·ãå¿ èŠã§ã
ãããŠãäžåºŠã«å€ãã®ä»£æ¿æ段ããããŸãã
- éããŠãããããã· ãªã¹ãããååŸããã ãã§ãã å®äŸ¡ (ãŸãã¯ãããç¡æ) ã§ãããä¿¡é Œæ§ããŸã£ããäœãããã®ãããªãããã·ã®å¯¿åœã¯ãŒãã«ãªãåŸåããããŸãã ãããã£ãŠããããã· ãªã¹ãã®ããŒãµãŒãæ€çŽ¢/äœæããç®çã®ã¿ã€ããšåœã§ãã£ã«ã¿ãªã³ã°ããå¿
èŠããããŸãããŸããèŠã€ãã£ããããã·ã Spotify ã§çœ®ãæãããšããåé¡ã¯æªè§£æ±ºã®ãŸãŸã§ã (ããããã
HTTP_PROXY
ä»ã®ãã¹ãŠã®ãã©ãã£ãã¯ãããã«éä¿¡ãããªãããã«ããã€ããªã®ã«ã¹ã¿ã ã©ãããŒã転éããŠäœæããŸã)ã - åæ§ã®ãããã·ãè³Œå ¥ããã°ãäžèšã®åé¡ã®ã»ãšãã©ãåé¿ã§ããŸãã ãããããããã·ã®æéãæ¯æãã°ãSpotify ã§ããã«ãã¬ãã¢ã ãè³Œå ¥ã§ããŸãããããã¯æ¬æ¥ã®ã¿ã¹ã¯ã«ã¯çŸå®çã§ã¯ãããŸããã
- äžããŠãã ããã ãæ³åã®ãšããããããç§ãã¡ã®éžæã§ãã
ãŸã£ããã®å¶ç¶ã§ããããã©ã«ãŒã·å
±ååœãŸãã¯ä»ã®å°ããªåœã®ãµãŒããŒã«å人ãããããšãå€æããå¯èœæ§ããããŸãã ããã䜿çšããŠãç®çã®ãããã·ãããŒã«ã¢ãŠãããå¿
èŠããããŸãã ç¹å¥ãªæ奜家ã¯ãã«ãŒã¿ãŒã䜿çšããŠå人ãšæºè¶³ããããšãã§ããŸã
ãããã£ãŠãç§ãã¡ã®éžæè¢ã¯æ¬¡ã®ãšããã§ããSquid - åºæ¿çã§ã¯ãããŸãããHTTP ãããã·ã¯å¿
èŠãããŸããããã®ãããã³ã«ã¯ãã§ã«å€ãããŸãã ãããŠãSOCKSã®åéã§ã¯ã次ã®ããšä»¥å€ã«è³¢æãªããšã¯äœããããŸããã
Dante ã®ã€ã³ã¹ããŒã«ãšèšå®ã«é¢ããããã¥ã¢ã«ãåŸ
ã€å¿
èŠã¯ãããŸããã 圌 client pass
, socks pass
ãã€ã³ã¿ãŒãã§ã€ã¹ãæ£ããç»é²ããè¿œå ããããšãå¿ããªãã§ãã ãã socksmethod: username
ã ãã®ãã©ãŒã ã§ã¯ãèªèšŒã®ããã«ã·ã¹ãã ãŠãŒã¶ãŒããããŽãã¹ãååŸãããŸãã ãããŠãã»ãã¥ãªãã£ã«é¢ããéšå: localhost ãžã®ã¢ã¯ã»ã¹ã®çŠæ¢ããŠãŒã¶ãŒã®å¶éãªã© - ããã¯çŽç²ã«å人çãªãã®ã§ãããå人çãªåŠæ³ã«äŸåããŸãã
ãããã¯ãŒã¯ã«é¢ãããããã·ãå°å ¥ãã
åã¯äºå¹æ§æã§ãã
第äžå¹
ãããã·ãæŽçããŸãããä»åºŠã¯ã°ããŒãã« Web ãããããã·ã«ã¢ã¯ã»ã¹ããå¿ èŠããããŸãã åžæããåœã«ãã¯ã€ã IP ãæã€ãã·ã³ãããå Žåã¯ããã®ç¹ãã¹ãããããŠãåé¡ãããŸããã ç§ãã¡ã«ã¯ IP ããããŸãã (åè¿°ããããã«ãç§ãã¡ã¯å人ã®å®¶ã§ãã¹ããããŠããŸã)ãæãè¿ããã¯ã€ã IP ã¯ãã€ãã®ã©ããã«ããããããããã¯ãŒã¯ãç 究ããŸãã
ã¯ãã泚ææ·±ãèªè
ã¯ã次ã®ãããªæ¢åã®ãµãŒãã¹ããªãæ¡çšããªãã®ããšå床å°ããã§ãããã
ã¿ã¹ã¯: NAT ã®ã¯ããåŸãã®ã©ããã«ãããã·ããããŸãããã¯ã€ã IP ãæã¡ãäžçã®ç«¯ã«ãã VPS ã®ããŒãã® XNUMX ã€ã«ãããã·ããã³ã°ããå¿ èŠããããŸãã
ããã¯ããŒã転é (äžèšã®æ¹æ³ã§å®è£
ããã) ã«ãã£ãŠè§£æ±ºã§ãããšèããã®ãè«ççã§ãã ssh
)ããŸã㯠VPN çµç±ã§ããŒããŠã§ã¢ãä»®æ³ãããã¯ãŒã¯ã«çµåããŸãã ãš ssh
ç§ãã¡ã¯åãæ¹ãç¥ã£ãŠããŸãã autossh
åãã®ã¯éå±ãªã®ã§ãOpenVPN ã䜿çšããŸãããã
DigitalOcean 㯠systemd
ã ããïŒconfigïŒãå
¥ããã ãã§ã /etc/openvpn/client/
æ¡åŒµåã次ã®ããã«å€æŽããããšãå¿ããªãã§ãã ãã .conf
ã ãã®åŸããµãŒãã¹ããã«ããŸã [email protected]
圌女ã®ããã«ãããããããšãå¿ããªãã§ãã ãã enable
ãããŠãã¹ãŠãé£ãã§ãã£ãããšãåã³ãŸãã
ãã¡ããããã©ãã£ãã¯ãããŒã«ã®ååã«ééãããããšã§ã¯ã©ã€ã¢ã³ã ãã·ã³ã®é床ãäœäžãããããªããããæ°ããäœæãã VPN ãžã®ãã©ãã£ãã¯ã®ãªãã€ã¬ã¯ããç¡å¹ã«ããå¿ èŠããããŸãã
ã¯ããã¯ã©ã€ã¢ã³ãã® VPN ãµãŒããŒã«éç IP ã¢ãã¬ã¹ãç»é²ããå¿
èŠããããŸãã ããã¯ç©èªã®å°ãåŸã®ãšããã§å¿
èŠã«ãªããŸãã ãããè¡ãã«ã¯ãæå¹ã«ããå¿
èŠããããŸã ifconfig-pool-persist
ã ç·šé ipp.txt
ãOpenVPN ã«å«ãŸããŠãããclient-config-dir ãæå¹ã«ããããã«è¿œå ããŠç®çã®ã¯ã©ã€ã¢ã³ãã®æ§æãç·šéããŸãã ifconfig-push
æ£ãããã¹ã¯ãšç®çã® IP ã¢ãã¬ã¹ã䜿çšããŠãã ããã
第äºå¹
çŸåšãç§ãã¡ã¯ã€ã³ã¿ãŒãããã«é¢ããããããã¯ãŒã¯ãäžã«ãå©å·±çãªç®çã«äœ¿çšã§ãããã·ã³ãæã£ãŠããŸãã ã€ãŸãããã©ãã£ãã¯ã®äžéšããªãã€ã¬ã¯ãããŸãã
ããã§ãæ°ããã¿ã¹ã¯ãå¿ èŠã«ãªããŸãããã¯ã€ã IP ãæ〠VPS ããŒãã® XNUMX ã€ã«å°çãããã©ãã£ãã¯ããªãã«ããŠããã®ãã©ãã£ãã¯ãæ°ããæ¥ç¶ãããä»®æ³ãããã¯ãŒã¯ã«éä¿¡ãããããããå¿çãè¿ãããããã«ããå¿ èŠããããŸãã
解決ç: ãã¡ãã iptables
ïŒ åœŒãšäžç·ã«ç·Žç¿ãããã®ãããªçŽ æŽãããæ©äŒãä»ã«ãã€ããã ãããïŒ
ãããã¯ãŒã¯ã®ãããã°ã¯éåžžã«ç¹æ®ãªæé ã§ãããããå¿ èŠãªæ§æ㯠XNUMX æéãXNUMX ã®æªå£ãšå°ãã®ç¥çµã®æ¶èã§éåžžã«æ©ãèŠã€ãããŸãã
ãŸããã«ãŒãã«ã§ãã©ãã£ãã¯ã®ãªãã€ã¬ã¯ããæå¹ã«ããå¿
èŠããããŸãã ããã¯ãšåŒã°ãããã®ã§ã ipv4.ip_forward
ãŸããæå¹ã«ããæ¹æ³ã¯ OS ãšãããã¯ãŒã¯ ãããŒãžã£ãŒã«ãã£ãŠè¥å¹²ç°ãªããŸãã
次ã«ãVPS äžã®ããŒããéžæããããã«éä¿¡ããããã¹ãŠã®ãã©ãã£ãã¯ãä»®æ³ãµããããã«ã©ããããå¿ èŠããããŸãã ããã¯ãããšãã°æ¬¡ã®ããã«è¡ãããšãã§ããŸãã
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 8080 -j DNAT --to-destination 10.8.0.2:8080
ããã§ã¯ãå€éšã€ã³ã¿ãŒãã§ã€ã¹ã®ããŒã 8080 ã«çä¿¡ãããã¹ãŠã® TCP ãã©ãã£ãã¯ããIP 10.8.0.2 ãšåãããŒã 8080 ãæã€ãã·ã³ã«ãªãã€ã¬ã¯ãããŸãã
ä»äºã®è©³çŽ°ãç¥ããã人åã netfilter
, iptables
ã«ãŒãã£ã³ã°å
šè¬ã«ã€ããŠã¯ãå¿
ãèæ
®ããå¿
èŠããããŸãã
ãããã£ãŠããã±ããã¯ä»®æ³ãµããããã«é£ã³ãããã«çãŸããŸãã ããæ£ç¢ºã«ã¯ããœãã¯ã¹ ãããã·ããã®å¿çã¯ãDante ãæèŒãããã·ã³äžã®ããã©ã«ã ã²ãŒããŠã§ã€ãçµç±ããŠæ»ããåä¿¡è ã¯ãããããããããŸããããã¯ããããã¯ãŒã¯ã§ã¯ããã IP ã«ãªã¯ãšã¹ããéä¿¡ããå¥ã® IP ããå¿çãåä¿¡ããããšã¯äžè¬çã§ã¯ãªãããã§ãã ãããã£ãŠãç§ãã¡ã¯åµé ãç¶ããå¿ èŠããããŸãã
ãããã£ãŠããããã·ããã®ãã¹ãŠã®ãã±ãããä»®æ³ãµããããã«æ»ãããã¯ã€ã IP ãæ〠VPS ã«åããŠãªãã€ã¬ã¯ãããå¿
èŠããããŸãã ããã§ã¯ç¶æ³ã¯å°ãæªããªããŸãã iptables
ã«ãŒãã£ã³ã°åã«å®å
ã¢ãã¬ã¹ãä¿®æ£ãããšãååã§ã¯ãªããªããŸã (PREROUTING
)ããã®å Žåãããã±ãŒãžã¯ã€ã³ã¿ãŒãããã«éä¿¡ãããããããä¿®æ£ããªããšãããã±ãŒãžã¯ã€ã³ã¿ãŒãããã«éä¿¡ãããŸãã default gateway
ã ãããã£ãŠã次ã®ããšãè¡ãå¿
èŠããããŸã: ãã§ãŒã³ãèŠããŠãããŠãã ããã mangle
ããã±ãããããŒã¯ããããã« iptables
ãããŠãããããã«ã¹ã¿ã ã«ãŒãã£ã³ã° ããŒãã«ã«ã©ããããŠãéä¿¡å
ã®å Žæã«éä¿¡ããŸãã
åŠãèšãã»ã©ãªãïŒ
iptables -t mangle -A OUTPUT -p tcp --sport 8080 -j MARK --set-mark 0x80
ip rule add fwmark 0x80 table 80
ip route add default via 10.8.0.1 dev tun0 table 80
éä¿¡ãã©ãã£ãã¯ãååŸãããããã·ã眮ãããŠããããŒã (ãã®å Žå㯠8080) ããéä¿¡ããããã¹ãŠã®ãã©ãã£ãã¯ãããŒã¯ããããŒã¯ããããã¹ãŠã®ãã©ãã£ãã¯ãçªå· 80 ã®ã«ãŒãã£ã³ã° ããŒãã«ã«ãªãã€ã¬ã¯ãããŸã (äžè¬ã«ãçªå·ã¯äœã«ãäŸåããŸãããåã«å¿ èŠãªã ãã§ã) to) ãè¿œå ãããã®ããŒãã«ã«å«ãŸãããã¹ãŠã®ãã±ããã VPN ãµããããã«éä¿¡ãããåäžã®ã«ãŒã«ãè¿œå ããŸãã
çŽ æŽãããïŒ ããã§ããã±ãã㯠VPS ã«åãã£ãŠæ»ã£ãŠããŠãããã§æ¶æ» ããŸãã ãªããªããVPS ã¯ããããã©ãããã°ããã®ãããããªãããã§ãã ãããã£ãŠãé¢åã§ãªããã°ãä»®æ³ãµããããããå°çãããã¹ãŠã®ãã©ãã£ãã¯ãã€ã³ã¿ãŒãããã«ãªãã€ã¬ã¯ãããã ãã§æžã¿ãŸãã
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j SNAT --to-source 172.42.1.10
ããã§ã¯ããã¹ã¯ 10.8.0.0 ãæ〠255.255.255.000 ãµããããããå°çãããã¹ãŠã®ãã®ã¯ããœãŒã¹ NAT ã§ã©ãããããã€ã³ã¿ãŒãããã«åããããããã©ã«ãã®ã€ã³ã¿ãŒãã§ã€ã¹ã«éãããŸãã ãã®æ©èœã¯ããŒããééçã«è»¢éããå Žåãã€ãŸã VPS ã®åä¿¡ããŒãããããã·ã®ããŒããšäžèŽããå Žåã«ã®ã¿æ©èœããããšã«æ³šæããããšãéèŠã§ãã ããããªããšãããå°ãèŠããŸãªããã°ãªããŸããã
ã©ããã§ãã¹ãŠãæ©èœãå§ããã¯ãã§ãã ããšã¯å°ãã ãæ®ã£ãŠããŸãããã¹ãŠã®èšå®ãæ£ããããšã確èªããããšãå¿ããªãã§ãã ããã iptables
О route
åèµ·ååŸãç¶è¡ãããŸããã§ããã ã®ããã« iptables
ã®ãããªç¹å¥ãªãã¡ã€ã«ããããŸã /etc/iptables/rules.v4
(Ubuntu ã®å Žå) ãã ããã«ãŒãã®å Žåã¯ãã¹ãŠãå°ãè€éã«ãªããŸãã ç§ã¯åœŒããæŒã蟌ãã up/down
OpenVPN ã¹ã¯ãªããããã£ãšé©åã«å®è¡ã§ããã¯ãã ãšæããŸãã
ã¢ããªã±ãŒã·ã§ã³ããã®ãã©ãã£ãã¯ããããã·ã§ã©ãããã
ãããã£ãŠãç®çã®åœã§èªèšŒãè¡ããããã·ããããéçãã¯ã€ã IP ã¢ãã¬ã¹çµç±ã§ã¢ã¯ã»ã¹ã§ããŸãã æ®ã£ãŠããã®ã¯ãããã䜿çšããŠãSpotify ããã®ãã©ãã£ãã¯ãããã«ãªãã€ã¬ã¯ãããããšã ãã§ãã ãã ãã埮åŠãªç¹ããããŸããåè¿°ããããã«ãSpotify ã®ãããã·ã®ãã°ã€ã³ãã¹ã¯ãŒãã¯æ©èœããªãããããããåé¿ããæ¹æ³ãæ¢ããŸãã
ãŸããèŠããŠãããŸããã
ãããããã®åã³ãé·ãã¯ç¶ãããMacOS ã§ãããã° ã¢ãŒããšã«ã¹ã¿ã ã«ãŒãã«æ¡åŒµæ©èœãæå¹ã«ããç°¡åãªèšå®ããã¡ã€ã«ãããã®ããŒã«ã«ã¯ Spotify ãšãŸã£ããåãåé¡ãããããšãç解ããå¿ èŠãããããšãå€æããããã§ããã€ãŸãã Socks-proxy ã®ãã°ã€ã³ãã¹ã¯ãŒãã
ããã蟺ã®ã©ããã§ãæ
ãŠãŠãã¬ãã¢ã ã賌å
¥ããææãæ¥ãŠããŸã...ããããããã§ã¯ãããŸãã! ãªãŒãã³ãœãŒã¹ãªã®ã§ä¿®æ£ãäŸé ŒããŠã¿ãŸãããã ããã
ç§ãã¡ã¯ãŸãåæºããã§ãããã ããããã®åŸãç§ãã¡ã¯éæ¥æ代㚠C ãæãåºããDante ã§ãããã° ã¢ãŒãããªã³ã«ããæ°çŸãããã€ãã®ãã°ã調ã¹ãŠã
èªååãã
Proximac ãæ©èœãããããããæªè
æ±ãããŠå¿ããå¿
èŠããããŸãã ããã«é©ããåæåã·ã¹ãã ã XNUMX ã€ãããŸãããã㯠MacOS ã«ãããŸãã
ããã«èŠã€ãããŸã systemd
ãããŠããã¯ã»ãŒã¹ã¯ãŒãã§ã xml
ã åã£ãèšå®ã次ã®ãããªã³ãã³ãã¯å¿
èŠãããŸãã status
, restart
, daemon-reload
ã ããŒãã³ã¢ã¿ã€ãã®ã¿ start-stop
, list-grep
, unload-load
ãããŠããã«å€ãã®å¥åŠãªããšã ç§ãã¡ãæžããŠããããããã¹ãŠãå
æãã plist
ãèªã¿èŸŒã¿äžã åäœããŸããã ç§ãã¡ã¯æªéããããã°ããæ¹æ³ãç 究ããããããããã°ããããã«äœãããã®ãââãç解ããŸã ENV
å¶æ° PATH
ç§ãã¡ã¯éåžžã®ãã®ãçŽåããªãã£ãããšç§ãã¡ã¯äž»åŒµãããããæã¡èŸŒãã ã®ã§ãïŒè¿œå /sbin
О /usr/local/bin
ïŒãããŠæåŸã«ãèªåèµ·åãšå®å®ããåäœã«æºè¶³ããŠããŸãã
æ¯ãåã
çµæã¯ã©ããªããŸããã? XNUMXé±éã®åéºãå¿ã«å€§åã§æ±ããããããšããã¹ãŠè¡ããµãŒãã¹ããã®ã²ããŸããåç©åã çãããæè¡åéã®ç¥èããªãŒãã³ãœãŒã¹ã®ç¥èããããŠããã£ãïŒããšããæãããçãŸããç¬é¡ã
远䌞ïŒããã¯è³æ¬å®¶ã®ãã€ã³ããããè©Šåã®ç¯çŽããŸã£ããã®ç¡çŸãã«å¯ŸããåŒã³ããã§ã¯ãªããäžè¬çã«ã¯æåŸ ãããŠããªãç 究éçºã®å¯èœæ§ã瀺ããŠããã ãã§ãã
åºæïŒ habr.com