рд▓рд┐рдирдХреНрд╕рдорд╛ рдиреЗрдЯрд╡рд░реНрдХ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдЕрдиреБрдХрд░рдг рдЧрд░реНрджреИ

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

рдпрд╕ рд▓реЗрдЦрдорд╛, рдо рджреБрдИ рдЙрдкрдпреЛрдЧрд┐рддрд╛рд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреБрд░рд╛ рдЧрд░реНрдиреЗрдЫреБ рдЬреБрди рдЖрдзрд╛рд░рднреВрдд рдкрд░рд┐рджреГрд╢реНрдпрд╣рд░реВ рдЬрд╛рдБрдЪ рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рдЬреБрди рдиреЗрдЯрд╡рд░реНрдХ рд╕рдорд╕реНрдпрд╛рд╣рд░реВрдХреЛ рдЙрдкрд╕реНрдерд┐рддрд┐рдорд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрдХреЛ рд╕рдЮреНрдЪрд╛рд▓рди рд╡рд░реНрдгрди рдЧрд░реНрджрдЫред

рд▓рд┐рдирдХреНрд╕рдорд╛ рдиреЗрдЯрд╡рд░реНрдХ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдЕрдиреБрдХрд░рдг рдЧрд░реНрджреИ

рдиреЗрдЯрд╡рд░реНрдХ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рдЕрдиреБрдХрд░рдг рдЧрд░реНрджреИ

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

tc(abbr рдЯреНрд░рд╛рдлрд┐рдХ рдирд┐рдпрдиреНрддреНрд░рдг рдмрд╛рдЯ) рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдкреНрд░рдгрд╛рд▓реАрдорд╛ рдиреЗрдЯрд╡рд░реНрдХ рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВрдХреЛ рдкреНрд░рд╕рд╛рд░рдг рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдпреЛ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдорд╛ рдЙрддреНрдХреГрд╖реНрдЯ рдХреНрд╖рдорддрд╛рд╣рд░реВ рдЫрдиреН, рддрдкрд╛рдИрдВ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдердк рдкрдвреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдпрд╣рд╛рдБред рдпрд╣рд╛рдБ рдо рддреА рдордзреНрдпреЗ рдХреЗрд╣реА рдорд╛рддреНрд░ рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрдиреЗрдЫреБ: рд╣рд╛рдореА рдЯреНрд░рд╛рдлрд┐рдХ рддрд╛рд▓рд┐рдХрд╛рдорд╛ рд░реБрдЪрд┐ рд░рд╛рдЦреНрдЫреМрдВ, рдЬрд╕рдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВ qdisc, рд░ рд╣рд╛рдореАрд▓реЗ рдПрдХ рдЕрд╕реНрдерд┐рд░ рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрдХрд░рдг рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рд╣рд╛рдореА classless qdisc рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВ netem.

рд╕рд░реНрднрд░рдорд╛ рдЗрдХреЛ рд╕рд░реНрднрд░ рд╕реБрд░реБ рдЧрд░реМрдВ (рдореИрд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрдХреЛ nmap-ncat):

ncat -l 127.0.0.1 12345 -k -c 'xargs -n1 -i echo "Response: {}"'

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

рдЧреНрд░рд╛рд╣рдХ рд╕реНрд░реЛрдд рдХреЛрдб

#!/bin/python

import socket
import time

HOST = '127.0.0.1'
PORT = 12345
BUFFER_SIZE = 1024
MESSAGE = "Testn"

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
t1 = time.time()
print "[time before connection: %.5f]" % t1
s.connect((HOST, PORT))
print "[time after connection, before sending: %.5f]" % time.time()
s.send(MESSAGE)
print "[time after sending, before receiving: %.5f]" % time.time()
data = s.recv(BUFFER_SIZE)
print "[time after receiving, before closing: %.5f]" % time.time()
s.close()
t2 = time.time()
print "[time after closing: %.5f]" % t2
print "[total duration: %.5f]" % (t2 - t1)

print data

рдпрд╕рд▓рд╛рдИ рд╕реБрд░реБ рдЧрд░реМрдВ рд░ рдЗрдиреНрдЯрд░рдлреЗрд╕рдорд╛ рдЯреНрд░рд╛рдлрд┐рдХ рд╣реЗрд░реМрдВ lo рд░ рдкреЛрд░реНрдЯ 12345:

[user@host ~]# python client.py
[time before connection: 1578652979.44837]
[time after connection, before sending: 1578652979.44889]
[time after sending, before receiving: 1578652979.44894]
[time after receiving, before closing: 1578652979.45922]
[time after closing: 1578652979.45928]
[total duration: 0.01091]
Response: Test

рдЯреНрд░рд╛рдлрд┐рдХ рдбрдореНрдк

[user@host ~]# tcpdump -i lo -nn port 12345
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 262144 bytes
10:42:59.448601 IP 127.0.0.1.54054 > 127.0.0.1.12345: Flags [S], seq 3383332866, win 43690, options [mss 65495,sackOK,TS val 606325685 ecr 0,nop,wscale 7], length 0
10:42:59.448612 IP 127.0.0.1.12345 > 127.0.0.1.54054: Flags [S.], seq 2584700178, ack 3383332867, win 43690, options [mss 65495,sackOK,TS val 606325685 ecr 606325685,nop,wscale 7], length 0
10:42:59.448622 IP 127.0.0.1.54054 > 127.0.0.1.12345: Flags [.], ack 1, win 342, options [nop,nop,TS val 606325685 ecr 606325685], length 0
10:42:59.448923 IP 127.0.0.1.54054 > 127.0.0.1.12345: Flags [P.], seq 1:6, ack 1, win 342, options [nop,nop,TS val 606325685 ecr 606325685], length 5
10:42:59.448930 IP 127.0.0.1.12345 > 127.0.0.1.54054: Flags [.], ack 6, win 342, options [nop,nop,TS val 606325685 ecr 606325685], length 0
10:42:59.459118 IP 127.0.0.1.12345 > 127.0.0.1.54054: Flags [P.], seq 1:15, ack 6, win 342, options [nop,nop,TS val 606325696 ecr 606325685], length 14
10:42:59.459213 IP 127.0.0.1.54054 > 127.0.0.1.12345: Flags [.], ack 15, win 342, options [nop,nop,TS val 606325696 ecr 606325696], length 0
10:42:59.459268 IP 127.0.0.1.54054 > 127.0.0.1.12345: Flags [F.], seq 6, ack 15, win 342, options [nop,nop,TS val 606325696 ecr 606325696], length 0
10:42:59.460184 IP 127.0.0.1.12345 > 127.0.0.1.54054: Flags [F.], seq 15, ack 7, win 342, options [nop,nop,TS val 606325697 ecr 606325696], length 0
10:42:59.460196 IP 127.0.0.1.54054 > 127.0.0.1.12345: Flags [.], ack 16, win 342, options [nop,nop,TS val 606325697 ecr 606325697], length 0

рд╕рдмреИ рдХреБрд░рд╛ рдорд╛рдирдХ рдЫ: рддреАрди-рддрд░реНрдлреА рд╣реНрдпрд╛рдиреНрдбрд╢реЗрдХ, PSH/ACK рд░ ACK рджреБрдИ рдкрдЯрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ - рдпреЛ рдЧреНрд░рд╛рд╣рдХ рд░ рд╕рд░реНрднрд░ рдмреАрдЪ рдЕрдиреБрд░реЛрдз рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдХреЛ рдЖрджрд╛рдирдкреНрд░рджрд╛рди рд╣реЛ, рд░ FIN/ACK рд░ ACK рджреБрдИ рдкрдЯрдХ - рдЬрдбрд╛рди рдкреВрд░рд╛ рдЧрд░реНрджреИред

