Skip to content

Instantly share code, notes, and snippets.

@ryoqun
Last active August 3, 2021 07:59
Show Gist options
  • Save ryoqun/266d5e2de6dda4e86ce09b1de620f4bf to your computer and use it in GitHub Desktop.
Save ryoqun/266d5e2de6dda4e86ce09b1de620f4bf to your computer and use it in GitHub Desktop.
packet loss track
# setup (only run once)
sudo apt install conntrack dnsutils
sudo modprobe nf_conntrack tstamp=1 acct=1
echo 1 | sudo tee /proc/sys/net/netfilter/nf_conntrack_timestamp
echo 1 | sudo tee /proc/sys/net/netfilter/nf_conntrack_acct
echo $((3600 * 24 * 30)) | sudo tee /proc/sys/net/netfilter/nf_conntrack_udp_timeout
echo $((3600 * 24 * 30)) | sudo tee /proc/sys/net/netfilter/nf_conntrack_udp_timeout_stream
sudo iptables -t mangle -A PREROUTING -p udp -m conntrack --ctstate NEW -j ACCEPT
sudo conntrack -F
# collect logs (it saves new file every 10 min) stop it ctrl-c after 30 min.
(
set -e
while true; do
public_ip=$(dig -4 TXT +short o-o.myaddr.l.google.com @ns1.google.com | tr -d \")
private_ip=$(ip route get 8.8.8.8 | head -n1 | awk '{print $7}')
now=$(date --utc '+%Yy%mm%dd%Hh%Mm%Ss')
echo $now | grep --color=auto 2021y..m..d..h.0m00s > /dev/null &&
conn_file="/tmp/udp-connections-$public_ip-$now" &&
test ! -e $conn_file && sudo conntrack -L --zero | grep --color=auto ^udp | sed "s/$private_ip/$public_ip/g" > $conn_file &&
echo "Wrote $conn_file"; sleep 0.5;
done
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment