github
Advanced Search
  • Home
  • Pricing and Signup
  • Explore GitHub
  • Blog
  • Login

jakkarth / icmptx

  • Admin
  • Watch Unwatch
  • Fork
  • Your Fork
  • Pull Request
  • Download Source
    • 7
    • 1
  • Source
  • Commits
  • Network (1)
  • Issues (1)
  • Downloads (1)
  • Wiki (1)
  • Graphs
  • Branch: master

click here to add a description

click here to add a homepage

  • Branches (1)
    • master ✓
  • Tags (1)
    • 0.2
Sending Request…
Enable Donations

Pledgie Donations

Once activated, we'll place the following badge in your repository's detail box:
Pledgie_example
This service is courtesy of Pledgie.

IP-over-ICMP tunnel — Read more

  cancel

  cancel
  • Private
  • Read-Only
  • HTTP Read-Only

This URL has Read+Write access

Fixed the home page 
John Plaxco (author)
Wed Dec 10 16:25:21 -0800 2008
commit  33e0b826f99df290ee792f6aa587af273d674309
tree    1733d909d359daa05038f61595ea9ca79c7ee588
parent  5c07c1b1c485e0803ede5b227e313e8565b51d10
icmptx /
name age
history
message
file COPYING Wed Dec 10 16:14:52 -0800 2008 Finalized licensing changes, added documentatio... [John Plaxco]
file Makefile Wed Dec 10 16:14:52 -0800 2008 Finalized licensing changes, added documentatio... [John Plaxco]
file README Wed Dec 10 16:25:21 -0800 2008 Fixed the home page [John Plaxco]
file icmptx.c Wed Dec 10 16:25:21 -0800 2008 Fixed the home page [John Plaxco]
file it.c Wed Dec 10 16:14:52 -0800 2008 Finalized licensing changes, added documentatio... [John Plaxco]
file tun_dev.c Wed Dec 10 16:14:52 -0800 2008 Finalized licensing changes, added documentatio... [John Plaxco]
file tun_dev.h Wed Dec 10 16:14:52 -0800 2008 Finalized licensing changes, added documentatio... [John Plaxco]
README
This is the ICMPTX program.

This software is most recently available from http://github.com/jakkarth/icmptx

ICMPTX is a program that allows a user with root privledges to create a
virtual network link between two computers, encapsulating data inside of
ICMP packets.

-- license --

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this ICMPTX.  If not, see <http://www.gnu.org/licenses/>.

-- basic usage instructions --

First, make sure you have the tun module from your 2.6 kernel loaded up
or compiled into your kernel on both ends of your tunnel.

Second, compile the code on both the client machine and the server you
wish to tunnel your traffic between.

Third, on the server side, do something like

./icmpx -s 1.2.3.4 &
sleep 1
ifconfig tun0 10.0.3.1 netmask 255.255.255.0

Fourth, on the client side, do something like

./icmptx -c 1.2.3.4 &
sleep 1
ifconfig tun0 10.0.3.2 netmask 255.255.255.0

Replace 1.2.3.4 with your internet-accessible IP on the server. At this
point you should have a simple link between the client and server. On
the client, you should be able to ping 10.0.3.1 and get a response. Note
that there are several levels of irony involved in receiving the responses.
SSH tunneling can be used at this point for secure communication over the
channel. Note that there is no encryption capability provided directly by
ICMPTX.

Once you've confirmed that the tunnel does in fact work, routing should be
easily accomplished. The tun interfaces are just like any other ethernet
devices on your system and can be used as such, for example:

route add -net 192.168.0.0/24 gw 10.0.3.1

executed on the client could add a route to your server's DMZ segment.
Access to systems on the 192.168.0.0/24 subnet from the client would
then be transparently tunneled through the ICMPTX connection.

-- who's to blame for all this? --

ICMPTX has an interesting lineage. The code for the ICMP handling was
originally included from the itunnel program. Tun interface handling
was included from the VTun project, originally authored by Maxim
Krasnyansky. The two were brought together by edi / teso. From there,
Siim Põder cleaned up the code and wrote a short article about it,
possibly still available at http://www.linuxexposed.com/content/view/153/52/ .
That seems to be where Thomer Gil found it, after which he further cleaned
it up and presented it at http://thomer.com/icmptx/, which is where I,
John Plaxco, came across it. Further and newer information may be
available at the project's homepage at http://github.com/jakkarth/icmptx.
Blog | Support | Training | Contact | API | Status | Twitter | Help | Security
© 2010 GitHub Inc. All rights reserved. | Terms of Service | Privacy Policy
Powered by the Dedicated Servers and
Cloud Computing of Rackspace Hosting®
Dedicated Server