NFT рдмрдирд╛рдо Nginx рдХреЗ рд╕рд╛рде рдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдЯрд┐рдВрдЧ рдФрд░ рд╕рдВрддреБрд▓рди

рдЕрддреНрдпрдзрд┐рдХ рд▓реЛрдб рдХрд┐рдП рдЧрдП рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рд▓реЛрдб рд╕рдВрддреБрд▓рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп L7 рд╕рдВрддреБрд▓рди рдЙрдкрдХрд░рдг Nginx рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдЬрд╡рд╛рдмреЛрдВ рдХреЛ рдХреИрд╢ рдХрд░рдиреЗ, рд╡рд┐рднрд┐рдиреНрди рд░рдгрдиреАрддрд┐рдпреЛрдВ рдХреЛ рдЪреБрдирдиреЗ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ LUA рдкрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

Nginx рдХреЗ рд╕рднреА рдЖрдХрд░реНрд╖рдг рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдпрджрд┐:

  1. HTTP (рдПрд╕) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
  2. рдЖрдкрдХреЛ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдЕрдзрд┐рдХрддрдо рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
  3. рдХреБрдЫ рднреА рдХреИрд╢ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдмреИрд▓реЗрдВрд╕рд░ рдореЗрдВ рдбрд╛рдпрдирд╛рдорд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рд╕реНрд╡рдЪреНрдЫ рдПрдкреАрдЖрдИ рд╕рд░реНрд╡рд░ рд╣реИрдВред

рд╕рд╡рд╛рд▓ рдЙрда рд╕рдХрддрд╛ рд╣реИ: рдЖрдкрдХреЛ рдирдЧреНрдиреЗрдХреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? L7 рдкрд░ рд╕рдВрддреБрд▓рди рд╕рд╛рдзрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╕рд╛рдзрди рдХреНрдпреЛрдВ рдЦрд░реНрдЪ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпрд╛ рдХреЗрд╡рд▓ SYN рдкреИрдХреЗрдЯ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ? (L4 рдбрд╛рдпрд░реЗрдХреНрдЯ рд░реВрдЯрд┐рдВрдЧ)ред

рдкрд░рдд 4 рд╕рдВрддреБрд▓рди рдпрд╛ рдкреБрд░рд╛рддрдирддрд╛ рдореЗрдВ рд╕рдВрддреБрд▓рди рдХреИрд╕реЗ рдХрд░реЗрдВ


рдПрдХ рд▓реЛрдХрдкреНрд░рд┐рдп рдкреИрдХреЗрдЯ рдЕрдЧреНрд░реЗрд╖рдг рдЙрдкрдХрд░рдг IPVS рдерд╛ред рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕реБрд░рдВрдЧ рдФрд░ рдбрд╛рдпрд░реЗрдХреНрдЯ рд░реВрдЯрд┐рдВрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрддреБрд▓рди рд╕рд╛рдзрдиреЗ рдХрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ред

рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреАрд╕реАрдкреА рдЪреИрдирд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдкреИрдХреЗрдЯ рдмреИрд▓реЗрдВрд╕рд░, рдлрд┐рд░ рдорд┐рдирд┐рдпрди рдФрд░ рдлрд┐рд░ рд░рд┐рд╡рд░реНрд╕ рдСрд░реНрдбрд░ рдореЗрдВ рдЪрд▓рд╛ рдЧрдпрд╛ред



рдЗрд╕ рдпреЛрдЬрдирд╛ рдореЗрдВ, рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ: рд╡рд┐рдкрд░реАрдд рджрд┐рд╢рд╛ рдореЗрдВ, рдбреЗрдЯрд╛ рдкрд╣рд▓реЗ рдмреИрд▓реЗрдВрд╕рд░ рдХреЗ рдкрд╛рд╕ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП (рдирд┐рдЧреНрдиреЗрдХреНрд╕ рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)ред рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдп рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕ рддрдереНрдп рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдЖрдорддреМрд░ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рдХреБрдЫ рдкреНрд░рджрд░реНрд╢рди рд╣рд╛рдирд┐ рд╣реЛрддреА рд╣реИред

рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдиреБрдХрд╕рд╛рди рд╕реЗ рд╡рдВрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд▓реЗрдХрд┐рди рдирдП рдХреЗ рд╕рд╛рде рд╕рдВрдкрдиреНрди) рдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдЯрд┐рдВрдЧ рдирд╛рдордХ рдПрдХ рд╕рдВрддреБрд▓рди рдХреА рд╡рд┐рдзрд┐ред рдпреЛрдЬрдирд╛рдмрджреНрдз рд░реВрдк рд╕реЗ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:



рдбрд╛рдпрд░реЗрдХреНрдЯ рд░реВрдЯрд┐рдВрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡рд╛рдкрд╕реА рдкреИрдХреЗрдЯ рд╕реАрдзреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рдЬрд╛рддреЗ рд╣реИрдВ, рдмреИрд▓реЗрдВрд╕рд░ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рддреЗ рд╣реБрдПред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдмреИрд▓реЗрдВрд╕рд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдФрд░ рдиреЗрдЯрд╡рд░реНрдХ рджреЛрдиреЛрдВ рдХреЛ рдмрдЪрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдиреЗрдЯрд╡рд░реНрдХ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рд╕реЗ, рдпрд╣ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрддрдирд╛ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рдЕрднреНрдпрд╛рд╕ рд╕рд░реНрд╡рд░реЛрдВ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдЧреНрд░рд┐рдб рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рд╣реИ рдФрд░ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рддрдереНрдп рдХреЛ рднреА рдХрд┐ рдмреИрд▓реЗрдВрд╕рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХрд╛ рдиреБрдХрд╕рд╛рди рд╣реИред

рдпрд╣ рд╡рд┐рдзрд┐ рдХреБрдЫ рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рддреА рд╣реИ:

  1. рдбреЗрдЯрд╛ рдХреЗрдВрджреНрд░ рдЬрд╣рд╛рдВ рдЕрд╡рд╕рдВрд░рдЪрдирд╛ рд╕реНрдерд┐рдд рд╣реИ, рдЙрд╕реЗ рд╕реНрдерд╛рдиреАрдп рдкрддреЗ рдЦрд░рд╛рдм рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреА рдЪрд╛рд╣рд┐рдПред рдКрдкрд░ рджрд┐рдП рдЧрдП рдЖрд░реЗрдЦ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдорд┐рдирд┐рдпрди рдХреЛ IP 10.10.0.1 рдХреА рдУрд░ рд╕реЗ рдкреИрдХреЗрдЯ рд╡рд╛рдкрд╕ рднреЗрдЬрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕реЗ рдмреИрд▓реЗрдВрд╕рд░ рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред
  2. рдмреИрд▓реЗрдВрд╕рд░ рдХреЛ рдореАрдирд╛рд░реЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдкрддрд╛ рд╣реИред рдирддреАрдЬрддрди, рд▓рд┐рд╕реНрдЯ рдХреЙрди рдФрд░ рд▓рд┐рд╕реНрдЯ рдЯрд╛рдЗрдо рд░рдгрдиреАрддрд┐рдпреЛрдВ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИрдВред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЗрдЦреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдФрд░ рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред

рдпрд╣рд╛рдБ NFTables рдЖрддрд╛ рд╣реИ


