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

рд╕рд░реНрд╡рд╛рдВрдирд╛ рдирдорд╕реНрдХрд╛рд░, рдорд╛рдЭреЗ рдирд╛рд╡ рд╕рд╛рд╢рд╛ рдЖрд╣реЗ, рдореА FunCorp рд╡рд░ рдмреЕрдХрдПрдВрдб рдЪрд╛рдЪрдгреАрдЪреЗ рдиреЗрддреГрддреНрд╡ рдХрд░рддреЗ. рдЖрдореНрд╣реА, рдЗрддрд░ рдЕрдиреЗрдХрд╛рдВрдкреНрд░рдорд╛рдгреЗ, рд╕реЗрд╡рд╛-рджреЗрдгрд╛рд░рдВ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдЖрд╣реЗ. рдПрдХреАрдХрдбреЗ, рд╣реЗ рдХрд╛рдо рд╕реБрд▓рдн рдХрд░рддреЗ, рдХрд╛рд░рдг... рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд╡реЗрдЪреА рд╕реНрд╡рддрдВрддреНрд░рдкрдгреЗ рдЪрд╛рдЪрдгреА рдХрд░рдгреЗ рд╕реЛрдкреЗ рдЖрд╣реЗ, рдкрд░рдВрддреБ рджреБрд╕рд░реАрдХрдбреЗ, рдПрдХрдореЗрдХрд╛рдВрд╢реА рд╕реЗрд╡рд╛рдВрдЪреНрдпрд╛ рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рджрд╛рдЪреА рдЪрд╛рдЪрдгреА рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рдЬреЗ рдмрд░реНрдпрд╛рдЪрджрд╛ рдиреЗрдЯрд╡рд░реНрдХрд╡рд░ рд╣реЛрддреЗ.

рдпрд╛ рд▓реЗрдЦрд╛рдд, рдореА рдиреЗрдЯрд╡рд░реНрдХ рд╕рдорд╕реНрдпрд╛рдВрдЪреНрдпрд╛ рдЙрдкрд╕реНрдерд┐рддреАрдд рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдЪреНрдпрд╛ рдСрдкрд░реЗрд╢рдирдЪреЗ рд╡рд░реНрдгрди рдХрд░рдгрд╛рд░реНрдпрд╛ рдореВрд▓рднреВрдд рдкрд░рд┐рд╕реНрдерд┐рддреА рддрдкрд╛рд╕рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реНрдпрд╛ рдЬрд╛рдгрд╛рд░реНтАНрдпрд╛ рджреЛрди рдЙрдкрдпреБрдХреНрддрддрд╛рдВрдмрджреНрджрд▓ рдмреЛрд▓реВ.

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

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

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

tc(abbr рд╡рд╛рд╣рддреВрдХ рдирд┐рдпрдВрддреНрд░рдг рдкрд╛рд╕реВрди) рддреБрдореНрд╣рд╛рд▓рд╛ рд╕рд┐рд╕реНрдЯрдордордзреАрд▓ рдиреЗрдЯрд╡рд░реНрдХ рдкреЕрдХреЗрдЯреНрд╕рдЪреЗ рдкреНрд░рд╕рд╛рд░рдг рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ. рдпрд╛ рдпреБрдЯрд┐рд▓рд┐рдЯреАрдордзреНрдпреЗ рдЙрддреНрдХреГрд╖реНрдЯ рдХреНрд╖рдорддрд╛ рдЖрд╣реЗрдд, рдЖрдкрдг рддреНрдпрд╛рдВрдЪреНрдпрд╛рдмрджреНрджрд▓ рдЕрдзрд┐рдХ рд╡рд╛рдЪреВ рд╢рдХрддрд╛ рдпреЗрдереЗ. рдпреЗрдереЗ рдореА рддреНрдпрд╛рдкреИрдХреА рдлрдХреНрдд рдХрд╛рд╣реАрдВрдЪрд╛ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрди: рдЖрдореНрд╣рд╛рд▓рд╛ рд░рд╣рджрд╛рд░реА рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧрдордзреНрдпреЗ рд╕реНрд╡рд╛рд░рд╕реНрдп рдЖрд╣реЗ, рдЬреНрдпрд╛рд╕рд╛рдареА рдЖрдореНрд╣реА рд╡рд╛рдкрд░рддреЛ qdisc, рдЖрдгрд┐ рдЖрдореНрд╣рд╛рд▓рд╛ рдЕрд╕реНрдерд┐рд░ рдиреЗрдЯрд╡рд░реНрдХрдЪреЗ рдЕрдиреБрдХрд░рдг рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рдЖрдореНрд╣реА classless 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

