mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-08-28 20:45:04 +02:00
Merge bitcoin/bitcoin#31130: Drop miniupnp dependency
40e5f26a3f
mapport: remove dead code in DispatchMapPort (Antoine Poinsot)38fdf7c1fb
mapport: drop outdated comments (Antoine Poinsot)b7b2435290
doc: add release note for #31130 (Antoine Poinsot)1b6dec98da
depends: drop miniupnpc (Antoine Poinsot)953533d021
doc: remove mentions of UPnP (Antoine Poinsot)94ad614482
ci: remove UPnP options (Antoine Poinsot)a9598e5eaa
build: drop miniupnpc dependency (Antoine Poinsot)a5fcfb7385
interfaces: remove now unused 'use_upnp' arg from 'mapPort' (Antoine Poinsot)038bbe7b20
daemon: remove UPnP support (Antoine Poinsot)844770b05e
qt: remove UPnP settings (Antoine Poinsot) Pull request description: This PR removes UPnP IGD support and drops our [miniupnp](https://github.com/miniupnp/miniupnp) dependency. Miniupnpc is a C library (somewhat) maintained by a single person which had several vulnerabilities in the past (a couple dozens are listed [here](https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=miniupnp)), some of which directly affected our software ([RCE in 2015](https://bitcoincore.org/en/2024/07/03/disclose_upnp_rce/), [OOM in 2020](https://bitcoincore.org/en/2024/07/31/disclose-upnp-oom/)). The main purpose of this functionality is to have more (non-data-center) reachable nodes on the network. For a non-technical user running Bitcoin Core at home, the software would automatically open a port on their router to receive incoming connections. This way, users not able to manually open a port on their router would still provide the network with more resources and enhance its diversity. However, due to past vulnerabilities (and a worry about unknown future ones) in miniupnpc this feature was disabled by default in https://github.com/bitcoin/bitcoin/pull/6795. Having it disabled by default kills (most of?) the purpose of having this functionality in the first place: someone technical enough to understand the `-upnp` startup option or the "enable UPnP" setting is most likely able to open a port on his box in the first place. In addition, laanwj implemented PCP with a NAT-PMP fallback directly in Bitcoin Core in https://github.com/bitcoin/bitcoin/pull/30043. If we ever want to re-enable automatic NAT traversal by default in Bitcoin Core, this is the best option (and in my opinion the only sane one). The NAT-PMP fallback makes it so compatibility shouldn't be (much of) an issue. On balance, i believe that keeping this functionality and this barely maintained C dependency has higher costs than benefits. Therefore i propose that we get rid of it. ACKs for top commit: jarolrod: ACK40e5f26a3f
1440000bytes: Code Review ACK40e5f26a3f
laanwj: Code review ACK40e5f26a3f
i-am-yuvi: Tested ACK40e5f26a3f
Tree-SHA512: 9ea48662775510f5ec6de7af65790f7c8d211603398e9d8c634a86387be81b28081419a95b4d6680d3d7fe6a9f16cec99f16516548201dc7e49781909899a657
This commit is contained in:
@@ -42,7 +42,7 @@ from ports. However, you can build DB 4.8 yourself [using depends](/depends).
|
||||
|
||||
```bash
|
||||
pkg install gmake
|
||||
gmake -C depends NO_BOOST=1 NO_LIBEVENT=1 NO_QT=1 NO_SQLITE=1 NO_UPNP=1 NO_ZMQ=1 NO_USDT=1
|
||||
gmake -C depends NO_BOOST=1 NO_LIBEVENT=1 NO_QT=1 NO_SQLITE=1 NO_ZMQ=1 NO_USDT=1
|
||||
```
|
||||
|
||||
When the build is complete, the Berkeley DB installation location will be displayed:
|
||||
|
@@ -44,7 +44,7 @@ from ports. However you can build it yourself, [using depends](/depends).
|
||||
Refer to [depends/README.md](/depends/README.md) for detailed instructions.
|
||||
|
||||
```bash
|
||||
gmake -C depends NO_BOOST=1 NO_LIBEVENT=1 NO_QT=1 NO_SQLITE=1 NO_UPNP=1 NO_ZMQ=1 NO_USDT=1
|
||||
gmake -C depends NO_BOOST=1 NO_LIBEVENT=1 NO_QT=1 NO_SQLITE=1 NO_ZMQ=1 NO_USDT=1
|
||||
...
|
||||
to: /path/to/bitcoin/depends/*-unknown-openbsd*
|
||||
```
|
||||
|
@@ -110,19 +110,6 @@ Otherwise, if you don't need QR encoding support, you can pass `-DWITH_QRENCODE=
|
||||
|
||||
---
|
||||
|
||||
#### Port Mapping Dependencies
|
||||
|
||||
###### miniupnpc
|
||||
|
||||
miniupnpc may be used for UPnP port mapping.
|
||||
Skip if you do not need this functionality.
|
||||
|
||||
``` bash
|
||||
brew install miniupnpc
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### ZMQ Dependencies
|
||||
|
||||
Support for ZMQ notifications requires the following dependency.
|
||||
|
@@ -60,10 +60,6 @@ executables, which are based on BerkeleyDB 4.8. Otherwise, you can build Berkele
|
||||
|
||||
To build Bitcoin Core without wallet, see [*Disable-wallet mode*](#disable-wallet-mode)
|
||||
|
||||
Optional port mapping library (see: `-DWITH_MINIUPNPC=ON`):
|
||||
|
||||
sudo apt install libminiupnpc-dev
|
||||
|
||||
ZMQ dependencies (provides ZMQ API):
|
||||
|
||||
sudo apt-get install libzmq3-dev
|
||||
@@ -112,10 +108,6 @@ are based on Berkeley DB 4.8. Otherwise, you can build Berkeley DB [yourself](#b
|
||||
|
||||
To build Bitcoin Core without wallet, see [*Disable-wallet mode*](#disable-wallet-mode)
|
||||
|
||||
Optional port mapping library (see: `-DWITH_MINIUPNPC=ON`):
|
||||
|
||||
sudo dnf install miniupnpc-devel
|
||||
|
||||
ZMQ dependencies (provides ZMQ API):
|
||||
|
||||
sudo dnf install zeromq-devel
|
||||
@@ -153,7 +145,7 @@ The legacy wallet uses Berkeley DB. To ensure backwards compatibility it is
|
||||
recommended to use Berkeley DB 4.8. If you have to build it yourself, and don't
|
||||
want to use any other libraries built in depends, you can do:
|
||||
```bash
|
||||
make -C depends NO_BOOST=1 NO_LIBEVENT=1 NO_QT=1 NO_SQLITE=1 NO_UPNP=1 NO_ZMQ=1 NO_USDT=1
|
||||
make -C depends NO_BOOST=1 NO_LIBEVENT=1 NO_QT=1 NO_SQLITE=1 NO_ZMQ=1 NO_USDT=1
|
||||
...
|
||||
to: /path/to/bitcoin/depends/x86_64-pc-linux-gnu
|
||||
```
|
||||
|
@@ -31,11 +31,6 @@ You can find installation instructions in the `build-*.md` file for your platfor
|
||||
| [qrencode](../depends/packages/qrencode.mk) | [link](https://fukuchi.org/works/qrencode/) | [4.1.1](https://github.com/bitcoin/bitcoin/pull/27312) | | No |
|
||||
| [Qt](../depends/packages/qt.mk) | [link](https://download.qt.io/official_releases/qt/) | [5.15.14](https://github.com/bitcoin/bitcoin/pull/30198) | [5.11.3](https://github.com/bitcoin/bitcoin/pull/24132) | No |
|
||||
|
||||
### Networking
|
||||
| Dependency | Releases | Version used | Minimum required | Runtime |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| [MiniUPnPc](../depends/packages/miniupnpc.mk) | [link](https://miniupnp.tuxfamily.org/) | [2.2.7](https://github.com/bitcoin/bitcoin/pull/29707) | 2.1 | No |
|
||||
|
||||
### Notifications
|
||||
| Dependency | Releases | Version used | Minimum required | Runtime |
|
||||
| --- | --- | --- | --- | --- |
|
||||
|
10
doc/release-notes-31130.md
Normal file
10
doc/release-notes-31130.md
Normal file
@@ -0,0 +1,10 @@
|
||||
P2P and network changes
|
||||
-----------------------
|
||||
|
||||
Support for UPnP was dropped. If you want to open a port automatically, consider using the `-natpmp`
|
||||
option instead, which uses PCP or NAT-PMP depending on router support.
|
||||
|
||||
Updated settings
|
||||
------
|
||||
|
||||
- Setting `-upnp` will now return an error. Consider using `-natpmp` instead.
|
@@ -200,7 +200,7 @@ as well, use `discover` instead:
|
||||
|
||||
./bitcoind ... -discover
|
||||
|
||||
and open port 8333 on your firewall (or use port mapping, i.e., `-upnp` or `-natpmp`).
|
||||
and open port 8333 on your firewall (or use port mapping, i.e., `-natpmp`).
|
||||
|
||||
If you only want to use Tor to reach .onion addresses, but not use it as a proxy
|
||||
for normal IPv4/IPv6 communication, use:
|
||||
|
Reference in New Issue
Block a user