Blijft Codex opnieuw verbinden? Controleer DNS en Clash-routing

Laatst bijgewerkt: 2026-09-10

Codex-fouten zoals Reconnecting..., stream disconnected before completion en error sending request kunnen samenhangen met DNS-interferentie of onjuiste Clash-routing. Deze handleiding legt uit hoe je die mogelijkheid kunt onderzoeken, een gerichte verbetering in Clash Verge Rev kunt toepassen en het resultaat kunt verifiëren.

Wat communitymeldingen daadwerkelijk laten zien

Gebruikers op Reddit hebben onderbroken taken gemeld die gericht zijn op chatgpt.com/backend-api/codex/responses, herhaalde pogingen om opnieuw te verbinden en fouten in de response-body. Deze meldingen bevestigen symptomen, geen DNS-diagnose. Onderbroken verzoek, lus van opnieuw verbinden

In een aparte discussie worden storingen beschreven tijdens remote context compaction. Een reageerder stelt voor om de proxy te onderzoeken, maar de discussie stelt geen geverifieerde oorzaak vast. Discussie over compaction

Meldingen op X laten vergelijkbare vragen zien: een bericht van 9 september beschrijft aanhoudende streamstoringen, terwijl een bericht van 6 september een SSE-idle-time-out tijdens remote compaction meldt. Geen van beide biedt een DNS-vergelijking. Dit zijn nuttige voorbeelden van gebruikersproblemen, maar ze bevestigen geen gedeelde oorzaak. X-streammelding, X-compactionmelding

Symptoom Wat te onderzoeken
Onmiddellijke time-out met een resolverfout DNS, bereikbaarheid van de node en of verkeer Clash binnenkomt
ChatGPT werkt in een browser maar Codex faalt Verschillen in proxy, DNS, certificaten en egress
Output begint, daarna wordt de stream verbroken Langdurige verbindingen, netwerkveranderingen en servicefouten
Alleen lange gesprekken of compaction falen Vergelijk met een kleine nieuwe taak; onderzoek sessie- en serverfouten
HTTP 401, 403, 429, of 5xx Controleer de herkomst en body van de response op authenticatie-, beleids-, limiet- of servicefouten

Controleer de OpenAI-servicestatus en noteer de tijd en clientversie. Voor vastgelopen chats raadt OpenAI ook aan om te controleren op wachtende goedkeuringen en een kleinere, gerichte nieuwe chat te proberen. Desktop- en CLI-versies kunnen verschillen. Officiële probleemoplossing

Een lokaal geval: een onverwacht DNS-antwoord activeerde DIRECT

In een vastgelegd onderzoek op macOS met Clash Verge Rev en Mihomo waren proxynodes bereikbaar, maar chatgpt.com kwam overeen met een GeoIP/CN-regel en probeerde een directe verbinding die een time-out kreeg. Een vergelijking met versleutelde DNS die via de proxy werd bereikt, liet een afwijkend antwoord zien op het lokale resolutiepad.

Request to chatgpt.com
  → anomalous DNS answer
  → no earlier matching OpenAI domain rule
  → GeoIP selects DIRECT
  → connection times out and Codex retries

Er zijn twee configuratieproblemen om aan te pakken: het resolutiepad en de routeringsbeslissing. Dit vastgelegde geval is geen benchmark en geen bewijs dat andere Codex-storingen dezelfde oorzaak hebben. Een afwijkend antwoord op zichzelf kan ook niet de verantwoordelijke tussenpartij aanwijzen of specifiek DNS-cache poisoning vaststellen.

Diagnoseer voordat je de configuratie wijzigt

Controleer het verbindingslogboek

Zoek naar de daadwerkelijke hostnaam in de fout, waaronder chatgpt.com of openai.com. Noteer de overeenkomende regel, de verbindingsketen en de fout op het moment van de storing. Een verbinding die een proxy zou moeten gebruiken maar DIRECT selecteert, vereist een controle van de regelvolgorde. Mihomo evalueert routeringsregels van boven naar beneden. Documentatie over routing

Als er geen overeenkomende verbinding verschijnt, stel dan eerst vast of die client Clash gebruikt. Succes in de browser bevestigt niet welk pad door een apart proces wordt gebruikt.

Vergelijk resolutiepaden

Inspecteer op macOS de systeemresolver en het huidige antwoord:

scutil --dns
dscacheutil -q host -a name chatgpt.com

Vervang voor een versleutelde vergelijking 7890 door je Clash HTTP/mixed-poort:

curl --noproxy '' --proxy http://127.0.0.1:7890 \
  --connect-timeout 10 --max-time 20 \
  -H 'accept: application/dns-json' \
  'https://1.1.1.1/dns-query?name=chatgpt.com&type=A'

Het verzoek gebruikt Cloudflare’s DNS JSON-interface. Controleer het verbindingspaneel: een expliciete lokale proxy garandeert invoer in Clash, maar de Clash-regels bepalen nog steeds de uiteindelijke egress.

Verschillende IP-adressen alleen zijn geen bewijs van interferentie. CDN-selectie, caching, adresfamilies en Fake-IP kunnen verschillen verklaren. Een synthetisch adres uit Clash’s Fake-IP-bereik is niet per definitie verdacht. Koppel een afwijkend antwoord aan de onjuiste route en de storing en vergelijk dit vervolgens met een ander geverifieerd netwerkpad. Met TUN ingeschakeld kan zelfs dig @resolver worden onderschept; het is niet automatisch een onafhankelijke upstreamtest.

Pas een gerichte verbetering in Clash Verge Rev toe

Deze template vereist Clash Verge Rev met Mihomo, een bestaand abonnement en een werkende proxynode. Het is een abonnementsscript, geen volledig zelfstandig profiel. Maak eerst een back-up van de huidige configuratie. Als je al een script gebruikt, integreer de wijziging dan in de bestaande functie main(config). Controleer de uiteindelijke runtimeconfiguratie nadat alle verbeteringsstappen zijn toegepast. Documentatie voor Clash Verge Rev Script

Stel CODEX_PROXY_GROUP in op een bestaande groep en selecteer een werkende proxynode in die groep. Stel NODE_DNS in op een DoH-resolver die werkt voordat de proxy verbinding maakt en die hostnamen van nodes correct oplost. Het AliDNS-voorbeeld is bedoeld voor validatie op een netwerk op het Chinese vasteland; vervang het wanneer dat niet passend is. Het wordt niet gebruikt om de onderstaande AI-domeinen op te lossen.

// Clash Verge Rev subscription Script. Use with an existing Mihomo profile.
// Replace this with the exact name of a working proxy group in that profile.
const CODEX_PROXY_GROUP = "REPLACE_WITH_EXISTING_PROXY_GROUP";

// Example bootstrap resolver for a mainland-China network. Verify reachability
// and node-hostname answers on your network, or replace with your trusted DoH.
// It must work BEFORE the proxy is established. It does not resolve AI domains.
const NODE_DNS = ["https://223.5.5.5/dns-query#DIRECT"];

