Infraestructura/CCGSM
Appearance
/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