рдкреНрдпрд╛рдХреЗрдЯ рдврд┐рд▓рд╛рдЗ

рдЕрдм 500 рдорд┐рд▓рд┐рд╕реЗрдХреЗрдиреНрдбрдорд╛ рдврд┐рд▓рд╛рдЗ рд╕реЗрдЯ рдЧрд░реМрдВ:

tc qdisc add dev lo root netem delay 500ms

рд╣рд╛рдореА рдХреНрд▓рд╛рдЗрдиреНрдЯ рд╕реБрд░реБ рдЧрд░реНрдЫреМрдВ рд░ рд╣реЗрд░реНрдЫреМрдВ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдм 2 рд╕реЗрдХреЗрдиреНрдбрдХреЛ рд▓рд╛рдЧрд┐ рдЪрд▓реНрдЫ:

[user@host ~]# ./client.py
[time before connection: 1578662612.71044]
[time after connection, before sending: 1578662613.71059]
[time after sending, before receiving: 1578662613.71065]
[time after receiving, before closing: 1578662614.72011]
[time after closing: 1578662614.72019]
[total duration: 2.00974]
Response: Test

рдЯреНрд░рд╛рдлрд┐рдХрдорд╛ рдХреЗ рдЫ? рд╣реЗрд░реМрдВ:

рдЯреНрд░рд╛рдлрд┐рдХ рдбрдореНрдк

13:23:33.210520 IP 127.0.0.1.58694 > 127.0.0.1.12345: Flags [S], seq 1720950927, win 43690, options [mss 65495,sackOK,TS val 615958947 ecr 0,nop,wscale 7], length 0
13:23:33.710554 IP 127.0.0.1.12345 > 127.0.0.1.58694: Flags [S.], seq 1801168125, ack 1720950928, win 43690, options [mss 65495,sackOK,TS val 615959447 ecr 615958947,nop,wscale 7], length 0
13:23:34.210590 IP 127.0.0.1.58694 > 127.0.0.1.12345: Flags [.], ack 1, win 342, options [nop,nop,TS val 615959947 ecr 615959447], length 0
13:23:34.210657 IP 127.0.0.1.58694 > 127.0.0.1.12345: Flags [P.], seq 1:6, ack 1, win 342, options [nop,nop,TS val 615959947 ecr 615959447], length 5
13:23:34.710680 IP 127.0.0.1.12345 > 127.0.0.1.58694: Flags [.], ack 6, win 342, options [nop,nop,TS val 615960447 ecr 615959947], length 0
13:23:34.719371 IP 127.0.0.1.12345 > 127.0.0.1.58694: Flags [P.], seq 1:15, ack 6, win 342, options [nop,nop,TS val 615960456 ecr 615959947], length 14
13:23:35.220106 IP 127.0.0.1.58694 > 127.0.0.1.12345: Flags [.], ack 15, win 342, options [nop,nop,TS val 615960957 ecr 615960456], length 0
13:23:35.220188 IP 127.0.0.1.58694 > 127.0.0.1.12345: Flags [F.], seq 6, ack 15, win 342, options [nop,nop,TS val 615960957 ecr 615960456], length 0
13:23:35.720994 IP 127.0.0.1.12345 > 127.0.0.1.58694: Flags [F.], seq 15, ack 7, win 342, options [nop,nop,TS val 615961457 ecr 615960957], length 0
13:23:36.221025 IP 127.0.0.1.58694 > 127.0.0.1.12345: Flags [.], ack 16, win 342, options [nop,nop,TS val 615961957 ecr 615961457], length 0

рддрдкрд╛рдИрд▓реЗ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдХрд┐ рдЧреНрд░рд╛рд╣рдХ рд░ рд╕рд░реНрднрд░ рдмреАрдЪрдХреЛ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛рдорд╛ рдЖрдзрд╛ рд╕реЗрдХреЗрдиреНрдбрдХреЛ рдЕрдкреЗрдХреНрд╖рд┐рдд рдврд┐рд▓рд╛рдЗ рджреЗрдЦрд╛ рдкрд░реЗрдХреЛ рдЫред рдкреНрд░рдгрд╛рд▓реАрд▓реЗ рдзреЗрд░реИ рдЪрд╛рдЦрд▓рд╛рдЧреНрджреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЧрд░реНрджрдЫ рдпрджрд┐ рдврд┐рд▓рд╛рдЗ рдареВрд▓реЛ рдЫ: рдХрд░реНрдиреЗрд▓рд▓реЗ рдХреЗрд╣рд┐ TCP рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВ рдкреБрди: рдкрдард╛рдЙрди рдерд╛рд▓реНрдЫред рдврд┐рд▓рд╛рдЗрд▓рд╛рдИ 1 рд╕реЗрдХреЗрдиреНрдбрдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реМрдВ рд░ рдЯреНрд░рд╛рдлрд┐рдХрд▓рд╛рдИ рд╣реЗрд░реМрдВ (рдо рдЧреНрд░рд╛рд╣рдХрдХреЛ рдЖрдЙрдЯрдкреБрдЯ рджреЗрдЦрд╛рдЙрдиреЗ рдЫреИрди, рдХреБрд▓ рдЕрд╡рдзрд┐рдорд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд 4 рд╕реЗрдХреЗрдиреНрдбрд╣рд░реВ рдЫрдиреН):

tc qdisc change dev lo root netem delay 1s

рдЯреНрд░рд╛рдлрд┐рдХ рдбрдореНрдк

13:29:07.709981 IP 127.0.0.1.39306 > 127.0.0.1.12345: Flags [S], seq 283338334, win 43690, options [mss 65495,sackOK,TS val 616292946 ecr 0,nop,wscale 7], length 0
13:29:08.710018 IP 127.0.0.1.12345 > 127.0.0.1.39306: Flags [S.], seq 3514208179, ack 283338335, win 43690, options [mss 65495,sackOK,TS val 616293946 ecr 616292946,nop,wscale 7], length 0
13:29:08.711094 IP 127.0.0.1.39306 > 127.0.0.1.12345: Flags [S], seq 283338334, win 43690, options [mss 65495,sackOK,TS val 616293948 ecr 0,nop,wscale 7], length 0
13:29:09.710048 IP 127.0.0.1.39306 > 127.0.0.1.12345: Flags [.], ack 1, win 342, options [nop,nop,TS val 616294946 ecr 616293946], length 0
13:29:09.710152 IP 127.0.0.1.39306 > 127.0.0.1.12345: Flags [P.], seq 1:6, ack 1, win 342, options [nop,nop,TS val 616294947 ecr 616293946], length 5
13:29:09.711120 IP 127.0.0.1.12345 > 127.0.0.1.39306: Flags [S.], seq 3514208179, ack 283338335, win 43690, options [mss 65495,sackOK,TS val 616294948 ecr 616292946,nop,wscale 7], length 0
13:29:10.710173 IP 127.0.0.1.12345 > 127.0.0.1.39306: Flags [.], ack 6, win 342, options [nop,nop,TS val 616295947 ecr 616294947], length 0
13:29:10.711140 IP 127.0.0.1.39306 > 127.0.0.1.12345: Flags [.], ack 1, win 342, options [nop,nop,TS val 616295948 ecr 616293946], length 0
13:29:10.714782 IP 127.0.0.1.12345 > 127.0.0.1.39306: Flags [P.], seq 1:15, ack 6, win 342, options [nop,nop,TS val 616295951 ecr 616294947], length 14
13:29:11.714819 IP 127.0.0.1.39306 > 127.0.0.1.12345: Flags [.], ack 15, win 342, options [nop,nop,TS val 616296951 ecr 616295951], length 0
13:29:11.714893 IP 127.0.0.1.39306 > 127.0.0.1.12345: Flags [F.], seq 6, ack 15, win 342, options [nop,nop,TS val 616296951 ecr 616295951], length 0
13:29:12.715562 IP 127.0.0.1.12345 > 127.0.0.1.39306: Flags [F.], seq 15, ack 7, win 342, options [nop,nop,TS val 616297952 ecr 616296951], length 0
13:29:13.715596 IP 127.0.0.1.39306 > 127.0.0.1.12345: Flags [.], ack 16, win 342, options [nop,nop,TS val 616298952 ecr 616297952], length 0

