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

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

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

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

рдиреЗрдЯрд╡рд░реНрдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдЕрдиреБрдХрд░рдг

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

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

рдЖрдЗрдП рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ рдЗрдХреЛ рд╕рд░реНрд╡рд░ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВ (рдореИрдВрдиреЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛)ред 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

рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдореЗрдВ рдЖрдзреЗ рд╕реЗрдХрдВрдб рдХрд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд рдЕрдВрддрд░рд╛рд▓ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рд╣реИред рдпрджрд┐ рдЕрдВрддрд░рд╛рд▓ рдЕрдзрд┐рдХ рд╣реИ рддреЛ рд╕рд┐рд╕реНрдЯрдо рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рддрд░реАрдХреЗ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ: рдХрд░реНрдиреЗрд▓ рдХреБрдЫ рдЯреАрд╕реАрдкреА рдкреИрдХреЗрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рднреЗрдЬрдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИред рдЖрдЗрдП рд╡рд┐рд▓рдВрдм рдХреЛ 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%

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЯреАрд╕реАрдкреАрдбрдореНрдк рд╣рдореЗрдВ рдкреИрдХреЗрдЯреЛрдВ рдХрд╛ рдиреБрдХрд╕рд╛рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рджрд┐рдЦрд╛ рдкрд╛рдПрдВрдЧреЗ, рд╣рдо рдХреЗрд╡рд▓ рдпрд╣ рдорд╛рди рд▓реЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдмрдврд╝рд╛ рд╣реБрдЖ рдФрд░ рдЕрд╕реНрдерд┐рд░ рдЪрд▓рдиреЗ рдХрд╛ рд╕рдордп рд╣рдореЗрдВ рдЗрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред client.py (рддрддреНрдХрд╛рд▓ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рд╢рд╛рдпрдж 20 рд╕реЗрдХрдВрдб рдореЗрдВ), рд╕рд╛рде рд╣реА рдкреБрди: рдкреНрд░реЗрд╖рд┐рдд рдкреИрдХреЗрдЯреЛрдВ рдХреА рдмрдврд╝реА рд╣реБрдИ рд╕рдВрдЦреНрдпрд╛:

[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%

рд╣рдо рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рддреЗ рд╣реИрдВ (рд╡рд╣рд╛рдВ рдХреБрдЫ рднреА рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдореЗрдВ 2 рд╕реЗрдХрдВрдб рд▓рдЧреЗ), рдЯреНрд░реИрдлрд╝рд┐рдХ рджреЗрдЦреЗрдВ:

рдЯреНрд░реИрдлрд┐рдХ рдбрдВрдк

[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

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

рдкреИрдХреЗрдЯ рджреЛрд╣рд░рд╛рд╡

рдЖрдк рдФрд░ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдиреЗрдЯреЗрдо? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреИрдХреЗрдЯ рд╣рд╛рдирд┐-рдкреИрдХреЗрдЯ рджреЛрд╣рд░рд╛рд╡ рдХреА рд╡рд┐рдкрд░реАрдд рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░реЗрдВред рдпрд╣ рдЖрджреЗрд╢ рднреА 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% рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред

рдмреИрдВрдбрд╡рд┐рдбреНрде рдмрджрд▓рдирд╛

рдЖрдорддреМрд░ рдкрд░ рд╣рд░ рдЬрдЧрд╣ рд╡реЗ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВ рдЯреАрдмреАрдПрдл, рд▓реЗрдХрд┐рди рдорджрдж рд╕реЗ рдиреЗрдЯреЗрдо рдЖрдк рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмреИрдВрдбрд╡рд┐рдбреНрде рднреА рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ:

tc qdisc change dev lo root netem rate 56kbit

рдпрд╣ рдЯреАрдо рдЪрд╛рд░реЛрдВ рдУрд░ рдкрджрдпрд╛рддреНрд░рд╛ рдХрд░реЗрдЧреА рд╕реНрдерд╛рдиреАрдп рд╣реЛрд╕реНрдЯ рдбрд╛рдпрд▓-рдЕрдк рдореЙрдбреЗрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рд╕рд░реНрдлрд┐рдВрдЧ рдЬрд┐рддрдирд╛ рджрд░реНрджрдирд╛рдХред рдмрд┐рдЯрд░реЗрдЯ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рд▓рд┐рдВрдХ рд▓реЗрдпрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореЙрдбрд▓ рдХрд╛ рдЕрдиреБрдХрд░рдг рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдкреИрдХреЗрдЯ рдХреЗ рд▓рд┐рдП рдУрд╡рд░рд╣реЗрдб, рд╕реЗрд▓ рдЖрдХрд╛рд░ рдФрд░ рд╕реЗрд▓ рдХреЗ рд▓рд┐рдП рдУрд╡рд░рд╣реЗрдб рд╕реЗрдЯ рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдПрдЯреАрдПрдо рдФрд░ рдмрд┐рдЯрд░реЗрдЯ 56 kbit/рд╕реЗрдХрдВрдб:

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

рдХрдиреЗрдХреНрд╢рди рдЯрд╛рдЗрдордЖрдЙрдЯ рдХрд╛ рдЕрдиреБрдХрд░рдг

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

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

рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП, рд╣рдо рдкреЛрд░реНрдЯ 12345 рдХреЛ рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЕрдкрдиреА рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдПрдВрдЧреЗред рдЖрдк рдЗрд╕ рдкреЛрд░реНрдЯ рдкрд░ рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдкреИрдХреЗрдЯ рдХреЛ рдкреНрд░реЗрд╖рдХ рдкрд░ рдпрд╛ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдкреИрдХреЗрдЯ рдХреЛ рд░рд┐рд╕реАрд╡рд░ рдкрд░ рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рдЖрдиреЗ рд╡рд╛рд▓реЗ рдкреИрдХреЗрдЯреЛрдВ рдХреЛ рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рд╣рдо рд╢реНрд░реГрдВрдЦрд▓рд╛ INPUT рдФрд░ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ --dport). рдРрд╕реЗ рдкреИрдХреЗрдЯ рдЯреАрд╕реАрдкреА рдзреНрд╡рдЬ рдЖрд░рдПрд╕рдЯреА рдХреЗ рд╕рд╛рде рдбреНрд░реЙрдк, рд░рд┐рдЬреЗрдХреНрдЯ рдпрд╛ рд░рд┐рдЬреЗрдХреНрдЯ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЖрдИрд╕реАрдПрдордкреА рд╣реЛрд╕реНрдЯ рдкрд╣реБрдВрдЪ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ рдЖрдИрд╕реАрдПрдордкреА-рдкреЛрд░реНрдЯ-рдкрд╣реБрдБрдЪ рдпреЛрдЧреНрдп рдирд╣реАрдВ, рдФрд░ рдЙрддреНрддрд░ рднреЗрдЬрдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рднреА рд╣реИ рдЖрдИрд╕реАрдПрдордкреА-рдиреЗрдЯ-рдкрд╣реБрдБрдЪ рдпреЛрдЧреНрдп рдирд╣реАрдВ, рдЖрдИрд╕реАрдПрдордкреА-рдкреНрд░реЛрдЯреЛ-рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рдирд╣реАрдВ, рдЖрдИрд╕реАрдПрдордкреА-рдиреЗрдЯ-рдирд┐рд╖рд┐рджреНрдз ╨╕ рдЖрдИрд╕реАрдПрдордкреА-рд╣реЛрд╕реНрдЯ-рдирд┐рд╖рд┐рджреНрдз).

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

