{"id":13587020,"url":"https://github.com/MASQ-Project/Node","last_synced_at":"2025-04-07T19:30:36.948Z","repository":{"id":37445176,"uuid":"356105756","full_name":"MASQ-Project/Node","owner":"MASQ-Project","description":"MASQ combines the benefits of VPN and Tor technology to create a superior next-generation privacy software, where users are rewarded for supporting an uncensored global web. Users gain privacy and anonymity online, while helping promote Internet Freedom.","archived":false,"fork":false,"pushed_at":"2025-04-02T06:29:33.000Z","size":95298,"stargazers_count":184,"open_issues_count":112,"forks_count":30,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-04-02T21:11:18.112Z","etag":null,"topics":["internet","masq-node","mesh-network","rustlang","vpn"],"latest_commit_sha":null,"homepage":"https://masqbrowser.com","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MASQ-Project.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE-OF-CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-04-09T02:12:13.000Z","updated_at":"2025-04-01T11:35:13.000Z","dependencies_parsed_at":"2023-10-15T05:15:54.968Z","dependency_job_id":"348ea2fb-0e82-4414-9eaa-a6946b9d99b2","html_url":"https://github.com/MASQ-Project/Node","commit_stats":{"total_commits":1347,"total_committers":24,"mean_commits":56.125,"dds":0.6421677802524128,"last_synced_commit":"0caf9450adc613a6c603dc958421cc3f6e07d88c"},"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MASQ-Project%2FNode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MASQ-Project%2FNode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MASQ-Project%2FNode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MASQ-Project%2FNode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MASQ-Project","download_url":"https://codeload.github.com/MASQ-Project/Node/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247716050,"owners_count":20984161,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["internet","masq-node","mesh-network","rustlang","vpn"],"created_at":"2024-08-01T15:05:58.194Z","updated_at":"2025-04-07T19:30:34.819Z","avatar_url":"https://github.com/MASQ-Project.png","language":"Rust","readme":"# MASQ Node ![masq-logo](images/masq-logo-sm.png)\n\n\u003cdiv align=\"center\"\u003e\n\n![ci-matrix](https://github.com/MASQ-Project/Node/workflows/ci-matrix/badge.svg)\n[![GitHub Release](https://img.shields.io/github/v/release/MASQ-Project/Node?display_name=release\u0026color=green)](https://github.com/MASQ-Project/Node/releases/latest)\n[![Discord](https://badgen.net/badge/icon/discord?icon=discord\u0026label)](https://discord.gg/masq)\n\n\u003c/div\u003e\n\nMASQ Node combines the benefits of VPN and Tor technology, to create superior next-generation privacy software, where \nusers are rewarded for supporting an uncensored, global Web.  Users gain privacy and anonymity, while helping promote \nInternet Freedom.\n\n## Purpose\n**MASQ Node** forms the foundation of the MASQ Network.\n\nThe MASQ Network is an open-source decentralized mesh-network (dMN) that allows any user to allocate spare computing resources to make the Internet\na free and fair place for the entire world. It is a worldwide collection of Nodes that securely delivers content without\nthe need of a VPN or Tor.\n\nBecause there's no single authority delivering or monitoring content, censorship and geo-restricted sites won't be an\nissue on the MASQ Network. It doesn't matter where you live or what content you're accessing, everyone in the world\nsees the exact same content.\n\nMASQ Node software is what the average user runs to earn $MASQ utility tokens and dedicate some of their computers' \nresources toward the Network - users can be rewarded with $MASQ for each time they serve content.\n\nMASQ Nodes work together through the mesh network to relay digital content.\nWhen a user requests a site, Nodes use a routing algorithm to find the most expedient and secure way to get the\ninformation to that user. Multiple Nodes work together to route a single request in order to maintain a necessary level of\nanonymity.\n\n__Important Note:__ Please remember that at the moment the MASQ Node is in development and is not clandestine. Your\ntraffic can't be decrypted, and it is difficult to trace to you; but it is currently very easy for someone sniffing\nyour Internet connection to tell that you're using some form of Peer networking. Please don't use it for any kind of sensitive traffic at this \nstage - MASQ Network and it's developers are not responsible for any activity, or loss incurred, while using this beta software.\n\n## Source\nThe MASQ project was forked from Substratum's Node project in order to carry on development after Substratum ceased \noperations in October of 2019. In 2021, Substratum's Node repositories were removed from GitHub, so the fork link\nwith MASQ was broken, but all credit for the original idea and the original design belongs to Substratum (and properly attributed through GPLv3 license) \n\n## Running the MASQ Node\n\n### MASQ Node Knowledge Base\nA [Knowledge Base](https://docs.masq.ai/masq) and testing resources are being refined for users with various \nlevels of technical ability.\n\nThere you can find further information, guides and configuration examples for running MASQ Node from:\n- [MASQ Browser](https://masqbrowser.com)\n- CLI\n- Docker image\n\nIf you are interested in testing stages, speak to the team in the official [Discord channel](https://discord.gg/masq)\n\n### MASQ Node Component README.md files\nTo help navigate the codebase, here are the README.md links for all documented components\n\n- [Blockchain-Service-URL](https://github.com/MASQ-Project/Node/blob/master/node/docs/Blockchain-Service.md)\n- [sub_lib](https://github.com/MASQ-Project/Node/blob/master/node/src/sub_lib/README.md)\n- [proxy_server](https://github.com/MASQ-Project/Node/blob/master/node/src/proxy_server/README.md)\n- [test_utils](https://github.com/MASQ-Project/Node/blob/master/node/src/test_utils/README.md)\n- [ui_gateway](https://github.com/MASQ-Project/Node/blob/master/node/src/ui_gateway/README.md)\n- [accountant](https://github.com/MASQ-Project/Node/blob/master/node/src/accountant/README.md)\n- [proxy_client](https://github.com/MASQ-Project/Node/blob/master/node/src/proxy_client/README.md)\n- [entry_dns](https://github.com/MASQ-Project/Node/blob/master/node/src/entry_dns/README.md)\n- [hopper](https://github.com/MASQ-Project/Node/blob/master/node/src/hopper/README.md)\n- [neighborhood](https://github.com/MASQ-Project/Node/blob/master/node/src/neighborhood/README.md)\n- [multinode_integration_tests](https://github.com/MASQ-Project/Node/blob/master/multinode_integration_tests/tests/README.md)\n\n### Downloading Official Releases\n\nReleases will appear on our GitHub page - click on the badge above for the latest stable beta build, or go to our [Releases page](https://github.com/MASQ-Project/Node/releases/latest)\n\n### Downloading the Latest Build\n\nIf you want to try out the latest build, go to\n[our GitHub Actions continuous integration page](https://github.com/MASQ-Project/Node/actions) to see a list of builds.\nLook for the latest (uppermost) successful build: it'll have a white checkmark in a green circle next to it.\n\n![green check example](images/GreenCheck.png)\n\nClick on that link and scroll to the end of the page. You'll see a set of three artifact packages, one for each platform\nMASQ supports.\n\n![artifact packages examples](images/ArtifactPackages.png)\n\nClick the one that matches your platform; your browser will download a `.zip` file. Inside the `.zip` file are many\nthings useful to developers, but you'll be interested in the executable binaries in `/generated/bin`.\n\n![contents of generated/bin](images/GeneratedBin.png)\n\nMake a directory somewhere on your system from which you'll run MASQ. You'll want to extract one or more files from\n`/generated/bin` in the `.zip` file into that directory.\n\nThe most important file is `MASQNode`, or `MASQNode.exe` if you're using Windows. Definitely extract that one. It\ncontains the code for both the MASQ Node and the MASQ Daemon.\n\nIf you're using a graphical user interface for MASQ, that's all you'll need. If you're not, you'll probably also want\n`masq`, which is a command-line user interface.\n\nIf the regular network-proxy setup doesn't work for you, you might want `dns_utility` as well to make it easy to\nsubvert your system's DNS configuration.\n\nFinally, `automap` is a test utility used to check MASQ's automatic firewall penetration functionality against your\nparticular router. Unless you've volunteered to help the MASQ dev team run tests, you won't need this.\n\n### Running from the Command Line\n\nThese instructions assume you have the MASQ Node executable but not the MASQ GUI. (If you do, consult the GUI\ndocumentation about starting the Node on our [Testing Guides](https://docs.masq.ai/testing-guide)) You'll want to run the MASQ programs from wherever you expanded the\n`/generated/bin` path from the `.zip` file you downloaded.\n\nThere are a number of ways to run the Node, but the way you'll probably want to use is to make sure the MASQ Daemon\nis started first. If the Daemon is not running in the background already, open a terminal window and start it by typing\n\n`$ sudo nohup ./MASQNode --initialization \u0026`\n\nif you're working in Linux or macOS, or\n\n`$ start /b MASQNode --initialization`\n\nif you're using Windows.\n\nThe Daemon's responsibility is to configure and start the Node. When it comes up, it sets up an initialization area\nthat contains configuration data for the Node: some of it defaulted, some of it loaded from the environment, some\nloaded from a configuration file, if present, and the rest of it uninitialized. Before the Node is started, the\nconfiguration data in the Daemon's initialization area should be adjusted so that the Node has what it needs when it\ncomes up.\n\nIf you have no GUI, the simplest way to do this is with the `masq` command-line user interface. Once you have the \nDaemon running, type\n\n`$ masq`\n\nat a handy command prompt. To learn how to use `masq` to set up and start the Node, type `help` at the `masq\u003e` prompt,\nand pay special attention to the `setup` and `start` commands.\n\nIf this is the first time you're starting the Node, you may also be interested in `set-password`, `create-wallets`, and\n`generate-wallets`.\n\n#### Supplying Configuration To MASQ Daemon\n\nThere are four ways to get configuration information into the initialization area of the MASQ Daemon on startup. \nIn decreasing level of priority, these are:\n\n1. `masq`\n2. the Daemon's shell environment\n3. a configuration file\n4. defaults\n\nAny piece of configuration information can be provided through any of these channels, with one exception: the path to\nthe configuration file cannot be taken from the configuration file. (It can be provided there, but it will never be\ntaken from there.) Configuration information provided in the configuration file will supersede defaults, information \nprovided in the environment will supersede conflicting information provided in the configuration file, and information \nprovided via the UI will supersede conflicting information from all the other sources.\n\n##### UI\n\nThis is the easiest. In this file, our documentation of the configuration options shows you how to provide them to \n`masq` on the command line, either in interactive mode or in noninteractive mode. Keep in mind, though, that command \nlines tend to be preserved by the operating system for display to users who want to see process lists. Therefore, the\ncommand line may not be the best place to specify sensitive or secret configuration information. (Nothing prevents you \nfrom doing this, though, so be careful.)\n\n##### Shell Environment\n\nIf you see that the UI accepts a command such as `setup --clandestine-port 1234`, then you can supply that same\nparameter in the environment by setting the `MASQ_CLANDESTINE_PORT` environment variable to `1234`. Note that you need\nto remove the initial `--` prefix, convert the name to all uppercase, change hyphens to underscores, and add a `MASQ_` \nprefix to namespace the parameter against other applications that might look for a similar variable.\n\n##### Configuration File\n\nThe configuration file, by default, resides in the data directory (see the `--data-directory` parameter for further\ninformation) and is named `config.toml`. If you leave the configuration file unspecified, this is where MASQ Node\nwill look for it. If it's found, it will be used; if it's not, MASQ Node will act as though it had been found but empty.\nBut if you want to use a different file, specify it either as `--config-file` in the Daemon setup or as `MASQ_CONFIG_FILE`\nin the environment. If you specify a relative filename, MASQ Node will look for the configuration file in the data\ndirectory; if you specify an absolute filename, MASQ Node will not use the data directory to find the configuration\nfile.\n\nThe configuration file should be in TOML format. TOML is a competitor to other formats like JSON and YAML, but the\nMASQ Node uses only scalar settings, not arrays or tables. If you see that Daemon setup accepts a command such\nas `setup --clandestine-port 1234`, then you can supply that same parameter in the configuration file by adding the\nfollowing line to it:\n\n```\nclandestine-port = \"1234\"\n```\n\nNote that you need to remove the initial `--` prefix. All the configuration parameters will work if you supply their\nvalues as double-quoted strings, but if they're numeric values, you can supply them numerically as well--for example,\n\n```\nclandestine-port = 1234\n```\n\nKeep in mind that a configuration file is persistent information: anyone who has or can gain read access to the file\ncan read whatever's in it, whether MASQ Node is running or not. Therefore, the configuration file may not be the \nbest place to specify sensitive or secret configuration information. (Nothing prevents you from doing this, though, so \nbe careful.)\n\n#### Running a Decentralized MASQ Node Locally\n\n##### Wallets\n\nIn order to run decentralized, MASQ Node needs at least an earning wallet (an Ethereum wallet into which other Nodes\nwill make payments for the services your Node provides). If you plan to use your Node to consume data with a browser\nor other network application, it will also need to be configured with a funded consuming wallet (an Ethereum wallet\nfrom which it will make payments for the services other Nodes provide). If you want, you can use the same wallet for\nboth earning and consuming, although this will allow an attacker to connect your network-forming Gossip traffic with your\ndata traffic, if he wants.\n\nMASQ only ever has to put money into your earning wallet, which means the Node only has to know its address. However,\nMASQ needs to pay money out of your consuming wallet; therefore the Node needs to know more about that one. Currently,\nwe use the mnemonic seed, an optional \"25th word\" that serves the purpose of a password, and the derivation path.\n\nIf you route other people's traffic without having an earning wallet set up, a default earning wallet will be\nused, in which case the funds you earn will go to MASQ instead of to you: so unless you're in a philanthropic mood,\nyou should be sure to set up or specify your earning wallet before you route data.\n\n##### Password\n\nThe Node keeps a database on disk where it stores various things, like persistent configuration data and accounting\ninformation.  In some cases, this information is sensitive, and if an attacker confiscated your computer and found\nthe sensitive data, you or others could be put at risk. Therefore, all the security-sensitive data in the database is\nencrypted with a symmetric key. We call that key a password, and you're required to set it before you store any\nsensitive data in the database. There are no rules for how long the password must be or what it must contain--security\nof your data is your responsibility, not ours--but it needs to be present so that the database can be properly encrypted\nwith it.\n\nMASQ never stores the password anywhere on disk, only in memory; so A) you'll need to supply the password every time\nthe Node starts, B) no one can tell you the password if you forget it, and C) forgetting it will mean that your\ndatabase is useless, and you'll have to start it over.\n\n##### Interactive `masq` vs Noninteractive `masq`\n\nThe `masq` command-line interface can run two ways. If you just type\n\n```\n$ ./masq\n```\n\nat a command prompt, you'll be shown a `masq\u003e` prompt, and the system will await a series of `masq` commands from you.\nBut if you type something like\n\n```\n$ ./masq setup --log-level debug --clandestine-port 1234\n```\n\nthen `masq` will start up, execute the command you gave it, and immediately terminate.\n\nThis way, you can use interactive `masq` to give an impromptu series of commands to the Daemon and/or the Node, or you\ncan write shell scripts to control the Daemon and/or the Node for special purposes, with those scripts containing\nnoninteractive `masq` commands.\n\n##### Daemon vs. Node\n\nThe MASQ Daemon and the MASQ Node are two different programs that share the same binary. If you start that binary with\nthe `--initialization` parameter, it will become the Daemon; if you start it without the `--initialization` parameter,\nit will become the Node.\n\nMASQ is designed to be very difficult to hack, but it's intended to go up against government-level attackers, so there's\nalways the possibility that they could have the funding to do something we didn't anticipate. If an attacker figures out\nhow to hack into a computer running MASQ, we think it's very important that at least he doesn't find himself hacked\ninto a process running with administrative privilege.\n\nAlso, it's important that the user interface, whether command-line or graphical, be able to direct the Node to start\nwithout having administrative privilege. However, because of the network ports the Node has to initialize, it must at\nleast start up with administrative privilege. It drops all special privileges before it reads any data from the network,\nthough, so any attacker who manages to hack it over the network won't see those special privileges.\n\nThese two requirements led to the development of the MASQ Daemon. The Daemon should start up with administrative\nprivilege at system-boot time, and keep running--with that privilege--until the computer shuts down. In return for\nbeing a long-running privileged process, the Daemon is forbidden from A) accessing the network in any way, and B)\ncommunicating with the Node in any way other than starting its process. As long as these limitations are respected,\neven someone who successfully hacks into the Node will not be able to hack into the privileged Daemon.\n\nWhen the user interface (whether command-line or graphical) starts up, it connects first to the Daemon. There is a\nset of commands the UI can use to communicate with the Daemon, but this set is comparatively small. As long as the\nUI issues commands from that set, it will stay connected to the Daemon. At some point, the UI will probably issue\na command the Daemon doesn't understand - if the Node is running then the Daemon will instruct the UI to\ndrop its Daemon connection, create a new connection to the Node instead, and re-issue the unrecognized command so that\nthe Node can execute it.\n\nThereafter, the UI will be connected to the Node. It will not connect again to the Daemon unless the Node shuts down\nor crashes; then the UI will fall back to the Daemon (if it's still running) or exit (if it's not).\n\n##### Handy `masq` Subcommands\n\n`masq` has quite a few subcommands that you can use, both interactively and noninteractively. The best way to find\nout about these subcommands is to type\n\n`$ ./masq --help`\n\nnoninteractively at a shell-command prompt, or\n\n`masq\u003e help`\n\ninteractively at a `masq` prompt.\n\n##### Neighbors\n\nIf you're starting the very first MASQ Node in a MASQ network, then you don't have to tell your Node about\nany preexisting network; instead, other people who want to join that MASQ Network will have to tell their Nodes\nabout your Node, which means you'll need to give them your Node descriptor.\n\nOtherwise, you'll need to specify `--neighbors` as part of your `masq setup` so that your Node will know how to join \nthe network that is already in place.\n\nHowever, if your machine has already recently been on the MASQ Network, and you're starting the Node up again, there's \na chance that at least some of the Nodes that were recently your neighbors are still up and can be recontacted; in that \ncase, the Daemon will read the Node descriptors of your former neighbors out of the database and pre-populate the\n`--neighbors` setup with them, and you might not have to enter anything manually.\n\n##### Enabling Contact\n\nIn order to run decentralized, the MASQ Node _must_ know the IP address others can use to contact it. Therefore,\nyou must supply `--ip`.\n\nYour home network is behind your internet provider's router and a public IP address. Other Nodes in the MASQ Network\nwill contact your Node through your public IP address, requiring at least one port to be forwarded on your router. The \nMASQ Node Gossip protocol \"gossips\" to other Nodes the clandestine port you are listening on, and it is that port \nyou will need to open. When your Node is started it will write its descriptor to the console and the log, giving the clandestine\nport it is using; you will need to forward that port from your router to your computer's IP address.\n\nForwarding ports on your router is somewhat technical. At a minimum, you should know how to log in to your router in \norder to make changes to its configuration. The process is interchangeably called forwarding a port, opening a port,\nor mapping a port, and may be labeled as such in the router's interface. Assigning a static IP address for your computer\nwill make this process easier, as otherwise your IP address can change each time your computer restarts or you restart\nthe network interface. There are many guides that you can find on the Internet by searching for \"Port Forwarding\" or\n\"How to Port Forwarding\". Here is an example: [PortForward.com](https://portforward.com)\n\nMore information on the operation, care, and feeding of the Neighborhood is available\n[in the neighborhood_subproject](https://github.com/MASQ-Project/Node/tree/master/node/src/neighborhood).\n\n\n### Terminating a MASQ Node\n\nTerminating a MASQ Node may be more of a process than you expect. There are three things to consider.\n\nThe most obvious is the MASQ Node itself. Terminating that is easy: just send it a shutdown message, with the GUI if \nyou have it, or with `masq` like this:\n\n```\n$ ./masq shutdown\n```\n\nnoninteractively, or if you're interactive,\n\n```\nmasq\u003e shutdown\n```\n\nHowever, if you were using your Node to access the Internet--that is, to consume--your computer's network stack is now\nmissing an important component, and it won't work anymore until you reconfigure it to operate without the Node.\nIf you configured your proxy settings to use the Node as an HTTP proxy, you'll want to disable them, or revert them\nback to what they were before you started the Node. If you're using DNS subversion, you'll want to revert that:\n\n```\n$ sudo ./dns_utility revert\n```\n\nThird, you'll probably want to close the hole or holes in your router's firewall. Don't leave them open against the \nnext time you run: it's dangerous to leave open holes in your firewall to ports you're not actively using on purpose.\n\n## Errors\n\nMASQ Node, like any other piece of software, can encounter obstacles it cannot overcome in the process of trying\nto do what you ask it to do.  It needs to be able to tell you about these insurmountable obstacles, but it lives in a\nplace that makes this difficult.  If it were a Web browser, it would have a window on which to display error messages.\nIf it were a Web server it could send data describing the errors to your browser to display. But it's neither of these\nthings; instead, it's crowded into a place in the protocol stack where neither the browser nor the server expects it\nto exist.\n\nTherefore, certain error messages are a bit awkward to display in the browser, especially if they involve TLS \nconnections. Let's look at how MASQ Node deals with certain kinds of errors.\n\n### HTTP\n\nAn insecure HTTP connection is one that is based on a URL that begins with `http://` (as opposed to `https://`). The\nfact that it is insecure means that MASQ Node (and every other process that handles the data) can intrude on the\ndata stream and make your browser display whatever they want it to, which may or may not be related to what the server\non the other end of the connection intended.\n\nWhen errors occur, this is very useful for MASQ Node. If you request something from an HTTP server (and for some\nreason MASQ Node cannot relay your request to that server) or cannot relay the response from the server back to\nyou, MASQ Node will instead impersonate the server and create a counterfeit response describing the error. This will be displayed\nto you instead of the server response it can't give you. (Don't worry: MASQ Node's impersonation of the server\nis deliberately very bad, so you can easily tell that the error is not coming from the server. You won't be misled).\nThe error message will describe the problem and suggest ways it might be alleviated.\n\n### TLS\n\nTLS (spoken over connections based on URLs that begin with `https://`) is a much more difficult beast. Once a TLS \nconnection is set up between your browser and a server, MASQ Node cannot understand a single bit of the dataflow,\nand it cannot modify a single bit of it without your browser throwing red alerts and refusing to show you the modified\ndata. This is good for you and your privacy, but it doesn't make it easy for MASQ Node to communicate with you\nvia the browser.\n\nThere is a small exception.\n\n_Once a TLS connection is set up,_ it's completely secure. But _while_ it's being set up, before the encrypted tunnel has\nbeen established, there's a little MASQ Node can do. Specifically, it can inject what's called a TLS Alert into the\nstream of data, as long as it is injected very early. This TLS Alert has a single byte that MASQ Node can use to tell\nyou about problems it has relaying your data. There are a number of predefined values this byte can take on, and\nMASQ Node has to pick one of these values: it can't make up its own.\n\nIf your browser is trying to load a page when the error occurs, you'll see a cryptic message in its window telling you\nthat you're not going to get what you're after. The exact wording of the error depends on the exact type of the TLS\nAlert. If your browser is trying to communicate in the background when the error occurs, you probably won't see it on\nthe screen; but if the browser stops responding, you can open its developer tools and check the JavaScript console; if\nMASQ Node sent a TLS Alert, you'll see it there.\n\nSince the concerns of the MASQ Node aren't precisely the same as the concerns of a TLS endpoint, the correspondence\ncan't always be made exact, so here are some specific TLS Alert values that MASQ Node produces in specific \nsituations.\n\n* Routing Failure - `internal_error`: If your Node is not yet \"warmed up\" enough in the MASQ Network to see a\nlarge enough neighborhood to be able to create a clandestine route that meets your specifications, it will raise a\nTLS `internal_error` Alert. This will probably be displayed by your browser as some sort of protocol error--which,\nstrictly speaking, it is. If this happens, just wait awhile for your Node and the MASQ Network to Gossip with\neach other and spread around the necessary information. Then try reloading the page.\n\n* DNS Resolution Failure - `unrecognized_name`: Even though you contact websites at names like `google.com` and\n`twitter.com`, the real Internet operates on the basis of IP addresses (like `172.217.6.14` and `31.13.66.35`).\nBefore it's useful for retrieving data, your server name has to be translated into an IP address. This is the job of a\nDNS server. Much of Internet censorship consists of crippling the DNS servers you have available to you so that they\ncan't give you the correct IP address for the server name you're seeking. MASQ Node captures the DNS queries your\nbrowser makes and forwards them across the MASQ Network to some other Node that hopefully has access to a\nnon-censored DNS server that _does_ know the IP address you want. But this is a complex task and it may fail. For\nexample, perhaps you typed the server name wrong, and _nobody_ knows an IP address it matches. Or perhaps your\nMASQ Node guessed wrong, and the exit Node to which it forwarded your DNS query is also handicapped by a censored DNS\nand can't find it either. In either case, MASQ Node will send your browser a TLS `unrecognized_name` alert, which\nyour browser will probably present to you as some form of can't-find-host error. If you reload the page, MASQ Node\nwill try to select a different exit Node, if available--one that hasn't failed to resolve a DNS query--for the next \nattempt, which might bring you better fortune. Of course, if you _have_ typed the name wrong, just reloading the page\nwill take another innocent exit Node out of circulation and make it even harder for you to get where you want to go.\n\n# Disclosure\n\nWe run tests on every push to `master` on these platforms:\n- Ubuntu 20.04 LTS Desktop 64-bit\n- MacOS High Sierra (currently testing on Big Sur)\n- Windows 10 64-bit\n\nMASQ Node doesn't reliably build on 32-bit Windows due to issues with the build tools for that platform. We \nrecommend using a 64-bit version to build.\n\nWe do plan to release binaries that will run on 32-bit Windows, but they will likely be built on 64-bit Windows.\n\nCopyright (c) 2019-2024, MASQ Network\n","funding_links":[],"categories":["Rust","Uncategorized","Applications","应用程序 Applications","vpn"],"sub_categories":["Uncategorized","Web","网络 Web"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMASQ-Project%2FNode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FMASQ-Project%2FNode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FMASQ-Project%2FNode/lists"}