Infraestructura/CCGSM

From Wikimania

/etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

## eth0 - IPLAN1
auto eth0
iface eth0 inet static
	address 190.2.21.21
	netmask 255.255.255.252
	network 190.2.21.20
	broadcast 190.2.21.23
	gateway 190.2.21.22

## eth1 - DMZ y Hacklab
#auto eth1
#iface eth1 inet static
#	address 10.1.0.1
#	netmask 255.255.255.0

## eth2 - Enlace con Alvear
auto eth2
iface eth2 inet static
	address 10.2.0.1
	netmask 255.255.0.0

## eth3 - IPLAN2
#auto eth3
#iface eth3 inet static
#	address 200.68.88.17
#	netmask 255.255.255.252
	#gateway 200.68.88.18

# eth3 - DMZ y Hacklab
auto eth3
iface eth3 inet static
	address 10.1.0.1
	netmask 255.255.0.0

# eth1 - IPLAN2
auto eth1
iface eth1 inet static
	address 200.68.88.17
	netmask 255.255.255.252
	#gateway 200.68.88.18

## eth4 - Enlace con Bauen
auto eth4
iface eth4 inet static
	address 10.4.0.1
	netmask 255.255.0.0
	network 10.4.0.0
	broadcast 10.4.0.255

## eth5 - sala-muino sala-madres entrada 
auto eth5
iface eth5 inet static
	address 10.5.0.1
	netmask 255.255.0.0

## eth6 - sala-c sala-d
auto eth6
iface eth6 inet static
	address 10.6.0.1
	netmask 255.255.0.0

## eth8 - redundante 
auto eth7
iface eth7 inet static
	address 10.7.0.1
	netmask 255.255.0.0

## eth8 - Speedy
auto eth8
iface eth8 inet static
	address 200.5.112.242
	netmask 255.255.255.128
	#gateway 200.5.112.241

/etc/dhcp3/dhcpd.conf

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;

# option definitions common to all supported networks...
option domain-name "wikimania.bal.org.ar"; # by fefu 20090821
option domain-name-servers ns1, ns2; # by fefu 20090821

default-lease-time 3600;
max-lease-time 7200;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
authoritative; # by fefu 20090816

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

shared-network ccgsm1.wikimania.bal.org.ar {
	subnet 10.1.0.0 netmask 255.255.0.0 {
	            option routers gwccgsm1;
                range 10.1.1.1 10.1.254.254;
    }
}

shared-network ccgsm5.wikimania.bal.org.ar {
	subnet 10.5.0.0 netmask 255.255.0.0 {
	            option routers gwccgsm5;
                range 10.5.1.1 10.5.254.254;
    }
}

shared-network ccgsm6.wikimania.bal.org.ar {
	subnet 10.6.0.0 netmask 255.255.0.0 {
	            option routers gwccgsm6;
                range 10.6.1.1 10.6.254.254;
    }
}

shared-network ccgsm7.wikimania.bal.org.ar {
	subnet 10.7.0.0 netmask 255.255.0.0 {
	            option routers gwccgsm7;
                range 10.7.1.1 10.7.254.254;
    }
} 

# Enlaces
shared-network ccgsm2.wikimania.bal.org.ar {
    # Para administrar todo desde el ccgsm incluso con el servidor alvear apagado es que ponemos la ruta predeterminada en el ccgsm
    subnet 10.2.0.0 netmask 255.255.0.0 {
            range 10.2.1.1 10.2.254.254;
	        option routers gwccgsm-alvear;
    }

    host ap-ccgsm-alvear { 
	    option routers gwccgsm-alvear;
        hardware ethernet 00:15:6D:BD:9B:9D;
        fixed-address ap-ccgsm-alvear;
    }

    host ap-alvear-ccgsm { # vamos a probar de routear sin option routers
        hardware ethernet 00:15:6D:BD:6F:AE;
        fixed-address ap-alvear-ccgsm;
    }

}

shared-network bauen.wikimania.bal.org.ar {
	option routers gwbahuen1;

	subnet 10.4.0.0 netmask 255.255.0.0 {
                range 10.4.1.1 10.4.254.254;
    }
 
    host ap-bauenpenthouse { 
                hardware ethernet 00:4F:62:09:59:55;
                fixed-address ap-bauenpenthouse;
    }

    host ap-ccgsm-bauen { 
        hardware ethernet 00:15:6D:BE:9C:C8;
        fixed-address ap-ccgsm-bauen;
    }

    host ap-bauen-ccgsm { 
        hardware ethernet 00:15:6D:BE:9C:90;
        fixed-address ap-bauen-ccgsm;
    }

}