рдпрджрд┐ 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

рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдХ рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рдЬрд╛рддрд╛ рд╣реИ [рдПрд░реНрдиреЛ 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

рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рджреЛ рдмрд╛рд░ рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ рдмрдВрджрд░рдЧрд╛рд╣ рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ рдФрд░ рдлрд┐рд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реБрдЖред

рдЯреАрд╕реАрдкреА-рд░реАрд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ

рдЖрдЗрдП рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ --рдЕрд╕реНрд╡реАрдХрд╛рд░-рдЯреАрд╕реАрдкреА-рд░реАрд╕реЗрдЯ рдХреЗ рд╕рд╛рде:

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

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреНрд▓рд╛рдЗрдВрдЯ рддреБрд░рдВрдд рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкрд╣рд▓реЗ рдЕрдиреБрд░реЛрдз рдХреЛ рдПрдХ рдЖрд░рдПрд╕рдЯреА рдкреИрдХреЗрдЯ рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ рдерд╛:

[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

рдЖрдИрд╕реАрдПрдордкреА-рд╣реЛрд╕реНрдЯ-рдЕрдирд░реАрдЪреЗрдмрд▓ рдХреЗ рд╕рд╛рде рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ

рдЖрдЗрдП REJECT рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдЖрдЬрд╝рдорд╛рдПрдБ:

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

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

рдЖрдк рдЕрдиреНрдп рдЕрд╕реНрд╡реАрдХрд╛рд░ рдкреИрд░рд╛рдореАрдЯрд░ рднреА рдЖрдЬрд╝рдорд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдореИрдВ рдЗрди рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реВрдВрдЧрд╛ :)

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

рджреВрд╕рд░реА рд╕реНрдерд┐рддрд┐ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕реЗ рдЕрдиреБрд░реЛрдз рдирд╣реАрдВ рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИред рдкреИрдХреЗрдЯреЛрдВ рдХреЛ рдХреИрд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рддреБрд░рдВрдд рд╢реБрд░реВ рди рд╣реЛ? рдпрджрд┐ рдЖрдк рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рдХрд┐рд╕реА рднреА рд╕рдВрдЪрд╛рд░ рдХреЗ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп, рдХреЗрд╡рд▓ 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

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

рдЕрд╕реНрд╡реАрдХрд╛рд░

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕рдорд╛рди рд╣реЛрдЧрд╛: рдЧреНрд░рд╛рд╣рдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ рдЖрдИрд╕реАрдПрдордкреА 127.0.0.1 рдЯреАрд╕реАрдкреА рдкреЛрд░реНрдЯ 12345 рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ рдФрд░ рдЕрдиреБрд░реЛрдз рдкреБрдирдГ рд╕рдмрдорд┐рдЯ рдХрд░рдиреЗ рдХреЗ рдмреАрдЪ рдХрд╛ рд╕рдордп рддреЗрдЬреА рд╕реЗ рдмрдврд╝рд╛рдПрдВред рдЖрджреЗрд╢ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

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

рдЯреАрд╕реАрдкреА-рд░реАрд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ

рдЖрджреЗрд╢ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

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

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

рдЯреНрд░реИрдлрд┐рдХ рдбрдВрдк

[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

рдЖрдИрд╕реАрдПрдордкреА-рд╣реЛрд╕реНрдЯ-рдЕрдирд░реАрдЪреЗрдмрд▓ рдХреЗ рд╕рд╛рде рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ

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

[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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