рдЧреНрд░рд╛рд╣рдХрд▓реЗ рджреБрдИ рдкрдЯрдХ SYN рдкреНрдпрд╛рдХреЗрдЯ рдкрдард╛рдПрдХреЛ рд░ рд╕рд░реНрднрд░рд▓реЗ рджреБрдИ рдкрдЯрдХ SYN/ACK рдкрдард╛рдПрдХреЛ рджреЗрдЦреНрди рд╕рдХрд┐рдиреНрдЫред

рд╕реНрдерд┐рд░ рдорд╛рдирдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд, рдврд┐рд▓рд╛рдЗрд▓рд╛рдИ рд╡рд┐рдЪрд▓рди, рд╡рд┐рддрд░рдг рдкреНрд░рдХрд╛рд░реНрдп, рд░ рд╕рд╣рд╕рдВрдмрдВрдз (рдЕрдШрд┐рд▓реНрд▓реЛ рдкреНрдпрд╛рдХреЗрдЯрдХреЛ рд▓рд╛рдЧрд┐ рдорд╛рдирд╕рдБрдЧ) рд╕реЗрдЯ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдпреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдЧрд░рд┐рдиреНрдЫ:

tc qdisc change dev lo root netem delay 500ms 400ms 50 distribution normal

рдпрд╣рд╛рдБ рд╣рд╛рдореАрд▓реЗ 100 рд░ 900 рдорд┐рд▓рд┐рд╕реЗрдХреЗрдиреНрдб рдмреАрдЪрдХреЛ рдврд┐рд▓рд╛рдЗ рд╕реЗрдЯ рдЧрд░реЗрдХрд╛ рдЫреМрдВ, рдорд╛рдирд╣рд░реВ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рддрд░рдг рдЕрдиреБрд╕рд╛рд░ рдЪрдпрди рдЧрд░рд┐рдиреЗрдЫ рд░ рдЕрдШрд┐рд▓реНрд▓реЛ рдкреНрдпрд╛рдХреЗрдЯрдХреЛ рд▓рд╛рдЧрд┐ рдврд┐рд▓рд╛рдЗ рдорд╛рдирд╕рдБрдЧ 50% рд╕рд╣рд╕рдВрдмрдВрдз рд╣реБрдиреЗрдЫред

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

рдкреНрдпрд╛рдХреЗрдЯ рдШрд╛рдЯрд╛

рдЕрдм рдкреНрдпрд╛рдХреЗрдЯ рд╣рд╛рдирд┐ рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реМрдВред рдХрд╛рдЧрдЬрд╛рддрдмрд╛рдЯ рджреЗрдЦреНрди рд╕рдХрд┐рдиреНрдЫ, рдпреЛ рддреАрди рддрд░рд┐рдХрд╛рдорд╛ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ: рдХреЗрд╣реА рд╕рдореНрднрд╛рд╡реНрдпрддрд╛рдХрд╛ рд╕рд╛рде рдЕрдирд┐рдпрдорд┐рдд рд░реВрдкрдорд╛ рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВ рд╣рд░рд╛рдЙрдиреЗ, рдкреНрдпрд╛рдХреЗрдЯ рдиреЛрдХреНрд╕рд╛рди рдЧрдгрдирд╛ рдЧрд░реНрди 2, 3 рд╡рд╛ 4 рд░рд╛рдЬреНрдпрд╣рд░реВрдХреЛ рдорд╛рд░реНрдХреЛрдн рдЪреЗрди рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рд╡рд╛ рдЗрд▓рд┐рдпрдЯ-рдЧрд┐рд▓рдмрд░реНрдЯ рдореЛрдбреЗрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ред рд▓реЗрдЦрдорд╛ рдо рдкрд╣рд┐рд▓реЛ (рд╕рд░рд▓ рд░ рд╕рдмреИрднрдиреНрджрд╛ рд╕реНрдкрд╖реНрдЯ) рд╡рд┐рдзрд┐ рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрдиреЗрдЫреБ, рд░ рддрдкрд╛рдИрдВ рдЕрд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдкрдвреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдпрд╣рд╛рдБ.

50% рдХреЛ рд╕рдореНрдмрдиреНрдз рд╕рдВрдЧ рдкреНрдпрд╛рдХреЗрдЯ рдХреЛ 25% рдХреЛ рд╣рд╛рдирд┐ рдЧрд░реМрдВ:

tc qdisc add dev lo root netem loss 50% 25%

рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, tcpdump рд╣рд╛рдореАрд▓рд╛рдИ рдкреНрдпрд╛рдХреЗрдЯрдХреЛ рд╣рд╛рдирд┐ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рджреЗрдЦрд╛рдЙрди рд╕рдХреНрд╖рдо рд╣реБрдиреЗрдЫреИрди, рд╣рд╛рдореА рдХреЗрд╡рд▓ рдпреЛ рд╕рд╛рдБрдЪреНрдЪреИ рдХрд╛рдо рдЧрд░реНрджрдЫ рднрдиреЗрд░ рдорд╛рдиреНрди рд╕рдХреНрдЫреМрдВред рд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯрдХреЛ рдмрдвреЗрдХреЛ рд░ рдЕрд╕реНрдерд┐рд░ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рд╕рдордпрд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рдпреЛ рдкреНрд░рдорд╛рдгрд┐рдд рдЧрд░реНрди рдорджреНрджрдд рдЧрд░реНрдиреЗрдЫред client.py (рддреБрд░реБрдиреНрддреИ рдкреВрд░рд╛ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рд╡рд╛ рд╣реБрдирд╕рдХреНрдЫ реиреж рд╕реЗрдХреЗрдиреНрдбрдорд╛), рд╕рд╛рдереИ рдкреБрди: рдкреНрд░рд╕рд╛рд░рд┐рдд рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВрдХреЛ рдмрдвреЗрдХреЛ рд╕рдВрдЦреНрдпрд╛:

[user@host ~]# netstat -s | grep retransmited; sleep 10; netstat -s | grep retransmited
    17147 segments retransmited
    17185 segments retransmited

рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВрдорд╛ рдЖрд╡рд╛рдЬ рдердкреНрджреИ

рдкреНрдпрд╛рдХреЗрдЯ рд╣рд╛рдирд┐рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд, рддрдкрд╛рдЗрдБ рдкреНрдпрд╛рдХреЗрдЯ рдХреНрд╖рддрд┐ рдЕрдиреБрдХрд░рдг рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ: рдЖрд╡рд╛рдЬ рдЕрдирд┐рдпрдорд┐рдд рдкреНрдпрд╛рдХреЗрдЯ рд╕реНрдерд┐рддрд┐рдорд╛ рджреЗрдЦрд╛ рдкрд░реНрдиреЗрдЫред 50% рд╕рдореНрднрд╛рд╡реНрдпрддрд╛ рд░ рд╕рд╣рд╕рдВрдмрдВрдз рдмрд┐рдирд╛ рдкреНрдпрд╛рдХреЗрдЯ рдХреНрд╖рддрд┐ рдЧрд░реМрдВ:

