рдЕрддрд┐рдерд┐ рд╣реЙрдЯрд╕реНрдкреЙрдЯ рдХрд╛ рдкреНрд░рд╢рд╛рд╕рди рдХрд░рдиреЗ рдореЗрдВ рдХрдард┐рдирд╛рдИ (рднрд╛рдЧ 1)

рдЗрд╕ рдЫреЛрдЯреЗ рд╕реЗ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЗрдВрдЯрд░рдиреЗрдЯ рдХреЗ рд╡рд┐рддрд░рдг рд╕реЗ рдмрдВрдзреЗ рд╣реБрдП рдмрдбрд╝реЗ рд╕рдмрдиреЗрдЯ рдХреЗ рдкреНрд░рд╢рд╛рд╕рди рдХреЗ рд╕рд┐рд░рджрд░реНрдж рдХреЛ рдХреИрд╕реЗ рджреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПред
рдореВрд▓ рдЙрдкрдХрд░рдг:

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

рдмрдбрд╝реЗ dhcp рд╕рд░реНрд╡рд░ рдХреА рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛рдПрдВ


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

рдореМрдЬреВрджрд╛ рдкреНрд░рдмрдВрдзрди рдХреЗ рддрд░реАрдХреЗ


ISC-DHCPD рд╕рд░реНрд╡рд░ рдореЗрдВ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рд░рд╛рдЬреНрдп рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рддрд░реАрдХреЗ рдирд╣реАрдВ рд╣реИрдВред рдПрдХрдорд╛рддреНрд░ рдЕрдкрд╡рд╛рдж omshell рдЙрдкрд╛рдВрдЧ рд╣реИ рдЬреЛ рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдЖрдВрддрд░рд┐рдХ рдбреЗрдЯрд╛рдмреЗрд╕ isc-dhcpd рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рд╕рд░реНрд╡рд░ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд┐рдП рдмрд┐рдирд╛ рдЖрдВрддрд░рд┐рдХ рдлрд╝реАрд▓реНрдб рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред EMNIP рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ dhcpd.conf рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рд╣рддреА рд╣реИред рдкрд░рд┐рд╡рд░реНрддрди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ dhcpd.leases рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЙрдкрд╕реНрдерд┐рддрд┐, рдкрддреЗ рдЬрд╛рд░реА рдХрд░рдиреЗ рдФрд░ рдЙрдирдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдореЗрдВ рд╕реЗ рдХрдИ рдиреЗ рдкрд╣рд▓реЗ рд╣реА рд╕рд┐рд╕реНрдЯрдо рд▓реЙрдЧ рдЖрдЗрдПрд╕рд╕реА- dhcpd рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рдФрд░ рд╢рд╛рдпрдж рдкрд░рд┐рдгрд╛рдо рднреА рдорд┐рд▓рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк 100% рд╕рдВрддреБрд╖реНрдЯ рдереЗред рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдЕрдиреБрднрд╡ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, рдЖрдк рдореЗрдВ рд╕реЗ рдХрдИ рдиреЗ рдореИрдиреБрдЕрд▓ рдореЗрдВ dhcpd рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдпрд╛рдж рдХрд┐рдпрд╛ред

Dhcpd рдИрд╡реЗрдВрдЯ рдХреНрдпрд╛ рд╣реИрдВ?


рдХрд┐рд╕реА рдкрддреЗ рдХреЛ рдЬрд╛рд░реА рдХрд░рдиреЗ, рдЬрд╛рд░реА рдХрд░рдиреЗ рдФрд░ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рдСрдкрд░реЗрд╢рди (рдШрдЯрдирд╛) рдПрдХ рдЖрдВрддрд░рд┐рдХ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдкреБрди: рдЪрд▓рд╛рддрд╛ рд╣реИред рдиреАрдЪреЗ рдЖрджрдореА dhcpd.conf рд╕реЗ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЕрдВрд╢ рд╣реИ

There are three kinds of events that can happen regarding a lease, and
it is possible to declare statements that occur when any of these
events happen. These events are the commit event, when the server has
made a commitment of a certain lease to a client, the release event,
when the client has released the server from its commitment, and the
expiry event, when the commitment expires.

To declare a set of statements to execute when an event happens, you
must use the on statement, followed by the name of the event, followed
by a series of statements to execute when the event happens, enclosed
in braces. Events are used to implement DNS updates, so you should
not define your own event handlers if you are using the built-in DNS
update mechanism.

The built-in version of the DNS update mechanism is in a text string
towards the top of server/dhcpd.c. If you want to use events for
things other than DNS updates, and you also want DNS updates, you will
have to start out by copying this code into your dhcpd.conf file and
modifying it.

рдЗрди рд░рд╣рд╕реНрдпрдордп рдкрддреНрд░реЛрдВ рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ?
рд▓реЗрдХрд┐рди рдЙрдирдХрд╛ рдорддрд▓рдм рдирд┐рдореНрди рд╣реИред рдЕрдкрдиреЗ рдЖрдВрддрд░рд┐рдХ рдИрд╡реЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП isc-dhcpd, BIND рдореЗрдВ DNS рд░рд┐рдХреЙрд░реНрдбреНрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдЖрдк рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдкреБрди: рдЕрд╕рд╛рдЗрди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЕрдкрдиреЗ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ DNS рд░рд┐рдХреЙрд░реНрдбреНрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЬреЛрдбрд╝рдирд╛ рди рднреВрд▓реЗрдВред

