Get Surface Normal at Point of Click

So here's a tricky one: When you use a mouseclick to create a raycast, and it hits a collider (including a mesh collider!), how can I get the outward vector at that specific point? So, for example, if I click on a model with a mesh collider on it, how can I get the surface normal of the triangle at the point where I clicked?

If you're using an overload of Raycast with a RaycastHit parameter, you can just read hit.normal to get it

this method 2 drawbacks :

(1)
in case the Raycast result more than 1 hit points. the faster point is which you want. Then the Physics.Raycast() will always return the near one.

(2)
From Unity Reference:
Notes: Raycasts will not detect colliders for which the raycast origin is inside the collider.
So If the orignial is inside the collider you want to hitTest,how to fix it?

Any hint? for only geometrical method?