Make TUN devices
npm i utun
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 }))
})
opts
-
name
set interface name where supported, defaults totunnel0
Attempts to normalize interface configuration across platforms.
opts
-
ip
assigns address to interface -
netmask
sets netmask -
route
adds 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.
Transmits a packet on the tunnel device, resolves when packet is was enqueued.
Same as write but does not retry when queue is full.
Simply returns boolean
indicating wether packet was accepted or not.
Closes the interface
Exports tunnel statistics and counters.
sample:
{
name: 'tunnel0',
rxBytes: 1188,
rxPackets: 10,
rxDrop: 5,
txBytes: 0,
txPackets: 0,
txRejected: 0
}
-
reset
resets all counters.
Apache-2.0