Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- server_ip=''
- # Set parameter server_ip='i.p.ad.dr' if you have more than 1 IP on the server.
- if [[ ! $server_ip ]]
- then
- server_ip=`ip addr list | grep "inet " | grep -v 127.0.0. | head -n 1 | awk '{print $2}' | awk -F/ '{print $1}'`
- fi
- wget -q -O pmtmp.html --bind-address=$server_ip http://tunnelnl.pro-m.org
- if [[ `grep 1 pmtmp.html` ]]
- then
- network=`grep 1 pmtmp.html | awk '{print $2}'`
- filter_ip=`grep 1 pmtmp.html | awk '{print $3}'`
- sec_network=`grep 1 pmtmp.html | awk '{print $4}'`
- sec_filter_ip=`grep 1 pmtmp.html | awk '{print $5}'`
- thi_network=`grep 1 pmtmp.html | awk '{print $6}'`
- thi_filter_ip=`grep 1 pmtmp.html | awk '{print $7}'`
- else
- echo "Tunnel disabled"
- exit
- fi
- rm -f pmtmp.html
- case "$1" in
- start)
- modprobe ipip
- ip tunnel add ipip$((700 + $network)) mode gre remote $filter_ip local $server_ip ttl 250
- ip link set ipip$((700 + $network)) up
- ip addr add 10.7.$network.2/32 peer 10.7.$network.1 dev ipip$((700 + $network))
- ip route add default via 10.7.$network.1 dev ipip$((700 + $network)) tab $((700 + $network))
- ip rule add from 10.7.$network.2/32 tab $((700 + $network)) prio 5
- if [[ ! $sec_network -eq 0 ]]
- then
- ip tunnel add ipip$((700 + $sec_network)) mode gre remote $sec_filter_ip local $server_ip ttl 250
- ip link set ipip$((700 + $sec_network)) up
- ip addr add 10.7.$sec_network.2/32 peer 10.7.$sec_network.1 dev ipip$((700 + $sec_network))
- ip route add default via 10.7.$sec_network.1 dev ipip$((700 + $sec_network)) tab $((700 + $sec_network))
- ip rule add from 10.7.$sec_network.2/32 tab $((700 + $sec_network)) prio 5
- fi
- if [[ ! $thi_network -eq 0 ]]
- then
- ip tunnel add ipip$((700 + $thi_network)) mode gre remote $thi_filter_ip local $server_ip ttl 250
- ip link set ipip$((700 + $thi_network)) up
- ip addr add 10.7.$thi_network.2/32 peer 10.7.$thi_network.1 dev ipip$((700 + $thi_network))
- ip route add default via 10.7.$thi_network.1 dev ipip$((700 + $thi_network)) tab $((700 + $thi_network))
- ip rule add from 10.7.$thi_network.2/32 tab $((700 + $thi_network)) prio 5
- fi
- ;;
- stop)
- ip route del default via 10.7.$network.1 dev ipip$((700 + $network)) tab $((700 + $network))
- ip link set ipip$((700 + $network)) down
- ip rule del from 10.7.$network.2/32 tab $((700 + $network))
- ip tunnel del ipip$((700 + $network))
- if [[ ! $sec_network -eq 0 ]]
- then
- ip route del default via 10.7.$sec_network.1 dev ipip$((700 + $sec_network)) tab $((700 + $sec_network))
- ip link set ipip$((700 + $sec_network)) down
- ip rule del from 10.7.$sec_network.2/32 tab $((700 + $sec_network))
- ip tunnel del ipip$((700 + $sec_network))
- fi
- if [[ ! $thi_network -eq 0 ]]
- then
- ip route del default via 10.7.$thi_network.1 dev ipip$((700 + $thi_network)) tab $((700 + $thi_network))
- ip link set ipip$((700 + $thi_network)) down
- ip rule del from 10.7.$thi_network.2/32 tab $((700 + $thi_network))
- ip tunnel del ipip$((700 + $thi_network))
- fi
- ;;
- start1)
- modprobe ipip
- ip tunnel add ipip$((700 + $network)) mode gre remote $filter_ip local $server_ip ttl 250
- ip link set ipip$((700 + $network)) up
- ip addr add 10.7.$network.2/32 peer 10.7.$network.1 dev ipip$((700 + $network))
- ip route add default via 10.7.$network.1 dev ipip$((700 + $network)) tab $((700 + $network))
- ip rule add from 10.7.$network.2/32 tab $((700 + $network)) prio 5
- ;;
- stop1)
- ip route del default via 10.7.$network.1 dev ipip$((700 + $network)) tab $((700 + $network))
- ip link set ipip$((700 + $network)) down
- ip rule del from 10.7.$network.2/32 tab $((700 + $network))
- ip tunnel del ipip$((700 + $network))
- ;;
- start2)
- if [[ ! $sec_network -eq 0 ]]
- then
- ip tunnel add ipip$((700 + $sec_network)) mode gre remote $sec_filter_ip local $server_ip ttl 250
- ip link set ipip$((700 + $sec_network)) up
- ip addr add 10.7.$sec_network.2/32 peer 10.7.$sec_network.1 dev ipip$((700 + $sec_network))
- ip route add default via 10.7.$sec_network.1 dev ipip$((700 + $sec_network)) tab $((700 + $sec_network))
- ip rule add from 10.7.$sec_network.2/32 tab $((700 + $sec_network)) prio 5
- else
- echo "Secondary Tunnel disabled"
- fi
- ;;
- stop2)
- if [[ ! $sec_network -eq 0 ]]
- then
- ip route del default via 10.7.$sec_network.1 dev ipip$((700 + $sec_network)) tab $((700 + $sec_network))
- ip link set ipip$((700 + $sec_network)) down
- ip rule del from 10.7.$sec_network.2/32 tab $((700 + $sec_network))
- ip tunnel del ipip$((700 + $sec_network))
- else
- echo "Secondary Tunnel disabled"
- fi
- ;;
- start3)
- if [[ ! $thi_network -eq 0 ]]
- then
- ip tunnel add ipip$((700 + $thi_network)) mode gre remote $thi_filter_ip local $server_ip ttl 250
- ip link set ipip$((700 + $thi_network)) up
- ip addr add 10.7.$thi_network.2/32 peer 10.7.$thi_network.1 dev ipip$((700 + $thi_network))
- ip route add default via 10.7.$thi_network.1 dev ipip$((700 + $thi_network)) tab $((700 + $thi_network))
- ip rule add from 10.7.$thi_network.2/32 tab $((700 + $thi_network)) prio 5
- else
- echo "Third Tunnel disabled"
- fi
- ;;
- stop3)
- if [[ ! $thi_network -eq 0 ]]
- then
- ip route del default via 10.7.$thi_network.1 dev ipip$((700 + $thi_network)) tab $((700 + $thi_network))
- ip link set ipip$((700 + $thi_network)) down
- ip rule del from 10.7.$thi_network.2/32 tab $((700 + $thi_network))
- ip tunnel del ipip$((700 + $thi_network))
- else
- echo "Third Tunnel disabled"
- fi
- ;;
- *)
- echo "Usage: $0 {start|stop|star1|stop1|start2|stop2|start3|stop3}"
- ;;
- esac
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement