looking like you are just missing to run the below command on machine1
Grant-CacheAllowedClientAccount -Account "DOMAIN1\Machine2$"
After doing this, all services running on machine2 in NETWORK SERVICE account will be able to access the Appfabric cache hosted on Machine1
Explained in detail here - http://msdn.microsoft.com/en-us/library/ff921012(v=azure.10).aspx
Note that if the client application is running as a built-in machine account, such as "NT Authority\Network Service", you can grant the machine access to the cache cluster. To do this, use the machine account, which is the domain name and machine name with an appended dollar sign. The following example grants cache cluster access to a machine named Server1 in a domain named DOMAIN1.
Grant-CacheAllowedClientAccount -Account "NT Authority\Network Service"