WCF was designed to be secure by default. And that security implies that not only the server needs to know who is calling it, but also that the client needs to be sure that the server it is talking to is indeed the server it is excpecting to be.
The thing that is used for this check is the service identity. For a client to trust the server, the identity of that server needs to match the identity definition of the client.
In your configs the service defines the identity as follows:
<identity>
<dns value="localhost"/>
</identity>
and the client as follows:
<identity>
<dns value="192.168.10.9" />
</identity>
Those identities don't match and thus the client is not talking to the correct endpoint ==> endpoint not found exception.
Solution: Make the identities match, or remove the identities altogether if that security check is not required.