Giter Site home page Giter Site logo

fusl / intrace Goto Github PK

View Code? Open in Web Editor NEW
221.0 221.0 46.0 282 KB

Multi-probe looking glass with simple but powerful configuration for probes and lookup types (BIRD, MTR, Ping & Traceroute pre-configured)

Home Page: https://mtr.sh/

License: BSD 3-Clause "New" or "Revised" License

JavaScript 87.79% CSS 4.07% HTML 8.14%

intrace's Introduction

intrace

intrace is a multi-purpose and multi-location looking glass supporting a wide variety of query types through some easy configuration files (BIRD, MTR, Ping & Traceroute pre-configured)

Deploying a new intrace instance

  • Build Node.js from source or install pre-built .deb/.rpm packages
  • Install git and tmux or screen on the looking glass server: sudo apt-get install git-core tmux/screen or yum install git tmux/screen
  • Pull the latest master code from the repository: git clone https://github.com/Fusl/intrace $HOME/intrace
  • Change directory to intrace: cd $HOME/intrace
  • Copy the example configuration files: cp config/caps.json.example config/caps.json; cp config/private.json.example config/private.json; cp config/probes.json.example config/probes.json; cp config/public.json.example config/public.json
  • Read through the configuration reference and edit the caps.json, private.json, probes.json and public.json configuration files to your needs
  • Install package dependencies: npm install
  • Create a SSH keypair: ssh-keygen -t ed25519
  • Copy the SSH public key to all probe servers: ssh-copy-id -i $HOME/.ssh/id_ed25519.pub user@hostname
  • Make sure you can SSH into (all) probe servers: ssh user@hostname
  • Make sure all required commands on all probe servers are installed: Default configuration with bird, traceroute, ping and mtr require the packages bird, iputils-ping, traceroute and mtr-tiny to be installed
  • Start the looking glass daemon: node lg.js
  • Open the looking glass frontend in your browser: http://<ip address>:<port number>/
  • Additional step: Stop the looking glass (CTRL+C) and start it within tmux or screen: tmux -Lintrace -f /dev/null new-session 'node lg.js' or screen -amdS intrace 'node lg.js'

Using behind nginx proxy on a relative path

In order for nginx reverse proxying to work, you must set the following additional nginx headers in its location block:

	location /mtr/ {
		proxy_pass http://<host-or-ip-of-intrace-instance>:8080/;
		proxy_http_version 1.1;
		proxy_set_header Orig_Host $http_host;
		proxy_set_header Upgrade $http_upgrade;
		proxy_set_header Connection "upgrade";
	}

Upgrading an existing intrace instance

  • Change directory to intrace: cd $HOME/intrace
  • Pull all changes from the repository: git pull
  • Stop and restart the currently running intrace instance: tmux -Lintrace attach or screen -x intrace to attach the tmux/screen, stop the looking glass (CTRL+C) and start it again within tmux or screen: tmux -Lintrace -f /dev/null new-session 'node lg.js' or screen -amdS intrace 'node lg.js'

intrace's People

Contributors

bbashy avatar fusl avatar n-st avatar smcfreak avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

intrace's Issues

IPv4/6 Improvements.

Allow the per-host configuration to specify the host capability. (E.g. v4 or v6 only, or both)

Use that data to automatically parse input from user, and de-select hosts that are not capable to run the requested query.

For example MTR to v6 address from a v4 only host will result in no output, which can be avoided using this added check.

Potentially make this work the other way around as well, so a v6-only host will not display failed MTR to a v4 IP. (Considering the uprise of v6 only VPS from various providers, this may come in handy as more providers do it.)

Suppress -z option warning.

Some implementations of MTR do not support usage of -z to view AS numbers.

If still used, this causes an error mtr: invalid option -- 'z' to be shown on the page.

This should be suppressed from being shown, or have the -z option not be sent to those installations.

Latam Testers

Hello,

Can I provide free servers all over South America for testing, just in exchange for maybe some advertising, are you interested?
I can provide, Colombia, Argentina, Peru, Chile, Brazil for now.
Stay tuned.
Thank you.

BGP map

Have you thought about adding BGP map like in bird-lg?
image

That one is across the whole network, but it would probably work even when rendered per probe.
One thing I'd like is to use Arista commands instead of bird though, so it'd have to be a little smart about how to parse data.
(I might write this myself later, we're planning to get rid of bird-lg because the BGP sessions eat up resources on switches)

Please update

Error: The delayMs option was removed from express-rate-limit v3.

Also I can see mtr.sh is resolving domains but you haven't updated it here.

Filter Nodes baesd on possible query types

It seems that not all nodes support all query types. Therefore, it might be helpful to display only those that are able to perform the desired query based on the selected query types.

This appears to be especially relevant for the "BGP Route Table Dump".

Example IPv6 BGP query fails due to wrong bash syntax

bash: -c: line 0: syntax error near unexpected token `|'
bash: -c: line 0: `birdc6 -r 'show route all for 2a03:f80:: primary' 2> /dev/null | tail -n+3 | | fgrep -v -e 'BGP.next_hop: ' -e 'BGP.origin: ' -e 'BGP.local_pref: ' | sed -r 's/ from [a-f0-9:]+\]/ from ::]/''

Resolve Domains.

Have the ability to automatically distinguish between IP's and Domains being input by the user, and resolve these to execute the tests on.

Allow to select v4 and v6, potentially with default to one of them. (Up to you.)

API limitations

Hi,

I have tried to use the API to check regularly some destinations over the world and ensure there is no routing issue.
On the paper, mtr.sh API is the best for that (btw, thank you for mtr.sh, it is really an awesome tool!).

Unfortunately, after few requests, it seems that my IP is blocked (probably dropped on a firewall?).
What are the limitations and how can I avoid to be blocked like this?

Thanks,
Adrien

Add tcptraceroute

Is it possible to add tcptraceroute to a particular port or set of ports? Thx.

Share link with preconfigured values.

Store values such as IP and server selection in URL, to allow copy and share, or provide special share link, with values configured in it.

This is to allow sharing and saving a certain IP/server configuration to re-use.

how can i get an vps

how can i get an vps with this ips? is there a way or no?
also when i ping am i pinging from linux 'ssh' or what?
i runned tests and found that Anexia AS42473 is very good for my needs

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.