# Access Points
host ap-hacklab { 
    hardware ethernet 00:15:6D:D4:FF:69;
    fixed-address ap-hacklab;
    }

host ap-muino { 
    hardware ethernet 00:15:6D:D6:25:2B;
    fixed-address ap-muino;
    }

host ap-madres { 
    hardware ethernet 00:15:6D:D6:23:3B;
    fixed-address ap-madres;
    }

host ap-c { 
    hardware ethernet 00:15:6D:D4:FF:61;
    fixed-address ap-c;
    }

host ap-f { 
    hardware ethernet 00:15:6D:D6:24:7A;
    fixed-address ap-f;
    }

host ap-d { 
    hardware ethernet 00:15:6D:D6:23:1C;
    fixed-address ap-d;
    }

host ap-hall { 
    hardware ethernet 00:15:6D:D6:23:1B;
    fixed-address ap-hall;
    }

host ap-hall2 { 
    hardware ethernet 00:15:6D:D4:FF:8D;
    fixed-address ap-hall2;
    }

host ap-entrada { 
    hardware ethernet 00:15:6D:D6:24:AA;
    fixed-address ap-entrada;
    }

# Video server
host video-muino { 
    hardware ethernet 00:24:21:7a:26:1c; # tute
    fixed-address video-muino;
    }

host video-madres { 
    hardware ethernet 00:24:21:7A:26:EA;
    fixed-address video-madres;
    }

host video-c { 
    hardware ethernet 00:24:21:7a:26:b6;
    fixed-address video-c;
    }

host video-f { 
    hardware ethernet  00:24:21:7a:2b:64;
    fixed-address video-f;
                }

host video-d { 
    hardware ethernet 00:24:21:7a:25:8c;
    fixed-address video-d;
    }

/etc/bind/named.conf

// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the 
// structure of BIND configuration files in Debian, *BEFORE* you customize 
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local

include "/etc/bind/named.conf.options";

acl "ourlocalnets" {
        127.0.0.1;
        190.2.21.21;
        200.68.88.17;
        10.1.0.0/16;
        10.2.0.0/16;
        10.3.0.0/16;
        10.4.0.0/16;
        10.5.0.0/16;
        10.6.0.0/16;
        10.7.0.0/16;
        10.8.0.0/16;
//        10.0.0.0/8;
};

view "internal" {
        match-clients { ourlocalnets; };

        zone "." {
                type hint;
                file "/etc/bind/db.root";
        };

        zone "localhost" {
                type master;
                file "/etc/bind/db.local";
        };

        zone "127.in-addr.arpa" {
                type master;
                file "/etc/bind/db.127";
        };

        zone "0.in-addr.arpa" {
                type master;
                file "/etc/bind/db.0";
        };

        zone "255.in-addr.arpa" {
                type master;
                file "/etc/bind/db.255";
        };

        zone "10.in-addr.arpa" {
                type master;
                file "/etc/bind/wikimania.bal.org.ar-interna-reversas";
        };

        zone "wikimania.bal.org.ar" {
                allow-transfer { 10.2.0.4; };
                allow-update { 10.2.0.4; };
                type master;
                file "/etc/bind/wikimania.bal.org.ar-interna";
        };

};

view "external" {
        match-clients { any; };

        //recursion no;

        zone "localhost" {
                type master;
                file "/etc/bind/db.local";
        };

        zone "127.in-addr.arpa" {
                type master;
                file "/etc/bind/db.127";
        };

        zone "0.in-addr.arpa" {
                type master;
                file "/etc/bind/db.0";
        };

        zone "255.in-addr.arpa" {
                type master;
                file "/etc/bind/db.255";
        };

        zone "wikimania.bal.org.ar" {
                allow-transfer { 10.4.0.6; 10.4.0.23; 10.2.0.4; 190.228.30.152; 200.32.106.149; };
                allow-update { 10.4.0.6; 10.4.0.23; 10.2.0.4; 190.228.30.152; 200.32.106.149; };
                type master;
                file "/etc/bind/wikimania.bal.org.ar-externa";
        };

};

/etc/bind/named.conf.options

options {
	directory "/var/cache/bind";

	// If there is a firewall between you and nameservers you want
	// to talk to, you may need to fix the firewall to allow multiple
	// ports to talk.  See http://www.kb.cert.org/vuls/id/800113

	// If your ISP provided one or more IP addresses for stable 
	// nameservers, you probably want to use them as forwarders.  
	// Uncomment the following block, and insert the addresses replacing 
	// the all-0's placeholder.

	// forwarders {
	// 	0.0.0.0;
	// };

	auth-nxdomain no;    # conform to RFC1035
        //allow-query { any; };
	//listen-on-v6 { any; };
        allow-transfer { 190.228.30.152; };
};