рдХреБрдЫ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рд▓рд┐рдирдХреНрд╕ рдиреЗ IPTables, ArpTables, EBTables рдФрд░ рдмрд╛рдХреА рд╕рднреА [az] {1,} рдЯреЗрдмрд▓реНрд╕ рдХреЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд░реВрдк рдореЗрдВ NFTables рдХреЛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдмрдврд╝рд╛рд╡рд╛ рджреЗрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдЙрд╕ рд╕рдордп рдЬрдм рд╣рдореЗрдВ Adram рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдЙрддреНрддрд░ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдХреЛ рдирд┐рдЪреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рдореИрдВрдиреЗ рдЪреЗрдХрд░ рдХреЛ рдЦреЛрдЬрдиреЗ рдФрд░ рдЦреЛрдЬ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ - рдпрд╛ рд╢рд╛рдпрдж ipTables рдиреЗ iphash рдЕрдЧреНрд░реЗрд╖рдг рдХрд░рдирд╛ рд╕реАрдЦрд╛ рд╣реИ рдФрд░ рдЖрдк рдЗрд╕реЗ рд╕рдВрддреБрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЧрддрд┐ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред рддрдм рдореИрдВ nftables рдкрд░ рдареЛрдХрд░ рдЦрд╛рдИ, рдЬреЛ рди рдХреЗрд╡рд▓ рдФрд░ рди рд╣реА, рд▓реЗрдХрд┐рди iptables рдЕрднреА рднреА рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдХрдИ рджрд┐рдиреЛрдВ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рдж, рдореИрдВ рдЖрдЦрд┐рд░рдХрд╛рд░ рдЯреЗрд╕реНрдЯ рд▓реИрдм рдореЗрдВ NFTables рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбрд╛рдпрд░реЗрдХреНрдЯ рд░реВрдЯрд┐рдВрдЧ рдФрд░ рдЪреИрдирд▓ рд░реВрдЯрд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ рдФрд░ рдирдЧреНрдиреЗрдХреНрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рднреА рдХрд░рддрд╛ рдерд╛ред

рддреЛ, рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 5 рдХрд╛рд░реЗрдВ рд╣реИрдВ:

  1. рдПрдирдПрдлрдЯреА-рд░рд╛рдЙрдЯрд░ - рдПрдХ рд░рд╛рдЙрдЯрд░ рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рдЕрдкреНрдкрд╕реЗрд╡рд░ рд╕рдмрдиреЗрдЯ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ 2 рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛рд░реНрдб рд╣реИрдВ: 192.168.56.254 - рдРрдк рд╕рд░реНрд╡рд░ рдХреЗ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ, 192.168.97.254 - рдХреНрд▓рд╛рдЗрдВрдЯреНрд╕ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИред Ip_forward рд╕рдХреНрд╖рдо рд╣реИ рдФрд░ рд╕рднреА рдорд╛рд░реНрдЧ рдкрдВрдЬреАрдХреГрдд рд╣реИрдВред
  2. nft-client: рдХреНрд▓рд╛рдЗрдВрдЯ рдЬрд┐рд╕рдореЗрдВ рд╕реЗ ab, ip 192.168.97.2 рдкреАрдЫрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
  3. nft-balancer: рдмреИрд▓реЗрдВрд╕рд░ред рдЗрд╕рдореЗрдВ рджреЛ IP рд╣реИрдВ: 192.168.56.4, рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдХреНрд╕реЗрд╕ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ 192.168.13.1, рдорд┐рдирд┐рдпрди рд╕рдмрдиреЗрдЯ рд╕реЗред
  4. nft-minion-a рдФрд░ nft-minion-b: minions ipy: 192.168.56.2, 192.168.56.3 рдФрд░ 192.168.13.2 рдФрд░ 192.168.13.3 (рдореИрдВрдиреЗ рдПрдХ рд╣реА рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рд▓реЛрдЧреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрддреБрд▓рди рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА)ред рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ, рдореИрдВрдиреЗ рдЗрд╕ рддрдереНрдп рдкрд░ рд░реЛрдХ рд▓рдЧрд╛ рджреА рдХрд┐ 192.168.56.0/24 рд╕рдмрдиреЗрдЯ рдореЗрдВ minions рдХреЗ "рдмрд╛рд╣рд░реА" рдкреНрд░рдХрд╛рд░ рд╣реИрдВред

рд╕рднреА рдПрдордЯреАрдпреВ 1500 рдЗрдВрдЯрд░рдлреЗрд╕ред

