meta data for this page
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| linux:vpn:wireguard [2024/12/20 18:25] – niziak | linux:vpn:wireguard [2025/09/23 08:14] (current) – niziak | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Wireguard ====== | ====== Wireguard ====== | ||
| - | ===== Server setup ===== | + | * [[https:// |
| + | * [[https:// | ||
| + | |||
| + | ===== routing ===== | ||
| + | |||
| + | * sending: list of allowed IPs behaves as routing table | ||
| + | * receiving: list of allowed IPs behaves as ACL | ||
| + | |||
| + | ==== mesh ==== | ||
| + | |||
| + | Duplicated peer IPS (allowed IPs): | ||
| + | * not allowed | ||
| + | * technically wg is working but traffic is directed only to last connected peer ??? | ||
| + | |||
| + | The same peer IP (allowed IPs) on 2 or more wg interfaces: | ||
| + | * allowed | ||
| + | * kernel routing makes decision | ||
| + | |||
| + | Best and clear option: | ||
| + | * P2P wg links | ||
| + | * OSPF or other dynamic routing protocol | ||
| + | |||
| + | ==== working example ==== | ||
| + | |||
| + | ''/ | ||
| + | * Kernel: traffic to ''/ | ||
| + | * WG: if routed IP is in '' | ||
| + | * WG: if routed IP belongs to one of known peers, it will route it automatically | ||
| + | Tested on '' | ||
| + | All peers were in one ''/ | ||
| + | |||
| + | NOTE: trying to '' | ||
| + | |||
| + | |||
| + | ===== Setup ===== | ||
| <code bash> | <code bash> | ||
| Line 8: | Line 42: | ||
| chmod 400 publickey privatekey | chmod 400 publickey privatekey | ||
| </ | </ | ||
| + | |||
| + | ===== Server setup ===== | ||
| <file ini / | <file ini / | ||
| [Interface] | [Interface] | ||
| - | Address = 192.168.x.1/ | + | ListenPort = 12345 |
| - | ListenPort = ... | + | |
| PrivateKey = ... | PrivateKey = ... | ||
| - | SaveConfig | + | |
| + | [Peer] | ||
| + | PublicKey | ||
| + | AllowedIPs = 192.168.1.24/ | ||
| + | |||
| + | [Peer] | ||
| + | PublicKey = ... | ||
| + | AllowedIPs = 192.168.1.25/ | ||
| </ | </ | ||
| + | |||
| + | ===== Client setup ===== | ||
| + | |||
| + | <file ini / | ||
| + | |||
| + | [Interface] | ||
| + | PrivateKey = ... | ||
| + | |||
| + | [Peer] | ||
| + | PublicKey = ... | ||
| + | Endpoint = ip1.example.com: | ||
| + | AllowedIPs = 0.0.0.0/0 | ||
| + | PersistentKeepalive = 55 | ||
| + | </ | ||
| + | |||
| + | ===== Applying changes ===== | ||
| + | |||
| + | <code bash> | ||
| + | wg syncconf wg0 / | ||
| + | #wg setconf wg0 / | ||
| + | </ | ||
| + | |||
| + | Note: | ||
| + | * '' | ||
| + | * '' | ||
| ===== Interface autostart ===== | ===== Interface autostart ===== | ||
| - | < | + | ==== using ifupdown ==== |
| + | |||
| + | <file / | ||
| + | # activate on boot | ||
| auto wg0 | auto wg0 | ||
| + | # interface configuration | ||
| iface wg0 inet static | iface wg0 inet static | ||
| - | address 192.168.176.101/24 | + | address 192.168.1.24/24 |
| pre-up ip link add wg0 type wireguard | pre-up ip link add wg0 type wireguard | ||
| pre-up wg setconf wg0 / | pre-up wg setconf wg0 / | ||
| + | |||
| + | post-up ... | ||
| + | |||
| + | post-down ... | ||
| post-down ip link del wg0 | post-down ip link del wg0 | ||
| + | </ | ||
| + | |||
| + | ==== using ifupdown + wgquick ==== | ||
| + | |||
| + | Usefull when client config is generated in '' | ||
| + | |||
| + | <file / | ||
| + | # activate on boot | ||
| + | auto user-tunnel | ||
| + | |||
| + | # interface configuration | ||
| + | iface user-tunnel inet static | ||
| + | address 192.168.1.24/ | ||
| + | pre-up wg-quick up $IFACE | ||
| + | post-down wg-quick down $IFACE | ||
| </ | </ | ||
| Line 46: | Line 136: | ||
| sudo systemctl enable --now wg-quick@wg0 | sudo systemctl enable --now wg-quick@wg0 | ||
| </ | </ | ||
| - | |||
| - | ==== using ifupdown ==== | ||
| - | |||
| - | <file wg0.conf> | ||
| - | [Interface] | ||
| - | ListenPort = ... | ||
| - | PrivateKey = ... | ||
| - | </ | ||
| - | |||
| - | <file / | ||
| - | # activate on boot | ||
| - | auto wg0 | ||
| - | # interface configuration | ||
| - | iface wg0 inet static | ||
| - | address 192.168.x.1/ | ||
| - | pre-up ip link add wg0 type wireguard | ||
| - | pre-up wg setconf wg0 / | ||
| - | |||
| - | post-up ... | ||
| - | |||
| - | post-down ... | ||
| - | post-down ip link del wg0 | ||
| - | </ | ||