tc qdisc change dev lo root netem corrupt 50%

рд╣рд╛рдореАрд▓реЗ рдХреНрд▓рд╛рдЗрдиреНрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдЙрдБрдЫреМрдВ (рддреНрдпрд╣рд╛рдБ рдХреЗрд╣реА рд░реЛрдЪрдХ рдЫреИрди, рддрд░ рдпреЛ рдкреВрд░рд╛ рд╣реБрди реи рд╕реЗрдХреЗрдиреНрдб рд▓рд╛рдЧреНрдпреЛ), рдЯреНрд░рд╛рдлрд┐рдХ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН:

рдЯреНрд░рд╛рдлрд┐рдХ рдбрдореНрдк

[user@host ~]# tcpdump -i lo -nn port 12345
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 262144 bytes
10:20:54.812434 IP 127.0.0.1.43666 > 127.0.0.1.12345: Flags [S], seq 2023663770, win 43690, options [mss 65495,sackOK,TS val 1037001049 ecr 0,nop,wscale 7], length 0
10:20:54.812449 IP 127.0.0.1.12345 > 127.0.0.1.43666: Flags [S.], seq 2104268044, ack 2023663771, win 43690, options [mss 65495,sackOK,TS val 1037001049 ecr 1037001049,nop,wscale 7], length 0
10:20:54.812458 IP 127.0.0.1.43666 > 127.0.0.1.12345: Flags [.], ack 1, win 342, options [nop,nop,TS val 1037001049 ecr 1037001049], length 0
10:20:54.812509 IP 127.0.0.1.43666 > 127.0.0.1.12345: Flags [P.], seq 1:6, ack 1, win 342, options [nop,nop,TS val 1037001049 ecr 1037001049], length 5
10:20:55.013093 IP 127.0.0.1.43666 > 127.0.0.1.12345: Flags [P.], seq 1:6, ack 1, win 342, options [nop,nop,TS val 1037001250 ecr 1037001049], length 5
10:20:55.013122 IP 127.0.0.1.12345 > 127.0.0.1.43666: Flags [.], ack 6, win 342, options [nop,nop,TS val 1037001250 ecr 1037001250], length 0
10:20:55.014681 IP 127.0.0.1.12345 > 127.0.0.1.43666: Flags [P.], seq 1:15, ack 6, win 342, options [nop,nop,TS val 1037001251 ecr 1037001250], length 14
10:20:55.014745 IP 127.0.0.1.43666 > 127.0.0.1.12345: Flags [.], ack 15, win 340, options [nop,nop,TS val 1037001251 ecr 1037001251], length 0
10:20:55.014823 IP 127.0.0.1.43666 > 127.0.0.5.12345: Flags [F.], seq 2023663776, ack 2104268059, win 342, options [nop,nop,TS val 1037001251 ecr 1037001251], length 0
10:20:55.214088 IP 127.0.0.1.12345 > 127.0.0.1.43666: Flags [P.], seq 1:15, ack 6, win 342, options [nop,unknown-65 0x0a3dcf62eb3d,[bad opt]>
10:20:55.416087 IP 127.0.0.1.43666 > 127.0.0.1.12345: Flags [F.], seq 6, ack 15, win 342, options [nop,nop,TS val 1037001653 ecr 1037001251], length 0
10:20:55.416804 IP 127.0.0.1.12345 > 127.0.0.1.43666: Flags [F.], seq 15, ack 7, win 342, options [nop,nop,TS val 1037001653 ecr 1037001653], length 0
10:20:55.416818 IP 127.0.0.1.43666 > 127.0.0.1.12345: Flags [.], ack 16, win 343, options [nop,nop,TS val 1037001653 ecr 1037001653], length 0
10:20:56.147086 IP 127.0.0.1.12345 > 127.0.0.1.43666: Flags [F.], seq 15, ack 7, win 342, options [nop,nop,TS val 1037002384 ecr 1037001653], length 0
10:20:56.147101 IP 127.0.0.1.43666 > 127.0.0.1.12345: Flags [.], ack 16, win 342, options [nop,nop,TS val 1037002384 ecr 1037001653], length 0

рдпреЛ рджреЗрдЦреНрди рд╕рдХрд┐рдиреНрдЫ рдХрд┐ рдХреЗрд╣рд┐ рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВ рдмрд╛рд░рдореНрдмрд╛рд░ рдкрдард╛рдЗрдпреЛ рд░ рдЯреБрдЯреЗрдХреЛ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рднрдПрдХреЛ рдПрдЙрдЯрд╛ рдкреНрдпрд╛рдХреЗрдЯ рдЫ: рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ [рди, рдЕрдЬреНрдЮрд╛рдд-65 0x0a3dcf62eb3d, [рдЦрд░рд╛рдм рд╡рд┐рдХрд▓реНрдк]>ред рддрд░ рдореБрдЦреНрдп рдХреБрд░рд╛ рдпреЛ рд╣реЛ рдХрд┐ рдЕрдиреНрддрдорд╛ рд╕рдмреИ рдХреБрд░рд╛ рд╕рд╣реА рд░реВрдкрдорд╛ рдХрд╛рдо рдЧрд░реНрдпреЛ - TCP рд▓реЗ рдпрд╕рдХреЛ рдХрд╛рд░реНрдпрдХреЛ рд╕рд╛рдордирд╛ рдЧрд░реНрдпреЛред

рдкреНрдпрд╛рдХреЗрдЯ рдирдХреНрдХрд▓

рдЕрд░реБ рдХреЗ рдЧрд░реНрди рд╕рдХреНрдЫреМ netem? рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдкреНрдпрд╛рдХреЗрдЯ рд╣рд╛рдирд┐рдХреЛ рдЙрд▓реНрдЯреЛ рд╕реНрдерд┐рддрд┐ рдЕрдиреБрдХрд░рдг рдЧрд░реНрдиреБрд╣реЛрд╕реН - рдкреНрдпрд╛рдХреЗрдЯ рдирдХреНрдХрд▓ред рдпреЛ рдЖрджреЗрд╢рд▓реЗ 2 рддрд░реНрдХрд╣рд░реВ рдкрдирд┐ рд▓рд┐рдиреНрдЫ: рд╕рдореНрднрд╛рд╡реНрдпрддрд╛ рд░ рд╕рд╣рд╕рдВрдмрдВрдзред

tc qdisc change dev lo root netem duplicate 50% 25%

рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВрдХреЛ рдХреНрд░рдо рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрджреИ

рддрдкрд╛рдИрдВ рджреБрдИ рддрд░рд┐рдХрд╛рдорд╛ рдЭреЛрд▓рд╛ рдорд┐рд╢реНрд░рдг рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

рдкрд╣рд┐рд▓реЛрдорд╛, рдХреЗрд╣рд┐ рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВ рддреБрд░реБрдиреНрддреИ рдкрдард╛рдЗрдиреНрдЫ, рдмрд╛рдБрдХреА рдПрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдврд┐рд▓рд╛рдЗ рд╕рдВрдЧред рдХрд╛рдЧрдЬрд╛рддрдмрд╛рдЯ рдЙрджрд╛рд╣рд░рдг:

tc qdisc change dev lo root netem delay 10ms reorder 25% 50%

25% (рд░ 50% рдХреЛ рд╕рдореНрдмрдиреНрдз) рдХреЛ рд╕рдореНрднрд╛рд╡рдирд╛ рд╕рдВрдЧ рдкреНрдпрд╛рдХреЗрдЯ рддреБрд░реБрдиреНрддреИ рдкрдард╛рдЗрдиреЗрдЫ, рдмрд╛рдБрдХреА 10 рдорд┐рд▓рд┐рд╕реЗрдХреЗрдиреНрдб рдХреЛ рдврд┐рд▓рд╛рдЗ рд╕рдВрдЧ рдкрдард╛рдЗрдиреЗрдЫред

рджреЛрд╕реНрд░реЛ рд╡рд┐рдзрд┐ рд╣реЛ рдЬрдм рдкреНрд░рддреНрдпреЗрдХ Nth рдкреНрдпрд╛рдХреЗрдЯ рдПрдХ рджрд┐рдЗрдПрдХреЛ рд╕рдореНрднрд╛рд╡реНрдпрддрд╛ (рд░ рд╕рд╣рд╕рдВрдмрдВрдз) рд╕рдВрдЧ рддреБрд░реБрдиреНрддреИ рдкрдард╛рдЗрдиреНрдЫ, рд░ рдмрд╛рдБрдХреА рдПрдХ рджрд┐рдЗрдПрдХреЛ рдврд┐рд▓рд╛рдЗ рд╕рдВрдЧред рдХрд╛рдЧрдЬрд╛рддрдмрд╛рдЯ рдЙрджрд╛рд╣рд░рдг:

tc qdisc change dev lo root netem delay 10ms reorder 25% 50% gap 5

рдкреНрд░рддреНрдпреЗрдХ рдкрд╛рдБрдЪреМрдВ рдкреНрдпрд╛рдХреЗрдЬрдорд╛ рдврд┐рд▓рд╛рдЗ рдмрд┐рдирд╛ рдкрдард╛рдЗрдиреЗ 25% рдореМрдХрд╛ рдЫред

рдмреНрдпрд╛рдиреНрдбрд╡рд┐рде рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрджреИ

рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рд╕рдмреИ рдард╛рдЙрдБрдорд╛ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рд╕рдиреНрджрд░реНрдн рдЧрд░реНрдЫрдиреН TBF, рддрд░ рдорджреНрджрдд рд╕рдВрдЧ netem рддрдкрд╛рдИрдВ рдЗрдиреНрдЯрд░рдлреЗрд╕ рдмреНрдпрд╛рдиреНрдбрд╡рд┐рде рдкрдирд┐ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:

tc qdisc change dev lo root netem rate 56kbit

рдпреЛ рдЯреЛрд▓реАрд▓реЗ рд╡рд░рдкрд░ рдЯреНрд░реЗрдХ рдЧрд░реНрдиреЗрдЫ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдбрд╛рдпрд▓-рдЕрдк рдореЛрдбреЗрдо рдорд╛рд░реНрдлрдд рдЗрдиреНрдЯрд░рдиреЗрдЯ рд╕рд░реНрдлрд┐рдЩ рдЬрддреНрддрд┐рдХреИ рдкреАрдбрд╛рджрд╛рдпреАред рдмрд┐рдЯрд░реЗрдЯ рд╕реЗрдЯрд┐рдЩрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд, рддрдкрд╛рдЗрдБ рд▓рд┐рдЩреНрдХ рддрд╣ рдкреНрд░реЛрдЯреЛрдХрд▓ рдореЛрдбреЗрд▓ рдкрдирд┐ рдЕрдиреБрдХрд░рдг рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ: рдкреНрдпрд╛рдХреЗрдЯрдХреЛ рд▓рд╛рдЧрд┐ рдУрднрд░рд╣реЗрдб рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рд╕реЗрд▓ рд╕рд╛рдЗрдЬ, рд░ рд╕реЗрд▓рдХреЛ рд▓рд╛рдЧрд┐ рдУрднрд░рд╣реЗрдбред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдпреЛ рд╕рд┐рдореБрд▓реЗрдЯ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ ATM рд░ рдмрд┐рдЯрд░реЗрдЯ релрем kbit/sec:

tc qdisc change dev lo root netem rate 56kbit 0 48 5

рдЬрдбрд╛рди рдЯрд╛рдЗрдордЖрдЙрдЯ рд╕рд┐рдореБрд▓реЗрдЯ рдЧрд░реНрджреИ

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

рдпрд╕рдХрд╛ рд▓рд╛рдЧрд┐ рдзреЗрд░реИ рддрд░рд┐рдХрд╛рд╣рд░реВ рдЫрдиреН: рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирджрд┐рдиреЗ рдирдХреНрдХрд▓реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рд╡рд╛ рдбрд┐рдмрдЧрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдорд╛ рдЬрдбрд╛рди рдЧрд░реНрдиреБрд╣реЛрд╕реН, рд╕рд╣реА рдард╛рдЙрдБрдорд╛ рдмреНрд░реЗрдХрдкреЛрдЗрдиреНрдЯ рд░рд╛рдЦреНрдиреБрд╣реЛрд╕реН рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд░реЛрдХреНрдиреБрд╣реЛрд╕реН (рдпреЛ рд╕рдореНрднрд╡рддрдГ рд╕рдмреИрднрдиреНрджрд╛ рд╡рд┐рдХреГрдд рддрд░рд┐рдХрд╛ рд╣реЛ)ред рддрд░ рд╕рдмреИрднрдиреНрджрд╛ рд╕реНрдкрд╖реНрдЯ рдордзреНрдпреЗ рдПрдХ рдлрд╛рдпрд░рд╡рд╛рд▓ рдкреЛрд░реНрдЯ рд╡рд╛ рд╣реЛрд╕реНрдЯрд╣рд░реВ рд╣реЛред рдпрд╕рд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рдпрд╕рдорд╛ рдорджреНрджрдд рдЧрд░реНрдиреЗрдЫ iptables.

рдкреНрд░рджрд░реНрд╢рдирдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореА рдлрд╛рдпрд░рд╡рд╛рд▓ рдкреЛрд░реНрдЯ 12345 рд░ рд╣рд╛рдореНрд░реЛ рдЧреНрд░рд╛рд╣рдХ рд▓рд┐рдкрд┐ рдЪрд▓рд╛рдЙрдиреЗрдЫреМрдВред рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕ рдкреЛрд░реНрдЯрдорд╛ рдкреНрд░реЗрд╖рдХ рд╡рд╛ рдЖрдЧрдорди рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛рдорд╛ рдлрд╛рдпрд░рд╡рд╛рд▓ рдмрд╛рд╣рд┐рд░ рдЬрд╛рдиреЗ рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдореЗрд░реЛ рдЙрджрд╛рд╣рд░рдгрд╣рд░реВрдорд╛, рдЖрдЧрдорди рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВ рдлрд╛рдпрд░рд╡рд╛рд▓ рд╣реБрдиреЗрдЫрдиреН (рд╣рд╛рдореА рдЪреЗрди INPUT рд░ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВ --dport)ред рддреНрдпрд╕реНрддрд╛ рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВ TCP рдлреНрд▓реНрдпрд╛рдЧ RST рд╕рдБрдЧ DROP, REJECT рд╡рд╛ REJECT рд╣реБрди рд╕рдХреНрдЫ, рд╡рд╛ ICMP рд╣реЛрд╕реНрдЯ рдкрд╣реБрдБрдЪрдпреЛрдЧреНрдп рдЫреИрди (рд╡рд╛рд╕реНрддрд╡рдорд╛, рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛред icmp-рдкреЛрд░реНрдЯ-рдЕрдЧрдореНрдп, рд░ рдЬрд╡рд╛рдл рдкрдард╛рдЙрдиреЗ рдЕрд╡рд╕рд░ рдкрдирд┐ рдЫ icmp-net-рдЕрдЧрдореНрдп, icmp-рдкреНрд░реЛрдЯреЛ-рдЕрдЧрдореНрдп, icmp-net-рдкреНрд░рддрд┐рдмрдиреНрдзрд┐рдд ╨╕ icmp-рд╣реЛрд╕реНрдЯ-рдкреНрд░рддрд┐рдмрдиреНрдзрд┐рдд).

рдбреНрд░рдк

рдпрджрд┐ DROP рдХреЛ рд╕рд╛рде рдирд┐рдпрдо рдЫ рднрдиреЗ, рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВ "рдЧрд╛рдпрдм" рд╣реБрдиреЗрдЫрдиреНред

iptables -A INPUT -p tcp --dport 12345 -j DROP

рд╣рд╛рдореА рдХреНрд▓рд╛рдЗрдиреНрдЯ рд╕реБрд░реБ рдЧрд░реНрдЫреМрдВ рд░ рд╕рд░реНрднрд░рдорд╛ рдЬрдбрд╛рдирдХреЛ рдЪрд░рдгрдорд╛ рдлреНрд░рд┐рдЬ рднрдПрдХреЛ рджреЗрдЦреНрдЫреМрдВред рдЯреНрд░рд╛рдлрд┐рдХрд▓рд╛рдИ рд╣реЗрд░реМрдВ:
рдЯреНрд░рд╛рдлрд┐рдХ рдбрдореНрдк

[user@host ~]# tcpdump -i lo -nn port 12345
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 262144 bytes
08:28:20.213506 IP 127.0.0.1.32856 > 127.0.0.1.12345: Flags [S], seq 3019694933, win 43690, options [mss 65495,sackOK,TS val 1203046450 ecr 0,nop,wscale 7], length 0
08:28:21.215086 IP 127.0.0.1.32856 > 127.0.0.1.12345: Flags [S], seq 3019694933, win 43690, options [mss 65495,sackOK,TS val 1203047452 ecr 0,nop,wscale 7], length 0
08:28:23.219092 IP 127.0.0.1.32856 > 127.0.0.1.12345: Flags [S], seq 3019694933, win 43690, options [mss 65495,sackOK,TS val 1203049456 ecr 0,nop,wscale 7], length 0
08:28:27.227087 IP 127.0.0.1.32856 > 127.0.0.1.12345: Flags [S], seq 3019694933, win 43690, options [mss 65495,sackOK,TS val 1203053464 ecr 0,nop,wscale 7], length 0
08:28:35.235102 IP 127.0.0.1.32856 > 127.0.0.1.12345: Flags [S], seq 3019694933, win 43690, options [mss 65495,sackOK,TS val 1203061472 ecr 0,nop,wscale 7], length 0

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

рд╣рд╛рдореА рддреБрд░реБрдиреНрддреИ рдирд┐рдпрдо рд╣рдЯрд╛рдЙрдБрдЫреМрдВ:

iptables -D INPUT -p tcp --dport 12345 -j DROP

рддрдкрд╛рдИрдВ рдПрдХреИрдЪреЛрдЯрд┐ рд╕рдмреИ рдирд┐рдпрдорд╣рд░реВ рдореЗрдЯрд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:

iptables -F

рдпрджрд┐ рддрдкрд╛рдЗрдБ рдбрдХрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ рд╣реБрдиреБрд╣реБрдиреНрдЫ рд░ рддрдкрд╛рдЗрдБрд▓рд╛рдИ рдХрдиреНрдЯреЗрдирд░рдорд╛ рдЬрд╛рдиреЗ рд╕рдмреИ рдЯреНрд░рд╛рдлрд┐рдХ рдлрд╛рдпрд░рд╡рд╛рд▓ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рддреНрдпрд╕рдкрдЫрд┐ рддрдкрд╛рдЗрдБ рдпрд╕рд▓рд╛рдИ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:

iptables -I DOCKER-USER -p tcp -d CONTAINER_IP -j DROP

рдЕрд╕реНрд╡реАрдХреГрдд рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдЕрдм рдПрдХ рд╕рдорд╛рди рдирд┐рдпрдо рдердкреМрдВ, рддрд░ REJECT рд╕рдВрдЧ:

iptables -A INPUT -p tcp --dport 12345 -j REJECT

рдЧреНрд░рд╛рд╣рдХ рддреНрд░реБрдЯрд┐ рд╕рдВрдЧ рдПрдХ рд╕реЗрдХреЗрдиреНрдб рдкрдЫрд┐ рдмрд╛рд╣рд┐рд░ рдирд┐рд╕реНрдХрдиреНрдЫ [Errno 111] рдЬрдбрд╛рди рдЕрд╕реНрд╡реАрдХрд╛рд░ рдЧрд░рд┐рдпреЛред ICMP рдЯреНрд░рд╛рдлрд┐рдХ рд╣реЗрд░реМрдВ:

[user@host ~]# tcpdump -i lo -nn icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 262144 bytes
08:45:32.871414 IP 127.0.0.1 > 127.0.0.1: ICMP 127.0.0.1 tcp port 12345 unreachable, length 68
08:45:33.873097 IP 127.0.0.1 > 127.0.0.1: ICMP 127.0.0.1 tcp port 12345 unreachable, length 68

рдпреЛ рдЧреНрд░рд╛рд╣рдХрд▓реЗ рджреБрдИ рдкрдЯрдХ рдкреНрд░рд╛рдкреНрдд рдЧрд░реЗрдХреЛ рджреЗрдЦреНрди рд╕рдХрд┐рдиреНрдЫ рдкреЛрд░реНрдЯ рдкрд╣реБрдБрдЪрдпреЛрдЧреНрдп рдЫреИрди рд░ рддреНрдпрд╕рдкрдЫрд┐ рддреНрд░реБрдЯрд┐ рд╕рдВрдЧ рд╕рдорд╛рдкреНрдд рднрдпреЛред

tcp-рд░рд┐рд╕реЗрдЯрдХреЛ рд╕рд╛рде рдЕрд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН

рд╡рд┐рдХрд▓реНрдк рдердкреНрди рдкреНрд░рдпрд╛рд╕ рдЧрд░реМрдВ --reject-tcp-рд░рд┐рд╕реЗрдЯрдХреЛ рд╕рд╛рде:

iptables -A INPUT -p tcp --dport 12345 -j REJECT --reject-with tcp-reset

рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдЧреНрд░рд╛рд╣рдХ рддреБрд░реБрдиреНрддреИ рддреНрд░реБрдЯрд┐рдХреЛ рд╕рд╛рде рдмрд╛рд╣рд┐рд░ рдирд┐рд╕реНрдХрдиреНрдЫ, рдХрд┐рдирднрдиреЗ рдкрд╣рд┐рд▓реЛ рдЕрдиреБрд░реЛрдзрд▓реЗ RST рдкреНрдпрд╛рдХреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдпреЛ:

[user@host ~]# tcpdump -i lo -nn port 12345
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 262144 bytes
09:02:52.766175 IP 127.0.0.1.60658 > 127.0.0.1.12345: Flags [S], seq 1889460883, win 43690, options [mss 65495,sackOK,TS val 1205119003 ecr 0,nop,wscale 7], length 0
09:02:52.766184 IP 127.0.0.1.12345 > 127.0.0.1.60658: Flags [R.], seq 0, ack 1889460884, win 0, length 0

ICmp-host-unreachable рдХреЛ рд╕рд╛рде рдЕрд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН

REJECT рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдЕрд░реНрдХреЛ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рдпрд╛рд╕ рдЧрд░реМрдВ:

iptables -A INPUT -p tcp --dport 12345 -j REJECT --reject-with icmp-host-unreachable

рдЧреНрд░рд╛рд╣рдХ рддреНрд░реБрдЯрд┐ рд╕рдВрдЧ рдПрдХ рд╕реЗрдХреЗрдиреНрдб рдкрдЫрд┐ рдмрд╛рд╣рд┐рд░ рдирд┐рд╕реНрдХрдиреНрдЫ [Errno 113] рд╣реЛрд╕реНрдЯ рдЧрд░реНрди рдХреБрдиреИ рдорд╛рд░реНрдЧ рдЫреИрди, рд╣рд╛рдореА ICMP рдЯреНрд░рд╛рдлрд┐рдХрдорд╛ рджреЗрдЦреНрдЫреМрдВ ICMP рд╣реЛрд╕реНрдЯ 127.0.0.1 рдкрд╣реБрдБрдЪрдпреЛрдЧреНрдп рдЫреИрди.

рддрдкрд╛рдИрдВ рдкрдирд┐ рдЕрдиреНрдп REJECT рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рд░ рдо рдпреА рдорд╛ рдлреЛрдХрд╕ рдЧрд░реНрдиреЗрдЫреБ :)

рдЕрдиреБрдХрд░рдг рдЕрдиреБрд░реЛрдз рдЯрд╛рдЗрдордЖрдЙрдЯ

рдЕрд░реНрдХреЛ рдЕрд╡рд╕реНрдерд╛ рд╣реЛ рдЬрдм рдХреНрд▓рд╛рдЗрдиреНрдЯ рд╕рд░реНрднрд░рдорд╛ рдЬрдбрд╛рди рдЧрд░реНрди рд╕рдХреНрд╖рдо рдерд┐рдпреЛ, рддрд░ рдпрд╕рд▓рд╛рдИ рдЕрдиреБрд░реЛрдз рдкрдард╛рдЙрди рд╕рдХреНрджреИрдиред рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВ рдХрд╕рд░реА рдлрд┐рд▓реНрдЯрд░ рдЧрд░реНрдиреЗ рддрд╛рдХрд┐ рдлрд┐рд▓реНрдЯрд░рд┐рдЩ рддреБрд░реБрдиреНрддреИ рд╕реБрд░реБ рд╣реБрдБрджреИрди? рдпрджрд┐ рддрдкрд╛рдЗрдБ рдХреНрд▓рд╛рдЗрдиреНрдЯ рд░ рд╕рд░реНрднрд░ рдмреАрдЪрдХреЛ рдХреБрдиреИ рдкрдирд┐ рд╕рдВрдЪрд╛рд░рдХреЛ рдЯреНрд░рд╛рдлрд┐рдХ рд╣реЗрд░реНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБрд▓реЗ рдпрд╛рдж рдЧрд░реНрдиреБрд╣реБрдиреЗрдЫ рдХрд┐ рдЬрдбрд╛рди рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджрд╛, рдХреЗрд╡рд▓ SYN рд░ ACK рдлреНрд▓реНрдпрд╛рдЧрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ, рддрд░ рдбрд╛рдЯрд╛ рдЖрджрд╛рдирдкреНрд░рджрд╛рди рдЧрд░реНрджрд╛, рдЕрдиреНрддрд┐рдо рдЕрдиреБрд░реЛрдз рдкреНрдпрд╛рдХреЗрдЯрдорд╛ PSH рдЭрдгреНрдбрд╛ рд╕рдорд╛рд╡реЗрд╢ рд╣реБрдиреЗрдЫред рдпреЛ рдмрдлрд░рд┐рдЩрдмрд╛рдЯ рдмрдЪреНрди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рд╕реНрдерд╛рдкрдирд╛ рд╣реБрдиреНрдЫред рддрдкрд╛рдИрдВрд▓реЗ рдлрд┐рд▓реНрдЯрд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдпреЛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ: рдпрд╕рд▓реЗ PSH рдЭрдгреНрдбрд╛ рд╕рдорд╛рд╡реЗрд╢ рдмрд╛рд╣реЗрдХ рд╕рдмреИ рдкреНрдпрд╛рдХреЗрдЯрд╣рд░реВрд▓рд╛рдИ рдЕрдиреБрдорддрд┐ рджрд┐рдиреЗрдЫред рдпрд╕рд░реА, рдЬрдбрд╛рди рд╕реНрдерд╛рдкрд┐рдд рд╣реБрдиреЗрдЫ, рддрд░ рдЧреНрд░рд╛рд╣рдХрд▓реЗ рд╕рд░реНрднрд░рдорд╛ рдбрд╛рдЯрд╛ рдкрдард╛рдЙрди рд╕рдХреНрд╖рдо рд╣реБрдиреЗрдЫреИрдиред

рдбреНрд░рдк

DROP рдХреЛ рд▓рд╛рдЧрд┐ рдЖрджреЗрд╢ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ:

iptables -A INPUT -p tcp --tcp-flags PSH PSH --dport 12345 -j DROP

рдЧреНрд░рд╛рд╣рдХ рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдЯреНрд░рд╛рдлрд┐рдХ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН:

рдЯреНрд░рд╛рдлрд┐рдХ рдбрдореНрдк

[user@host ~]# tcpdump -i lo -nn port 12345
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 262144 bytes
10:02:47.549498 IP 127.0.0.1.49594 > 127.0.0.1.12345: Flags [S], seq 2166014137, win 43690, options [mss 65495,sackOK,TS val 1208713786 ecr 0,nop,wscale 7], length 0
10:02:47.549510 IP 127.0.0.1.12345 > 127.0.0.1.49594: Flags [S.], seq 2341799088, ack 2166014138, win 43690, options [mss 65495,sackOK,TS val 1208713786 ecr 1208713786,nop,wscale 7], length 0
10:02:47.549520 IP 127.0.0.1.49594 > 127.0.0.1.12345: Flags [.], ack 1, win 342, options [nop,nop,TS val 1208713786 ecr 1208713786], length 0
10:02:47.549568 IP 127.0.0.1.49594 > 127.0.0.1.12345: Flags [P.], seq 1:6, ack 1, win 342, options [nop,nop,TS val 1208713786 ecr 1208713786], length 5
10:02:47.750084 IP 127.0.0.1.49594 > 127.0.0.1.12345: Flags [P.], seq 1:6, ack 1, win 342, options [nop,nop,TS val 1208713987 ecr 1208713786], length 5
10:02:47.951088 IP 127.0.0.1.49594 > 127.0.0.1.12345: Flags [P.], seq 1:6, ack 1, win 342, options [nop,nop,TS val 1208714188 ecr 1208713786], length 5
10:02:48.354089 IP 127.0.0.1.49594 > 127.0.0.1.12345: Flags [P.], seq 1:6, ack 1, win 342, options [nop,nop,TS val 1208714591 ecr 1208713786], length 5

рд╣рд╛рдореА рджреЗрдЦреНрдЫреМрдВ рдХрд┐ рдЬрдбрд╛рди рд╕реНрдерд╛рдкрд┐рдд рдЫ рд░ рдЧреНрд░рд╛рд╣рдХрд▓реЗ рд╕рд░реНрднрд░рдорд╛ рдбрд╛рдЯрд╛ рдкрдард╛рдЙрди рд╕рдХреНрджреИрдиред

рдЕрд╕реНрд╡реАрдХреГрдд рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЙрд╕реНрддреИ рд╣реБрдиреЗрдЫ: рдЧреНрд░рд╛рд╣рдХрд▓реЗ рдЕрдиреБрд░реЛрдз рдкрдард╛рдЙрди рд╕рдХреНрд╖рдо рд╣реБрдиреЗрдЫреИрди, рддрд░ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗрдЫ ICMP 127.0.0.1 tcp рдкреЛрд░реНрдЯ 12345 рдкрд╣реБрдБрдЪрдпреЛрдЧреНрдп рдЫреИрди рд░ рдЕрдиреБрд░реЛрдз рдкреБрди: рдкреЗрд╕ рдЧрд░реНрдиреЗ рдмреАрдЪрдХреЛ рд╕рдордпрд▓рд╛рдИ рджреНрд░реБрдд рд░реВрдкрдорд╛ рдмрдврд╛рдЙрдиреБрд╣реЛрд╕реНред рдЖрджреЗрд╢ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ:

iptables -A INPUT -p tcp --tcp-flags PSH PSH --dport 12345 -j REJECT

tcp-рд░рд┐рд╕реЗрдЯрдХреЛ рд╕рд╛рде рдЕрд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдЖрджреЗрд╢ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ:

iptables -A INPUT -p tcp --tcp-flags PSH PSH --dport 12345 -j REJECT --reject-with tcp-reset

рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрд╛ рд╣рд╛рдореАрд▓рд╛рдИ рдкрд╣рд┐рд▓реЗ рдиреИ рдерд╛рд╣рд╛ рдЫ --reject-tcp-рд░рд┐рд╕реЗрдЯрдХреЛ рд╕рд╛рде рдЧреНрд░рд╛рд╣рдХрд▓реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдорд╛ RST рдкреНрдпрд╛рдХреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗрдЫ, рддреНрдпрд╕реИрд▓реЗ рд╡реНрдпрд╡рд╣рд╛рд░рдХреЛ рдЕрдиреБрдорд╛рди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ: рдЬрдбрд╛рди рд╕реНрдерд╛рдкрд┐рдд рд╣реБрдБрджрд╛ RST рдкреНрдпрд╛рдХреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреБ рднрдиреЗрдХреЛ рдЕрд░реНрдХреЛ рдЫреЗрдЙрдорд╛ рд╕рдХреЗрдЯ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдкрдорд╛ рдмрдиреНрдж рднрдПрдХреЛ рд╣реЛ, рдЬрд╕рдХреЛ рдорддрд▓рдм рдЧреНрд░рд╛рд╣рдХрд▓реЗ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреБрдкрд░реНрдЫред рдкрд┐рдпрд░ рджреНрд╡рд╛рд░рд╛ рдЬрдбрд╛рди рд░рд┐рд╕реЗрдЯред рд╣рд╛рдореНрд░реЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН рд░ рдпреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реНред рд░ рдпреЛ рдЯреНрд░рд╛рдлрд┐рдХ рдХрд╕реНрддреЛ рджреЗрдЦрд┐рдиреЗрдЫ:

рдЯреНрд░рд╛рдлрд┐рдХ рдбрдореНрдк

[user@host ~]# tcpdump -i lo -nn port 12345
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 262144 bytes
10:22:14.186269 IP 127.0.0.1.52536 > 127.0.0.1.12345: Flags [S], seq 2615137531, win 43690, options [mss 65495,sackOK,TS val 1209880423 ecr 0,nop,wscale 7], length 0
10:22:14.186284 IP 127.0.0.1.12345 > 127.0.0.1.52536: Flags [S.], seq 3999904809, ack 2615137532, win 43690, options [mss 65495,sackOK,TS val 1209880423 ecr 1209880423,nop,wscale 7], length 0
10:22:14.186293 IP 127.0.0.1.52536 > 127.0.0.1.12345: Flags [.], ack 1, win 342, options [nop,nop,TS val 1209880423 ecr 1209880423], length 0
10:22:14.186338 IP 127.0.0.1.52536 > 127.0.0.1.12345: Flags [P.], seq 1:6, ack 1, win 342, options [nop,nop,TS val 1209880423 ecr 1209880423], length 5
10:22:14.186344 IP 127.0.0.1.12345 > 127.0.0.1.52536: Flags [R], seq 3999904810, win 0, length 0

ICmp-host-unreachable рдХреЛ рд╕рд╛рде рдЕрд╕реНрд╡реАрдХрд╛рд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдорд▓рд╛рдИ рд▓рд╛рдЧреНрдЫ рдХрд┐ рдпреЛ рдЖрджреЗрд╢ рдХрд╕реНрддреЛ рджреЗрдЦрд┐рдиреЗрдЫ рд╕рдмреИрд▓рд╛рдИ рдкрд╣рд┐рд▓реЗ рдиреИ рд╕реНрдкрд╖реНрдЯ рдЫ :) рдпрд╕ рдорд╛рдорд▓рд╛ рдорд╛ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг REJECT рд╕рдВрдЧ рддреНрдпреЛ рднрдиреНрджрд╛ рдЕрд▓рд┐ рдлрд░рдХ рд╣реБрдиреЗрдЫ: рдЧреНрд░рд╛рд╣рдХрд▓реЗ рдкреНрдпрд╛рдХреЗрдЯ рдкреБрди: рдкрдард╛рдЙрдиреЗ рдкреНрд░рдпрд╛рд╕ рдмреАрдЪрдХреЛ рд╕рдордпрд╛рд╡рдзрд┐ рдмрдврд╛рдЙрдиреЗ рдЫреИрдиред

