рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд░ рдХреЛрдИ (рдФрд░ рдпрджрд┐ рд╣рд░ рдХреЛрдИ рдирд╣реАрдВ, рддреЛ рдХрдИ) рдХрдо рд╕реЗ рдХрдо рдПрдХ рдмрд╛рд░ (рд╕рд┐рд╕рдбреНрдорд┐рди), рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдп рдПрдХ рд╣реА рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдХрдИ рджреВрд░рд╕реНрде рдХрд╛рд░реНрдпрд╛рд▓рдпреЛрдВ рдХреЛ рдПрдХрдЬреБрдЯ рдХрд░рдирд╛ рдерд╛, рдФрд░ рд╕рднреА рдиреЗ рдЕрдкрдирд╛ рд╕рдорд╛рдзрд╛рди рдЪреБрдирд╛ред
рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдорд╛рдзрд╛рди рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдЖрдк рдмреЛрд░реНрдб рдкрд░ рдХрд┐рд╕реА рднреА рдУрдПрд╕ рд╕реЗ рд╡рд┐рд╢реЗрд╖ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рд╕рдорд╛рдзрд╛рди рдФрд░ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдХрдВрдкреНрдпреВрдЯрд░ рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХрдВрдкрдиреА рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдмрдиреЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рддреАрди рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдХрд╛рд░реНрдпрд╛рд▓рдпреЛрдВ рдХреЛ рдПрдХ рдХреЙрд░рдкреЛрд░реЗрдЯ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдХреИрд╕реЗ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рдореИрдВ рдХреЗрд╡рд▓
OpenBSD рд╡рд┐рддрд░рдг рдХрд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╣ рд╕рдм рдЙрдард╛рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВред
рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:
- рддреАрди рдорд┐рдб-рд░реЗрдВрдЬ рдкреАрд╕реА (1.7Ghz CPU, 512Mb RAM, 20Gb HDD, 2x Lan100Mb)
- рд╡рд╛рди рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдкрд░ рд╕реНрдЯреЗрдЯрд┐рдХ рдЖрдИрдкреА рдкрддреЗ
- OpenBSD рд╡рд┐рддрд░рдг
- рдЖрдкрдХреЗ рдХреАрдорддреА рд╕рдордп рдХрд╛ 40 рдорд┐рдирдЯ (OS рд╕реНрдерд╛рдкрдирд╛ рд╕рд╣рд┐рдд)
рдкрд╣рд▓реЗ, рдЪрд▓реЛ рдХреБрдЫ "рдЪрд░" рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
- gw1 - "рдХреЗрдВрджреНрд░реАрдп" рдЧреЗрдЯ
- gw2 - "рдмреЗрдЯреА" рдЧреЗрдЯ рдирдВрдмрд░ 1
- gw3 - "рдмреЗрдЯреА" рдЧреЗрдЯ рдирдВрдмрд░ 2
- vic0 - рдмрд╛рд╣рд░реА рдЗрдВрдЯрд░рдлрд╝реЗрд╕
- vic1 - рдЖрдВрддрд░рд┐рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕
рдереЛрдбрд╝рд╛ рд░рдВрдЧреАрди рд░рдВрдЧ рдЬреЛрдбрд╝реЗрдВ, рддрд╛рдХрд┐ рдЖрдк рд╕рдордЭ рд╕рдХреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реИ:
- рдЧреНрд░реАрди рдлрд╝реЙрдиреНрдЯ gw1-gw2
- рдиреАрд▓рд╛ рдлрд╝реЙрдиреНрдЯ gw1-gw3
рдореИрдВ рд╕рд┐рд╕реНрдЯрдо рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг 4.8 (рдЬреЛ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛) рдореЗрдВ, рдПрдЪрдбреАрдбреА рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ, рдЬреЛ рдПрдХ рдиреМрд╕рд┐рдЦрд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рднреА рд╕рд┐рд╕реНрдЯрдо рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЛ рд╕рд░рд▓ рдХрд░реЗрдЧрд╛ред
рд╕рд┐рд╕реНрдЯрдо рдХреА рд╕рдлрд▓ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ, рдЕрдЧреНрд░реЗрд╖рдг рдХрд░рдиреЗ рдФрд░ рд╕реНрдереИрддрд┐рдХ рдорд╛рд░реНрдЧреЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрдВрдЬреАрдХрд░рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
# vi /etc/rc.conf ( PF)
pf=YES
# vi /etc/sysctl.conf ( )
net.inet.ip.forwarding=1
# vi /etc/rc.local ( static_routes )
/etc/static_routes
рдЕрдм рд╣рдо рднрд╡рд┐рд╖реНрдп рдХреЗ "рдХреЗрдВрджреНрд░реАрдп" рдЧреЗрдЯ рдкрд░ рдлреИрд╕рд▓рд╛ рдХрд░реЗрдВрдЧреЗ, (рдореИрдВ GW1 рд╣реЛрдЧрд╛) рддрдп рдХрд░рддреЗ рд╣реИрдВ, рдареАрдХ рд╣реИ, рдЪрд▓реЛ рдЗрд╕рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ, рд╢реБрд░реВ рдореЗрдВ рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рд╣рдорд╛рд░реЗ рдлрд╛рдЯрдХреЛрдВ рдХреЗ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рд╣реИрдВ:
GW1
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рд╕рдорд░реНрдкрд┐рдд рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлреЗрд╕
рд▓реЛ 1 рдЪреБрдиреЗрдВ рдЬреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реВрдк рд╕реЗ рд░рд╛рдЙрдЯрд░ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╣рдореЗрд╢рд╛ рдЙрдард╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
# vi /etc/hostname.lo1
!ifconfig lo1 create
!ifconfig lo1 192.168.254.1 netmask 255.255.255.255
рдЕрдм
рдЬреАрдЖрдИрдПрдл рдЗрдВрдЯрд░рдлреЗрд╕ рдХреА рдХрддрд╛рд░:
# vi /etc/hostname.gif0
!ifconfig gif0 create
!ifconfig gif0 192.168.255.1 netmask 255.255.255.252 192.168.255.2
!ifconfig gif0 tunnel 11.11.11.1 22.22.22.2
!ifconfig gif0 up
# vi /etc/hostname.gif1
!ifconfig gif1 create
!ifconfig gif1 192.168.255.3 netmask 255.255.255.252 192.168.255.4
!ifconfig gif1 tunnel 11.11.11.1 33.33.33.3
!ifconfig gif1 up
рдЕрдзрд┐рдХрд╛рд░ рд╕реЗрдЯ рдХрд░реЗрдВ:
# chmod 640 /etc/hostname.*
рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рдЬреЛрдбрд╝реЗрдВ:
# vi /etc/static_routes
/sbin/route add -host 192.168.254.2 192.168.255.2
/sbin/route add -net 192.168.15.0/24 192.168.255.2
/sbin/route add -host 192.168.254.3 192.168.255.4
/sbin/route add -net 192.168.16.0/24 192.168.255.4
рдФрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЕрдзрд┐рдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ:
# chmod a+x /etc/static_routes
рдЕрдм рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ:
# vi /etc/pf.conf
ext_if="vic0"
int_if="vic1"
set skip on lo
set skip on gif0
set skip on gif1
match in all scrub (no-df)
match out all scrub (no-df)
match on $ext_if from 192.168.0.0/16 to !192.168.0.0/16 binat-to ($ext_if:0)
block in on $int_if
pass in quick on $int_if from 192.168.0.0/16 to 192.168.0.0/16 keep state
pass out quick on $int_if from 192.168.0.0/16 to 192.168.0.0/16 keep state
Gw1 рд╕реЗрдЯрдЕрдк рдХреЗ рд╕рд╛рде, рд░рд┐рдмреВрдЯ, рдФрд░ рд╢реЗрд╖ рдкрд░ рдЖрдЧреЗ рдмрдврд╝реЗрдВ
# reboot
gw1 рддреИрдпрд╛рд░ рд╣реИ, рдЕрдм gw2 рдФрд░ gw3 рдкрд░ рдЬрд╛рдПрдВ
GW2
рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕рдорд╛рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдЕрддрд┐рд░реЗрдХрдкреВрд░реНрдг рд╣реЛрдВрдЧреАред
# vi /etc/hostname.lo1
!ifconfig lo1 create
!ifconfig lo1 192.168.254.2 netmask 255.255.255.255
# vi /etc/hostname.gif0
!ifconfig gif0 create
!ifconfig gif0 192.168.255.2 netmask 255.255.255.252 192.168.255.1
!ifconfig gif0 tunnel 22.22.22.2 11.11.11.1
!ifconfig gif0 up
# chmod 640 /etc/hostname.*
# vi /etc/static_routes
/sbin/route add -net 192.168.0.0/16 192.168.255.2
# chmod a+x /etc/static_routes
# vi /etc/pf.conf
ext_if="vic0"
int_if="vic1"
set skip on lo
set skip on gif0
match in all scrub (no-df)
match out all scrub (no-df)
match on $ext_if from 192.168.0.0/16 to !192.168.0.0/16 binat-to ($ext_if:0)
block in on $int_if
pass in quick on $int_if from 192.168.0.0/16 to 192.168.0.0/16 keep state
pass out quick on $int_if from 192.168.0.0/16 to 192.168.0.0/16 keep state
# reboot
GW3
# vi /etc/hostname.lo1
!ifconfig lo1 create
!ifconfig lo1 192.168.254.3 netmask 255.255.255.255
# vi /etc/hostname.gif0
!ifconfig gif0 create
!ifconfig gif0 192.168.255.4 netmask 255.255.255.252 192.168.255.3
!ifconfig gif0 tunnel 33.33.33.3 11.11.11.1
!ifconfig gif0 up
# chmod 640 /etc/hostname.*
# vi /etc/static_routes
/sbin/route add -net 192.168.0.0/16 192.168.255.4
# chmod a+x /etc/static_routes
# vi /etc/pf.conf
ext_if="vic0"
int_if="vic1"
set skip on lo
set skip on gif0
match in all scrub (no-df)
match out all scrub (no-df)
match on $ext_if from 192.168.0.0/16 to !192.168.0.0/16 binat-to ($ext_if:0)
block in on $int_if
pass in quick on $int_if from 192.168.0.0/16 to 192.168.0.0/16 keep state
pass out quick on $int_if from 192.168.0.0/16 to 192.168.0.0/16 keep state
# reboot
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдпреЛрдЬрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:
рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдЯреНрд░реЗрд╕рд┐рдВрдЧ 192.168.14.0/24
# traceroute 192.168.15.2
traceroute to 192.168.15.2 (192.168.15.2), 64 hops max, 40 byte packets
1 192.168.14.1 (192.168.14.1) 0.437 ms 0.215 ms 0.294 ms
2 192.168.255.2 (192.168.255.2) 0.934 ms 0.674 ms 0.646 ms
3 192.168.15.2 (192.168.15.2) 1.107 ms 1.3 ms 0.920 ms
# traceroute 192.168.16.2
traceroute to 192.168.16.2 (192.168.16.2), 64 hops max, 40 byte packets
1 192.168.14.1 (192.168.14.1) 0.356 ms 0.206 ms 0.192 ms
2 192.168.255.4 (192.168.255.4) 0.748 ms 0.666 ms 0.631 ms
3 192.168.16.2 (192.168.16.2) 0.940 ms 0.892 ms 0.843 ms
рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдЯреНрд░реЗрд╕рд┐рдВрдЧ 192.168.15.0/24
# traceroute 192.168.14.2
traceroute to 192.168.14.2 (192.168.14.2), 64 hops max, 40 byte packets
1 192.168.15.1 (192.168.15.1) 0.745 ms 0.208 ms 0.294 ms
2 192.168.255.1 (192.168.255.1) 0.768 ms 0.855 ms 0.677 ms
3 192.168.14.2 (192.168.14.2) 0.933 ms 0.830 ms 0.853 ms
# traceroute 192.168.16.2
traceroute to 192.168.16.2 (192.168.16.2), 64 hops max, 40 byte packets
1 192.168.15.1 (192.168.15.1) 0.450 ms 0.207 ms 0.372 ms
2 192.168.255.1 (192.168.255.1) 0.710 ms 1.290 ms 0.711 ms
3 192.168.255.4 (192.168.255.4) 1.243 ms 1.194 ms 1.42 ms
4 192.168.16.2 (192.168.16.2) 1.341 ms 1.445 ms 1.315 ms
рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗ рдЯреНрд░реЗрд╕рд┐рдВрдЧ 192.168.16.0/24
# traceroute 192.168.14.2
traceroute to 192.168.14.2 (192.168.14.2), 64 hops max, 40 byte packets
1 192.168.16.1 (192.168.16.1) 0.480 ms 0.222 ms 0.191 ms
2 192.168.255.3 (192.168.255.3) 0.814 ms 0.775 ms 0.715 ms
3 192.168.14.2 (192.168.14.2) 1.168 ms 1.43 ms 0.861 ms
# traceroute 192.168.15.2
traceroute to 192.168.15.2 (192.168.15.2), 64 hops max, 40 byte packets
1 192.168.16.1 (192.168.16.1) 0.458 ms 0.234 ms 0.269 ms
2 192.168.255.3 (192.168.255.3) 0.780 ms 0.642 ms 0.661 ms
3 192.168.255.2 (192.168.255.2) 1.171 ms 0.989 ms 1.11 ms
4 192.168.15.2 (192.168.15.2) 1.519 ms 1.595 ms 1.333 ms
рдЦреИрд░, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдпрд╣ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдмреЗрд╢рдХ рдЖрдк рдЕрднреА рднреА IPsec рдХреЛ рдкреЗрдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд┐рд╖рдп рдХрд┐рд╕реА рдЕрдиреНрдп рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рд╣реИред