рдХреНрд▓рд╛рдпрдВрдЯ рдЖрдгрд┐ рд╕рд░реНрд╡реНрд╣рд░рдордзреАрд▓ рдкрд░рд╕реНрдкрд░рд╕рдВрд╡рд╛рджрд╛рдордзреНрдпреЗ рдЕрд░реНрдзрд╛ рд╕реЗрдХрдВрджрд╛рдЪрд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд рдЕрдВрддрд░ рджрд┐рд╕реВрди рдЖрд▓рд╛ рдЖрд╣реЗ рд╣реЗ рддреБрдореНрд╣реА рдкрд╛рд╣реВ рд╢рдХрддрд╛. рдЬрд░ рдЕрдВрддрд░ рдЬрд╛рд╕реНрдд рдЕрд╕реЗрд▓ рддрд░ рдкреНрд░рдгрд╛рд▓реА рдЕрдзрд┐рдХ рдордиреЛрд░рдВрдЬрдХрдкрдгреЗ рд╡рд╛рдЧрддреЗ: рдХрд░реНрдирд▓ рдХрд╛рд╣реА 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 (рддреНрд╡рд░рд┐рдд рдкреВрд░реНрдг рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ, рдХрд┐рдВрд╡рд╛ рдХрджрд╛рдЪрд┐рдд 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

рд╣реЗ рдкрд╛рд╣рд┐рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ рдХреА рдХрд╛рд╣реА рдкреЕрдХреЗрдЯ рд╡рд╛рд░рдВрд╡рд╛рд░ рдкрд╛рдард╡рд▓реЗ рдЧреЗрд▓реЗ рд╣реЛрддреЗ рдЖрдгрд┐ рддреБрдЯрд▓реЗрд▓реНрдпрд╛ рдореЗрдЯрд╛рдбреЗрдЯрд╛рд╕рд╣ рдПрдХ рдкреЕрдХреЗрдЯ рдЖрд╣реЗ: рдкрд░реНрдпрд╛рдп [рдирд╛рд╣реА, рдЕрдЬреНрдЮрд╛рдд-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

рд╣реА рдЯреАрдо рдЖрдЬреВрдмрд╛рдЬреВрд▓рд╛ рдЯреНрд░реЗрдХ рдХрд░реЗрд▓ localhost рдбрд╛рдпрд▓-рдЕрдк рдореЙрдбреЗрдорджреНрд╡рд╛рд░реЗ рдЗрдВрдЯрд░рдиреЗрдЯ рд╕рд░реНрдл рдХрд░рдгреНрдпрд╛рдЗрддрдХреЗ рд╡реЗрджрдирд╛рджрд╛рдпрдХ. рдмрд┐рдЯрд░реЗрдЯ рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рддреБрдореНрд╣реА рд▓рд┐рдВрдХ рд▓реЗрдпрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореЙрдбреЗрд▓рдЪреЗ рдЕрдиреБрдХрд░рдг рджреЗрдЦреАрд▓ рдХрд░реВ рд╢рдХрддрд╛: рдкреЕрдХреЗрдЯрд╕рд╛рдареА рдУрд╡реНрд╣рд░рд╣реЗрдб, рд╕реЗрд▓ рдЖрдХрд╛рд░ рдЖрдгрд┐ рд╕реЗрд▓рд╕рд╛рдареА рдУрд╡реНрд╣рд░рд╣реЗрдб рд╕реЗрдЯ рдХрд░рд╛. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд╣реЗ рдЕрдиреБрдХрд░рдг рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ рдПрдЯреАрдПрдо рдЖрдгрд┐ рдмрд┐рдЯрд░реЗрдЯ 56 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-рдиреЗрдЯ-рдЕрдЧрдореНрдп, icmp-рдкреНрд░реЛрдЯреЛ-рдЕрдЧрдореНрдп, icmp-рдиреЗрдЯ-рдирд┐рд╖рд┐рджреНрдз ╨╕ 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

рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд, рдХреНрд▓рд╛рдпрдВрдЯ рддрд╛рдмрдбрддреЛрдм рддреНрд░реБрдЯреАрд╕рд╣ рдмрд╛рд╣реЗрд░ рдкрдбрддреЛ, рдХрд╛рд░рдг рдкрд╣рд┐рд▓реНрдпрд╛ рд╡рд┐рдирдВрддреАрд▓рд╛ рдЖрд░рдПрд╕рдЯреА рдкреЕрдХреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдЭрд╛рд▓реЗ:

[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-рд╣реЛрд╕реНрдЯ-рдЕрдЧрдореНрдп рд╕рд╣ рдирдХрд╛рд░ рджреНрдпрд╛

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-рд░реАрд╕реЗрдЯрд╕рд╣ рдХреНрд▓рд╛рдпрдВрдЯрд▓рд╛ рдкреНрд░рддрд┐рд╕рд╛рджрд╛рдд рдЖрд░рдПрд╕рдЯреА рдкреЕрдХреЗрдЯ рдорд┐рд│реЗрд▓, рддреНрдпрд╛рдореБрд│реЗ рд╡рд░реНрддрдирд╛рдЪрд╛ рдЕрдВрджрд╛рдЬ рд▓рд╛рд╡рд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ: рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдЕрд╕рддрд╛рдирд╛ рдЖрд░рдПрд╕рдЯреА рдкреЕрдХреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреЗ рдореНрд╣рдгрдЬреЗ рд╕реЙрдХреЗрдЯ рдЕрдирдкреЗрдХреНрд╖рд┐рддрдкрдгреЗ рджреБрд╕рд▒реНрдпрд╛ рдмрд╛рдЬреВрд▓рд╛ рдмрдВрдж рдЖрд╣реЗ, рдпрд╛рдЪрд╛ рдЕрд░реНрде рдХреНрд▓рд╛рдпрдВрдЯрд▓рд╛ рдкреНрд░рд╛рдкреНрдд рдЭрд╛рд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ рдкреАрдЕрд░рджреНрд╡рд╛рд░реЗ рдХрдиреЗрдХреНрд╢рди рд░реАрд╕реЗрдЯ рдХреЗрд▓реЗ. рдЪрд▓рд╛ рдЖрдордЪреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд╛рд▓рд╡реВ рдЖрдгрд┐ рдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░реВ. рдЖрдгрд┐ рд░рд╣рджрд╛рд░реА рдЕрд╕реЗ рджрд┐рд╕реЗрд▓:

рд╡рд╛рд╣рддреВрдХ рдХреЛрдВрдбреА

[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-рд╣реЛрд╕реНрдЯ-рдЕрдЧрдореНрдп рд╕рд╣ рдирдХрд╛рд░ рджреНрдпрд╛

рдорд▓рд╛ рд╡рд╛рдЯрддреЗ рдХреА рдХрдорд╛рдВрдб рдХрд╢реА рджрд┐рд╕реЗрд▓ рд╣реЗ рд╕рд░реНрд╡рд╛рдВрд╕рд╛рдареА рдЖрдзреАрдЪ рд╕реНрдкрд╖реНрдЯ рдЖрд╣реЗ :) рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд рдХреНрд▓рд╛рдпрдВрдЯрдЪреЗ рд╡рд░реНрддрди рдПрдХрд╛ рд╕рд╛рдзреНрдпрд╛ рд░рд┐рдЬреЗрдХреНрдЯрд╕рд╣ рдереЛрдбреЗрд╕реЗ рд╡реЗрдЧрд│реЗ рдЕрд╕реЗрд▓: рдХреНрд▓рд╛рдпрдВрдЯ рдкреЕрдХреЗрдЯ рдкреБрдиреНрд╣рд╛ рдкрд╛рдард╡рдгреНрдпрд╛рдЪреНрдпрд╛ рдкреНрд░рдпрддреНрдирд╛рдВрдордзреАрд▓ рдХрд╛рд▓рдмрд╛рд╣реНрдп рд╡рд╛рдврд╡рдгрд╛рд░ рдирд╛рд╣реА.

[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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