/etc/bind/wikimania.bal.org.ar-externa

; wikimania.bal.org.ar
$TTL 86400
@ IN SOA ccgsm.bal.org.ar. hostmaster.wikimania.bal.org.ar. (
                        2009083203      ;serial
                        1200            ;slave refresh
                        600             ;slave retry
                        604800          ;slave expiration
                        3600 )          ;negative ttl

                NS ccgsm.bal.org.ar.
                NS alvear.bal.org.ar.
;
                MX      10      ccgsm.bal.org.ar.
ccgsm           A       190.2.21.21
;alvear          A      190.3.21.21
public          CNAME   ccgsm
conferences     CNAME   ccgsm
ftp     CNAME   ccgsm

/etc/bind/wikimania.bal.org.ar-interna

; wikimania.bal.org.ar
$TTL 86400
@ IN SOA ccgsm.wikimania.bal.org.ar. hostmaster.wikimania.bal.org.ar. (
                        2009082702      ;serial
                        1200            ;slave refresh
                        600             ;slave retry
                        604800          ;slave expiration
                        3600 )          ;negative ttl

                NS ccgsm.bal.org.ar.
                NS alvear.bal.org.ar.
;
                MX      10      ccgsm.bal.org.ar.
; Servidores
alvear		    A   10.2.0.4
ccgsm           A   10.4.0.1
nagios		A   10.4.0.5	; servidor de tute con nagios

;
; CNAMEs
ns1	                    CNAME	ccgsm
ns2	                    CNAME	alvear
public                  CNAME   ccgsm
conferences             CNAME   ccgsm
proxy                   CNAME   ccgsm
ftp                     CNAME   ccgsm
;
; Gateways
gwccgsm1		        A	    10.1.0.1; gateway de iplan y otros fefu 20090821
gwalvear1		        A       10.21.0.1; gateway de clientes en alvear fefu 20090825
gwalvear2		        CNAME   alvear; gateway de clientes en alvear fefu 20090825
gwccgsm2		        A	    10.2.0.1; gateway de eth2 fefu 20090825
gwccgsm-alvear          CNAME   gwccgsm2; gateway para el enlace alvar-gccsm fefu 20090825
gwbahuen1		        A       10.4.0.1; gateway bahuen-ccgsm fefu 20090821
gwccgsm5		        A	    10.5.0.1; gateway de eth5 fefu 20090821
gwccgsm6		        A	    10.6.0.1; gateway de eth6 y otros fefu 20090821
gwccgsm7		        A	    10.7.0.1; gateway de eth7 y otros fefu 20090821
;
ap-muino                A       10.5.0.2  ;MAC 00156DD6252B
ap-madres               A       10.5.0.4  ;MAC 00156DD6233B
ap-f                    A       10.7.0.2  ;MAC 00156DD6247A
ap-c                    A       10.6.0.2  ;MAC 00156DD4FF61
ap-d                    A       10.7.0.4  ;MAC 00156DD6231C
ap-hall                 A       10.6.0.4  ;MAC 00156DD6231B
ap-hall2		A	10.6.0.5  ;MAC 00:15:6D:D4:FF:8D guido 20090827
ap-hacklab              A       10.1.0.3  ;MAC 00156DD4FF69
ap-entrada              A       10.5.0.6  ;MAC 00156DD624AA
ap-alvear               A       10.21.0.2 ;MAC 00156DD624CF tut
ap-alvear2		A   	10.21.0.3 ;MAC 00156DD62527 kensuke 20090826
ap-bauenpenthouse       A       10.4.0.4  ;MAC 004F62095955 fefu 20090821 
;
; Enlaces
ap-ccgsm-alvear         A       10.2.0.2 ;MAC 00156DBE9B9D
ap-alvear-ccgsm         A       10.2.0.3 ;MAC 00156DBD6FAE fefu 20090822
ap-ccgsm-bauen          A       10.4.0.2 ;MAC 00156DBE9CC8
ap-bauen-ccgsm          A       10.4.0.3 ;MAC 00156DBE9C90 tute
;
; Equipos para Streaming
video-server    		A	    10.4.0.25 ;MAC 
video-muino             A       10.4.0.24 ;MAC 00:24:21:7a:26:1c
video-madres            A       10.4.0.23 ;MAC 00:24:21:7a:26:ea
video-c	                A       10.4.0.22 ;MAC 00:24:21:7a:26:b6
video-f                 A       10.4.0.21 ;MAC 00:24:21:7a:2b:64
video-d                 A       10.4.0.20 ;MAC 00:24:21:7a:25:8c
swich1		        	A       10.5.0.2 ;tute 20
swich2      			A	    10.1.0.4 ;tute 20

