Respondendo a minha própria pergunta. Descobri que o squid tem suporte para lidar com esse tipo de problema com o script storeid_file_rewrite. A única coisa complicada é obter uma lista válida de URLs, que representam os mesmos repositórios. Parece funcionar bem até agora.
Adicionado ao squid.conf o seguinte
store_id_program /usr/lib64/squid/storeid_file_rewrite /etc/squid/fedora.db
store_id_access allow localnet
store_id_access deny all
Para obter o conteúdo para o fedora.db (cachear o fedora 25 neste momento) é um truque para obter os urls da lista de espelhos
basearch="x86_64"
releasever=25
mirrorlist="https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearc
curl -s "$mirrorlist" >tmp.db
Você precisa converter o "url" no resultado "tmp.db" no formato explicado aqui link . Isso pode possivelmente automatizado (quaisquer voluntários?)
Então você tem algo como "fedora.db", que é usado no squid.conf acima.
^http:\/\/ftp\.halifax\.rwth-aachen\.de\/fedora\/linux\/releases\/25\/Everything\/(x86_64\/[a-zA-Z0-9\-\_\.\/]+rpm)$ http://repo.mirrors.squid.internal/fedora/25/$1
^http:\/\/mirror2\.hs-esslingen\.de\/fedora\/linux\/releases\/25\/Everything\/(x86_64\/[a-zA-Z0-9\-\_\.\/]+rpm)$ http://repo.mirrors.squid.internal/fedora/25/$1
^http:\/\/fedora\.tu-chemnitz\.de\/pub\/linux\/fedora\/linux\/releases\/25\/Everything\/(x86_64\/[a-zA-Z0-9\-\_\.\/]+rpm)$ http://repo.mirrors.squid.internal/fedora/25/$1
... much more
EDIT: Alternativa, um caminho mais perigoso, mas talvez também suficiente, um padrão mais global correspondendo assim:
\/fedora\/linux\/releases\/([0-9]+)\/Everything/x86_64\/(.*)$ http://repo.mirrors.squid.internal/fedora/releases/$1/$2
\/fedora\/linux\/updates\/([0-9]+)\/x86_64\/(.*)$ http://repo.mirrors.squid.internal/fedora/updates/$1/$2
Fontes :