SOCKS 5 Proxy Connection

+1 vote

I have a chain running on AWS that is connected to an application hosted on Heroku which uses dynamic IP's. I've installed a SOCK5 proxy add-on that returns a couple static IP addresses for me to use. However, when I update the multichain.conf file with a static IP, the connection fails. Works just fine when I use rpcallowip=0.0.0.0/0

In the example below, the vendor demonstrates a SOCKS5 connection to MySQL request. Can someone translate the configuration to multichain setup that uses multichain-node (json-rpc) commands. 

var mysql = require('mysql2'),

    url = require('url'),
    SocksConnection = require('socksjs');

var remote_options = {
    host:'your-database.eu-west-1.rds.amazonaws.com',
    port: 3306
};

var proxy = url.parse(process.env.QUOTAGUARDSTATIC_URL),
    auth = proxy.auth,
    username = auth.split(':')[0],
    pass = auth.split(':')[1];

var sock_options = {
    host: proxy.hostname,
    port: 1080,
    user: username,
    pass: pass
};

var sockConn = new SocksConnection(remote_options, sock_options);
var dbConnection = mysql.createConnection({
    user: 'dbuser',
    database: 'dbname',
    password: 'dbpassword',
    stream: sockConn
});
dbConnection.query('SELECT 1+1 as test1;', function(err, rows, fields) {
    if (err) throw err;

    console.log('Result: ', rows);
    sockConn.dispose();
});
dbConnection.end();
asked Jul 30, 2021 by darinnj

1 Answer

+1 vote

The question is how the requesting IP address appears to MultiChain. You can find out by doing the following:

  1. Stop the MultiChain daemon using multichain-cli [chain-name] stop
  2. Set rpcallowip=0.0.0.0/0 in multichain.conf
  3. Start multichaind with the extra parameter: -debug=mcapi
  4. Send an API request to MultiChain from the application
  5. Check the last few lines of debug.log in the blockchain directory to find the IP address of the origin of the request, as it appears to MultiChain
Based on that you should hopefully be able to set rpcallowip appropriately.
answered Jul 31, 2021 by MultiChain
Thank you, this will help with debugging.

Are there any options available in the multichain request that should be set during a socks 5 connection?
If you run multichaind with no parameters you'll see some options relating to SOCKS5, but these related to peer-to-peer connections between nodes, rather than incoming API requests.
...