utun
v2.1.0
Published
Make TUN devices
Readme
utun
Make TUN devices
npm i utunUsage
const UTUN = require('utun')
const ip = require('ip-packet')
const u = new UTUN()
u.configure({
ip: '10.22.0.10',
netmask: '255.255.255.255',
route: '10.22.0.0/24'
})
u.on('data', function (buffer) {
console.log(ip.decode({ start: 0, end: buffer.byteLength, buffer }))
})
API
new UTUN(opts = {})
opts
nameset interface name where supported, defaults totunnel0
async configure(opts)
Attempts to normalize interface configuration across platforms.
opts
ipassigns address to interfacenetmasksets netmaskrouteadds an additional route
note1: on linux the route option may have to be omitted as
as system adds route ip/netmask to interface by default.
Use ip route show to verify routes after configure resolves.
note2: on mac, packets to local address (utun.ip) are captured by default.
Use route -n to verify routes after configure resolves.
async write(buffer)
Transmits a packet on the tunnel device, resolves when packet is was enqueued.
tryWrite(buffer)
Same as write but does not retry when queue is full.
Simply returns boolean indicating wether packet was accepted or not.
async close()
Closes the interface
info(reset = false)
Exports tunnel statistics and counters.
sample:
{
name: 'tunnel0',
rxBytes: 1188,
rxPackets: 10,
rxDrop: 5,
txBytes: 0,
txPackets: 0,
txRejected: 0
}resetresets all counters.
License
Apache-2.0
