You are using the default route, which is a catch all route. What you should do, is to alter the routes in such a way that your catch all is limited to just the Controllers you have in your main application. This can be done by adding a third parameter with a regex.
Example:
Route::set('module1', 'module1(/<controller>(/<action>))')
->defaults(array(
'controller' => 'Home',
'action' => 'index',
));
Route::set('main-app', '(<controller>(/<action>(/<id>)))',
array(
'controller' => '(welcome|login|posts)'
))
->defaults(array(
'controller' => 'welcome',
'action' => 'index',
));
If I were you I would even break up the routes further and make specific routes for your Controllers.
Do however note that you cannot use the same Controller names in your main app and in the your modules. With these routes (and probably all), Kohana will always override and use the main app Controller (due to the Cascading File System), even if the route matches the module Controller.
I hope this helps and if you have further questions, just leave a comment.