рдкреНрд░рддреНрдпрдХреНрд╖ рдорд╛рд░реНрдЧ


рдмреИрд▓реЗрдВрд╕рд░ рдкрд░ NFTables рд╕реЗрдЯрд┐рдВрдЧ:

table ip raw { chain input { type filter hook prerouting priority -300; policy accept; tcp dport http ip daddr set jhash tcp sport mod 2 map { 0: 192.168.56.2, 1: 192.168.56.3 } } } 

-300 рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЗ рд╕рд╛рде, рд╣реБрдХ рдкрд░ рдПрдХ рдХрдЪреНрдЪреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИред

рдпрджрд┐ http рдХрд╛ рдХреЛрдИ рдЧрдВрддрд╡реНрдп рдкрддрд╛ рд╡рд╛рд▓рд╛ рдкреИрдХреЗрдЯ рдЖрддрд╛ рд╣реИ, рддреЛ рд╕реНрд░реЛрдд рдкреЛрд░реНрдЯ (рдПрдХ рдорд╢реАрди рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ ip saddr рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ) рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рддреЛ 56.2 рдпрд╛ 56.3 рдХреЛ рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкреИрдХреЗрдЯ рдореЗрдВ рдЧрдВрддрд╡реНрдп рдкрддреЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдорд╛рд░реНрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореЛрдЯреЗ рддреМрд░ рдкрд░, 56.2 рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЗ рд▓рд┐рдП, рд╡рд┐рд╖рдо рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЗ рд▓рд┐рдП, рдХреНрд░рдорд╢рдГ 56.3 (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдирд╣реАрдВ, рдХреНрдпреЛрдВрдХрд┐ / рд╡рд┐рд╖рдо рд╣реИрд╢ рдХреЗ рд▓рд┐рдП, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд╣реИ)ред рд▓рдХреНрд╖реНрдп IP рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдкреИрдХреЗрдЯ рд╡рд╛рдкрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдЬрд╛рддрд╛ рд╣реИред рдХреЛрдИ NAT рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдкреИрдХреЗрдЬ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕реНрд░реЛрдд рдЖрдИрдкреА рдХреЗ рд╕рд╛рде рдорд┐рдирд┐рдпрдВрд╕ рдХреЗ рд▓рд┐рдП рдЖрддрд╛ рд╣реИ, рди рдХрд┐ рдмреИрд▓реЗрдВрд╕рд░ рдХреЗ рд▓рд┐рдП, рдЬреЛ рдбрд╛рдпрд░реЗрдХреНрдЯ рд░реВрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

рдорд┐рдирд┐рдпрди рдПрдирдПрдлрдЯреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕:

 table ip raw { chain output { type filter hook output priority -300; policy accept; tcp sport http ip saddr set 192.168.56.4 } } 

-300 рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдХрдЪреНрдЪрд╛ рдЖрдЙрдЯрдкреБрдЯ рд╣реБрдХ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдпрд╣рд╛рдВ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЙрдЪреНрдЪ рд╕реНрддрд░ рдкрд░ рдЖрд╡рд╢реНрдпрдХ рдкреИрдХреЗрдЯ рдЙрддреНрддрд░ рдкреИрдХреЗрдЯ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛)ред

Http рдкреЛрд░реНрдЯ рд╕реЗ рд╕рднреА рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ 56.4 (рдЖрдИрдкреА рдмреИрд▓реЗрдВрд╕рд░) рджреНрд╡рд╛рд░рд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рд╕реАрдзреЗ рдмреИрд▓реЗрдВрд╕рд░ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдореИрдВрдиреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рджреВрд╕рд░реЗ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд▓рд╛рдпрд╛ рдФрд░ рдЗрд╕реЗ рд░рд╛рдЙрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдиреЗ рджрд┐рдпрд╛ред