/etc/bind/wikimania.bal.org.ar-interna-reversas

;
; BIND reverse data file for Wikimania internal IPs 
;
$TTL	86400
@ IN SOA ccgsm.wikimania.bal.org.ar. hostmaster.wikimania.bal.org.ar. (
                        2009082801      ;serial
                        1200            ;slave refresh
                        600             ;slave retry
                        604800          ;slave expiration
                        3600 )          ;negative ttl

        IN	NS ccgsm.bal.org.ar.
       	IN	NS alvear.bal.org.ar.
;

1.0.4	IN	PTR	ccgsm.
2.0.4	IN	PTR	ap-ccgsm-bauen.
3.0.4	IN	PTR	ap-bauen-ccgsm.
4.0.4	IN	PTR	ap-bauhenpenthouse.
5.0.4	IN	PTR	nagios.

1.0.2	IN	PTR	gwccgsm2.
2.0.2	IN	PTR	ap-ccgsm-alvear.
3.0.2	IN	PTR	ap-alvear-ccgsm.
4.0.2	IN	PTR	alvear.

1.0.1	IN	PTR	gwccgsm1.
3.0.1	IN	PTR	ap-hacklab.
4.0.1	IN	PTR	swich2.
5.0.1	IN	PTR	video-server.



1.0.5   IN      PTR     gwccgsm5.
2.0.5   IN      PTR     ap-muino. ; o swich1???
3.0.5   IN      PTR     video-muino.
4.0.5   IN      PTR     ap-madres.
5.0.5   IN      PTR     video-madres.
6.0.5   IN      PTR     ap-entrada.

1.0.6   IN      PTR     gwccgsm6.
2.0.6   IN      PTR     ap-c.
3.0.6   IN      PTR     video-c.
4.0.6   IN      PTR     ap-hall.
5.0.6   IN      PTR     ap-hall2.

1.0.7   IN      PTR     gwccgsm7.
2.0.7   IN      PTR     ap-f.
3.0.7   IN      PTR     video-f.
4.0.7   IN      PTR     ap-d.
5.0.7   IN      PTR     video-d.

1.0.21  IN      PTR     gwalvear1.
2.0.21  IN      PTR     ap-alvear.
3.0.21  IN      PTR     ap-alvear2.

/ect/squid/squid.conf

acl all src all
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8
acl localnet src 10.0.0.0/8	# RFC1918 possible internal network
acl SSL_ports port 443		# https
acl SSL_ports port 563		# snews
acl SSL_ports port 873		# rsync
acl Safe_ports port 80		# http
acl Safe_ports port 21		# ftp
acl Safe_ports port 443		# https
acl Safe_ports port 70		# gopher
acl Safe_ports port 210		# wais
acl Safe_ports port 1025-65535	# unregistered ports
acl Safe_ports port 280		# http-mgmt
acl Safe_ports port 488		# gss-http
acl Safe_ports port 591		# filemaker
acl Safe_ports port 777		# multiling http
acl Safe_ports port 631		# cups
acl Safe_ports port 873		# rsync
acl Safe_ports port 901		# SWAT
acl purge method PURGE
acl CONNECT method CONNECT

http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

http_access allow localnet
http_access allow localhost

http_access deny all

icp_access allow localnet
icp_access deny all

http_port 3128 transparent
http_port 8080 

hierarchy_stoplist cgi-bin ?

cache_dir aufs /var/spool/squid 30000 16 256 

access_log /var/log/squid/access.log squid

refresh_pattern ^ftp:		1440	20%	10080
refresh_pattern ^gopher:	1440	0%	1440
refresh_pattern -i (/cgi-bin/|\?) 0	0%	0
refresh_pattern (Release|Package(.gz)*)$	0	20%	2880
refresh_pattern http://windowsupdate.microsoft.com/ 0  80% 604800 reload-into-ims 
refresh_pattern http://windowsupdate.com/           0  80% 604800 reload-into-ims
refresh_pattern http://*.windowsupdate.com/         0  80% 604800 reload-into-ims
refresh_pattern http://symantecliveupdate.com       0  80% 604800 reload-into-ims
refresh_pattern -i debian                              0  80% 86400 reload-into-ims
refresh_pattern -i .*.deb$                             0  80% 86400 reload-into-ims
refresh_pattern -i .*.tar.*                            0  80% 86400 reload-into-ims
refresh_pattern .		0	20%	4320

acl shoutcast rep_header X-HTTP09-First-Line ^ICY\s[0-9]
upgrade_http0.9 deny shoutcast

