2026-10-21T12:21:05.655007234Z Current runner version: 'v0.5.0' 2026-10-21T12:21:05.658089054Z ##[group]GITHUB_TOKEN Permissions 2026-10-21T12:21:05.658111212Z Contents: read 2026-10-21T12:21:05.65811498Z Metadata: read 2026-10-21T12:21:05.658117058Z Packages: read 2026-10-21T12:21:05.658119001Z ##[endgroup] 2026-10-21T12:21:05.65812145Z Secret source: Actions 2026-10-21T12:21:05.65812366Z Cache mode: write 2026-10-21T12:21:05.658125488Z Prepare workflow directory 2026-10-21T12:21:05.658751588Z Prepare all required actions 2026-10-21T12:21:05.658854087Z Complete job name: dns 2026-10-21T12:21:05.660138136Z ##[group]Run cat > /tmp/probe.py <<'EOF' 2026-10-21T12:21:05.660153485Z cat > /tmp/probe.py <<'EOF' 2026-10-21T12:21:05.660158668Z import random, socket, struct, time 2026-10-21T12:21:05.66016321Z  2026-10-21T12:21:05.660165322Z NS = ("10.200.0.1", 53) 2026-10-21T12:21:05.660167122Z  2026-10-21T12:21:05.660171048Z def query(name, qtype, edns): 2026-10-21T12:21:05.660172946Z  qid = random.randint(0, 65535) 2026-10-21T12:21:05.660174879Z  q = struct.pack(">HHHHHH", qid, 0x0100, 1, 0, 0, 1 if edns else 0) 2026-10-21T12:21:05.660179558Z  for label in name.split("."): 2026-10-21T12:21:05.660181496Z  q += bytes([len(label)]) + label.encode() 2026-10-21T12:21:05.660186071Z  q += b"\x00" + struct.pack(">HH", qtype, 1) 2026-10-21T12:21:05.660188147Z  if edns: 2026-10-21T12:21:05.660190038Z  q += b"\x00" + struct.pack(">HHIH", 41, edns, 0, 0) 2026-10-21T12:21:05.660194348Z  return q 2026-10-21T12:21:05.660196243Z  2026-10-21T12:21:05.660197988Z def show(tag, r, t): 2026-10-21T12:21:05.660199727Z  flags, an = struct.unpack(">H", r[2:4])[0], struct.unpack(">H", r[6:8])[0] 2026-10-21T12:21:05.660201602Z  print(f"{tag}: {len(r)} bytes, rcode={flags & 0xF}, tc={(flags >> 9) & 1}, answers={an}, {t:.0f} ms") 2026-10-21T12:21:05.660204329Z  2026-10-21T12:21:05.660210306Z def udp(name, qtype, edns): 2026-10-21T12:21:05.660223857Z  s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 2026-10-21T12:21:05.660227135Z  s.settimeout(4) 2026-10-21T12:21:05.660228953Z  t = time.time() 2026-10-21T12:21:05.660230664Z  s.sendto(query(name, qtype, edns), NS) 2026-10-21T12:21:05.660232444Z  try: 2026-10-21T12:21:05.660234177Z  show(f"udp {name} type={qtype} edns={edns}", s.recv(65535), (time.time() - t) * 1000) 2026-10-21T12:21:05.660236199Z  except Exception as e: 2026-10-21T12:21:05.660237922Z  print(f"udp {name} type={qtype} edns={edns}: {e!r}") 2026-10-21T12:21:05.660239794Z  2026-10-21T12:21:05.660241435Z def tcp(name, qtype): 2026-10-21T12:21:05.660243057Z  q = query(name, qtype, 0) 2026-10-21T12:21:05.660244736Z  s = socket.create_connection(NS, timeout=4) 2026-10-21T12:21:05.660246446Z  t = time.time() 2026-10-21T12:21:05.660248112Z  s.sendall(struct.pack(">H", len(q)) + q) 2026-10-21T12:21:05.660250006Z  try: 2026-10-21T12:21:05.660251827Z  n = struct.unpack(">H", s.recv(2))[0] 2026-10-21T12:21:05.66025357Z  r = b"" 2026-10-21T12:21:05.660255783Z  while len(r) < n: 2026-10-21T12:21:05.660257683Z  r += s.recv(n - len(r)) 2026-10-21T12:21:05.660259322Z  show(f"tcp {name} type={qtype}", r, (time.time() - t) * 1000) 2026-10-21T12:21:05.660261158Z  except Exception as e: 2026-10-21T12:21:05.660263127Z  print(f"tcp {name} type={qtype}: {e!r}") 2026-10-21T12:21:05.660264862Z  2026-10-21T12:21:05.660266574Z for name in ["storage.googleapis.com", "cdn.playwright.dev", "github.com"]: 2026-10-21T12:21:05.660268452Z  for qtype in (1, 28): 2026-10-21T12:21:05.660272903Z  for edns in (0, 1232): 2026-10-21T12:21:05.660278254Z  udp(name, qtype, edns) 2026-10-21T12:21:05.660283255Z  tcp(name, 1) 2026-10-21T12:21:05.660285262Z EOF 2026-10-21T12:21:05.660286889Z python3 /tmp/probe.py 2026-10-21T12:21:05.660288584Z for i in 1 2; do getent ahostsv4 storage.googleapis.com | head -1 || echo "getent failed"; done 2026-10-21T12:21:05.66030136Z echo "options edns0" | sudo tee -a /etc/resolv.conf 2026-10-21T12:21:05.660304396Z for i in 1 2; do getent ahostsv4 storage.googleapis.com | head -1 || echo "getent failed"; done 2026-10-21T12:21:05.660335774Z shell: /usr/bin/bash -e {0} 2026-10-21T12:21:05.660343624Z ##[endgroup] 2026-10-21T12:21:08.816941474Z udp storage.googleapis.com type=1 edns=0: 12 bytes, rcode=2, tc=0, answers=0, 3001 ms 2026-10-21T12:21:08.816977748Z udp storage.googleapis.com type=1 edns=1232: 291 bytes, rcode=0, tc=0, answers=15, 2 ms 2026-10-21T12:21:08.816981311Z udp storage.googleapis.com type=28 edns=0: 152 bytes, rcode=0, tc=0, answers=4, 1 ms 2026-10-21T12:21:08.816983571Z udp storage.googleapis.com type=28 edns=1232: 163 bytes, rcode=0, tc=0, answers=4, 1 ms 2026-10-21T12:21:08.816985752Z tcp storage.googleapis.com type=1: 280 bytes, rcode=0, tc=0, answers=15, 4 ms 2026-10-21T12:21:08.816988471Z udp cdn.playwright.dev type=1 edns=0: 141 bytes, rcode=0, tc=0, answers=3, 35 ms 2026-10-21T12:21:08.816990726Z udp cdn.playwright.dev type=1 edns=1232: 152 bytes, rcode=0, tc=0, answers=3, 2 ms 2026-10-21T12:21:08.816992851Z udp cdn.playwright.dev type=28 edns=0: 153 bytes, rcode=0, tc=0, answers=3, 13 ms 2026-10-21T12:21:08.816994772Z udp cdn.playwright.dev type=28 edns=1232: 164 bytes, rcode=0, tc=0, answers=3, 2 ms 2026-10-21T12:21:08.816996578Z tcp cdn.playwright.dev type=1: 141 bytes, rcode=0, tc=0, answers=3, 4 ms 2026-10-21T12:21:08.816998587Z udp github.com type=1 edns=0: 44 bytes, rcode=0, tc=0, answers=1, 13 ms 2026-10-21T12:21:08.817001147Z udp github.com type=1 edns=1232: 55 bytes, rcode=0, tc=0, answers=1, 2 ms 2026-10-21T12:21:08.817003108Z udp github.com type=28 edns=0: 93 bytes, rcode=0, tc=0, answers=0, 15 ms 2026-10-21T12:21:08.817005093Z udp github.com type=28 edns=1232: 104 bytes, rcode=0, tc=0, answers=0, 13 ms 2026-10-21T12:21:08.817007196Z tcp github.com type=1: 44 bytes, rcode=0, tc=0, answers=1, 4 ms 2026-10-21T12:21:14.841494295Z options edns0 2026-10-21T12:21:14.845569783Z 172.217.22.91 STREAM storage.googleapis.com 2026-10-21T12:21:14.848159726Z 172.217.20.59 STREAM storage.googleapis.com 2026-10-21T12:21:14.848320646Z Cleaning up orphan processes