рдореИрдВрдиреЗ arp_filter, rp_filter (рддрд╛рдХрд┐ рдХрд╛рдо рдмрд┐рдЧрд╛рдбрд╝рдиреЗ рд╡рд╛рд▓рд╛) рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рджрд┐рдпрд╛ рдФрд░ ip_forward рдХреЛ рдмреИрд▓реЗрдВрд╕рд░ рдФрд░ рд░рд╛рдЙрдЯрд░ рджреЛрдиреЛрдВ рдкрд░ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ред

рдмреЗрдВрдЪ рдХреЗ рд▓рд┐рдП, рдПрдирдПрдлрдЯреА рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдорд┐рдирд┐рдпрди рдкрд░ рдПрдХ рдпреВрдирд┐рдХреНрд╕ рд╕реЙрдХреЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирдЧрдиреЗрдХреНрд╕ + php7.2-FPM рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрд╛рд▓рдЧреАрдд рдкрд░ рдХреБрдЫ рдирд╣реАрдВ рдерд╛ред

рдирд┐рдЧреНрдиреЗрдХреНрд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдордиреЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛: рдмрд╛рд▓реНрдХрди рдкрд░ рдирдЧреНрдиреЗрдХреНрд╕ рдФрд░ рдЯрдХрд╕рд╛рд▓реЛрдВ рдкрд░ рдЯреАрд╕реАрдкреА рд╕реЗ рдЕрдзрд┐рдХ php7.2-FPMред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдореИрдВрдиреЗ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЛ рдмреИрд▓реЗрдВрд╕рд░ рдХреЗ рдкреАрдЫреЗ рд╕рдВрддреБрд▓рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рддреБрд░рдВрдд рдПрдлрдкреАрдПрдо (рдЬреЛ рдирдЧреАрдиреЗрдХреНрд╕ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдЧрд╛, рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рд╕реБрд╕рдВрдЧрдд рд╣реЛрдЧрд╛)ред

рдПрдирдПрдлрдЯреА рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ рд╣реИрд╢ рд░рдгрдиреАрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдирдПрдлрдЯреА рдбреНрд░рд┐рдВрдХ ), рдирдЧреАрдирдХреНрд╕ рдХреЗ рд▓рд┐рдП: рд╣реИрд╢ ( рдПрдирдПрдХреНрд╕рдПрдХреНрд╕ рдИрдХреНрдпреВ ) рдФрд░ рдХрдо рд╕реЗ рдХрдо рдХреЙрди ( рдПрдирдПрдХреНрд╕рдПрдХреНрд╕ рдПрд▓рд╕реА )

рдХрдИ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рд╣реИрдВред

  1. рдЫреЛрдЯреА рддреНрд╡рд░рд┐рдд рд▓рд┐рдкрд┐ (рдЫреЛрдЯреА) ред

     <?php system('hostname'); 

  2. рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рджреЗрд░реА (рд░реИрдВрдб) рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░рд┐рдкреНрдЯред

     <?php usleep(mt_rand(100000,200000)); echo "ok"; 
  3. рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдбреЗрдЯрд╛ (рдЖрдХрд╛рд░) рднреЗрдЬрдиреЗ рд╡рд╛рд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯред

     <?php $size=$_GET['size']; $file='/tmp/'.$size; if (!file_exists($file)) { $dummy=""; exec ("dd if=/dev/urandom of=$file bs=$size count=1 2>&1",$dummy); } fpassthru (fopen($file,'rb')); 

    рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
    512.1440.1460.1480.1500.2048.65535.655350 рдмрд╛рдЗрдЯреНрд╕ред
    рдкрд░реАрдХреНрд╖рдгреЛрдВ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдкреНрд░рддреНрдпреЗрдХ рдорд┐рдирд┐рдпрди рдкрд░ рд╕реНрдЯреИрдЯрд┐рдХреНрд╕ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЧрд░реНрдо рдХрд┐рдпрд╛ред

рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рд╛ рдореЗрдВ рдЕрдм рддреАрди рдмрд╛рд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛:

 #!/bin/bash function do_test() { rep=$3 for i in $(seq $rep) do echo "testing $2 # $i" echo "$2 pass $i" >> $2 ab $1 >> $2 echo "--------------------------" >> $2 done } do_test " -n 5000 -c 100 http://192.168.56.4:80/rand.php" "ngx_eq_test_rand" 3 do_test " -n 10000 -c 100 http://192.168.56.4:80/" "ngx_eq_test_small" 3 size=512 do_test " -n 10000 -c 100 http://192.168.56.4:80/size.php?size=$size" "ngx_eq_test_size_$size" 3 size=1440 do_test " -n 10000 -c 100 http://192.168.56.4:80/size.php?size=$size" "ngx_eq_test_size_$size" 3 size=1460 do_test " -n 10000 -c 100 http://192.168.56.4:80/size.php?size=$size" "ngx_eq_test_size_$size" 3 size=1480 do_test " -n 10000 -c 100 http://192.168.56.4:80/size.php?size=$size" "ngx_eq_test_size_$size" 3 size=1500 do_test " -n 10000 -c 100 http://192.168.56.4:80/size.php?size=$size" "ngx_eq_test_size_$size" 3 size=2048 do_test " -n 10000 -c 100 http://192.168.56.4:80/size.php?size=$size" "ngx_eq_test_size_$size" 3 size=65535 do_test " -n 10000 -c 100 http://192.168.56.4:80/size.php?size=$size" "ngx_eq_test_size_$size" 3 size=655350 do_test " -n 10000 -c 100 http://192.168.56.4:80/size.php?size=$size" "ngx_eq_test_size_$size" 3 

рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдореИрдВрдиреЗ рдкрд░реАрдХреНрд╖рдг рд╕рдордп, рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдФрд░ рдмрд╛рдХреА рд▓рд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдореИрдВ рдЖрд░рдкреАрдПрд╕ рдкрд░ рдмрд╕ рдЧрдпрд╛ - рд╡реЗ рд╕рдордп рд╕рдВрдХреЗрддрдХ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдФрд░ рд╕рд╣рд╕рдВрдмрдВрдзреА рд╣реИрдВред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓реЗ:

рдЖрдХрд╛рд░ рдкрд░реАрдХреНрд╖рдг - рдХреЙрд▓рдо - рджрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХрд╛ рдЖрдХрд╛рд░ред



рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рдмрдбрд╝реЗ рдЕрдВрддрд░ рд╕реЗ рд╕реАрдзрд╛ рд░реВрдЯрд┐рдВрдЧ рдЬреАрддрддрд╛ рд╣реИред

рдореИрдВ рдИрдерд░рдиреЗрдЯ рдлреНрд░реЗрдо рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреБрдЫ рдЕрдиреНрдп рдкрд░рд┐рдгрд╛рдореЛрдВ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдХреЛрдИ рд╕рдВрдмрдВрдз рдирд╣реАрдВ рдкрд╛рдпрд╛ рдЧрдпрд╛ред рд╢рд╛рдпрдж 512 рд╢рд░реАрд░ 1500 рдПрдордЯреАрдпреВ рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ, рдЫреЛрдЯрд╛ рдкрд░реАрдХреНрд╖рдг рд╕рд╛рдВрдХреЗрддрд┐рдХ рд╣реЛрдЧрд╛ред

рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдмрдбрд╝реЗ рд╡реЙрд▓реНрдпреВрдо (650k) рдкрд░ nginx рдЕрд▓рдЧрд╛рд╡ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред рд╢рд╛рдпрдж рдпрд╣ рдмрдлрд╝рд░реНрд╕ рдФрд░ рдЯреАрд╕реАрдкреА рд╡рд┐рдВрдбреЛрдЬ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рдирд╛ рд╣реИред

