рдПрдХ рдкреВрд░реНрдг рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рд╢рд╛рд╕рдХ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдЕрдХреНрд╕рд░ рдПрдХ рдкреНрд░рд╡реЗрд╢ рджреНрд╡рд╛рд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддрд╛ рд╣реВрдВред рдЕрдм рддрдХ, рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд╣рд░реА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдерд╛ - рдЗрд╕рдиреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдФрд░ lartc.com рдкрд░ рд╕рдВрдХрд▓рд┐рдд рдПрдХ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ред рдЬрдм 2 рдЗрдВрдЯрд░рдиреЗрдЯ рдкреНрд░рджрд╛рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рдХрд▓реНрдк рдереЗ - рдореИрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрджрд▓рд╛рд╡ рдХреЗ рд▓рд┐рдП рд╕рдореВрд╣реАрдХреГрдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
- NAT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдЗрдВрдЯрд░рдиреЗрдЯ рд╡рд┐рддрд░рдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
- рдЦреБрд▓реЗ рдмрдВрджрд░рдЧрд╛рд╣
- рдЖрдЧреЗ рдХреЗ рдмрдВрджрд░рдЧрд╛рд╣
- рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рджрд╛рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
- рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд░реНрдгрд┐рдд рдирд┐рдпрдореЛрдВ рдФрд░ рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ
- рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ
рд╡рд┐рд╡рд░рдг
рдЗрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдореБрдЦреНрдп рдЕрдЬрдЧрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдПрдХ рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рддреА рд╣реИ, рдЬреЛ рдЪрд▓рддреА рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рдЪрд╛рд▓ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд╡рдЬрдирджрд╛рд░ рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП рдирд┐рдХрд▓реА рдЬрд┐рд╕реЗ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЖрд╡рд╛рдЬ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред
рд▓рд┐рдВрдХ рдкрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдбрд╛рдЙрдирд▓реЛрдб
рдХрд░реЗрдВ ред
рдФрд░ рдпрд╣рд╛рдВ рдЙрдирдХрд╛ рдЙрдкрдХрд░рдг рд╡рд░реНрдгрд┐рдд рд╣реИред
рд╕реЗрдЯрд┐рдВрдЧреНрд╕
рдкрд╛рдпрдерди msr_ip.py рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЖрд╡рд╢реНрдпрдХ рдЗрдирдкреБрдЯ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ:
#! / usr / bin / env рдЕрдЬрдЧрд░
# - * - рдХреЛрдбрд┐рдВрдЧ: utf-8 - * -
# рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдпрд╣рд╛рдБ рд╣реИрдВ
рдЕрдЧрд▓рд╛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рдзрд╛рд░рд╛ рдЖрддрд╛ рд╣реИ, рдкрд╣рд▓реЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рд╡рд┐рд╡рд░рдг:
ifaces = [
{
"рджреЗрд╡" : "рдПрде 1" ,
"рдЖрдИрдкреА" : "192.168.0.1" ,
"рднреВрдорд┐рдХрд╛" : "рд╕реНрдерд╛рдиреАрдп"
} ,
{
"рджреЗрд╡" : "рдПрде 2"
} ,
{
"рджреЗрд╡" : "рдПрде 3" ,
"рдЖрдИрдкреА" : "1.2.3.4" ,
"gw" : "1.2.3.1" ,
"рдЯреЗрдмрд▓" : "рдиреНрдпреВрдХреЙрдордкреЛрд░реНрдЯ" ,
"рдирд┐рд╢рд╛рди" : "0x2" ,
"рднреВрдорд┐рдХрд╛" : "рдмрд╛рд╣рд░реА" ,
"рд╡рдЬрди" : 7
} ,
{
"рджреЗрд╡" : "ppp0" ,
"gw" : "5.6.7.1" ,
"рдЯреЗрдмрд▓" : "рд╡реЗрд▓рдиреЗрдЯ" ,
"рдирд┐рд╢рд╛рди" : "0x1" ,
"рднреВрдорд┐рдХрд╛" : "рдмрд╛рд╣рд░реА" ,
"рд╡рдЬрди" : 3
} ,
{
"рджреЗрд╡" : "рдЯреНрдпреВрди" ,
"рдЖрдИрдкреА" : "192.168.1.1" ,
"рдЯреЗрдмрд▓" : "рд╡реАрдкреАрдПрди" ,
"рдирд┐рд╢рд╛рди" : "0x4" ,
"рднреВрдорд┐рдХрд╛" : "рд╕реНрдерд╛рдиреАрдп"
}
]
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЧреБрдг рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рд╕рдВрднрд╡ рд╣реИрдВ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╢рдмреНрджрдХреЛрд╢ рддрддреНрд╡ рд╣реИрдВ:
рджреЗрд╡ - рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд╛рдо, рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рддрддреНрд╡;
рдЬреАрдбрдмреНрд▓реНрдпреВ - рдЧреЗрдЯрд╡реЗ;
рддрд╛рд▓рд┐рдХрд╛ - рд░реВрдЯрд┐рдВрдЧ рддрд╛рд▓рд┐рдХрд╛ рдХреА рд╕рдВрдЦреНрдпрд╛ рдпрд╛ рдирд╛рдо, рдпрджрд┐ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдлрд╝рд╛рдЗрд▓ / etc / iproute2 / rt_tables рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдмрд╛рд╣рд░реА рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд▓рд┐рдП рдЕрдирд┐рд╡рд╛рд░реНрдп;
рдорд╛рд░реНрдХ - рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рд▓реЗрдмрд▓, рдпрджрд┐ рдЖрдк рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдирд┐рдпрдо рдЬреЛрдбрд╝реЗрдВрдЧреЗ;
рднреВрдорд┐рдХрд╛ - рдПрдХ рднреВрдорд┐рдХрд╛, рдмрд╛рд╣рд░реА, рд╕реНрдерд╛рдиреАрдп рдпрд╛ рдХреЛрдИ рднреА рд╣реЛ рд╕рдХрддреА рд╣реИред рдпрджрд┐ рдмрд╛рд╣рд░реА - рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдмрд╛рд╣рд░реА рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХреНрд░рдорд╢рдГ, рдпрд╣ NAT рдФрд░ рдмрд╛рд╣рд░ рд╕реЗ рдирдП рдХрдиреЗрдХреНрд╢рди рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рд╕реНрдерд╛рдиреАрдп - рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реНрдерд╛рдиреАрдп рд╣реИ: NAT рдФрд░ рдмрд╛рд╣рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ;
рд╡рдЬрди - рдорд╛рд░реНрдЧ-рдЖрдзрд╛рд░рд┐рдд рдЖрдЙрдЯрдмрд╛рдЙрдВрдб рд▓реЛрдб рд╕рдВрддреБрд▓рди рдХреЗ рд▓рд┐рдП рд╡рдЬрдиред
рдпрджрд┐ рдмрд╛рд╣рд░реА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд╣реАрдВ рдЙрдард╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рд░реНрдЧреЛрдВ рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЕрдм рдЙрди рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдЦреЛрд▓рдиреЗ рдФрд░ / рдпрд╛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдмрдВрджрд░рдЧрд╛рд╣ = [
{
"рдкреНрд░реЛрдЯреЛ" : "рдЯреАрд╕реАрдкреА" ,
"рдЯреАрдкреЛрд░реНрдЯ" : 22 ,
"sHost" : рдХреЛрдИ рдирд╣реАрдВ ,
"nPort" : рдХреЛрдИ рдирд╣реАрдВ ,
"dHost" : рдХреЛрдИ рдирд╣реАрдВ
}
ред
{} рдкреВрд░реЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рддреБрд░рдВрдд рд╕рдХреНрд╖рдо рдХрд░реЗрдВ
"рдкреНрд░реЛрдЯреЛ" : "icmp" ,
"tPort" : рдХреЛрдИ рдирд╣реАрдВ ,
"sHost" : рдХреЛрдИ рдирд╣реАрдВ ,
"nPort" : рдХреЛрдИ рдирд╣реАрдВ ,
"dHost" : рдХреЛрдИ рдирд╣реАрдВ
}
ред
{ 192.168.0.3 рдХреЛ рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рд▓реИрди рдкрд░ RDP рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдирд╛
"рдкреНрд░реЛрдЯреЛ" : "рдЯреАрд╕реАрдкреА" ,
"рдЯреАрдкреЛрд░реНрдЯ" : 3389 ,
"sHost" : рдХреЛрдИ рдирд╣реАрдВ ,
"рдПрдирдкреЛрд░реНрдЯ" : 3389 ,
"dHost" : "192.168.0.3"
}
ред
{ @ 192.168.0.2 рдХреЛ рдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рдЖрд░рдбреАрдкреА рдХреЛ 3390 рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛
"рдкреНрд░реЛрдЯреЛ" : "рдЯреАрд╕реАрдкреА" ,
"рдЯреАрдкреЛрд░реНрдЯ" : 3390 ,
"sHost" : рдХреЛрдИ рдирд╣реАрдВ ,
"рдПрдирдкреЛрд░реНрдЯ" : 3389 ,
"dHost" : "192.168.0.2"
}
ред
{ # рдХреЗрд╡рд▓ рдПрдХ рд░рд┐рдореЛрдЯ рд╣реЛрд╕реНрдЯ рд╕реЗ рд╡реЗрдм рдХрдВрдЯреНрд░реЛрд▓
"рдкреНрд░реЛрдЯреЛ" : "рдЯреАрд╕реАрдкреА" ,
"рдЯреАрдкреЛрд░реНрдЯ" : 80 ,
"sHost" : "9.8.7.6" ,
"nPort" : рдХреЛрдИ рдирд╣реАрдВ ,
"dHost" : рдХреЛрдИ рдирд╣реАрдВ
}
ред
{ # рд╕рднреА рдХреЗ рд▓рд┐рдП 1VPN
"рдкреНрд░реЛрдЯреЛ" : "рдЯреАрд╕реАрдкреА" ,
"рдЯреАрдкреЛрд░реНрдЯ" : 1194 ,
"sHost" : рдХреЛрдИ рдирд╣реАрдВ ,
"nPort" : рдХреЛрдИ рдирд╣реАрдВ ,
"dHost" : рдХреЛрдИ рдирд╣реАрдВ
}
]
рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЖрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдореИрдВ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛:
рдкреНрд░реЛрдЯреЛ - рдкреНрд░реЛрдЯреЛрдХреЙрд▓;
tPort - рдЦреБрд▓рдиреЗ рд╡рд╛рд▓рд╛ рдмрд╛рд╣рд░реА рдмрдВрджрд░рдЧрд╛рд╣;
sHost - рдкреНрд░рддрд┐рдмрдВрдз, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рд╕реНрд░реЛрдд рдкрддреЗ рдкрд░;
nPort - рдЕрдЧреНрд░реЗрд╖рдг рдХреЗ рджреМрд░рд╛рди рдирдпрд╛ рдкреЛрд░реНрдЯ;
dHost - рд╡рд╣ рд╣реЛрд╕реНрдЯ рдЬрд┐рд╕ рдкрд░ рдкреЛрд░реНрдЯ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЕрдм рдмрд╛рд╣рд░реА рдиреЛрдбреНрд╕ рдкрд░ рдиреЛрдбреНрд╕ рдХреЛ рдмрд╛рдВрдзрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
рдирд┐рдпрдо = [
рдЗрд╕рдХреЗ рдЧреЗрдЯрд╡реЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ { рдкреНрд░рджрд╛рддрд╛ рдЖрдВрдХрдбрд╝реЗ
"рдЯреВ" : "213.79.2.30" , # рдЖрдВрдХрдбрд╝реЗ
"рд▓реБрдХрдЕрдк" : "рд╡реЗрд▓рдиреЗрдЯ"
} ,
{ рд╡реАрдПрдо рдЯреЗрдмрд▓ рдкрд░ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди
"рд╕реЗ" : "192.168.0.150" ,
"рд▓реБрдХрдЕрдк" : "рд╡реАрдПрдо"
} ,
{ рд╡реАрдПрдо рдЯреЗрдмрд▓ рдкрд░ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди
"рд╕реЗ" : "192.168.0.151" ,
"рд▓реБрдХрдЕрдк" : "рд╡реАрдПрдо"
}
]
рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдирд┐рдпрдо рдХреБрдЫ рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдЕрдзрд┐рдХ рдЖрд╡реЗрджрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВрдиреЗ рдЖрдИрдкреА рдирд┐рдпрдо рдХрдорд╛рдВрдб рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╣рд░ рдЪреАрдЬ рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред
cmd - рдХрдорд╛рдВрдб, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рдПрдХ рдирд┐рдпрдо рдЬреЛрдбрд╝реЗрдВ = рдЬреЛрдбрд╝реЗрдВ;
рдкреНрд░рд╛рдердорд┐рдХрддрд╛ - рдкреНрд░рд╛рдердорд┐рдХрддрд╛, рдпрджрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрд▓реНрд▓реЗрдЦ рдХреЗ рдХреНрд░рдо рдореЗрдВ 1 рд╕реЗ рдЧрд┐рдирд╛ рдЬрд╛рддрд╛ рд╣реИ;
fwmark - рдкреИрдХреЗрдЯ рд▓реЗрдмрд▓;
рд╕реЗ - рд╕реНрд░реЛрдд;
рд╕реЗ - рдЧрдВрддрд╡реНрдп;
рд▓реБрдХрд┐рдВрдЧ - рдЯреЗрдмрд▓;
рдЕрдм рдорд╛рд░реНрдЧ:
рдорд╛рд░реНрдЧ = [
{{ рд╡реАрдкреАрдПрди рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдкреАрдЫреЗ рдиреЗрдЯрд╡рд░реНрдХ
"рдЯреВ" : "192.168.8.0" ,
"рджреЗрд╡" : "рдЯреНрдпреВрди"
} ,
{ # рд╡реАрдПрдо рдЯреЗрдмрд▓ рдПрдХ рдкреНрд░рджрд╛рддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ
"рдЯреВ" : "рдбрд┐рдлрд╝реЙрд▓реНрдЯ" ,
"рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ" : "5.6.7.8" ,
"рджреЗрд╡" : "ppp0" ,
"рдЯреЗрдмрд▓" : "рд╡реАрдПрдо"
}
]
рд╕реЗ - рдЧрдВрддрд╡реНрдп;
рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ - рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╡реЗрд╢ рджреНрд╡рд╛рд░;
рджреЗрд╡ - рдХрд┐рд╕ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ;
рдЯреЗрдмрд▓ - рдХрд┐рд╕ рдЯреЗрдмрд▓ рдХреЗ рд▓рд┐рдПред
рдЕрдВрдд рдореЗрдВ, рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд╛ рдЕрдВрддрд┐рдо рднрд╛рдЧ
ext_sure_ip = "8.8.8.8"
customcommands = ""
"" "
cmdfile = "/root/msr_ip.run"
ext_sure_ip - рдмрд╛рд╣рд░реА рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд▓рд┐рдП, рдЬреЛ рд╕реНрд╡рд╛рд╕реНрдереНрдп рдХреА рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдкрд┐рдВрдЧ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд▓рд╣рд╛рд▓ рдпрд╣ рдХреБрдЫ рднреА рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ;
customcommands - рд╕рднреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдмрд╛рдж рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдХреА рдЖрдЬреНрдЮрд╛;
cmdfile - рд╡рд╣ рдлрд╝рд╛рдЗрд▓ рдЬрд┐рд╕рдореЗрдВ рдкрд░рд┐рдгрд╛рдореА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреА рдЬрд╛рдПрдЧреАред
рд▓рд┐рдкрд┐ рд╢рд░реАрд░
рдЕрдм рдХреЗрд╡рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реА рд╣реИ рдФрд░ рдЕрдзрд┐рдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдирд╣реАрдВ рд╣реЛрдВрдЧреА, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЦрдВрдб рдХреА рдкреВрд░реНрдг рд░реЗрдЦрд╛ рд╣рд░реНрд╖рд┐рдд рд╣реИ рдФрд░ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддреА рд╣реИ:
# == рдЗрд╕ рдкрдВрдХреНрддрд┐ рдХреЗ рдиреАрдЪреЗ рдХреЛрдИ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдирд╣реАрдВ рд╣реИ ========================
рдЖрдпрд╛рдд os
рдЖрдпрд╛рдд syslog
рдЖрдпрд╛рдд рдЙрдкрдкреНрд░рдХрд╛рд░
Syslog ред syslog ( "рдкреНрд░рд╛рд░рдВрдн" )
рдлрд╝реАрд▓реНрдбреНрд╕ = ( "рджреЗрд╡" , "рдЖрдИрдкреА" , "рдЬреАрд╡реА" , "рдЯреЗрдмрд▓" , "рдорд╛рд░реНрдХ" , "рд╡рд░реНрдХреНрд╕" , "рд╕реНрдЯреЗрдЯ" , "рд░реЛрд▓" , "рдЯрд╛рдЗрдк" , "рд╡реЗрдЯ" )
fout = open ( cmdfile, 'w' )
рдкреНрд░рд╛рдердорд┐рдХрддрд╛ = рез
# == рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдирд┐рдпрдо рдЬреЛрдбрд╝реЗрдВ
рдирд┐рдпрдо = рдирд┐рдпрдо + [
{ "рдкреНрд░рд╛рдердорд┐рдХрддрд╛" : 100 , "рд╕реЗ" : "рд╕рднреА" , "рд▓реБрдХрдЕрдк" : "рд╕реНрдерд╛рдиреАрдп" } ,
{ "рдкреНрд░рд╛рдердорд┐рдХрддрд╛" : 32766 , "рд╕реЗ" : "рд╕рднреА" , "рд▓реБрдХрдЕрдк" : "рдореБрдЦреНрдп" } ,
{ "рдкреНрд░рд╛рдердорд┐рдХрддрд╛" : 32767 , "рд╕реЗ" : "рд╕рднреА" , "рд▓реБрдХрдЕрдк" : "рдбрд┐рдлрд╝реЙрд▓реНрдЯ" }
]
рдбреАрдк рдЗрд╕реБрдк ( рджреЗрд╡ ) :
x = рдЙрдкрдкреНрд░рдХрд╛рд░ ред call ( ( "ifconfig" , dev ] , stdin = none, stdout = open ( '/ dev / null' , 'w' ) , stderr = open ( '/ dev / null' , 'w' ) , shell = False )
рдпрджрд┐ ( x == 0 ) :
рдЖрд░ = "рдЕрдк"
рдФрд░ :
r = "рдбрд╛рдЙрди"
рд╡рд╛рдкрд╕реА рдЖрд░
рдбреАрдИрдПрдлрд╝ рдХрд╛рд░реНрдп ( рджреЗрд╡ ) :
# рд╡реИрд╢реНрд╡рд┐рдХ ext_sure_ip
x = рдЙрдкрдкреНрд░рдХрд╛рд░ ред рдХреЙрд▓ ( [ "рдкрд┐рдВрдЧ" , "-I" + рджреЗрд╡, "-c 3" , "-w 5" , ext_sure_ip ] , stdin = рдХреЛрдИ рдирд╣реАрдВ , stdout = рдЦреБрд▓рд╛ ( '/ dev / null' , 'w ) , stderr = рдЦреБрд▓рд╛ ( '/ рджреЗрд╡ / рдирд▓' , 'w' ) , рдЦреЛрд▓ = рдЧрд▓рдд )
рдпрджрд┐ ( x == 0 ) :
r = рд╕рддреНрдп
рдФрд░ :
рдЖрд░ = рдЧрд▓рдд
рд╡рд╛рдкрд╕реА рдЖрд░
рдбреАрдлрд╝ рдПрдбрд┐рдорд┐рд╕рд┐рдВрдЧрдлреАрд▓реНрдбреНрд╕ ( iface ) :
рдЦреЗрддреЛрдВ рдореЗрдВ рдмрдбрд╝реА рдХреЗ рд▓рд┐рдП:
рдпрджрд┐ рдирд╣реАрдВ ( iface рдореЗрдВ рдмрдбрд╝реА ) :
iface [ fld ] = рдХреЛрдИ рдирд╣реАрдВ
рдУрдкрди рдУрдкрдирд╕реНрдкреЛрд░реНрдЯреНрд╕ ( рдкреЛрд░реНрдЯ ) :
r = "n $ IPTABLES -t рдлрд╝рд┐рд▓реНрдЯрд░-рдПрдХ INPUT"
рдЕрдЧрд░ рдкреЛрд░реНрдЯ [ "sHost" ] :
r = r + "-s {0}" ред рдкреНрд░рд╛рд░реВрдк ( рдмрдВрджрд░рдЧрд╛рд╣ [ "sHost" ] )
рдЕрдЧрд░ рдкреЛрд░реНрдЯ [ "рдкреНрд░реЛрдЯреЛ" ] :
r = r + "-p {0}" ред рдкреНрд░рд╛рд░реВрдк ( рдкреЛрд░реНрдЯ [ "рдкреНрд░реЛрдЯреЛ" ] )
рдЕрдЧрд░ рдмрдВрджрд░рдЧрд╛рд╣ [ "tPort" ] :
r = r + "--dport {0}" ред рдкреНрд░рд╛рд░реВрдк ( рдкреЛрд░реНрдЯ [ "tort" ] )
r = r + "-j ACCEPT"
рд╡рд╛рдкрд╕реА рдЖрд░
рдлреЙрд░рд╡рд░реНрдбрдкреЛрд░реНрдЯрдкреЛрд░реНрдЯ ( рдкреЛрд░реНрдЯ ) рдХреЛ рд╣рд░рд╛рдпрд╛:
рдпрджрд┐ рдкреЛрд░реНрдЯ [ "dHost" ] :
# $ IPTABLES -рдПрдХ рдлреЙрд░рд╡рд░реНрдб -p tcp -dport 3389 -j ACCEPT рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ
r = "n $ IPTABLES -A FORWARD"
рдЕрдЧрд░ рдкреЛрд░реНрдЯ [ "рдкреНрд░реЛрдЯреЛ" ] :
r = r + "-p {0}" ред рдкреНрд░рд╛рд░реВрдк ( рдкреЛрд░реНрдЯ [ "рдкреНрд░реЛрдЯреЛ" ] )
рдЕрдЧрд░ рдкреЛрд░реНрдЯ [ "nPort" ] :
r = r + "--dport {0}" ред рдкреНрд░рд╛рд░реВрдк ( рдкреЛрд░реНрдЯ [ "nPort" ] )
r = r + "-j ACCEPT"
# рдЖрдЧреЗ
r = r + "n $ IPTABLES -t nat-PREROUTING"
рдЕрдЧрд░ рдкреЛрд░реНрдЯ [ "sHost" ] :
r = r + "-s {0}" ред рдкреНрд░рд╛рд░реВрдк ( рдмрдВрджрд░рдЧрд╛рд╣ [ "sHost" ] )
рдЕрдЧрд░ рдкреЛрд░реНрдЯ [ "рдкреНрд░реЛрдЯреЛ" ] :
r = r + "-p {0}" ред рдкреНрд░рд╛рд░реВрдк ( рдкреЛрд░реНрдЯ [ "рдкреНрд░реЛрдЯреЛ" ] )
рдЕрдЧрд░ рдмрдВрджрд░рдЧрд╛рд╣ [ "tPort" ] :
r = r + "--dport {0}" ред рдкреНрд░рд╛рд░реВрдк ( рдкреЛрд░реНрдЯ [ "tort" ] )
r = r + "-j DNAT -to-рдЧрдВрддрд╡реНрдп {0}" ред рдкреНрд░рд╛рд░реВрдк ( рдмрдВрджрд░рдЧрд╛рд╣ [ "dHost" ] )
рдЕрдЧрд░ рдкреЛрд░реНрдЯ [ "nPort" ] :
r = r + ": {0}" ред рдкреНрд░рд╛рд░реВрдк ( рдкреЛрд░реНрдЯ [ "nPort" ] )
рд╡рд╛рдкрд╕реА рдЖрд░
рдФрд░ :
рд╡рд╛рдкрд╕реА ""
рдирд┐рдпрдо рдирд┐рдпрдо ( рдирд┐рдпрдо ) рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ:
рд╡реИрд╢реНрд╡рд┐рдХ рдкреНрд░рд╛рдердорд┐рдХрддрд╛
рдкреНрд░рд╛рдердорд┐рдХрддрд╛ = рдкреНрд░рд╛рдердорд┐рдХрддрд╛ + рез
r = "рдирд┐рдк рдирд┐рдпрдо"
рдпрджрд┐ ( рдирд┐рдпрдо рдореЗрдВ "cmd" ) рдФрд░ ( рдирд┐рдпрдо [ "cmd" ] ) :
r = r + "{0}" ред рдирд┐рдпрдо [ "cmd" ]
рдФрд░ :
r = r + "рдЬреЛрдбрд╝реЗрдВ"
рдпрджрд┐ ( рдирд┐рдпрдо рдореЗрдВ "рдкреНрд░рд╛рдердорд┐рдХрддрд╛" ) рдФрд░ ( рдирд┐рдпрдо [ "рдкреНрд░рд╛рдердорд┐рдХрддрд╛" ] ) :
r = r + "рдкреНрд░рд╛рдердорд┐рдХрддрд╛ {0}" ред рдкреНрд░рд╛рд░реВрдк ( рдирд┐рдпрдо [ "рдкреНрд░рд╛рдердорд┐рдХрддрд╛" ] )
рдФрд░ :
r = r + "рдкреНрд░рд╛рдердорд┐рдХрддрд╛ {0}" ред рдкреНрд░рд╛рд░реВрдк ( рдкреНрд░рд╛рдердорд┐рдХрддрд╛ )
рдЕрдЧрд░ ( рдирд┐рдпрдо рдореЗрдВ "fwmark" ) рдФрд░ ( рдирд┐рдпрдо [ "fwmark" ] ) :
r = r + "fwmark {0} / {0}" ред рдкреНрд░рд╛рд░реВрдк ( рдирд┐рдпрдо [ "fwmark" ] )
рдЕрдЧрд░ ( " рдирд┐рдпрдо рд╕реЗ" ) рдФрд░ ( рдирд┐рдпрдо [ "рд╕реЗ" ] ) :
r = r + "{0}" рд╕реЗ ред рдкреНрд░рд╛рд░реВрдк ( рдирд┐рдпрдо [ "рд╕реЗ" ] )
рдпрджрд┐ ( " рдирд┐рдпрдо рд╕реЗ" ) рдФрд░ ( рдирд┐рдпрдо [ "рд╕реЗ" ] ) :
r = r + "рд╕реЗ {0}" ред рдкреНрд░рд╛рд░реВрдк ( рдирд┐рдпрдо [ "рд╕реЗ" ] )
рдпрджрд┐ ( рдирд┐рдпрдо рдореЗрдВ "рд▓реБрдХрдЕрдк" ) рдФрд░ ( рдирд┐рдпрдо [ "рд▓реБрдХрдЕрдк" ] ) :
r = r + "рд▓реБрдХрдЕрдк {0}" ред рдкреНрд░рд╛рд░реВрдк ( рдирд┐рдпрдо [ "рд▓реБрдХрдЕрдк" ] )
рд╡рд╛рдкрд╕реА рдЖрд░
рдбреАрдИрдПрдо рд░реЗрдХрдореЗрдб ( рдорд╛рд░реНрдЧ ) :
r = "рдирд┐рдк рдорд╛рд░реНрдЧ рдЬреЛрдбрд╝"
рдпрджрд┐ ( " рдорд╛рд░реНрдЧ рдореЗрдВ " ) рдФрд░ ( рдорд╛рд░реНрдЧ [ "рд╕реЗ" ] ) :
r = r + "{0}" ред рдкреНрд░рд╛рд░реВрдк ( рдорд╛рд░реНрдЧ [ "рд╕реЗ" ] )
# рдпрджрд┐ (рдорд╛рд░реНрдЧ рдореЗрдВ "рдиреЗрдЯрдорд╛рд╕реНрдХ") рдФрд░ (рдорд╛рд░реНрдЧ ["рдиреЗрдЯрдорд╛рд╕реНрдХ"]):
# r = r + "/ {0}"ред рдкреНрд░рд╛рд░реВрдк (рдорд╛рд░реНрдЧ ["netmask"])
рдЕрдЧрд░ ( " рдорд╛рд░реНрдЧ рдореЗрдВ " ) рдФрд░ ( рдорд╛рд░реНрдЧ [ "рд╕реЗ" ] ) :
r = r + "{0}" рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ ред рдкреНрд░рд╛рд░реВрдк ( рдорд╛рд░реНрдЧ [ "рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ" ] )
рдпрджрд┐ ( рдорд╛рд░реНрдЧ рдореЗрдВ "рджреЗрд╡" ) рдФрд░ ( рдорд╛рд░реНрдЧ [ "рджреЗрд╡" ] ) :
r = r + "рджреЗрд╡ {0}" ред рдкреНрд░рд╛рд░реВрдк ( рдорд╛рд░реНрдЧ [ "рджреЗрд╡" ] )
рдпрджрд┐ ( рдорд╛рд░реНрдЧ рдореЗрдВ "рддрд╛рд▓рд┐рдХрд╛" ) рдФрд░ ( рдорд╛рд░реНрдЧ [ "рддрд╛рд▓рд┐рдХрд╛" ] ) :
r = r + "рддрд╛рд▓рд┐рдХрд╛ {0}" ред рдкреНрд░рд╛рд░реВрдк ( рдорд╛рд░реНрдЧ [ "рддрд╛рд▓рд┐рдХрд╛" ] )
рд╡рд╛рдкрд╕реА рдЖрд░
рднрд╛рдЧ = "" "#! / рдмрд┐рди / рд╢
# == рд╕реЗрдЯ рдЪрд░ ================================================
IPTABLES = / sbin / iptables
"" "
foutред рд▓рд┐рдЦрдирд╛ ( рднрд╛рдЧ )
foutред рд▓рд┐рдЦрдирд╛ ( "рдПрди # == рдЗрдВрдЯрд░рдлреЗрд╕:" )
iface рдореЗрдВ iface рдХреЗ рд▓рд┐рдП :
addmissingfields ( iface )
iface [ "рд╕реНрдЯреЗрдЯ" ] = isup ( iface [ "рджреЗрд╡" ] )
рдЕрдЧрд░ ( iface [ "рднреВрдорд┐рдХрд╛" ] == "рдмрд╛рд╣рд░реА" ) :
iface [ "рд╡рд░реНрдХреНрд╕" ] = рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ ( iface [ "dev" ] )
descr = "{3} {0} {1} рд╣реИ рдФрд░ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ = {2}" ред рдкреНрд░рд╛рд░реВрдк ( iface [ "dev" ] , iface [ "state" ] , iface [ "works" ] , iface [ "рднреВрдорд┐рдХрд╛" ]]
foutред рд▓рд┐рдЦрдирд╛ ( "n #" + descr )
Syslog ред Syslog ( descr )
рднрд╛рдЧ = "" "
# == рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рджреМрд░рд╛рди рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдирд╛ ==========================================
рдЗрдХреЛ реж> / рдкреНрд░реЛрдХ / рд╕реАрд╕ / рдиреЗрдЯ / рдЖрдИрдкреАрд╡реА рек / рдЖрдИрдкреА_рдлреЛрд╡рд░реНрдб
# == рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рд╕рднреА рдирд┐рдпрдореЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВ ==========================================
рдЖрдИрдкреА тАЛтАЛрд╢рд╛рд╕рди рдлреНрд▓рд╢
# == рд╕рднреА рдореМрдЬреВрджрд╛ рдиреАрддрд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛рдПрдВ ==================================
$ IPTABLES -F
$ IPTABLES -t nat -F
$ IPTABLES -t mangle -F
$ IPTABLES -X
$ IPTABLES -Z
# == рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдиреАрддрд┐рдпрд╛рдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ ======================================
$ IPTABLES -P INPUT DROP
$ IPTABLES -P OUTPUT ACCEPT
$ IPTABLES -P FORWARD DROP
# == DROP рдЦрд░рд╛рдм рдкреИрдХреЗрдЯ =============================================
$ IPTABLES -t рдлрд╝рд┐рд▓реНрдЯрд░ -рдПрдХ INPUT -m рд░рд╛рдЬреНрдп --state INVALID -j DROP
$ IPTABLES -t рдлрд╝рд┐рд▓реНрдЯрд░-рдПрдХ OUTPUT -m рд░рд╛рдЬреНрдп --state INVALID -j DROP
$ IPTABLES -t рдлрд╝рд┐рд▓реНрдЯрд░-рдПрдХ OUTPUT -m рд░рд╛рдЬреНрдп --state INVALID -j DROP
# == рдХреЗрд╡рд▓ SYN рдкреИрдХреЗрдЯ рдирдП рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ ===============
$ IPTABLES -t рдлрд╝рд┐рд▓реНрдЯрд░-рдПрдХ INPUT -p tcp! - рд╕рд┐рди-рдПрдо рд░рд╛рдЬреНрдп - рд╕реНрдЯреЗрдЯ рдиреНрдпреВ -j DROP
$ IPTABLES -t рдлрд╝рд┐рд▓реНрдЯрд░-рдПрдХ OUTPUT -p tcp! - рд╕рд┐рди-рдПрдо рд░рд╛рдЬреНрдп - рд╕реНрдЯреЗрдЯ рдиреНрдпреВ -j DROP
$ IPTABLES -t рдлрд╝рд┐рд▓реНрдЯрд░-рдлреЙрд░рд╡рд░реНрдб -p tcp! - рд╕рд┐рди-рдПрдо рд░рд╛рдЬреНрдп - рд╕реНрдЯреЗрдЯ рдиреНрдпреВ -j DROP
# == рд╕реБрд░рдХреНрд╖рд┐рдд рд▓реЛ iface ============================================
$ IPTABLES -t рдлрд╝рд┐рд▓реНрдЯрд░-рдПрдХ FORWARD -i рд▓реЛ -j DROP
$ IPTABLES -t рдлрд╝рд┐рд▓реНрдЯрд░-рдлрд╝реЙрд░рд╡рд░реНрдб-рд▓реЛ рд▓реЛ -j DROP
$ IPTABLES -t рдлрд╝рд┐рд▓реНрдЯрд░-рдПрдХ OUTPUT -o lo -s 127.0.0.1/255.0.0.0 -j ACCEPT
$ IPTABLES -t рдлрд╝рд┐рд▓реНрдЯрд░-рдПрдХ INPUT -i рд▓реЛ -d 127.0.0.1/255.0.0.0 -j рдПрд╕реАрдЯреАрдкреАрдЯреА
$ IPTABLES -t рдлрд╝рд┐рд▓реНрдЯрд░-рдПрдХ OUTPUT -o lo -j DROP
$ IPTABLES -t рдлрд╝рд┐рд▓реНрдЯрд░-INPUT -i lo -j DROP
"" "
foutред рд▓рд┐рдЦрдирд╛ ( рднрд╛рдЧ )
foutред рд▓рд┐рдЦрдирд╛ ( "")
# == рдЦреБрд▓реЗ рдФрд░ рдЖрдЧреЗ рдХреЗ рдмрдВрджрд░рдЧрд╛рд╣ =================================== тАЭтАЭ )
рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдореЗрдВ рдмрдВрджрд░рдЧрд╛рд╣ рдХреЗ рд▓рд┐рдП:
foutред рд▓рд┐рдЦрдирд╛ ( рдУрдкреЗрдирдкреЛрд░реНрдЯреЗрдореНрдХрдб ( рдкреЛрд░реНрдЯ ) )
foutред рд▓рд┐рдЦрдирд╛ ( рдлрд╝реЙрд░рдкреЛрд░реНрдЯрдкреЛрд░реНрдЯрдо ( рдкреЛрд░реНрдЯ ) )
foutред рд▓рд┐рдЦрдирд╛ ( "")
# == рдЕрдЧрд░ рд╕рднреА рдХреЗ рдмреАрдЪ: рд╕рднреА рд▓реЛрдХреЛ-рд▓реЛрдХреЗрд╢рди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ, рдирдП рд▓реЛрдХреЛ 2 рдХреЛ рдПрдХреНрд╕рдЯреНрд░рд╛ рдЕрдиреБрдорддрд┐ рджреЗрдВ, рдирдП рдХреЛ рдбреНрд░рд╛рдк рдХрд░реЗрдВ, рдкреВрд░реНрд╡ рд╕реЗ рдЫреЛрдбрд╝реЗрдВ, рдПрдХреНрд╕рдЯреНрд░реАрдо рдХреЛ ""
iface рдореЗрдВ iface рдХреЗ рд▓рд┐рдП :
foutред {"0}" рдХреЗ рд▓рд┐рдП ( "n # ====" рд▓рд┐рдЦреЗрдВ ред рдкреНрд░рд╛рд░реВрдк ( iface [ "dev" ] )
рдЕрдЧрд░рдмрддреНрддреА рдореЗрдВ рд╕реНрдерд╛рди:
рдЕрдЧрд░ ( iface ! = inace ) :
рдЕрдЧрд░ ( iface [ "рднреВрдорд┐рдХрд╛" ] == "рд╕реНрдерд╛рдиреАрдп" ) рдФрд░ ( inace [ "рднреВрдорд┐рдХрд╛" ] == "рд╕реНрдерд╛рдиреАрдп" ) :
foutред рд▓рд┐рдЦрдирд╛ ( "n $ IPTABLES -t рдлрд╝рд┐рд▓реНрдЯрд░-рдПрдХ рдлрд╝реЙрд░рд╡рд░реНрдб-рдЖрдИ {0} -o {1} -j ACCEPT" ред рдкреНрд░рд╛рд░реВрдк ( iface [ "dev" ] , oface [ "dev" ] ) )
рдЕрдЧрд░ ( iface [ "рднреВрдорд┐рдХрд╛" ] == "рд╕реНрдерд╛рдиреАрдп" ) рдФрд░ ( inace [ "рднреВрдорд┐рдХрд╛" ] == "рдмрд╛рд╣рд░реА" ) :
foutред рд▓рд┐рдЦрдирд╛ ( "n $ IPTABLES -t рдлрд╝рд┐рд▓реНрдЯрд░-рдПрдХ рдлрд╝реЙрд░рд╡рд░реНрдб -i {0} -o {1} -m рд░рд╛рдЬреНрдп --state NEW -j ACCEPT" ред рдкреНрд░рд╛рд░реВрдк ( iface [ "dev" ] , oface [ "dev" ] )) )
рдЕрдЧрд░ iface [ "рднреВрдорд┐рдХрд╛" ] == "рд╕реНрдерд╛рдиреАрдп" :
рдХрд╛рд░реНрд░рд╡рд╛рдИ = "ACCEPT"
рдФрд░ :
рдХрд╛рд░реНрд░рд╡рд╛рдИ = "DROP"
foutред рд▓рд┐рдЦрдирд╛ ( "n $ IPTABLES -t рдлрд╝рд┐рд▓реНрдЯрд░-рдПрдХ INPUT -i {0} -m рд░рд╛рдЬреНрдп --state NEW -j {1}") ред рдкреНрд░рд╛рд░реВрдк ( iface [ "dev" ] , рдХреНрд░рд┐рдпрд╛ )ред
foutред рд▓рд┐рдЦрдирд╛ ( "n $ IPTABLES -t nat-POSTROUTING -o {0} -j MASERERADE" ред рдкреНрд░рд╛рд░реВрдк ( iface [ "dev" ] ) )
foutред рд▓рд┐рдЦрдирд╛ ( "")
# == рдЖрдЧреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ, рджреВрд╕рд░реЛрдВ рдХреЛ рдиреАрддрд┐ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
$ IPTABLES -t рдлрд╝рд┐рд▓реНрдЯрд░-рдПрдХ FORWARD -m рд░рд╛рдЬреНрдп --рд╕реНрдЯреЗрдЯ рдЗрд╕реНрдЯреИрдмреНрд▓рд┐рд╢реНрдб, рд╕рдВрдмрдВрдзрд┐рдд-рд░рд╛рдЬреНрдп ACPT
$ IPTABLES -t рдлрд╝рд┐рд▓реНрдЯрд░-рдПрдХ INPUT -m рд░рд╛рдЬреНрдп --рд╕реНрдЯреЗрдЯ рд╕реНрдерд╛рдкрд┐рдд, рд╕рдВрдмрдВрдзрд┐рдд-рд╕реНрд╡реАрдХреГрдд ACPT
"" " )
foutред рд▓рд┐рдЦрдирд╛ ( "")
# == рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рддрд╛рд▓рд┐рдХрд╛рдУрдВ, рдЕрдВрдХреЛрдВ рдФрд░ рдирд┐рдпрдореЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ============================================ ============== "" " )
iface рдореЗрдВ iface рдХреЗ рд▓рд┐рдП :
рдЕрдЧрд░ iface [ "рдЯреЗрдмрд▓" ] рдФрд░ iface [ "gw" ] рдФрд░ iface [ "рдЯреЗрдмрд▓" ] :
foutред рд▓рд┐рдЦреЗрдВ ( "рдПрдирдЖрдИрдкреА рдорд╛рд░реНрдЧ {0} рджреЗрд╡ {1} рддрд╛рд▓рд┐рдХрд╛ {2}" рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЬреЛрдбрд╝реЗрдВ ред рдкреНрд░рд╛рд░реВрдк ( iface [ "gw" ] , iface [ "dev" ] , iface [ "рддрд╛рд▓рд┐рдХрд╛" ] )
рдЕрдЧрд░ iface [ "рдирд┐рд╢рд╛рди" ] :
foutред рд▓рд┐рдЦрдирд╛
"fwmark" : iface [ "рдирд┐рд╢рд╛рди" ] ,
"рд▓реБрдХрдЕрдк" : iface [ "рдЯреЗрдмрд▓" ]
} )
foutред рд▓рд┐рдЦрдирд╛ ( "")
# == рдЙрддреНрддрд░ incomming iface рд╕реЗ рднреЗрдЬреЗ рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдП ===================================== тАЭтАЭ )
# if iface рдореЗрдВ рд╕реНрдерд╛рди:
# рдЕрдЧрд░ iface ["рдирд┐рд╢рд╛рди"]:
# fout.write ("n $ IPTABLES -t mangle -A INPUT -i {0} -j CONNMARK --рд╕реЗрдЯ-рдорд╛рд░реНрдХ {1}"ред рдкреНрд░рд╛рд░реВрдк (iface ["dev"], iface [mark]])))ред
# fout.write ("n $ IPTABLES -t mangle -A OUTPUT -j CONNMARK --restore-markn")
iface рдореЗрдВ iface рдХреЗ рд▓рд┐рдП :
рдЕрдЧрд░ iface [ "рдЯреЗрдмрд▓" ] рдФрд░ iface [ "gw" ] :
foutред рд▓рд┐рдЦрдирд╛
"рд╕реЗ" : iface [ "gw" ] ,
"рд▓реБрдХрдЕрдк" : iface [ "рдЯреЗрдмрд▓" ]
} )
foutред рд▓рд┐рдЦрдирд╛ ( "")
# == рдирд┐рдпрдореЛрдВ рдХреА рд╕реВрдЪреА рд╕реЗ рдирд┐рдпрдо ==========================================
рдирд┐рдпрдореЛрдВ рдореЗрдВ рдирд┐рдпрдо рдХреЗ рд▓рд┐рдП:
foutред рд▓рд┐рдЦрдирд╛ ( рдирд┐рдпрдо ) ( рдирд┐рдпрдо )
foutред рд▓рд┐рдЦрдирд╛ ( "")
# == рдорд╛рд░реНрдЧреЛрдВ рдХреА рд╕реВрдЪреА рд╕реЗ рдорд╛рд░реНрдЧ ===================================== "" )
рдорд╛рд░реНрдЧреЛрдВ рдореЗрдВ рдорд╛рд░реНрдЧ рдХреЗ рд▓рд┐рдП:
foutред рд▓рд┐рдЦрдирд╛ ( рд░реВрдЯрдореЗрдо ( рдорд╛рд░реНрдЧ ) )
foutред рд▓рд┐рдЦрдирд╛ ( "")
# == рдмрд╛рд╣рд░реА рдЖрдИрд▓рд┐рд╢рд┐рдВрдЧ (рд╕рднреА рдпреВрдкреА рдХреЗ рдмреАрдЪ) ======================================= "" )
рднрд╛рдЧ = "рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рд░реНрдЧ рд╡реИрд╢реНрд╡рд┐рдХ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ"
iface рдореЗрдВ iface рдХреЗ рд▓рд┐рдП :
рдЕрдЧрд░ iface [ "рджреЗрд╡" ] рдФрд░ iface [ "gw" ] рдФрд░ iface [ "рд╡рдЬрди" ] рдФрд░ ( iface [ "рднреВрдорд┐рдХрд╛" ] == "рдмрд╛рд╣рд░реА" ) рдФрд░ ( iface [ "рд░рд╛рдЬреНрдп" ] == "рдКрдкрд░" ) :
part = part + "nexthop {0} dev {1} рд╡рдЬрди {2}" рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ ред рдкреНрд░рд╛рд░реВрдк ( iface [ "gw" ] , iface [ "dev" ] , iface [ "рд╡рдЬрди" ] )
foutред рд▓рд┐рдЦрдирд╛ ( рднрд╛рдЧ )
foutред рд▓рд┐рдЦрдирд╛ ( "")
# == рдЕрдЧреНрд░реЗрд╖рдг =============================================== рдЕрдиреБрдорддрд┐ рджреЗрдВ ===========================
рдЧреВрдВрдЬ 1> / proc / sys / net / ipv4 / ip_forward
"" " )
foutред рд▓рд┐рдЦрдирд╛ ( "")
# == рдХреБрдЫ рд╣рд╕реНрддрдирд┐рд░реНрдорд┐рдд рдХрд╕реНрдЯрдо рдХрдорд╛рдВрдб ================================================== ===================
{0}
"" " ред рдкреНрд░рд╛рд░реВрдк ( рдХрд╕реНрдЯрдордХрдорд╛рдВрдб ) )
foutред рдкрд╛рд╕ ( )
Syslog ред syslog ( "рд╕рдорд╛рдкреНрдд" )
Syslog ред syslog ( "рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╢реБрд░реВ рд╣реБрдИ" )
x = рдЙрдкрдкреНрд░рдХрд╛рд░ ред рдХреЙрд▓ ( [ "/ рдмрд┐рди / рд╢" , "{0}" ред рдкреНрд░рд╛рд░реВрдк ( cmdfile ) ] , stdin = рдХреЛрдИ рдирд╣реАрдВ , stdout = рдЦреБрд▓рд╛ ( '/ dev / null' , 'w' ) , stderr = рдЦреБрд▓рд╛ ( 'dev ' ) null ' , ' w ' ) , рд╢реЗрд▓ = рдЧрд▓рдд )
Syslog ред syslog ( "рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░рд┐рдгрд╛рдо {0}" рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реБрдИ ред рдкреНрд░рд╛рд░реВрдк ( x ) )
рд▓рд╛рдВрдЪ
рдПрдХ рд╡рд┐рдХрд▓реНрдк рдЬреЛ рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд╡рд╣ рд╣реИ рдХрд┐ рдЗрдВрдЯрд░рдлреЗрд╕ рдмрджрд▓рддреЗ рд╕рдордп рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдХреЙрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреА рдЬрд╛рддреА рд╣реИ:
рд░реВрдЯ @ рдЧреЗрдЯ: / рд░реВрдЯ # рдХреИрдЯ ред/msr_on_if_changed
#! / рдмрд┐рди / рд╢
/ usr / bin / python /root/msr_ip.py
рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ 0
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдВрдХ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рд╣реИрдВред рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдирд╛рдо рдмрд┐рдирд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рд▓рд┐рдВрдХ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
ln -s /root/msr_ip.py / etc / network / if-down / msr_ip
ln -s /root/msr_ip.py / etc / network / if-up / msr_ip
ln -s /root/msr_ip.py /etc/ppp/ip-up.d/msr_ip
ln -s /root/msr_ip.py /etc/ppp/ip-down.d/msr_ip
рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░
рд╕реНрдХреНрд░рд┐рдкреНрдЯ 3 рдорд╣реАрдиреЗ рд╕реЗ рдЪрд▓ рд░рд╣реА рд╣реИ рдФрд░ рдЕрднреА рддрдХ рдЗрд╕рдХреА рдЧрд▓рддреА рдХреЗ рдХрд╛рд░рдг рдХреЛрдИ рдЕрд╕рдлрд▓рддрд╛ рдирд╣реАрдВ рд╣реБрдИ рд╣реИ, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдРрд╕рд╛ рд╣реЛрдЧрд╛ред