# wg-allowed-ips

> #### Motivation

Latest version **0.2.0** (published 2021-12-09) · MIT license · 0 weekly downloads

## Install

```sh
npm install wg-allowed-ips
pnpm add wg-allowed-ips
yarn add wg-allowed-ips
bun add wg-allowed-ips
```

Provides the command `wg-allowed-ips`.

## Health

**Score 20/100 (F)** — status: abandoned.

Positive: esm support; no vulnerabilities.

Warnings: low downloads; no types; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.2.0 |
| Published | 2021-12-09 |
| First published | 2021-12-01 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | ESM + CommonJS |
| Dependencies | 6 |
| Unpacked size | 390.3 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Maintainers | 0x450x6c |

## Links

- npm: https://www.npmjs.com/package/wg-allowed-ips
- npm.io page: https://npm.io/package/wg-allowed-ips

## Dependencies (6)

- [fp-ts](https://npm.io/package/fp-ts.md) ^2.11.5
- [io-ts](https://npm.io/package/io-ts.md) ^2.2.16
- [parser-ts](https://npm.io/package/parser-ts.md) ^0.6.16
- [decline-ts](https://npm.io/package/decline-ts.md) ^0.10.0
- [fp-ts-contrib](https://npm.io/package/fp-ts-contrib.md) ^0.1.26
- [@effect-ts/core](https://npm.io/package/@effect-ts/core.md) ^0.46.1

## Recent versions

- 0.2.0 (latest) — 2021-12-09
- 0.1.0 — 2021-12-02
- 0.0.5 — 2021-12-01
- 0.0.4 — 2021-12-01
- 0.0.3 — 2021-12-01
- 0.0.2 — 2021-12-01
- 0.0.1 — 2021-12-01
- 0.0.0 — 2021-12-01

## README

# Wireguard AllowedIPs generator

#### Motivation

If we want to pass all traffic trough wireguard except some IPs, we can't do it in the wireguard configuration.

This [blogpost](https://www.procustodibus.com/blog/2021/03/wireguard-allowedips-calculator/) contains more info about it,
and even contains AllowedIPs generator, but does not work with large subnets.

In my case, I wanted to pass all traffic through wireguard except my country's traffic, and except cloudflare's traffic.

#### Usage

There are two options: `--allowed-ips` and `--disallowed-ips`,
both accepts the list of `IP`s separated by newline or space,
the `IP` can be in `CIDR` format (`IpV4` or `IpV6`),
or range like `10.0.0.0 - 11.0.0.0`.

Example command for "everything except cloudflare/Netherlands/rfc1918/loopback":

```
npx wg-allowed-ips --allowed-ips "0/0 ::/0" --disallowed-ips "$(curl -L https://www.cloudflare.com/ips-v4) $(curl -L https://www.cloudflare.com/ips-v6) $(curl -L http://ipverse.net/ipblocks/data/countries/nl.zone) $(curl -L http://ipverse.net/ipblocks/data/countries/nl-ipv6.zone) 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 fd00::/8"
```

Note, that algorithm is not optimized at all, and can work slow in some cases, but it works correct even if you process large subnets.

You can use this project as a library, but it is not designed for this use case, it has heavy weight dependencies (effect-ts/fp-ts/io-ts), so please don't use it in the frontend.

---
_Source: https://npm.io/package/wg-allowed-ips · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