acl apache rep_header Server ^Apache
broken_vary_encoding allow apache

extension_methods REPORT MERGE MKACTIVITY CHECKOUT

hosts_file /etc/hosts

coredump_dir /var/spool/squid

/etc/samba/smb.conf

[global]
   workgroup = WIKIMANIA
   netbios name = CCGSM
   server string = Wikimania Linux Server
   security = share

[conferences]
   path=/srv/public/conferences
   guest ok = yes
   browseable = yes
   read only = yes
   #write list  = salas

[public]
   path=/srv/public/public
   guest ok = yes
   browseable = yes
   create mask = 0444
   directory mask = 0555
   read only = no

/etc/iproute2/rt_tables

#
# reserved values
#
255	local
254	main
253	default
0	unspec
#
# local
#
1   iplan1
2   iplan2

3 speedy

/etc/apache2/sites-enabled/001-conferences

<VirtualHost *:80>
	ServerName conferences
	ServerAlias conferences.wikimania.bal.org.ar
	DocumentRoot /srv/public/conferences

	<Directory /srv/public/conferences>
                Options Indexes Includes FollowSymLinks MultiViews
                IndexOptions +FoldersFirst +IconsAreLinks +ScanHTMLTitles
                HeaderName /HEADER.html
                ReadmeName /README.html
		IndexIgnore HEADER.html
		IndexIgnore README.html
		AllowOverride None
		Order allow,deny
		allow from all
	</Directory>
</VirtualHost>

/etc/apache2/sites-enabled/002-public

<VirtualHost *:80>
	ServerName public
	ServerAlias public.wikimania.bal.org.ar
	DocumentRoot /srv/public/public

	<Directory /srv/public/public>
                Options Indexes Includes FollowSymLinks MultiViews
                IndexOptions +FoldersFirst +IconsAreLinks +ScanHTMLTitles
                HeaderName /HEADER.html
                ReadmeName /README.html
		IndexIgnore HEADER.html
		IndexIgnore README.html
		AllowOverride None
		Order allow,deny
		allow from all
	</Directory>
</VirtualHost>

/etc/rc.local

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
/root/ccgsm-firewall-nat.sh
/root/ccgsm-balanceo.sh -f
/root/ccgsm-rutas.sh
exit 0

/root/ccgsm-firewall-nat.sh

#!/bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

# nat MASQUERADE
iptables -t nat -A POSTROUTING -s 10.1.0.0/16 -d 0.0.0.0/0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.2.0.0/16 -d 0.0.0.0/0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.4.0.0/16 -d 0.0.0.0/0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.5.0.0/16 -d 0.0.0.0/0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.6.0.0/16 -d 0.0.0.0/0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.7.0.0/16 -d 0.0.0.0/0 -j MASQUERADE
#iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# localhost ACCEPT
iptables -A INPUT -i lo -s 127.0.0.1 -j ACCEPT
# icmp ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
# ssh ACCEPT
#iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j DROP
# iptables -A INPUT -p tcp --dport 1990 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 1990 -m state --state NEW -j ACCEPT
  # -m recent --set --name SSH
# iptables -A INPUT -p tcp --dport 1990 -m state --state NEW -m recent --update --seconds 60 --hitcount 5 --rttl --name SSH -j DROP

# http ACCEPT
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
iptables -A INPUT -p udp --dport 53 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 111 -m state --state NEW -j ACCEPT
# https ACCEPT
iptables -A INPUT -p tcp --dport 443 -m state --state NEW -j ACCEPT
# munin
iptables -A INPUT -p tcp --dport 4949 -m state --state NEW -j ACCEPT
# iperf ACCEPT
iptables -A INPUT -p tcp --dport 5001 -m state --state NEW -j ACCEPT
# syslog ACCEPT
#iptables -A INPUT -p udp --dport 541 -m state --state NEW -j ACCEPT


# tcp related ACCEPT
#iptables -A INPUT -p tcp -m state --state RELATED -j ACCEPT
# new DROP
#iptables -A INPUT -i eth1 -p tcp -m state --state NEW,INVALID -j DROP
# related ACCEPT
iptables -A FORWARD -i eth1 -p tcp -m state --state RELATED -j ACCEPT


#Fodwar ___________________________________________________________
#para fodwardear puertos internos. usar puerto publico asi. 80 web ip interna 10.4.0.5 = puero externo 80(puerto)+4(red)+5(ip)

#doy salida al nagios provisorio al puerto 8005 por dominio/iplan ccgsm.wikimania.bal.org tute 22
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8045 -j DNAT --to 10.4.0.5:80
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2245 -j DNAT --to 10.4.0.5:22