рд░реИрдВрдб рдЯреЗрд╕реНрдЯ рдХрд╛ рдирддреАрдЬрд╛ред рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдорд┐рдирдЯреЛрдВ рдкрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рд╡рд┐рднрд┐рдиреНрди рдЧрддрд┐ рдХреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдХреИрд╕реЗ рд╣реИрдВрдбрд▓ рд╣реЛрддрд╛ рд╣реИред



рд╣реИрд░рд╛рдиреА рдХреА рдмрд╛рдд рд╣реИ, рдирдЧрдиреЗрдХреНрд╕ рд╣реИрд╢ рдиреЗ рдХрдо рд╕реЗ рдХрдо рдХреЙрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛, рдФрд░ рдХреЗрд╡рд▓ рдЕрдВрддрд┐рдо рдкрд╛рд╕ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдХреЙрди рдереЛрдбрд╝рд╛ рдЖрдЧреЗ рдирд┐рдХрд▓ рдЧрдпрд╛, рдЬреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛрдиреЗ рдХрд╛ рджрд┐рдЦрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдкрд╛рд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдмрд╣реБрдд рдЕрд▓рдЧ рд╣реИ рдХрд┐ 100 рдзрд╛рдЧреЗ рддреБрд░рдВрдд рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ, рдФрд░ рд╕реНрдЯрд╛рд░реНрдЯ-рдЕрдк рд╕реЗ рдПрдлрдкреАрдПрдо-рдУрдХреЗ рд▓рдЧрднрдЧ 10.ред рддреАрд╕рд░реЗ рдкрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЙрдирдХреЗ рдкрд╛рд╕ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдерд╛ - рдЬреЛ рдлрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рд░рдгрдиреАрддрд┐рдпреЛрдВ рдХреА рдкреНрд░рдпреЛрдЬреНрдпрддрд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред

рдПрдирдПрдлрдЯреА рдиреЗ рдЗрд╕ рдкрд░реАрдХреНрд╖рд╛ рдореЗрдВ рдЙрдореНрдореАрдж рдЦреЛ рджреА рдереАред Nginx рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ FPMs рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рддрд╛ рд╣реИред

рдЫреЛрдЯрд╛ рдкрд░реАрдХреНрд╖рдг



рдПрдирдкреАрдПрд╕ рдЖрд░рдкреАрдПрд╕ рдкрд░ рдорд╛рдореВрд▓реА рд░реВрдк рд╕реЗ рдЬреАрддрддрд╛ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдХреЙрди рдлрд┐рд░ рд╕реЗ рдПрдХ рдмрд╛рд╣рд░реА рд╡реНрдпрдХреНрддрд┐ рд╣реИред

рд╡реИрд╕реЗ, рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ 400-500RPS рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, 512 рдмрд╛рдЗрдЯ рднреЗрдЬрдиреЗ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдкрд░ рдпрд╣ 1500 рдХреЗ рд▓рд┐рдП рдерд╛ - рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдЗрд╕ рд╣рдЬрд╛рд░ рдХреЛ рдЦрд╛рддрд╛ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖


NFT рдиреЗ рдПрдХ рд╕рдорд╛рди рднрд╛рд░ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛: рдЬрдм рдмрд╣реБрдд рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рдордп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд╕рдВрд╕рд╛рдзрди рдПрдХ рдЯреЗрд▓рд╕реНрдкрд┐рди рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдЖрдиреЗ рд╡рд╛рд▓реА рд╕реНрдЯреНрд░реАрдо рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВред

рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬрд╣рд╛рдВ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдкрд░ рд▓реЛрдб рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реИ рдФрд░ рд╣реИрд╢ рдбрд┐рд╡реАрдЬрди рдХреЗ рдЖрджрд┐рдо рд╢реЗрд╖ рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рд▓реЛрдб рдХреЛ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╕рдВрддреБрд▓рд┐рдд рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдПрдирдПрдлрдЯреА рдЦреЛ рдЬрд╛рдПрдЧрд╛ред

Source: https://habr.com/ru/post/hi441348/


All Articles