è€æ°ã®ã€ã³ã¿ãŒããã ãã£ãã«ã XNUMX ã€ã«çµåããããšã¯ã§ããŸãã? ãã®ãããã¯ã«é¢ããŠã¯å€ãã®èª€è§£ãè¿·ä¿¡ããããçµéšè±å¯ãªãããã¯ãŒã¯ ãšã³ãžãã¢ã§ããããããå¯èœã§ããããšãç¥ããªãããšããããããŸãã ã»ãšãã©ã®å Žåããªã³ã¯ ã¢ã°ãªã²ãŒã·ã§ã³ã¯ãNAT ã¬ãã«ã§ã®ãã©ã³ã·ã³ã°ãŸãã¯ãã§ã€ã«ãªãŒããŒãšèª€ã£ãŠåŒã°ããŸãã ããããå®éã®åèšã§ã¯ã ãã¹ãŠã®ã€ã³ã¿ãŒããã ãã£ãã«äžã§ XNUMX ã€ã® TCP æ¥ç¶ãåæã«éå§ããŸãããšãã°ãã€ã³ã¿ãŒããã ãã£ãã«ã®ãããããäžæãããŠãããããŒããã£ã¹ããäžæãããªãããã«ãã㪠ãããŒããã£ã¹ããå®è¡ããŸãã
ãããªãããŒããã£ã¹ãçšã®é«äŸ¡ãªåçšãœãªã¥ãŒã·ã§ã³ããããŸããããã®ãããªããã€ã¹ã¯äœãããã«ãããããŸãã ãã®èšäºã§ã¯ãç¡æã®ãªãŒãã³ãœãŒã¹ OpenMPTCPRouter ããã±ãŒãžã®æ§ææ¹æ³ã«ã€ããŠèª¬æãããã£ãã« ãµãã³ã°ã«é¢ããäžè¬çãªèª€è§£ã«å¯ŸåŠããŸãã
ãã£ã³ãã«ãµãã³ã°ã«é¢ãã誀解
ãã«ãWANæ©èœããµããŒãããããŒã ã«ãŒã¿ãŒã¯æ°å€ããããŸãã ã¡ãŒã«ãŒã¯ããããã£ãã«ãµãã³ã°ãšåŒã¶ããšããããŸãããããã¯å®å
šã«çå®ã§ã¯ãããŸããã å€ãã®ãããã¯ãŒã«ãŒã¯æ¬¡ã®ããã«ä¿¡ããŠããŸãã
IPæ¥ç¶ã¬ãã«ã§ã®ãã©ã³ã¹èª¿æŽ
ããã¯ãè€æ°ã®ã€ã³ã¿ãŒããã ãã£ãã«ãåæã«å©çšããããã®æãæé ã§äžè¬çãªæ¹æ³ã§ãã 話ãç°¡åã«ããããã«ã3 ã€ã®ã€ã³ã¿ãŒããã ãããã€ããŒããããããããã®ãããã€ããŒããããã¯ãŒã¯ããå®éã® IP ã¢ãã¬ã¹ãæäŸããŠãããšæ³åããŠã¿ãŸãããã ãããã®ãããã€ããŒã¯ãã¹ãŠãMulti-WAN æ©èœããµããŒãããã«ãŒã¿ãŒã«æ¥ç¶ãããŠããŸãã ããã¯ãmwanXNUMX ããã±ãŒãžãåãã OpenWRTãmikrotikãubiquitiããŸãã¯ãã®ä»ã®å®¶åºçšã«ãŒã¿ãŒã§ããå¯èœæ§ããããŸãããã®ãããªãªãã·ã§ã³ã¯ãã¯ãçããããšã§ã¯ãããŸããã
ç¶æ³ãã·ãã¥ã¬ãŒãããããã«ããããã€ããŒãã次ã®ã¢ãã¬ã¹ãæäŸããããšæ³åããŠã¿ãŸãããã
WAN1 â 11.11.11.11
WAN2 â 22.22.22.22
WAN2 â 33.33.33.33
ã€ãŸãããªã¢ãŒããµãŒããŒã«æ¥ç¶ããŸã example.com åãããã€ããŒãéããŠããªã¢ãŒã ãµãŒããŒã¯ XNUMX ã€ã®ç¬ç«ãããœãŒã¹ IP ã¯ã©ã€ã¢ã³ããèªèããŸãã ãã©ã³ã·ã³ã°ã«ãããè² è·ããã£ãã«éã§åå²ããXNUMX ã€ãã¹ãŠãåæã«äœ¿çšã§ããŸãã ç°¡åã«ããããã«ãè² è·ããã¹ãŠã®ãã£ãã«éã§åçã«åå²ãããšæ³åããŠã¿ãŸãããã ãã®çµæãã¯ã©ã€ã¢ã³ãã XNUMX ã€ã®ç»åãå«ããµã€ããéããšãåå¥ã®ãããã€ããŒãéããŠåç»åãããŠã³ããŒãããããšã«ãªããŸãã ãµã€ãåŽã§ã¯ãXNUMX ã€ã®ç°ãªã IP ããã®æ¥ç¶ã®ããã«èŠããŸãã
æ¥ç¶ã¬ãã«ã§ãã©ã³ã¹ããšãå Žåãå TCP æ¥ç¶ã¯åå¥ã®ãããã€ããŒãçµç±ããŸãã
ãã®ãã©ã³ã·ã³ã° ã¢ãŒãã¯ãå€ãã®å ŽåããŠãŒã¶ãŒã«åé¡ãåŒãèµ·ãããŸãã ããšãã°ãå€ãã®ãµã€ãã§ã¯ Cookie ãšããŒã¯ã³ãã¯ã©ã€ã¢ã³ãã® IP ã¢ãã¬ã¹ã«å³å¯ã«ãã€ã³ãããŠãããIP ã¢ãã¬ã¹ãçªç¶å€æŽããããšããªã¯ãšã¹ããæåŠãããããã¯ã©ã€ã¢ã³ãã¯ãµã€ããããã°ã¢ãŠããããŸãã ããã¯ãå³æ ŒãªãŠãŒã¶ãŒ ã»ãã·ã§ã³ ã«ãŒã«ãé©çšãããã¯ã©ã€ã¢ã³ãéè¡ã·ã¹ãã ããã®ä»ã®ãµã€ãã§ããåçŸãããŸãã 以äžã«ç°¡åãªäŸã瀺ããŸããVK.com äžã®é³æ¥œãã¡ã€ã«ã¯ãIP ã«é¢é£ä»ããããæå¹ãªã»ãã·ã§ã³ ããŒã§ã®ã¿å©çšå¯èœã§ããããã®ãããªãã©ã³ã·ã³ã°ã䜿çšããã¯ã©ã€ã¢ã³ãã¯ããªã¯ãšã¹ããæ¥ç¶å ã®ãããã€ããŒãçµç±ããªãããããªãŒãã£ãªãåçããªãããšããããããŸããã»ãã·ã§ã³ã¯åŒãåãã§ãã
ãã¬ã³ããããŠã³ããŒãããå Žåãæ¥ç¶ã¬ãã«ã®ãã©ã³ã¹ã«ãããã¹ãŠã®ãã£ãã«ã®åž¯åå¹
ãåèšãããŸãã
ãã®ãã©ã³ã¹ã«ãããè€æ°ã®æ¥ç¶ã䜿çšãããšãã«ã€ã³ã¿ãŒããã ãã£ãã«ã®é床ã®åèšãååŸã§ããããã«ãªããŸãã ããšãã°ã100 ã€ã®ãããã€ããŒã®é床ããããã 300 ã¡ã¬ãããã®å Žåããã¬ã³ããããŠã³ããŒããããš XNUMX ã¡ã¬ããããåŸãããŸãã ãã¬ã³ãã¯å€ãã®æ¥ç¶ãéãããã¹ãŠã®ãããã€ããŒã«åæ£ãããæçµçã«ã¯ãã£ãã«å šäœãå©çšããããã§ãã
XNUMX ã€ã® TCP æ¥ç¶ã¯åžžã« XNUMX ã€ã®ãããã€ããŒã®ã¿ãçµç±ããããšãç解ããããšãéèŠã§ãã ã€ãŸããHTTP çµç±ã§ XNUMX ã€ã®å€§ããªãã¡ã€ã«ãããŠã³ããŒããããšããã®æ¥ç¶ã¯ãããã€ããŒã® XNUMX ã€ãéããŠè¡ããããã®ãããã€ããŒãšã®æ¥ç¶ãåæããããšãããŠã³ããŒããäžæãããŸãã
XNUMX ã€ã®æ¥ç¶ã§ã¯åžžã« XNUMX ã€ã®ã€ã³ã¿ãŒããã ãã£ãã«ã®ã¿ã䜿çšãããŸã
ããã¯ãããªãããŒããã£ã¹ãã«ãåœãŠã¯ãŸããŸãã ããçš®ã®æ¡ä»¶ä»ã Twitch ã«ã¹ããªãŒãã³ã° ãããªããããŒããã£ã¹ãããŠããå Žåããã㪠ã¹ããªãŒã 㯠3 ã€ã® IP æ¥ç¶å ã§ãããŒããã£ã¹ãããããããIP æ¥ç¶ã®ã¬ãã«ã§ãã©ã³ã¹ã調æŽããŠãç¹ã«å©ç¹ã¯ãããŸããã ãã®å ŽåãWAN XNUMX ãããã€ããŒã§ãã±ããæ倱ãé床äœäžãªã©ã®éä¿¡ã«åé¡ãçºçãå§ããå Žåãããã«å¥ã®ãããã€ããŒã«åãæ¿ããããšã¯ã§ããŸããã ãããŒããã£ã¹ããåæ¢ããŠåæ¥ç¶ããå¿ èŠããããŸãã
çã®ãã£ã³ãã«å ç®
ãªã¢ã«ãã£ã³ãã«ãµãã³ã°ã«ããããããã€ããŒã®ãããããæ éããŠãæ¥ç¶ãäžæãããªãããã«ããã¹ãŠã®ãããã€ããŒãä»ããŠæ¡ä»¶ä»ã Twitch ãžã® XNUMX ã€ã®æ¥ç¶ãäžåºŠã«å®è¡ããããšãã§ããŸãã ããã¯é©ãã»ã©é£ããåé¡ã§ãããæé©ãªè§£æ±ºçã¯ãŸã èŠã€ãã£ãŠããŸããã å€ãã®äººã¯ããããå¯èœã§ããããšããç¥ããŸããã
åã®å³ãããæ¡ä»¶ä»ã Twitch ãµãŒããŒã¯ XNUMX ã€ã®ãœãŒã¹ IP ã¢ãã¬ã¹ã®ã¿ãããã㪠ã¹ããªãŒã ãåä¿¡ã§ããããšãæãåºããŸããã€ãŸããã©ã®ãããã€ããŒãåæ¢ããã©ã®ãããã€ããŒãæ©èœããŠãããã«é¢ä¿ãªãããœãŒã¹ IP ã¢ãã¬ã¹ã¯åžžã«äžå®ã§ããå¿ èŠããããŸãã ãããå®çŸããã«ã¯ããã¹ãŠã®æ¥ç¶ãçµäºã㊠XNUMX ã€ã«çµåãããµãã³ã° ãµãŒããŒãå¿ èŠã§ãã
ãµãã³ã° ãµãŒããŒã¯ããã¹ãŠã®ãã£ãã«ã XNUMX ã€ã®ãã³ãã«ã«éçŽããŸãã ãã¹ãŠã®æ¥ç¶ã¯åèšãµãŒã㌠ã¢ãã¬ã¹ããéå§ãããŸã
ãã®ã¹ããŒã ã§ã¯ãã¹ãŠã®ãããã€ããŒã䜿çšããããããã®ãããããç¡å¹ã«ããŠã Twitch ãµãŒããŒãšã®éä¿¡ã倱ãããããšã¯ãããŸããã åºæ¬çã«ãããã¯ç¹å¥ãª VPN ãã³ãã«ã§ããããã®å éšã«ã¯è€æ°ã®ã€ã³ã¿ãŒããã ãã£ãã«ãåæã«ååšããŸãã ãã®ãããªæ¹åŒã®äž»ãªã¿ã¹ã¯ã¯ãæé«å質ã®éä¿¡ãã£ãã«ãååŸããããšã§ãã ãããã€ããŒã® XNUMX ã€ã§åé¡ããã±ããã®æ倱ãé 延ã®å¢å€§ãçºçãå§ãããšããŠããè² è·ã¯å©çšå¯èœãªä»ã®ããåªãããã£ãã«ã«èªåçã«åæ£ããããããéä¿¡ã®å質ã«ã¯ãŸã£ãã圱é¿ããŸããã
åçšãœãªã¥ãŒã·ã§ã³
ãã®åé¡ã¯ãã©ã€ã ã€ãã³ãããããŒããã£ã¹ããããã®ã®ãé«å質ã®ã€ã³ã¿ãŒãããã«ã¢ã¯ã»ã¹ã§ããªã人ã ãé·ãéæ©ãŸããŠããŸããã ãã®ãããªã¿ã¹ã¯ã«ã¯ãããã€ãã®åçšãœãªã¥ãŒã·ã§ã³ããããŸããããšãã°ãTeradek ãšããäŒç€Ÿã¯ãUSB ã¢ãã ã®ããã¯ãæ¿å ¥ããããããªå·šå€§ãªã«ãŒã¿ãŒã補é ããŠããŸãã
ãã£ã³ãã«ãµãã³ã°æ©èœä»ããããªæŸéçšã«ãŒã¿ãŒ
ãã®ãããªããã€ã¹ã«ã¯éåžžãHDMI ãŸã㯠SDI çµç±ã§ãããªä¿¡å·ããã£ããã£ããæ©èœãçµã¿èŸŒãŸããŠããŸãã ã«ãŒã¿ãŒãšãšãã«ããã㪠ã¹ããªãŒã ã®åŠçããã©ã³ã¹ã³ãŒããäžç¶ãè¡ããã£ãã« ãµãã³ã° ãµãŒãã¹ã®ãµãã¹ã¯ãªãã·ã§ã³ã販売ãããŸãã ãã®ãããªããã€ã¹ã®äŸ¡æ Œã¯ãã¢ãã ã®ã»ããã«å ããŠããµãŒãã¹ãžã®å¥ã®ãµãã¹ã¯ãªãã·ã§ã³ãå«ã㊠2 ãã«ããå§ãŸããŸãã
å Žåã«ãã£ãŠã¯ãéåžžã«æãããããã«èŠããããšããããŸãã
OpenMPTCPRouter ã®ã»ããã¢ãã
ãããã³ã«
OpenMPTCPRouter ã®ä»çµã¿
èŠçŽãµãŒããŒã®ã»ããã¢ãã
ãµãã³ã° ãµãŒããŒã¯ã€ã³ã¿ãŒãããäžã«é 眮ãããã¯ã©ã€ã¢ã³ã ã«ãŒã¿ãŒã®ãã¹ãŠã®ãã£ãã«ããã®æ¥ç¶ã XNUMX ã€ã«çµç«¯ããŸãã ãã®ãµãŒããŒã® IP ã¢ãã¬ã¹ã¯ãOpenMPTCPRouter çµç±ã§ã€ã³ã¿ãŒãããã«ã¢ã¯ã»ã¹ãããšãã®å€éšã¢ãã¬ã¹ã«ãªããŸãã
ãã®ã¿ã¹ã¯ã§ã¯ãDebian 10 äžã® VPS ãµãŒããŒã䜿çšããŸãã
ãµãã³ã°ãµãŒããŒã®èŠä»¶:
- MPTCP 㯠OpenVZ ä»®æ³åã§ã¯æ©èœããŸãã
- ç¬èªã® Linux ã«ãŒãã«ãã€ã³ã¹ããŒã«ã§ããã¯ãã§ã
ãµãŒããŒã¯ XNUMX ã€ã®ã³ãã³ããå®è¡ããããšã§ãããã€ãããŸãã ãã®ã¹ã¯ãªããã¯ãmptcp ãµããŒããåããã«ãŒãã«ãšå¿ èŠãªãã¹ãŠã®ããã±ãŒãžãã€ã³ã¹ããŒã«ããŸãã ã€ã³ã¹ããŒã« ã¹ã¯ãªãã㯠Ubuntu ãš Debian ã§å©çšã§ããŸãã
wget -O - http://www.openmptcprouter.com/server/debian10-x86_64.sh | sh
ãµãŒããŒã®ã€ã³ã¹ããŒã«ãæåããçµæã
ãã¹ã¯ãŒããä¿åããã¯ã©ã€ã¢ã³ãã«ãŒã¿ãŒãèšå®ããŠåèµ·åããããã«å¿
èŠã«ãªããŸãã ã€ã³ã¹ããŒã«åŸãSSH ãããŒã 65222 ã§å©çšå¯èœã«ãªãããšã«çæããããšãéèŠã§ããåèµ·ååŸãæ°ããã«ãŒãã«ã§èµ·åããããšã確èªããå¿
èŠããããŸãã
uname -a
Linux test-server.local 4.19.67-mptcp
ããŒãžã§ã³çªå·ã®æšªã« mptcp ãšããæåã衚瀺ãããŸããããã¯ãã«ãŒãã«ãæ£ããã€ã³ã¹ããŒã«ãããããšãæå³ããŸãã
ã¯ã©ã€ã¢ã³ãã«ãŒã¿ãŒã®ã»ããã¢ãã
Ðа
openmptcprouter ã®ãã®éšå㯠OpenWRT ã«åºã¥ããŠãããOpenWRT ã«è§Šããããšããã人ã«ã¯ããªãã¿ã® LuCI ãã€ã³ã¿ãŒãã§ã€ã¹ãšããŠäœ¿çšããŸãã ãã£ã¹ããªãã¥ãŒã·ã§ã³ã®éãã¯çŽ 50MB ã§ãã
ãã¹ããã³ããšããŠãRaspberry Pi ãšãããŸããŸãªãªãã¬ãŒã¿ãŒ (MTS ããã³ Megafon) ãåããããã€ãã® USB ã¢ãã ã䜿çšããŸãã SDã«ãŒãã«ç»åãæžã蟌ãæ¹æ³ã¯èª¬æããå¿
èŠã¯ãªããšæããŸãã
æåã«ãRaspberry Pi ã®ã€ãŒãµããã ããŒãã¯ãéç IP ã¢ãã¬ã¹ãæ〠LAN ãšããŠæ§æãããŸãã 192.168.100.1ã æºã®äžã®é ç·ããããã®ãé¿ããããã«ãRaspberry Pi ã WiFi ã¢ã¯ã»ã¹ ãã€ã³ãã«æ¥ç¶ããã³ã³ãã¥ãŒã¿ãŒã® WiFi ã¢ããã¿ãŒãéçã¢ãã¬ã¹ã«èšå®ããŸããã 192.168.100.2ã DHCP ãµãŒããŒã¯ããã©ã«ãã§ã¯æå¹ã«ãªã£ãŠããªããããéçã¢ãã¬ã¹ã䜿çšããå¿ èŠããããŸãã
ããã§Webã€ã³ã¿ãŒãã§ãŒã¹ã«ãã°ã€ã³ã§ããããã«ãªããŸãã
åããŠãã°ã€ã³ãããšããã·ã¹ãã 㯠root ãã¹ã¯ãŒããèšå®ããããã«æ±ããŸããSSH ã¯åããã¹ã¯ãŒãã§äœ¿çšã§ããŸãã
LAN èšå®ã§ã¯ãåžæã®ãµãããããèšå®ããDHCP ãµãŒããŒãæå¹ã«ããããšãã§ããŸãã
å¥ã® DHCP ãµãŒããŒãåãã USB ã€ãŒãµããã ã€ã³ã¿ãŒãã§ã€ã¹ãšããŠå®çŸ©ãããã¢ãã ã䜿çšããŠãããããã€ã³ã¹ããŒã«ãå¿
èŠã§ãã
次ã«ãWAN ã€ã³ã¿ãŒãã§ã€ã¹ãèšå®ããå¿ èŠããããŸãã æåã«ãã·ã¹ãã 㯠1 ã€ã®ä»®æ³ã€ã³ã¿ãŒãã§ã€ã¹ WAN2 ãš WANXNUMX ãäœæããŸããã ãããã«ã¯ç©çããã€ã¹ãå²ãåœãŠãå¿ èŠããããŸããç§ã®å Žåãããã㯠USB ã¢ãã ã€ã³ã¿ãŒãã§ã€ã¹ã®ååã§ãã
ã€ã³ã¿ãŒãã§ã€ã¹åãšã®æ··ä¹±ãé¿ããããã«ãSSH çµç±ã§æ¥ç¶ããŠãããšãã« dmesg ã¡ãã»ãŒãžã衚瀺ããããšããå§ãããŸãã
ã¢ãã èªäœãã«ãŒã¿ãŒãšããŠæ©èœããDHCP ãµãŒããŒãåããŠãããããå éšãããã¯ãŒã¯ç¯å²ã®èšå®ãå€æŽããDHCP ãµãŒããŒãç¡å¹ã«ããå¿ èŠããããŸãããæåã¯äž¡æ¹ã®ã¢ãã ãåããããã¯ãŒã¯ããã¢ãã¬ã¹ãçºè¡ãã競åãçºçããããã§ãã
OpenMPTCPRouter ã§ã¯ãWAN ã€ã³ã¿ãŒãã§ã€ã¹ ã¢ãã¬ã¹ãéçã§ããå¿ èŠããããããã¢ãã ã®ãµãããããèãåºããã·ã¹ãã â openmptcprouter â ã€ã³ã¿ãŒãã§ã€ã¹èšå®ã¡ãã¥ãŒã§æ§æããŸãã ããã§ã¯ããµãã³ã°ãµãŒããŒã®ã€ã³ã¹ããŒã«äžã«ååŸãã IP ã¢ãã¬ã¹ãšãµãŒããŒããŒãæå®ããå¿ èŠããããŸãã
ã»ããã¢ãããæåãããšãåæ§ã®ç»åãã¹ããŒã¿ã¹ ããŒãžã«è¡šç€ºãããŸãã ã«ãŒã¿ãŒãåèšãµãŒããŒã«å°éã§ããäž¡æ¹ã®ãã£ãã«ãæ£åžžã«åäœããŠããããšãããããŸãã
ããã©ã«ãã®ã¢ãŒãã¯shadowsocks + mptcpã§ãã ããã¯ããã¹ãŠã®æ¥ç¶ãããèªäœå
ã§ã©ãããããããã·ã§ãã åæç¶æ
ã§ã¯ TCP ã®ã¿ãåŠçããããã«èšå®ãããŠããŸãããUDP ãæå¹ã«ããããšãã§ããŸãã
ã¹ããŒã¿ã¹ ããŒãžã«ãšã©ãŒããªãå Žåãã»ããã¢ããã¯å®äºãããšèŠãªãããŸãã
äžéšã®ãããã€ããŒã§ã¯ãmptcp ãã©ã°ããã©ãã£ã㯠ãã¹ã«æ²¿ã£ãŠåæããããšã次ã®ãšã©ãŒã衚瀺ãããç¶æ³ãçºçããå ŽåããããŸãã
ãã®å ŽåãMPTCP ã䜿çšããã«ãå¥ã®åäœã¢ãŒãã䜿çšã§ããŸãã詳现ã«ã€ããŠã¯ã
ãŸãšã
OpenMPTCPRouter ãããžã§ã¯ãã¯ããããããã£ãã«å ç®åé¡ã«å¯Ÿããå¯äžã®ãªãŒãã³ã§å æ¬çãªãœãªã¥ãŒã·ã§ã³ã§ãããããéåžžã«èå³æ·±ãéèŠã§ãã ä»ã®ãã®ã¯ãã¹ãŠãå³å¯ã«éããããŠç¬èªã®ãã®ã§ããããæ®éã®äººã«ã¯ç解ã§ããªãåã«å¥åã®ã¢ãžã¥ãŒã«ã§ãããã®ã©ã¡ããã§ãã éçºã®çŸæ®µéã§ã¯ããããžã§ã¯ãã¯ãŸã éåžžã«ç²éã§ãããã¥ã¡ã³ãã¯éåžžã«è²§åŒ±ã§ãå€ãã®ããšãåã«èª¬æãããŠããŸããã ãããåæã«ãããã¯ãŸã æ©èœããŸãã ä»åŸãéçºãé²ã¿ãããã«ãã£ã³ãã«ãé©åã«çµã¿åãããããšãã§ãã家åºçšã«ãŒã¿ãŒãç»å Žããããšãé¡ã£ãŠããŸãã
Instagram ã§éçºè ããã©ããŒããŠãã ãã
åºæïŒ habr.com