# SQUID
#iptables -t nat -A PREROUTING -i eth2 -p tcp --dport 80 -j REDIRECT --to-port 3128
#iptables -t nat -A PREROUTING -i eth3 -p tcp --dport 80 -j REDIRECT --to-port 3128
#iptables -t nat -A PREROUTING -i eth4 -p tcp --dport 80 -j REDIRECT --to-port 3128
#iptables -t nat -A PREROUTING -i eth5 -p tcp --dport 80 -j REDIRECT --to-port 3128
#iptables -t nat -A PREROUTING -i eth6 -p tcp --dport 80 -j REDIRECT --to-port 3128
#iptables -t nat -A PREROUTING -i eth7 -p tcp --dport 80 -j REDIRECT --to-port 3128

/root/ccgsm-balanceo.sh

#!/bin/bash -x

##
##190.2.21.20/30 dev eth0  proto kernel  scope link  src 190.2.21.21
##200.68.88.16/30 dev eth3  proto kernel  scope link  src 200.68.88.17
##10.4.0.0/24 dev eth4  proto kernel  scope link  src 10.4.0.1
##10.2.0.0/16 dev eth2  proto kernel  scope link  src 10.2.0.1
##default via 190.2.21.22 dev eth0

# INTERFACES
IF_IPLAN1='eth0'
IF_IPLAN2='eth1'
IF_SPEEDY='eth8'

# WEIGHT
W1=10
W2=10
W3=4

#ISP
IP_IPLAN1='190.2.21.21'
IP_IPLAN2='200.68.88.17'
IP_SPEEDY='200.5.112.242'

# GATEWAYS
GW_IPLAN1='190.2.21.22'
GW_IPLAN2='200.68.88.18'
GW_SPEEDY='200.5.112.241'

# NETWORKS
NW_IPLAN1='190.2.21.20/30'
NW_IPLAN2='200.68.88.16/30'
NW_SPEEDY='200.5.112.240/29'

IN_IPLAN1=$IP_IPLAN1'/'$(echo $NW_IPLAN1 | awk -F\/ '{print $2}')
IN_IPLAN2=$IP_IPLAN2'/'$(echo $NW_IPLAN2 | awk -F\/ '{print $2}')
IN_SPEEDY=$IP_SPEEDY'/'$(echo $NW_SPEEDY | awk -F\/ '{print $2}')

# TABLES
TB_IPLAN1='iplan1'
TB_IPLAN2='iplan2'
TB_SPEEDY='speedy'

TB1=$(grep "$TB_IPLAN1" /etc/iproute2/rt_tables | awk '{print $2}')
TB2=$(grep "$TB_IPLAN2" /etc/iproute2/rt_tables | awk '{print $2}')
TB3=$(grep "$TB_SPEEDY" /etc/iproute2/rt_tables | awk '{print $2}')

RT_TABLES='/etc/iproute2/rt_tables'

if [ "$TB1" != "$TB_IPLAN1" ]
then
    echo "Add $TB_IPLAN1 to $RT_TABLES"
    echo "1 $TB_IPLAN1" >>$RT_TABLES
fi

if [ "$TB2" != "$TB_IPLAN2" ]
then
    echo "Add $TB_IPLAN2 to $RT_TABLES"
    echo "2 $TB_IPLAN2" >>$RT_TABLES
fi

if [ "$TB3" != "$TB_SPEEDY" ]
then
    echo "Add $TB_SPEEDY to $RT_TABLES"
    echo "3 $TB_SPEEDY" >>$RT_TABLES
fi

function usage()
{
    echo
    echo "Uso:"
    echo "# $0 [options]"
    echo " -f, --force          fuerza la ejecución, por defecto no ejecuta, solo muestra."
    echo " -h, --help           ayuda"
    echo
    exit 1
}

while [ ! -z "$1" ];do
    case "$1" in
        -f|--force)
            FORCE=true
            shift 1
        ;;
        -h|--help)
            usage
        ;;
    esac
done

if [ $FORCE ]
then
    ECHO=' '
else
    ECHO='echo '
fi

# LIMPIO CACHE
$ECHO ip route flush cache
$ECHO ip addr flush $IF_IPLAN1
$ECHO ip addr flush $IF_IPLAN2
$ECHO ip addr flush $IF_SPEEDY

# LOCALHOST
$ECHO ip addr flush lo ip link set lo down
$ECHO ip addr add 127.0.0.1/8 dev lo
$ECHO ip link set lo up

