yggdrasil-network / yggdrasil-go

An experiment in scalable routing as an encrypted IPv6 overlay network
https://yggdrasil-network.github.io
Other
3.48k stars 239 forks source link

Configuring yggdrasil on OpenWRT #1010

Open lavinkabul opened 1 year ago

lavinkabul commented 1 year ago

I installed yggdrasil on my router with OpenWRT OS. But nowhere did I find clear instructions for configuring yggdrasil on OpenWRT. How do I configure the parameters shown in the screenshots? 0 1 2 3 4 5

mkg20001 commented 1 year ago

You need luci-app-yggdrasil, which will add a new menu under services. There you can configure yggdrasil. You usually don't need to touch the interface

perguth commented 1 year ago

https://yggdrasil-network.github.io/installation-linux-openwrt.html

lavinkabul commented 1 year ago

Here are screenshots of the yggdrasil settings:

https://user-images.githubusercontent.com/112599095/212734220-68ab9084-f048-4ee9-a517-ebe6756859b9.mp4

2 3 4

perguth commented 1 year ago

Yggdrasil explains all those options in the config file. I generated one for you here:

user@dell:~$ yggdrasil -genconf
{
  # List of connection strings for outbound peer connections in URI format,
  # e.g. tls://a.b.c.d:e or socks://a.b.c.d:e/f.g.h.i:j. These connections
  # will obey the operating system routing table, therefore you should
  # use this section when you may connect via different interfaces.
  Peers: []

  # List of connection strings for outbound peer connections in URI format,
  # arranged by source interface, e.g. { "eth0": [ "tls://a.b.c.d:e" ] }.
  # Note that SOCKS peerings will NOT be affected by this option and should
  # go in the "Peers" section instead.
  InterfacePeers: {}

  # Listen addresses for incoming connections. You will need to add
  # listeners in order to accept incoming peerings from non-local nodes.
  # Multicast peer discovery will work regardless of any listeners set
  # here. Each listener should be specified in URI format as above, e.g.
  # tls://0.0.0.0:0 or tls://[::]:0 to listen on all interfaces.
  Listen: []

  # Listen address for admin connections. Default is to listen for local
  # connections either on TCP/9001 or a UNIX socket depending on your
  # platform. Use this value for yggdrasilctl -endpoint=X. To disable
  # the admin socket, use the value "none" instead.
  AdminListen: unix:///var/run/yggdrasil.sock

  # Configuration for which interfaces multicast peer discovery should be
  # enabled on. Each entry in the list should be a json object which may
  # contain Regex, Beacon, Listen, and Port. Regex is a regular expression
  # which is matched against an interface name, and interfaces use the
  # first configuration that they match gainst. Beacon configures whether
  # or not the node should send link-local multicast beacons to advertise
  # their presence, while listening for incoming connections on Port.
  # Listen controls whether or not the node listens for multicast beacons
  # and opens outgoing connections.
  MulticastInterfaces:
  [
    {
      Regex: .*
      Beacon: true
      Listen: true
      Port: 0
      Priority: 0
    }
  ]

  # List of peer public keys to allow incoming peering connections
  # from. If left empty/undefined then all connections will be allowed
  # by default. This does not affect outgoing peerings, nor does it
  # affect link-local peers discovered via multicast.
  AllowedPublicKeys: []

  # Your public key. Your peers may ask you for this to put
  # into their AllowedPublicKeys configuration.
  PublicKey: 19aa576a5468b6c5176de899088d667e094296cabfaf80bfe4080274c3549e90

  # Your private key. DO NOT share this with anyone!
  PrivateKey: d2b7cfe60f0ea0f188a1efe65e8e50c9eaa8719b2cc392a072f50169fed6c3e819aa576a5468b6c5176de899088d667e094296cabfaf80bfe4080274c3549e90

  # Local network interface name for TUN adapter, or "auto" to select
  # an interface automatically, or "none" to run without TUN.
  IfName: auto

  # Maximum Transmission Unit (MTU) size for your local TUN interface.
  # Default is the largest supported size for your platform. The lowest
  # possible value is 1280.
  IfMTU: 65535

  # By default, nodeinfo contains some defaults including the platform,
  # architecture and Yggdrasil version. These can help when surveying
  # the network and diagnosing network routing problems. Enabling
  # nodeinfo privacy prevents this, so that only items specified in
  # "NodeInfo" are sent back if specified.
  NodeInfoPrivacy: false

  # Optional node info. This must be a { "key": "value", ... } map
  # or set as null. This is entirely optional but, if set, is visible
  # to the whole network on request.
  NodeInfo: {}
}

Does that help?

lavinkabul commented 1 year ago

Does that help?

Absolutely not. I asked specific questions about setting up yggdrasil on a router with OpenWRT OS. And I can also write "software --help". Please write about the case.

perguth commented 1 year ago

What actually is your question?

lavinkabul commented 1 year ago

What actually is your question?

How do I configure the parameters shown in the screenshots?

perguth commented 1 year ago

The only thing that looks wrong to me is the interface setting of your Yggdrasil interface.

You could take a check at my screenshot for how it can look when it works:

image image

turretkeeper commented 1 year ago

FYI, there is an active pull request in the opkg repository that aims to make configuring Yggdrasil on OpenWrt a more streamlined experience - see openwrt/packages#20626.