user10845: I'm trying to set up a private Bitcoin network using Bitcoin Core in regtest mode. However, there are two problems:

the port reported by the Bitcoin Core GUI doesn't match the one the node is running at; and
when a peer is disconnected (or even banned) it re-connects automatically.

Here's what I did. I create two folders, alice and bob. I then launch the GUI from the OSX Terminal:
# start Alice node
$ open -n /Applications/Bitcoin-Qt.app --args -regtest -datadir=/Users/{username}/Desktop/alice/ -port=18444

# start Bob node
$ open -n /Applications/Bitcoin-Qt.app --args -regtest -datadir=/Users/{username}/Desktop/bob/ -port=18445

From Alice's Console, I do:
addnode 127.0.0.1:18445 add

This creates a connection to both nodes.
I want to disconnect both nodes from each other.
From Alice's Console, I use:
addnode 127.0.0.1:18445 remove

On Alice's node, the peer is:
127.0.0.1:18445
However, on Bob's node, the peer is
127.0.0.1:57594
but I expect it to be:
127.0.0.1:18444
I try to remove Bob's node from Alice with:
addnode 127.0.0.1:18445 remove
Console returns null but doesn't remove the node.
When I try this from Alice's node:
addnode 127.0.0.1:57549 remove
I get Error: Node has not been added. (code -24)
I then try to disconnect Bob's node from Alice's node using the the Peers tab. Right click on peer (Bob) and choose disconnect.
The node is disconnected for about 45 seconds, then reconnects.
To summarize, I have two questions:

Why doesn't the port number on Bob's node match the port number I gave it?
How can I keep regtest nodes permanently disconnected for arbitrary periods of time and then reconnect them?


user48884: 
I want to disconnect both nodes from each other.
From Alice's Console, I use:
addnode 127.0.0.1:18445 remove


This is incorrect. This command will only remove Bob's node from the list of addnode'd peers. The correct command to actually disconnect Bob's node is
disconnectnode "127.0.0.1:18445"


On Alice's node, the peer is:
127.0.0.1:18445
However, on Bob's node, the peer is
127.0.0.1:57594
but I expect it to be:
127.0.0.1:18444

Outbound connections are not made from the P2P port. Rather a random high numbered port is chosen to bind to and the outbound connection is made from there. IIRC this is done by the kernel and not the software itself. This behavior is standard for most software that make outbound connections.

I then try to disconnect Bob's node from Alice's node using the the Peers tab. Right click on peer (Bob) and choose disconnect.
The node is disconnected for about 45 seconds, then reconnects.

A connection is still being made because you did not remove the other node from both nodes (i.e. one node still has the other one in its peers database).
The proper way to do this would be to use the onetry option as that means that the node is not actually added to the peers database but rather tried once. To disconnect, you should be using the disconnectnode command.

10845: <p>I'm trying to set up a private Bitcoin network using Bitcoin Core in regtest mode. However, there are two problems:</p>

<ol>
<li>the port reported by the Bitcoin Core GUI doesn't match the one the node is running at; and</li>
<li>when a peer is disconnected (or even banned) it re-connects automatically.</li>
</ol>

<p>Here's what I did. I create two folders, <code>alice</code> and <code>bob</code>. I then launch the GUI from the OSX Terminal:</p>

<pre><code># start Alice node
$ open -n /Applications/Bitcoin-Qt.app --args -regtest -datadir=/Users/{username}/Desktop/alice/ -port=18444

# start Bob node
$ open -n /Applications/Bitcoin-Qt.app --args -regtest -datadir=/Users/{username}/Desktop/bob/ -port=18445
</code></pre>

<p>From Alice's Console, I do:</p>

<pre><code>addnode 127.0.0.1:18445 add
</code></pre>

<p>This creates a connection to both nodes.</p>

<p>I want to disconnect <em>both</em> nodes from each other.</p>

<p>From Alice's Console, I use:</p>

<pre><code>addnode 127.0.0.1:18445 remove
</code></pre>

<p>On Alice's node, the peer is:</p>

<p><code>127.0.0.1:18445</code></p>

<p>However, on Bob's node, the peer is</p>

<p><code>127.0.0.1:57594</code></p>

<p>but I expect it to be:</p>

<p><code>127.0.0.1:18444</code></p>

<p>I try to remove Bob's node from Alice with:</p>

<p><code>addnode 127.0.0.1:18445 remove</code></p>

<p>Console returns <code>null</code> but doesn't remove the node.</p>

<p>When I try this from Alice's node:</p>

<p><code>addnode 127.0.0.1:57549 remove</code></p>

<p>I get <code>Error: Node has not been added. (code -24)</code></p>

<p>I then try to disconnect Bob's node from Alice's node using the the Peers tab. Right click on peer (Bob) and choose disconnect.</p>

<p>The node is disconnected for about 45 seconds, then reconnects.</p>

<p>To summarize, I have two questions:</p>

<ol>
<li>Why doesn't the port number on Bob's node match the port number I gave it?</li>
<li>How can I keep regtest nodes permanently disconnected for arbitrary periods of time and then reconnect them?</li>
</ol>
 48884: <blockquote>
  <p>I want to disconnect <em>both</em> nodes from each other.</p>
  
  <p>From Alice's Console, I use:</p>

<pre><code>addnode 127.0.0.1:18445 remove
</code></pre>
</blockquote>

<p>This is incorrect. This command will only remove Bob's node from the list of addnode'd peers. The correct command to actually disconnect Bob's node is</p>

<pre><code>disconnectnode "127.0.0.1:18445"
</code></pre>

<blockquote>
  <p>On Alice's node, the peer is:</p>
  
  <p><code>127.0.0.1:18445</code></p>
  
  <p>However, on Bob's node, the peer is</p>
  
  <p><code>127.0.0.1:57594</code></p>
  
  <p>but I expect it to be:</p>
  
  <p><code>127.0.0.1:18444</code></p>
</blockquote>

<p>Outbound connections are not made from the P2P port. Rather a random high numbered port is chosen to bind to and the outbound connection is made from there. IIRC this is done by the kernel and not the software itself. This behavior is standard for most software that make outbound connections.</p>

<blockquote>
  <p>I then try to disconnect Bob's node from Alice's node using the the Peers tab. Right click on peer (Bob) and choose disconnect.</p>
  
  <p>The node is disconnected for about 45 seconds, then reconnects.</p>
</blockquote>

<p>A connection is still being made because you did not remove the other node from both nodes (i.e. one node still has the other one in its peers database).</p>

<p>The proper way to do this would be to use the <code>onetry</code> option as that means that the node is not actually added to the peers database but rather tried once. To disconnect, you should be using the <code>disconnectnode</code> command.</p>