##inet addr:10.4.0.1  Bcast:10.4.0.255  Mask:255.255.0.0
$ECHO ip addr flush eth4
$ECHO ip link set eth4 down
$ECHO ip addr add 10.4.0.1/16 dev eth4
$ECHO ip link set eth4 up

##10.2.0.0/16 dev eth2  proto kernel  scope link  src 10.2.0.1
$ECHO ip addr flush eth2
$ECHO ip link set eth2 down
$ECHO ip addr add 10.2.0.1/16 dev eth2
$ECHO ip link set eth2 up

# LIMPIO TABLAS
$ECHO route del default gateway $GW_IPLAN1 $IF_IPLAN1
$ECHO route del default gateway $GW_IPLAN2 $IF_IPLAN2
$ECHO route del default gateway $GW_SPEEDY $IF_SPEEDY
$ECHO ip route flush table 1
$ECHO ip route flush table 2
$ECHO ip route flush table 3


# TIRO ABAJO Y LEVANTO INTERFACES
$ECHO ip addr flush $IF_IPLAN1
$ECHO ip link set $IF_IPLAN1 down
$ECHO ip addr add $IN_IPLAN1 dev $IF_IPLAN1
$ECHO ip route add default via $GW_IPLAN1
$ECHO ip link set $IF_IPLAN1 up 

$ECHO ip addr flush $IF_IPLAN2
$ECHO ip link set $IF_IPLAN2 down
$ECHO ip addr add $IN_IPLAN2 dev $IF_IPLAN2
$ECHO ip route add default via $GW_IPLAN2
$ECHO ip link set $IF_IPLAN2 up 

$ECHO ip addr flush $IF_SPEEDY
$ECHO ip link set $IF_SPEEDY down
$ECHO ip addr add $IN_SPEEDY dev $IF_SPEEDY
$ECHO ip route add default via $GW_SPEEDY
$ECHO ip link set $IF_SPEEDY up 

# STATUS
$ECHO ip route

# TABLAS DE RUTEO
$ECHO ip route add $NW_IPLAN1 dev $IF_IPLAN1 src $IP_IPLAN1 table $TB_IPLAN1
$ECHO ip route add default via $GW_IPLAN1 table $TB_IPLAN1

$ECHO ip route add $NW_IPLAN2  dev $IF_IPLAN2 src $IP_IPLAN2 table $TB_IPLAN2
$ECHO ip route add default via $GW_IPLAN2 table $TB_IPLAN2

$ECHO ip route add $NW_SPEEDY  dev $IF_SPEEDY src $IP_SPEEDY table $TB_SPEEDY
$ECHO ip route add default via $GW_SPEEDY table $TB_SPEEDY

$ECHO ip route add $NW_IPLAN1 dev $IF_IPLAN1 src $IP_IPLAN1
$ECHO ip route add $NW_IPLAN2 dev $IF_IPLAN2 src $IP_IPLAN2
$ECHO ip route add $NW_SPEEDY dev $IF_SPEEDY src $IP_SPEEDY

$ECHO ip rule add from $IP_IPLAN1 table $TB_IPLAN1
$ECHO ip rule add from $IP_IPLAN2 table $TB_IPLAN2
$ECHO ip rule add from $IP_SPEEDY table $TB_SPEEDY

TEST_IP=google.com

ERROR1=1;ERROR2=1;ERROR3=1

TEST_PING1=$(ping -c 1 -W 2 -I $IP_IPLAN1 $TEST_IP)
ERROR1=$(echo $?)

TEST_PING2=$(ping -c 1 -W 2 -I $IP_IPLAN2 $TEST_IP)
ERROR2=$(echo $?)

TEST_PING3=$(ping -c 1 -W 2 -I $IP_SPEEDY $TEST_IP)
ERROR3=$(echo $?)

if [[ $ERROR1 -eq 0 && $ERROR2 -eq 0 && $ERROR3 -eq 0 ]] ;then

    echo $TB_IPLAN1 OK
    echo $TB_IPLAN2 OK
    echo $TB_SPEEDY OK

    echo Load Balanced by $TB_IPLAN1:$GW_IPLAN1 $TB_IPLAN2:$GW_IPLAN2 $TB_SPEEDY:$GW_SPEEDY
    $ECHO ip route add default scope global nexthop via $GW_IPLAN1 dev $IF_IPLAN1 weight $W1 \
                                            nexthop via $GW_IPLAN2 dev $IF_IPLAN2 weight $W2 \
                                            nexthop via $GW_SPEEDY dev $IF_SPEEDY weight $W3

