IPv6 NAT Code
Status: Beta
Brought to you by:
qycaitian
| File | Date | Author | Commit |
|---|---|---|---|
| ChangeLog | 2011-11-04 | qycaitian | [r15] Fixed a bug on getting router's MAC address |
| LICENSE | 2010-10-30 | qycaitian | [r1] |
| Makefile | 2012-08-28 | qycaitian | [r16] |
| README | 2012-08-28 | qycaitian | [r16] |
| balancer.cpp | 2011-05-17 | qycaitian | [r13] |
| balancer.h | 2011-05-17 | qycaitian | [r13] |
| entry.cpp | 2012-08-28 | qycaitian | [r16] |
| factory.cpp | 2011-05-17 | qycaitian | [r13] |
| factory.h | 2011-05-05 | qycaitian | [r10] |
| forwarder.cpp | 2011-06-09 | qycaitian | [r14] |
| forwarder.h | 2011-06-09 | qycaitian | [r14] |
| ip_wan_map.cpp | 2011-05-17 | qycaitian | [r13] |
| ip_wan_map.h | 2011-05-09 | qycaitian | [r11] |
| ipv6_nat.cpp | 2011-11-04 | qycaitian | [r15] Fixed a bug on getting router's MAC address |
| ipv6_nat.h | 2011-05-05 | qycaitian | [r10] |
| ipv6_nat.sh | 2011-05-03 | qycaitian | [r9] |
| ipv6nat_port_map.conf | 2011-05-10 | qycaitian | [r12] |
| load_monitor.cpp | 2011-05-17 | qycaitian | [r13] |
| load_monitor.h | 2011-05-17 | qycaitian | [r13] |
| port_map.cpp | 2011-05-17 | qycaitian | [r13] |
| port_map.h | 2011-05-17 | qycaitian | [r13] |
| protocol.cpp | 2011-05-17 | qycaitian | [r13] |
| protocol.h | 2011-05-17 | qycaitian | [r13] |
| restrictor.cpp | 2011-05-17 | qycaitian | [r13] |
| restrictor.h | 2011-05-17 | qycaitian | [r13] |
IPv6 NAT - A NAT(network address translation) for IPv6
1. Instructions
This is a simple NAT for IPv6. Make sure if you really need it before
using it. (If you don't know what is a NAT, you don't need it.)
Before running this, please:
* Disable IPv6 kernel forwarding;
* Block out-going IPv6 TCP reset packets on WAN interface;
* Block out-going ICMPv6 neighbour-advertisement packets on LAN
interface;
* Block out-going ICMPv6 destination-unreachable packets.
Usage:
ipv6_nat LAN_interface [-w WAN_interface_number] WAN_interface0 [WAN0_router_MAC] [WAN_interface1 [WAN1_router_MAC]]...
"ipv6_nat.sh" is an example to run this tool.
Static port mapping is configured in /etc/ipv6nat_port_map.conf , each
line of which contains a port mapping definition. For example:
tcp 4422 00:AA:BB:CC:DD:EE 2001:2:3:4:00af:cfaa:bbcc:ddee 22 0
defined a TCP port mapping from [2001:2:3:4:00af:cfaa:bbcc:ddee]:22 to
[WAN IP]:4422 via WAN interface 0, where 00:AA:BB:CC:DD:EE is the MAC address of
[2001:2:3:4:00af:cfaa:bbcc:ddee].
NOTE: each line starts with '#' will be treated as comment and ignored!
2. System Requirements
* OS is Linux;
* IPv6 is compiled into the kernel;
* ip6tables is installed.
3. Functions
* IPv6 auto configuration (If you run it on the gateway, all the PCs
in the LAN will get 'fake' IPv6 global addresses and IPv6 route);
* Port forwarding for TCP, UDP and ICMP-Echo;
* Static port mapping for TCP and UDP;
* Multiple WAN interfaces are supported.
4. License (GPL License)
Copyright (C) 2010-2012 CTQY <qiyi.caitian@gmail.com>
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 program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.