function main(config) {
  const groups = config["proxy-groups"] || [];
  if (!groups.some((group) => group.name === CODEX_PROXY_GROUP)) {
    throw new Error("Set CODEX_PROXY_GROUP to an existing working proxy group.");
  }
  if (/[#&,\r\n]/.test(CODEX_PROXY_GROUP)) {
    throw new Error("Use a proxy group name without #, &, commas or newlines.");
  }

  const domains = ["chatgpt.com", "openai.com", "oaistatic.com", "oaiusercontent.com"];
  const doh = [
    "https://1.1.1.1/dns-query#" + CODEX_PROXY_GROUP,
    "https://8.8.8.8/dns-query#" + CODEX_PROXY_GROUP,
  ];
  const dns = config.dns || {};
  const policy = Object.assign({}, dns["nameserver-policy"] || {});
  domains.forEach((domain) => { policy["+." + domain] = doh.slice(); });
  dns.enable = true;
  dns["nameserver-policy"] = policy;
  dns["proxy-server-nameserver"] = NODE_DNS.slice();
  if (!Array.isArray(dns.nameserver) || dns.nameserver.length === 0) {
    dns.nameserver = NODE_DNS.slice();
  }
  config.dns = dns;

  const oldRules = Array.isArray(config.rules) ? config.rules : [];
  const aiRules = domains.map((domain) =>
    "DOMAIN-SUFFIX," + domain + "," + CODEX_PROXY_GROUP
  );
  config.rules = aiRules.concat(oldRules.filter((rule) => !aiRules.includes(rule)));
  return config;
}

Het script voegt domeinspecifiek DNS-beleid toe en plaatst proxyregels vooraan, terwijl andere regels en domeinbeleidsregels behouden blijven. Het wijzigt de omzetting van node-hostnamen. De vier domeinsuffixen zijn een beginscope, geen uitputtende lijst van elke Codex-functie, aangepaste provider, MCP-service of taakdownload.

Mihomo ondersteunt een domeinspecifiek nameserver-policy en een expliciete proxysuffix op een DNS-serveradres. Node-resolutie heeft een onafhankelijk pad nodig om een circulaire afhankelijkheid te vermijden. DNS-configuratiereferentie

Het gerichte script behoudt bestaande fallback-instellingen. Controleer bredere DNS-afhankelijkheden apart voordat je die vervangt. Controleer ook op verouderde hosts-toewijzingen of conflicterend, specifieker beleid.

Controleer TUN afzonderlijk

Schakel voor processen die de systeemproxy niet gebruiken TUN in Clash Verge Rev in en controleer of het actief is. Voeg de volgende velden samen in je bestaande TUN-object, waarbij je de andere instellingen behoudt:

tun:
  enable: true
  auto-route: true
  auto-detect-interface: true
  dns-hijack:
    - any:53
    - tcp://any:53

Deze dekken UDP- en TCP-DNS op poort 53. Mihomo documenteert beperkingen voor op LAN gerichte DNS op macOS en Windows; door applicaties beheerde versleutelde DNS valt ook buiten deze regels voor poort 53. Verifieer het gedrag van resolver en interface in plaats van aan te nemen dat deze schakelaar elk verzoek dekt. TUN-referentie

Verifieer configuratie, routing en Codex afzonderlijk

Controleer eerst de uiteindelijke configuratie op fouten, groepsverwijzingen en regelvolgorde. Als de Mihomo-CLI beschikbaar is, controleert mihomo -t -f <final-config-path> of de configuratie kan worden geparseerd. Het bewijst geen connectiviteit.

Controleer vervolgens de daadwerkelijke verbindingsrouting en voer een HTTPS-probe met certificaatverificatie uit via je werkelijke lokale poort:

curl --noproxy '' --proxy http://127.0.0.1:7890 \
  --connect-timeout 10 --max-time 20 \
  -o /dev/null -sS \
  -w 'HTTP=%{http_code} TLS=%{time_appconnect}s TOTAL=%{time_total}s\n' \
  https://chatgpt.com/

Een reactie van de bedoelde service na succesvolle certificaatverificatie bevestigt een HTTP-uitwisseling voor deze probe. Een 401 of 403 kan de toegang nog steeds blokkeren. Het bewijst niet dat een geauthenticeerd Codex-verzoek werkt, en het uitschakelen van certificaatverificatie zou deze controle ongeldig maken.

Voer ten slotte een kleine taak uit in de client die oorspronkelijk faalde. Een geïnstalleerde, geauthenticeerde CLI kan de volgende optionele controle uitvoeren, die een echte modelaanvraag doet en accountquotum gebruikt:

codex exec --skip-git-repo-check --sandbox read-only \
  'Reply with exactly: PONG. Do not use tools.'

Een CLI-succes verifieert alleen dat CLI-verzoek; test de desktop-app afzonderlijk als daar de fout optrad. Controleer opnieuw na een abonnementsupdate, netwerkwijziging en slaap-/waakcyclus. Latere configuratielagen of hernoemde groepen kunnen een verbetering nog steeds verstoren.

Veelgestelde vragen

Is het voldoende om systeem-DNS te wijzigen naar 8.8.8.8?

Niet noodzakelijk. Alleen een resolveradres zorgt niet voor versleuteling, proxyrouting of bereikbaarheid. Verifieer resolver, transport en uitgaand pad samen.

Waarom faalt Codex terwijl Clash draait?

Het proces kan de proxy omzeilen, overeenkomen met een directe regel of afhankelijk zijn van niet-beschikbare node-DNS. Het probleem kan ook niets met DNS te maken hebben. Zoek de daadwerkelijke verbinding voordat je meerdere instellingen tegelijk wijzigt.

Wat als de verbinding nog steeds wordt verbroken?

Als DNS, TLS en routing werken, onderzoek dan servicestatus, gespreksomvang, clientversie, stabiliteit van de nodeverbinding en de exacte inhoud van de foutmelding. OpenAI documenteert feedback- en loglocaties; controleer logs op geheimen voordat je ze deelt. Probleemoplossing en logs

Hoe maak ik de wijziging ongedaan?

Schakel het toegevoegde Script uit en herstel het back-upprofiel, de TUN-instellingen en eventuele systeem-DNS-instellingen die je hebt gewijzigd. Een aparte proxy-providers-architectuur kan later node-abonnementen isoleren van lokale DNS en regels, maar is niet vereist voor deze gerichte oplossing.

Voor installatie- en importstappen, zie Clash Verge setup. Voor andere fouten, zie Clash troubleshooting. Je kunt dit diagnostische proces gebruiken met een bestaand compatibel abonnement; een andere service kopen is geen voorwaarde om DNS te testen.