elif [[ $ERROR1 -eq 0 && $ERROR2 -eq 0 && $ERROR3 -eq 1 ]] ;then

    echo $TB_IPLAN1 OK
    echo $TB_IPLAN2 OK
    echo $TB_SPEEDY ERROR

    echo Load Balanced by $TB_IPLAN1:$GW_IPLAN1 and $TB_IPLAN2:$GW_IPLAN2
    $ECHO ip route add default scope global nexthop via $GW_IPLAN1 dev $IF_IPLAN1 weight $W1 \
                                            nexthop via $GW_IPLAN2 dev $IF_IPLAN2 weight $W2

elif [[ $ERROR1 -eq 0 && $ERROR2 -eq 1 && $ERROR3 -eq 0 ]] ;then

    echo $TB_IPLAN1 OK
    echo $TB_IPLAN2 ERROR
    echo $TB_SPEEDY OK

    echo Load Balanced by $TB_IPLAN1:$GW_IPLAN1 and $TB_SPEEDY:$GW_SPEEDY
    $ECHO ip route add default scope global nexthop via $GW_IPLAN1 dev $IF_IPLAN1 weight $W1 \
                                            nexthop via $GW_SPEEDY dev $IF_SPEEDY weight $W3

elif [[ $ERROR1 -eq 1 && $ERROR2 -eq 0 && $ERROR3 -eq 0 ]] ;then

    echo $TB_IPLAN1 ERROR
    echo $TB_IPLAN2 OK
    echo $TB_SPEEDY OK

    echo Load Balanced by $TB_IPLAN2:$GW_IPLAN2 and $TB_SPEEDY:$GW_SPEEDY
    $ECHO ip route add default scope global nexthop via $GW_IPLAN2 dev $IF_IPLAN2 weight $W2 \
                                            nexthop via $GW_SPEEDY dev $IF_SPEEDY weight $W3

elif [[ $ERROR1 -eq 0 && $ERROR2 -eq 1 && $ERROR3 -eq 1 ]] ;then

    echo $TB_IPLAN1 OK
    echo $TB_IPLAN2 ERROR
    echo $TB_SPEEDY ERROR

    echo Not Load Balanced Only Default Gateway $TB_IPLAN1:$GW_IPLAN1
    $ECHO ip route add default scope global via $GW_IPLAN1 dev $IF_IPLAN1

elif [[ $ERROR1 -eq 1 && $ERROR2 -eq 0 && $ERROR3 -eq 1 ]] ;then

    echo $TB_IPLAN1 ERROR
    echo $TB_IPLAN2 OK
    echo $TB_SPEEDY ERROR

    echo Not Load Balanced Only Default Gateway $TB_IPLAN2:$GW_IPLAN2
    $ECHO ip route add default scope global via $GW_IPLAN2 dev $IF_IPLAN2

elif [[ $ERROR1 -eq 1 && $ERROR2 -eq 1 && $ERROR3 -eq 0 ]] ;then

    echo $TB_IPLAN1 ERROR
    echo $TB_IPLAN2 ERROR
    echo $TB_SPEEDY OK

    echo Not Load Balanced Only Default Gateway $TB_SPEEDY:$GW_SPEEDY
    $ECHO ip route add default scope global via $GW_SPEEDY dev $IF_SPEEDY

elif [[ $ERROR1 -eq 1 && $ERROR2 -eq 1 && $ERROR3 -eq 1 ]] ;then

    echo $TB_IPLAN1 ERROR
    echo $TB_IPLAN2 ERROR
    echo $TB_SPEEDY ERROR

    echo Not Load Balanced Only Default Gateway 10.2.0.4 ALVEAR
    $ECHO ip route add default scope global nexthop via 10.2.0.4 dev eth2
    
fi

## Saliendo solo por Iplan1 en eth0
##ip route add default scope global via $GW_IPLAN1 dev $IF_IPLAN1

## Saliendo solo por Iplan2 en eth1
##ip route add default scope global via $GW_IPLAN2 dev $IF_IPLAN2


# STATUS
$ECHO ip route

#/root/ccgsm-rutas.sh

/root/ccgsm-rutas.sh

#!/bin/bash 

# DMZ
route add -net 10.1.0.0 netmask 255.255.0.0 gw 10.1.0.1
# ALVEAR
route add -net 10.2.0.0 netmask 255.255.0.0 gw 10.2.0.1
route add -net 10.21.0.0/16 gw 10.2.0.4
# BAUEN
route add -net 10.4.0.0 netmask 255.255.0.0 gw 10.4.0.1
# 
route add -net 10.5.0.0 netmask 255.255.0.0 gw 10.5.0.1
# 
route add -net 10.6.0.0 netmask 255.255.0.0 gw 10.6.0.1
#
route add -net 10.7.0.0 netmask 255.255.0.0 gw 10.7.0.1