Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/tflanagan/node-iptables-country-block


https://github.com/tflanagan/node-iptables-country-block

Last synced: about 2 months ago
JSON representation

Awesome Lists containing this project

README

        

# iptables-country-block

Interact with `iptables`, block whole countries based on assigned ip blocks

## Install

```
$ npm install [--global] iptables-country-block
```

## Usage

### CLI

Note: Most use cases requires `--global` installation

```
$ [sudo] iptables-country-block [""[ ""[ ""]]]
$ [sudo] iptables-country-block "ru cn" "countryipblock" "https://raw.githubusercontent.com/herrbischoff/country-ip-blocks/master/ipv4/{isoCode}.cidr"
```

### Require
```js
const {
createIptablesChain,
getCountryIPBlocks,
iptables
} = require('iptables-country-block');

await iptables('-N somechain');
// or await createIptablesChain('somechain');

const ipBlocks = await getCountryIPBlocks(
'https://raw.githubusercontent.com/herrbischoff/country-ip-blocks/master/ipv4/{isoCode}.cidr',
'cn'
);

for(let i = 0; i < ipBlocks.length; ++i){
await iptables('-A somechain -s ' + ipBlocks[i] + ' -j DROP');
}

await iptables('-I INPUT -j somechain');
await iptables('-I OUTPUT -j somechain');
await iptables('-I FORWARD -j somechain');
```