[user@host ~]# tcpdump -i lo -nn icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on lo, link-type EN10MB (Ethernet), capture size 262144 bytes
10:29:56.149202 IP 127.0.0.1 > 127.0.0.1: ICMP host 127.0.0.1 unreachable, length 65
10:29:56.349107 IP 127.0.0.1 > 127.0.0.1: ICMP host 127.0.0.1 unreachable, length 65
10:29:56.549117 IP 127.0.0.1 > 127.0.0.1: ICMP host 127.0.0.1 unreachable, length 65
10:29:56.750125 IP 127.0.0.1 > 127.0.0.1: ICMP host 127.0.0.1 unreachable, length 65
10:29:56.951130 IP 127.0.0.1 > 127.0.0.1: ICMP host 127.0.0.1 unreachable, length 65
10:29:57.152107 IP 127.0.0.1 > 127.0.0.1: ICMP host 127.0.0.1 unreachable, length 65
10:29:57.353115 IP 127.0.0.1 > 127.0.0.1: ICMP host 127.0.0.1 unreachable, length 65

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

рд╣рдЩ рдХреНрд▓рд╛рдЗрдиреНрдЯ рд╡рд╛ рд╕рд░реНрднрд░рд╕рдБрдЧ рд╕реЗрд╡рд╛рдХреЛ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрди рдирдХреНрдХрд▓реА рд▓реЗрдЦреНрди рдЖрд╡рд╢реНрдпрдХ рдЫреИрди; рдХрд╣рд┐рд▓реЗрдХрд╛рд╣реАрдБ рд▓рд┐рдирдХреНрд╕рдорд╛ рдкрд╛рдЗрдиреЗ рдорд╛рдирдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдкрд░реНрдпрд╛рдкреНрдд рд╣реБрдиреНрдЫред

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

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди