Linux เชฎเชพเช‚ เชจเซ‡เชŸเชตเชฐเซเช• เชธเชฎเชธเซเชฏเชพเช“เชจเซเช‚ เช…เชจเซเช•เชฐเชฃ เช•เชฐเชตเซเช‚

เชฌเชงเชพเชจเซ‡ เชจเชฎเชธเซเช•เชพเชฐ, เชฎเชพเชฐเซเช‚ เชจเชพเชฎ เชธเชพเชถเชพ เช›เซ‡, เชนเซเช‚ เชซเชจเช•เซ‹เชฐเซเชชเชฎเชพเช‚ เชฌเซ‡เช•เชเชจเซเชก เชชเชฐเซ€เช•เซเชทเชฃเชจเซเช‚ เชจเซ‡เชคเซƒเชคเซเชต เช•เชฐเซเช‚ เช›เซเช‚. เช…เชฎเซ‡, เช…เชจเซเชฏ เช˜เชฃเชพ เชฒเซ‹เช•เซ‹เชจเซ€ เชœเซ‡เชฎ, เชธเซ‡เชตเชพ-เชฒเช•เซเชทเซ€ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐเชจเซ‹ เช…เชฎเชฒ เช•เชฐเซเชฏเซ‹ เช›เซ‡. เชเช• เชคเชฐเชซ, เช† เช•เชพเชฎเชจเซ‡ เชธเชฐเชณ เชฌเชจเชพเชตเซ‡ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡... เชฆเชฐเซ‡เช• เชธเซ‡เชตเชพเชจเซเช‚ เช…เชฒเช—เชฅเซ€ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเชตเซเช‚ เชธเชฐเชณ เช›เซ‡, เชชเชฐเช‚เชคเซ เชฌเซ€เชœเซ€ เชฌเชพเชœเซ, เชเช•เชฌเซ€เชœเชพ เชธเชพเชฅเซ‡ เชธเซ‡เชตเชพเช“เชจเซ€ เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชšเช•เชพเชธเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เชœเซ‡ เช˜เชฃเซ€เชตเชพเชฐ เชจเซ‡เชŸเชตเชฐเซเช• เชชเชฐ เชฅเชพเชฏ เช›เซ‡.

เช† เชฒเซ‡เช–เชฎเชพเช‚, เชนเซเช‚ เชฌเซ‡ เช‰เชชเชฏเซ‹เช—เชฟเชคเชพเช“ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€เชถ เชœเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชจเซ‡เชŸเชตเชฐเซเช• เชธเชฎเชธเซเชฏเชพเช“เชจเซ€ เชนเชพเชœเชฐเซ€เชฎเชพเช‚ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเชพ เชธเช‚เชšเชพเชฒเชจเชจเซเช‚ เชตเชฐเซเชฃเชจ เช•เชฐเชคเชพ เชฎเซ‚เชณเชญเซ‚เชค เชฆเซƒเชถเซเชฏเซ‹เชจเซ‡ เชคเชชเชพเชธเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡.

Linux เชฎเชพเช‚ เชจเซ‡เชŸเชตเชฐเซเช• เชธเชฎเชธเซเชฏเชพเช“เชจเซเช‚ เช…เชจเซเช•เชฐเชฃ เช•เชฐเชตเซเช‚

เชจเซ‡เชŸเชตเชฐเซเช• เชธเชฎเชธเซเชฏเชพเช“เชจเซเช‚ เช…เชจเซเช•เชฐเชฃ

เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เชธเชพเชฐเชพ เชˆเชจเซเชŸเชฐเชจเซ‡เชŸ เช•เชจเซ‡เช•เซเชถเชจ เชธเชพเชฅเซ‡ เชŸเซ‡เชธเซเชŸ เชธเชฐเซเชตเชฐเซเชธ เชชเชฐ เชธเซ‹เชซเซเชŸเชตเซ‡เชฐเชจเซเช‚ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช•เช เซ‹เชฐ เช‰เชคเซเชชเชพเชฆเชจ เชตเชพเชคเชพเชตเชฐเชฃเชฎเชพเช‚, เชตเชธเซเชคเซเช“ เชเชŸเชฒเซ€ เชธเชฐเชณ เชจ เชนเซ‹เชˆ เชถเช•เซ‡, เชคเซ‡เชฅเซ€ เช•เซ‡เชŸเชฒเซ€เช•เชตเชพเชฐ เชคเชฎเชพเชฐเซ‡ เชจเชฌเชณเซ€ เช•เชจเซ‡เช•เซเชถเชจ เชธเซเชฅเชฟเชคเชฟเชฎเชพเช‚ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเซเชธเชจเซเช‚ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเซ‡ เช›เซ‡. 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,[เช–เชฐเชพเชฌ เชตเชฟเช•เชฒเซเชช]>. เชชเชฐเช‚เชคเซ เชฎเซเช–เซเชฏ เชตเชธเซเชคเซ เช เช›เซ‡ เช•เซ‡ เช…เช‚เชคเซ‡ เชฌเชงเซเช‚ เชฌเชฐเชพเชฌเชฐ เช•เชพเชฎ เช•เชฐเซเชฏเซเช‚ - TCP เช เชคเซ‡เชจเชพ เช•เชพเชฐเซเชฏเชจเซ‹ เชธเชพเชฎเชจเซ‹ เช•เชฐเซเชฏเซ‹.

เชชเซ‡เช•เซ‡เชŸ เชกเซเชชเซเชฒเชฟเช•เซ‡เชถเชจ

เชคเชฎเซ‡ เชฌเซ€เชœเซเช‚ เชถเซเช‚ เช•เชฐเซ€ เชถเช•เซ‹ เชจเซ‡เชŸเซ‡เชฎ? เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชชเซ‡เช•เซ‡เชŸ เชฒเซ‹เชธ-เชชเซ‡เช•เซ‡เชŸ เชกเซเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ€ เชตเชฟเชชเชฐเซ€เชค เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเชจเซเช‚ เช…เชจเซเช•เชฐเชฃ เช•เชฐเซ‹. เช† เช†เชฆเซ‡เชถ 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/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-เชจเซ‡เชŸ-เชชเซเชฐเชคเชฟเชฌเช‚เชงเชฟเชค ะธ 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-เชนเซ‹เชธเซเชŸ-เช…เชจเชฐเซ€เชšเซ‡เชฌเชฒ เชธเชพเชฅเซ‡ เช…เชธเซเชตเซ€เช•เชพเชฐ เช•เชฐเซ‹

เชšเชพเชฒเซ‹ 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-เชนเซ‹เชธเซเชŸ-เช…เชจเชฐเซ€เชšเซ‡เชฌเชฒ เชธเชพเชฅเซ‡ เช…เชธเซเชตเซ€เช•เชพเชฐ เช•เชฐเซ‹

เชฎเชจเซ‡ เชฒเชพเช—เซ‡ เช›เซ‡ เช•เซ‡ เช†เชฆเซ‡เชถ เช•เซ‡เชตเซ‹ เชฆเซ‡เช–เชพเชถเซ‡ เชคเซ‡ เชฆเชฐเซ‡เช•เชจเซ‡ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชธเซเชชเชทเซเชŸ เช›เซ‡ :) เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เช•เซเชฒเชพเชฏเช‚เชŸเชจเซ€ เชตเชฐเซเชคเชฃเซ‚เช• เชเช• เชธเชฐเชณ เช…เชธเซเชตเซ€เช•เชพเชฐ เชธเชพเชฅเซ‡ เชคเซ‡เชจเชพเชฅเซ€ เชฅเซ‹เชกเซ€ เช…เชฒเช— เชนเชถเซ‡: เช•เซเชฒเชพเชฏเช‚เชŸ เชชเซ‡เช•เซ‡เชŸเชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชฎเซ‹เช•เชฒเชตเชพเชจเชพ เชชเซเชฐเชฏเชพเชธเซ‹ เชตเชšเซเชšเซ‡ เชธเชฎเชฏเชธเชฎเชพเชชเซเชคเชฟ เชตเชงเชพเชฐเชถเซ‡ เชจเชนเซ€เช‚.

[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

เชจเชฟเชทเซเช•เชฐเซเชท

เชนเช‚เช— เช•เซเชฒเชพเชฏเช‚เชŸ เช…เชฅเชตเชพ เชธเชฐเซเชตเชฐ เชธเชพเชฅเซ‡ เชธเซ‡เชตเชพเชจเซ€ เช•เซเชฐเชฟเชฏเชพเชชเซเชฐเชคเชฟเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชšเช•เชพเชธเชตเชพ เชฎเชพเชŸเซ‡ เชฎเซ‰เช• เชฒเช–เชตเซเช‚ เชœเชฐเซ‚เชฐเซ€ เชจเชฅเซ€; เช•เซ‡เชŸเชฒเซ€เช•เชตเชพเชฐ เชคเซ‡ Linux เชฎเชพเช‚ เชฎเชณเชคเซ€ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เช‰เชชเชฏเซ‹เช—เชฟเชคเชพเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชชเซ‚เชฐเชคเซเช‚ เช›เซ‡.

เชฒเซ‡เช–เชฎเชพเช‚ เชšเชฐเซเชšเชพ เช•เชฐเซ‡เชฒ เช‰เชชเชฏเซ‹เช—เชฟเชคเชพเช“เชฎเชพเช‚ เชตเชฐเซเชฃเชตเซ‡เชฒ เช•เชฐเชคเชพเช‚ เชชเชฃ เชตเชงเซ เช•เซเชทเชฎเชคเชพเช“ เช›เซ‡, เชคเซ‡เชฅเซ€ เชคเชฎเซ‡ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเชฎเชพเชฐเชพ เชชเซ‹เชคเชพเชจเชพ เช•เซ‡เชŸเชฒเชพเช• เชตเชฟเช•เชฒเซเชชเซ‹ เชธเชพเชฅเซ‡ เช†เชตเซ€ เชถเช•เซ‹ เช›เซ‹. เช…เช‚เช—เชค เชฐเซ€เชคเซ‡, เชฎเซ‡เช‚ เชœเซ‡ เชตเชฟเชถเซ‡ เชฒเช–เซเชฏเซเช‚ เช›เซ‡ เชคเซ‡ เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชนเช‚เชฎเซ‡เชถเชพ เชชเซ‚เชฐเชคเซเช‚ เช›เซ‡ (เชนเช•เซ€เช•เชคเชฎเชพเช‚, เชชเชฃ เช“เช›เซเช‚). เชœเซ‹ เชคเชฎเซ‡ เชคเชฎเชพเชฐเซ€ เช•เช‚เชชเชจเซ€เชฎเชพเช‚ เชชเชฐเซ€เช•เซเชทเชฃเชฎเชพเช‚ เช† เช…เชฅเชตเชพ เชธเชฎเชพเชจ เช‰เชชเชฏเซ‹เช—เชฟเชคเชพเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹ เช›เซ‹, เชคเซ‹ เช•เซƒเชชเชพ เช•เชฐเซ€เชจเซ‡ เชฌเชฐเชพเชฌเชฐ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฒเช–เซ‹. เชœเซ‹ เชจเชนเซ€เช‚, เชคเซ‹ เชนเซเช‚ เช†เชถเชพ เชฐเชพเช–เซเช‚ เช›เซเช‚ เช•เซ‡ เชœเซ‹ เชคเชฎเซ‡ เชธเซ‚เชšเชฟเชค เชชเชฆเซเชงเชคเชฟเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชจเซ‡เชŸเชตเชฐเซเช• เชธเชฎเชธเซเชฏเชพเช“เชจเซ€ เชธเซเชฅเชฟเชคเชฟเชฎเชพเช‚ เชคเซ‡เชจเซเช‚ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซ‹ เชคเซ‹ เชคเชฎเชพเชฐเซเช‚ เชธเซ‰เชซเซเชŸเชตเซ‡เชฐ เชตเชงเซ เชธเชพเชฐเซเช‚ เชฌเชจเชถเซ‡.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