Version with a hole.
You might need to experiment with the hole radius to adjust the fit.
// Number of segments in a circle
$fn = 32;
bottom_radius = 4;
bottom_height = 30;
hole_radius = 1;
hole_depth = 8;
top_radius = 1;
top_height = 5;
union() {
difference() {
cylinder(r = bottom_radius, h = bottom_height);
cylinder(r = hole_radius, h = hole_depth);
}
translate([0, 0, bottom_height])
cylinder(r = top_radius, h = top_height);
}