diff --git a/pyproject.toml b/pyproject.toml index 992eae2c..1a329746 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,7 +31,7 @@ dependencies = [ "py-machineid", "protobuf==6.31.1", "dijkstar==2.6.0", - "lattica==1.0.8", + "lattica==1.0.9", ] [project.scripts] diff --git a/src/backend/server/scheduler_manage.py b/src/backend/server/scheduler_manage.py index 53b342e9..b2fd52bc 100644 --- a/src/backend/server/scheduler_manage.py +++ b/src/backend/server/scheduler_manage.py @@ -167,6 +167,19 @@ def _start_lattica(self): self.lattica.build() logger.debug("Lattica node built") + if len(self.relay_servers) > 0: + try: + is_symmetric_nat = self.lattica.is_symmetric_nat() + if is_symmetric_nat is None: + logger.warning("Failed to get is symmetric NAT, skip") + elif is_symmetric_nat: + logger.error( + "Your network NAT type is symmetric, relay does not work on this type of NAT, see https://en.wikipedia.org/wiki/Network_address_translation" + ) + exit(1) + except Exception as e: + logger.exception(f"Error in is symmetric NAT: {e}") + store_success = False for _ in range(10): try: diff --git a/src/parallax/p2p/server.py b/src/parallax/p2p/server.py index cea2c62a..78ad7976 100644 --- a/src/parallax/p2p/server.py +++ b/src/parallax/p2p/server.py @@ -270,6 +270,19 @@ def build_lattica(self): self.lattica.build() + if len(self.relay_servers) > 0: + try: + is_symmetric_nat = self.lattica.is_symmetric_nat() + if is_symmetric_nat is None: + logger.warning("Failed to get is symmetric NAT, skip") + elif is_symmetric_nat: + logger.error( + "Your network NAT type is symmetric, relay does not work on this type of NAT, see https://en.wikipedia.org/wiki/Network_address_translation" + ) + exit(1) + except Exception as e: + logger.exception(f"Error in is symmetric NAT: {e}") + if self.scheduler_addr == "auto": self.scheduler_peer_id = None for _ in range(20): diff --git a/src/parallax/server/node_chat_http_server.py b/src/parallax/server/node_chat_http_server.py index d6abd345..f7c44a5d 100644 --- a/src/parallax/server/node_chat_http_server.py +++ b/src/parallax/server/node_chat_http_server.py @@ -117,6 +117,19 @@ def build_lattica(self): self.lattica.build() + if len(self.relay_servers) > 0: + try: + is_symmetric_nat = self.lattica.is_symmetric_nat() + if is_symmetric_nat is None: + logger.warning("Failed to get is symmetric NAT, skip") + elif is_symmetric_nat: + logger.error( + "Your network NAT type is symmetric, relay does not work on this type of NAT, see https://en.wikipedia.org/wiki/Network_address_translation" + ) + exit(1) + except Exception as e: + logger.exception(f"Error in is symmetric NAT: {e}, skip") + if self.scheduler_addr == "auto": self.scheduler_peer_id = None for _ in range(20):