Сторожевой пес Руслан всю ночь слышал извне завывания и скрежет, качавший фонари, которые успокоились лишь к утру. Хозяин пришёл и повёл его на службу, но при открытии двери Руслана встретил ослепительный белый свет — снег, который и создавал ночной вой. Помимо этого, Руслан насторожился из-за необычайной тишины, повисшей над миром. Лагерные ворота были широко распахнуты, вышка разрушена: один прожектор лежал в снегу, другой свисал на проводах, а с вышки исчезли белый тулуп, ушанка и характерный чёрный ружейный ствол. В бараках уже никого не было, что Руслан ощутил мгновенно. Пёс понял, что заключённые сбежали, и его охватила ярость. Он натянул поводок и потянул хозяина за ворота, пытаясь догнать беглецов. Хозяин сначала сердито крикнул, затем отпустил Руслана с поводка и жестом дал понять — ищи сам. Однако следов не было, и пес растерялся. Хозяин, глядя на него с недовольной гримасой, медленно снял автомат с плеча, что Руслан воспринял как знак конца, но не понимал, почему. Внезапно к лагерю приблизился трактор, из которого вышел водитель, не похожий на лагерника, и заговорил с хозяином свободно и весело, предлагая оставить собаку себе, «ведь пес дорогой». Хозяин лишь махнул рукой и разрешил ехать, не остановив тракториста, который начал разрушать ограду лагеря. Затем хозяин приказал Руслану уйти и больше не появляться. Пёс подчинился, сначала в замешательстве, а потом, поняв, куда его послали, побежал во весь опор в посёлок.
На следующий день работники станции наблюдали необычное явление: около платформы возле тупика собралась группа из двух десятков собак, которые лаяли на проходящие поезда. Эти животные были красивы и внушительны, и местные жители предпочитали не подходить к платформе, понимая, что с неё слезть гораздо труднее. Собаки ожидали заключённых, но их не привезли ни в этот день, ни в последующие недели. Количество собак на платформе начало уменьшаться. Руслан каждое утро приезжал сюда, но не задерживался и, проверив караул, возвращался в лагерь, где, как он чувствовал, ещё оставался его хозяин. Он ходил туда один, в то время как другие псы постепенно осваивались в посёлке, изменяя свою природу: становились домашними у новых владельцев или воровали куры, гонялись за кошками. Руслан терпел голод, не принимая пищу от чужих людей. Его единственным пропитанием были полевые мыши и снег. Из-за постоянного голода и боли в животе память пса слабела, он начал превращаться в бродячего собаку, но не покидал службу — каждый день появлялся на платформе, а затем возвращался в лагерь.
Однажды Руслан уловил запах хозяина в посёлке, который привёл его в вокзальный буфет. Там хозяин сидел за столом с каким-то потертым мужчиной. Потертый говорил хозяину, что «все давно уже подметки смазали», подразумевая, что их время прошло. Хозяин объяснял, что он выполнял задание, охраняя архив, в котором значатся все бывшие заключённые, и что при необходимости всех могут вернуть. Он обрадовался появлению Руслана и протянул ему хлеб, но пес отказался брать. Тогда хозяин разозлился, намазал хлеб горчицей и приказал взять его. Вокруг послышались голоса, осуждающие хозяина за жестокое обращение с собакой, но тот настаивал на своём. Руслан, с трудом разжав зубы, взял хлеб, но хозяин резко закрыл ему челюсти. Горечь горчицы жгла изнутри, а предательство хозяина было ещё болезненнее. С этого момента хозяин стал для Руслана врагом, и уже на следующий день пёс последовал за Потертым, считая, что возвращается к прежней службе — сопровождению лагерника, пусть и бывшего. От новых хозяев Руслан не принимал пищу, охотясь в лесу, но по-прежнему ежедневно появлялся на станции. В лагерь же больше не возвращался — там остались лишь воспоминания: счастливые о службе и неприятные, связанные с бунтом собак. Во время сильных морозов, когда обычно не работали, начальник приказал вывести заключённых на работу, но барак отказался подчиниться. Тогда охранники применили пожарный шланг, облив заключённых ледяной водой, выбивая окна. Руслан чувствовал ярость при виде шланга, из которого хлестала вода, но первым вцепился в рукав Ингус, самый умный из псов. Его расстреляли из автомата, однако остальные псы начали рвать шланг, и начальство оказалось бессильно.
Однажды Руслан навестил лагерь и был поражён тем, что там не осталось ни бараков, ни колючей проволоки. Вместо этого стояли большие корпуса с окнами, а вокруг всё было замазано цементом и кострами, от чего не осталось даже запахов лагеря.
Наконец настал момент службы: к платформе подошёл поезд, из которого вышли люди с рюкзаками. Они выстроились в колонны, а начальники произносили речи, в которых Руслан слышал незнакомые слова — стройка, комбинат. Колонны двинулись вперёд, и Руслан приступил к службе. Единственным необычным было отсутствие конвойных с автоматами и слишком весёлое поведение людей в колонне. Однако постепенно шум утихал, когда из переулков стали появляться лагерные псы, выстраивавшиеся по бокам колонны и сопровождавшие идущих. Местные жители смотрели на это с угрюмым видом. Люди в колонне ещё не понимали происходящего, но насторожились. Вскоре кто-то попытался покинуть строй, и одна из собак бросилась на нарушителя. Завязалась драка. Руслан, соблюдая порядок, наблюдал за строем и заметил, что из колонны стали выбегать лагерные псы, трусливо уходя в соседние улицы. Он бросился в бой. Схватка оказалась тяжелой: люди не подчинялись псам, били Руслана мешками, палками и жердинами. Разъярённый, пес прыгнул, нацелившись на горло молодого человека, но промахнулся и получил сокрушительный удар. С переломом позвоночника Руслан замолчал на земле. Появился Потертый, который сказал, что теперь пса нужно добить, хотя жалко собаку. Однако Руслан нашёл силы схватить зубами занесённую лопату. Люди отступили, оставив его умирать. Пёс, честно служивший по человеческим правилам, был жестоко наказан ими и потерял смысл жить дальше.