創業公司辦公網絡安全穩定訪問機房網絡方案1:by***

【背景】

辦公網絡使用ADSL上網,無固定IP。IDC機房有固定的IP。爲了安全,服務器的公網ip只開放了應用的端口,基於這種情況,要訪問機房,使用***是一個較好方案。

但是給公司每個員工分一個IDC的***帳號是一個苦逼的活兒,因爲每個客戶機會遇到各種問題,***本來就不是一個非常穩定的東西。

那麼就想到,只要哥哥使用一臺linux服務器撥號,之後用這個機器做網關,做snat那麼就能讓辦公網絡訪問線上服務器了^_^

這個方案已經做出來,實際運行一段時間了,經歷了檢驗,今天成文,和大家分享。


【具體方案】

【各模塊功能介紹】


1、IDC一臺linux服務器當pptp ***的SERVER

2、一臺linux服務充當pptp client,同時作爲訪問IDC機房的網關

3、辦公網絡一臺路由器(員工電腦的默認網關)

4、***守護腳工具(因爲網絡原因,***就不是很穩定,意味着經常掛,那麼需要一個監控工具,守護***的狀態,一旦***掛了,就要再次啓動)

網絡結構如下

wKioL1PRHyqjRRYcAADQ71jbbOY655.jpg

注意:實施環境爲centos 6.5 64位服務器


【各模塊具體安裝配置說明】

第一、#####IDC一臺linux服務器當pptp ***的SERVER#####

1.1具體請yum安裝一下組件

ppp-2.4.5-5.el6.x86_64

pptpd-1.4.0-3.el6.x86_64 

kernel-devel 

1.2配置文件

# grep -v "#" /etc/pptpd.conf      
option /etc/ppp/options.pptpd
logwtmp
localip 10.1.1.101 #*** server的起始ip,注意不是*** server的真實的ip
remoteip 10.1.253.1-254,10.1.0.254 #*** client分配的ip
/etc/ppp/chap-secrets
# grep -v "#" /etc/ppp/options.pptpd
name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
lock
nobsdcomp
novj
novjccomp
nologfd
ms-dns 8.8.8.8
ms-dns 8.8.4.4


# cat /etc/ppp/chap-secrets(注意這裏格式比較嚴格,尤其是密碼之後的*,密碼之後只有一個tab或者空格,否則會導致windows連不上的報錯609的報錯,但是mac鏈接這個***都是好的)

# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
user     pptpd   passwd      *


1.3啓動和維護

service pptpd restart
service pptpd reload

1.4如果*** server開了防火牆,請加上

-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 1723 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 47 -j ACCEPT
-A INPUT -p gre -j ACCEPT


第二、#####辦公網絡一臺linux服務器當pptp client的client,ip是192.168.1.252####

1、安裝及配置

yum -y install pptp-setup

實際安裝

(libpcap-1.4.0-1.20130826git2dbcaa1.el6.x86_64.rpm  

ppp-2.4.5-5.el6.x86_64.rpm

pptp-1.7.2-8.1.el6.x86_64.rpm

pptp-setup-1.7.2-8.1.el6.x86_64.rpm)


初始化撥號

pptpsetup -create idc*** -server ***公網ip -username 用戶名 -password 密碼 -encrypt -start
pptpsetup -create idc***114 -server ***公網ip -username 用戶名 -password 密碼 -encrypt -start#這裏,可以多搭建一條備份鏈路idc***114,萬一其中一條不行,可以做切換
route add -net 10.1.0.0/16 dev ppp0#添加路由,否則不通,因爲服務器的網段是10.1.0.0/16
cp /usr/share/doc/ppp-2.4.5/scripts/pon /usr/sbin/
cp /usr/share/doc/ppp-2.4.5/scripts/poff /usr/sbin/
chmod +x /usr/sbin/pon /usr/sbin/poff
pon idc***#開啓***
route add -net 10.1.0.0/16 dev ppp0
poff idc***#關閉***


2、防火牆配置,做SNAT

cat /etc/sysconfig/iptables
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [1:92]
:OUTPUT ACCEPT [1:92]
-A POSTROUTING -d 10.1.0.0/16 -o ppp0 -j MASQUERADE
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT

機器撥號好之後之後是這樣的

wKiom1PRHl7zmcWVAASSJfJsfGI911.jpg

第三、#####辦公網絡的路由器配置#####

本地網絡是192.168.1.0/24,IDC的網絡是10.1.0.0/16具體看下圖

wKioL1PRGt2jOUYaAAIdwAHZAD8634.jpg

第四、*** client守護工具

具體可以參考這個腳本,本腳本已經經過實踐檢測


crontab裏面

*/1 * * * * /scripts/***_monitor.sh >> /home/logs/***_monitor.log
#!/bin/bash
# ***_monitor
# by H2O
# V1.0_2014.07.23
source /etc/profile

function Judge***(){#判斷***是否存活,爲了判斷準確定,需要判斷多次
        FLAG=1
        ping -c 1 10.1.1.1 -w 1  > /dev/null  2>&1 && FLAG=0
        ping -c 1 10.1.1.2  -w 1 > /dev/null  2>&1 && FLAG=0
        ping -c 1 10.1.1.103 -w 1> /dev/null  2>&1 && FLAG=0
        return "$FLAG"
}

function Run_***(){
        Now_Time=`date "+%F_%T"`
        echo "$Now_Time,*** is not running"
        poff idc*** ||poff idc*** || poff idc***#可能失敗,多嘗試幾次
        pon idc*** || pon idc*** || pon idc***#可能失敗,多嘗試幾次
        sleep 5#撥號之後,需要有一定時間才能出現設備ppp0,這裏等5s,可以自己實踐
        route add -net 10.1.0.0/16 dev ppp0 || route add -net 10.1.0.0/16 dev ppp0 || route add -net 10.1.0.0/16 dev ppp0#路由可能添加失敗,多嘗試幾次
        route add -net 10.1.0.0/16 dev ppp0
        echo "$Now_Time,*** runned"
}

function Run_***114(){
        Now_Time=`date "+%F_%T"`
        echo "$Now_Time,*** is not running"
        poff idc*** ||poff idc*** || poff idc***
        poff idc***114 ||poff idc***114 || poff idc***114
        pon idc***114 || pon idc***114 || pon idc***114
        sleep 6
        route add -net 10.1.0.0/16 dev ppp0 || route add -net 10.1.0.0/16 dev ppp0 || route add -net 10.1.0.0/16 dev ppp0
        route add -net 10.1.0.0/16 dev ppp0
        echo "$Now_Time,***114 runned"
}

Judge***
Status=$?

if [ "$Status" -eq 1 ];then
        Run_***
#run *** 之後,不一定能馬上ping通
        sleep 6
        Judge***
        Status=$?
        if [ "$Status" -eq 1 ];then
                Run_***114#第二次撥號就撥號114了
        else
                Now_Time=`date "+%F_%T"`
                echo "$Now_Time,*** is running"
                exit 0
        fi
else
        Now_Time=`date "+%F_%T"`
        echo "$Now_Time,*** is running"
        exit 0
fi


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章