рдЙрд▓рдЭрди рдореЗрдВ? Unravels!

Dhcpd.conf рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░ рдХрд┐рд╕реА рднреА рдкрддрд╛ рдкреВрд▓ рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рдмрд╛рд╣рд░реА рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХрд┐рд╕реА рднреА рдЬрдЧрд╣ рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
on commit {
}
on release {
}
on expiry {
}

рд╣реИрдВрдбрд▓рд░ рдХреЛ рдПрдбреНрд░реЗрд╕ рдкреВрд▓ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдкреВрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдПрдбреНрд░реЗрд╕ рдкреВрд▓ рдореЗрдВ рдкрд╣рд▓реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЧрдП рд╣реИрдВрдбрд▓рд░ рд╡реИрд╢реНрд╡рд┐рдХ рдПрдХ рдХреЗ рд╕рд╛рде рдУрд╡рд░рд▓реИрдк рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдЖрдкрдХреЗ DNS рдЕрдкрдбреЗрдЯ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред

рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ


рдиреАрдЪреЗ рдЖрдк рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рд╡рд░реНрддрдорд╛рди рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдо рд╡рд┐рд╡рд░рдг рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдПрдВрдЧреЗ рдФрд░ dhcpd рдЖрдВрддрд░рд┐рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЖрдВрддрд░рд┐рдХ рдбреЗрдЯрд╛ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗ, рд╣рдо рдХреЗрд╡рд▓ рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдХрд╛рдо рдореЗрдВ рдЖ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣реЛрд╕реНрдЯ-рдирд╛рдо рдФрд░ ddns-hostname рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рд╕реНрд╡рддрдГ рдЙрддреНрдкрдиреНрди рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП рдпрджрд┐ рд╣реЛрд╕реНрдЯ рдирд╛рдо рдЦрд╛рд▓реА рд╣реИ ( рдиреЛрдЯ: UTF-8 рдореЗрдВ рд╣реЛрд╕реНрдЯ рдирд╛рдо рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдореЗрдВ рдЦрд╛рд▓реА рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ )
on commit {
set clientIP = binary-to-ascii(10, 8, ".", leased-address);
set clientMAC = binary-to-ascii(16, 8, ":", substring(hardware, 1, 6));
if option host-name = "" {
option host-name = concat( "wifi-" , binary-to-ascii( 10, 8, "", substring( reverse( 1, leased-address), 0, 1)));
ddns-hostname = concat( "wifi-" , binary-to-ascii( 10, 8, "", substring( reverse( 1, leased-address), 0, 1)));
}
set clientHostName = option host-name;
execute("/usr/local/etc/dhcp_helper/publish-ip-mac.pl", "commit", clientIP, clientMAC);
execute("/usr/local/etc/dhcp_helper/publish-ip-mac.pl", "hostname", clientIP, clientHostName);
}

on release {
set clientIP = binary-to-ascii(10, 8, ".", leased-address);
set clientMAC = binary-to-ascii(16, 8, ":", substring(hardware, 1, 6));
execute("/usr/local/etc/dhcp_helper/publish-ip-mac.pl", "release", clientIP, clientMAC);
}

on expiry {
set clientIP = binary-to-ascii(10, 8, ".", leased-address);
if(exists agent.remote-id) {
set clientMAC = binary-to-ascii(16, 8, ":", substring(option agent.remote-id, 2, 6));
execute("/usr/local/etc/dhcp_helper/publish-ip-mac.pl", "expiry", clientIP, clientMAC);
} else {
execute("/usr/local/etc/dhcp_helper/publish-ip-mac.pl", "expiry", clientIP);
}

рджрд░рдЕрд╕рд▓, рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдХреЗ рдПрдХ рдЯреБрдХрдбрд╝реЗ рдХреЗ рд░реВрдк рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ ARGV рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреБрдЫ рднреА рд╣реЛ рд╕рдХрддреА рд╣реИ (рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ, php, рдЕрдЬрдЧрд░ рдФрд░ рдХреЛрдИ рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдо)ред
рдЦреИрд░, рд░рд┐рд▓реАрдЬ рдФрд░ рдПрдХреНрд╕рдкрд╛рдпрд░реА рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реЛрддрд╛ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред рдкрддрд╛ рдФрд░ рд╣реЛрд╕реНрдЯ рдирд╛рдо рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ 2 рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░рддрд╛ рд╣реИ? рдХреНрдпреЛрдВрдХрд┐ рдпрджрд┐ рд╣реЛрд╕реНрдЯ рдирд╛рдо ANSI рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣реИрдВрдбрд▓рд░ рдмреЗрд╡рдХреВрдлреА рд╕реЗ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЦреИрд░, рдореАрдареА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЗ рд▓рд┐рдП
#!/usr/bin/perl
use strict;
use warnings;

my $type = shift;
my $ip = shift;
my $mac = shift;

# Fork so we can return control
# to the dhcp server ASAP.
my $pid = fork();

# If we're the child, do whatever we need to do
if($pid == 0) {
open OUT,">>/var/tmp/publish.tmp";
$mac = join(":",map { sprintf("%02s",$_); } split(":",$mac));
print OUT "$type $ip $mac\n";
close OUT;
}


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

┬й Aborche 2011

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


All Articles