一,簡介
通過搭建環境,可以在任何地方(公司,家里,地鐵...)使用客戶端登錄,來訪問公司的其他機器,但不影響非公司網路的訪問(百度,微博,淘寶...)
二,搭建前的準備
注意,以下開始,使用的ip都是假的,根據自己服務器ip自行更換
1,服務器A,centos7系統,內網ip 192.168.0.1
2,服務器B,centos7系統,內網ip 192.168.0.2
2,openconnect客戶端
三,開始搭建
服務器A
下面👇🏻的命令,依次執行,服務器A就配置好了,建議慢慢看都做了些什么
# 禁用防火墻
systemctl stop firewalld
systemctl disable firewalld
# 開啟ipv4 轉發
echo "1" > /proc/sys/net/ipv4/ip_forward
# 加載ip_gre模塊
modprobe ip_gre
# 建立到服務器B的gre隧道,可以通過 ip tunnel list 或 ip route,查看是否添加成功,建立gre隧道
ip tunnel add gre mode gre remote 192.168.0.2 local 192.168.0.1
# 給gre隧道遠端介面添加ip地址
ip addr add 10.10.10.2/24 dev gre
# 啟用gre隧道介面
ip link set gre up
# 新增虛擬路由表HK(默認所有介面走路由表main,不新增虛擬表,無法走gre 路由)
# vi /etc/iproute2/rt_tables # 新增 100 hk 條目 保存退出
echo "100 hk" >> /etc/iproute2/rt_tables
# 重繪路由表
ip route flush table hk
# 當客戶端通過撥號連接時,服務端會給客戶端分配一個10.10.9.0 - 10.10.9.255的隨機地址,這個地址可以在/etc/ocserv/ocserv.conf中修改
# 把來自10.10.9.0/24的資料包,通過hk路由表發送出去,優先級100,可以執行 ip rule list 查看是否添加成功
ip rule add from 10.10.9.0/24 table hk prio 100
# 默認路由發送到 10.10.10.2,也就是服務器B的gre隧道ip地址,可以執行 ip route show table hk 查看是否成功
ip route add default via 10.10.10.2 table hk
# 至此 定義新表后 所有來自Cisco的流量默認都會走向服務器B
# 安裝 epel-release 源
yum -y install epel-release
# 安裝 ocserv
yum -y install ocserv
# 新建一個目錄,用來存放SSL證書相關檔案,然后進入到這個目錄內
mkdir ~/ssl && cd ~/ssl
# 新建一個證書模板,寫入
echo "cn = 'h3c'
organization = 'h3c.IM'
serial = 1
expiration_days = 9999
ca
signing_key
cert_signing_key
crl_signing_key" > ca.tmpl
# 然后生成私鑰和CA證書:
certtool --generate-privkey --outfile ca-key.pem
certtool --generate-self-signed --load-privkey ca-key.pem --template ca.tmpl --outfile ca-cert.pem
# 接著來生成服務器證書,還是老樣子新建一個證書模板:
echo "cn = '你的服務器IP'
organization = 'TEST.IM'
expiration_days = 9999
signing_key
encryption_key
tls_www_server" > server.tmpl
# 然后生成私鑰和證書:
certtool --generate-privkey --outfile server-key.pem
certtool --generate-certificate --load-privkey server-key.pem --load-ca-certificate ca-cert.pem --load-ca-privkey ca-key.pem --template server.tmpl --outfile server-cert.pem
# 然后把證書檔案用移動到Ocserv默認的目錄下:
cp server-cert.pem /etc/pki/ocserv/public/
cp server-key.pem /etc/pki/ocserv/private/
cp ca-cert.pem /etc/pki/ocserv/cacerts/
# 現在編輯ocserv的組態檔
# auth也就是驗證方式要改為密碼驗證
sed -i 's/auth = "pam"/#auth = "pam"/g' /etc/ocserv/ocserv.conf
echo 'auth = "plain[passwd=/etc/ocserv/ocpasswd]"' >> /etc/ocserv/ocserv.conf
# 默認的監聽埠為443,如果你的服務器上跑著HTTPS的WEB站點,那么443埠肯定是被占用了的,所以如果有需求的話,可以更改下面的值:
# sed -i 's/tcp-port = 443/tcp-port = 8080/g' /etc/ocserv/ocserv.conf
# sed -i 's/udp-port = 443/udp-port = 8080/g' /etc/ocserv/ocserv.conf
# Anyconnect可以限制最大允許連接的設備數量,如有需要可以更改下面這兩個值:
# sed -i 's/max-clients = 16/max-clients = 32/g' /etc/ocserv/ocserv.conf
# sed -i 's/max-same-clients = 2/max-same-clients = 6/g' /etc/ocserv/ocserv.conf
# 更改服務器證書以及私鑰的路徑為剛才移動的路徑:
sed -i 's~server-cert = /etc/pki/ocserv/public/server.crt~server-cert = /etc/pki/ocserv/public/server-cert.pem~g' /etc/ocserv/ocserv.conf
sed -i 's~server-key = /etc/pki/ocserv/private/server.key~server-key = /etc/pki/ocserv/private/server-key.pem~g' /etc/ocserv/ocserv.conf
# 更改CA證書的路徑為剛才移動的路徑:
sed -i 's~ca-cert = /etc/pki/ocserv/cacerts/ca.crt~ca-cert = /etc/pki/ocserv/cacerts/ca-cert.pem~g' /etc/ocserv/ocserv.conf
# 這個意思是下放遠端DNS 建議注釋掉不要用遠端
sed -i 's/dns = 8.8.8.8/#dns = 8.8.8.8/g' /etc/ocserv/ocserv.conf
# 設定分配給客戶端的私人ip
echo "ipv4-netmask = 255.255.255.0" >> /etc/ocserv/ocserv.conf
echo "ipv4-network = 10.10.9.0/24" >> /etc/ocserv/ocserv.conf
echo "tunnel-all-dns = false" >> /etc/ocserv/ocserv.conf
# 設定請求哪些ip,走gre通道,這里設定的ip,才會走<<網路流程圖>>上畫的流程,可以把公司的服務器ip可以添加在這里
# 192.168.0.1 - 192.168.0.255的資料包,走gre隧道,
echo "route = 192.168.0.0/255.255.255.0" >> /etc/ocserv/ocserv.conf
echo "route = 10.10.10.0/255.255.255.0" >> /etc/ocserv/ocserv.conf
# 到8.8.8.8 的資料包,走gre隧道
#echo "route = 8.8.8.8/255.255.255.255" >> /etc/ocserv/ocserv.conf
# 創建一個用戶,執行下面的命令之后,會讓盲輸兩遍密碼
ocpasswd -c /etc/ocserv/ocpasswd lala
# 洗掉一個用戶,可以在這 /etc/ocserv/ocpasswd 看有哪些用戶
# ocpasswd -c /etc/ocserv/ocpasswd -d lala
# 啟動ocserv 服務
systemctl start ocserv
systemctl status ocserv
上面的命令,有些是臨時生效的,重啟后就沒了,所以,部分命令要寫到 /etc/rc.local,開機時會自動執行,把下面的命令粘貼進去就行
systemctl stop firewalld
systemctl disable firewalld
echo "1" > /proc/sys/net/ipv4/ip_forward
modprobe ip_gre
ip tunnel add gre mode gre remote 192.168.0.2 local 192.168.0.1
ip rule add from 10.10.9.0/24 table hk prio 100
ip route add default via 10.10.10.2 table hk
粘貼完之后,記得執行下面倆命令,要不然沒權限
chmod +x /etc/rc.d/rc.local
chmod +x /etc/rc.local
至此,服務器A上需要做的事情,全部完成
服務器B
# 禁用防火墻
systemctl stop firewalld
systemctl disable firewalld
# 開啟ipv4 轉發
echo "1" > /proc/sys/net/ipv4/ip_forward
# 加載ip_gre模塊
modprobe ip_gre
# 建立到服務器A的gre隧道,可以通過 ip tunnel list 或 ip route,查看是否添加成功
ip tunnel add gre mode gre remote 192.168.0.1 local 192.168.0.2
# 給gre隧道遠端介面添加ip地址
ip addr add 10.10.10.1/24 dev gre
# 啟用gre隧道介面
ip link set gre up
# 到10.10.9.0/24的資料包,發送到 10.10.10.1 也就是服務器A的gre隧道ip
ip route add 10.10.9.0/24 via 10.10.10.1
# 把來自 10.10.9.0/24 網段的資料包,通過eth0網卡發送出去,把10.10.9.0/24 替換成本機的ip,執行 iptables -L -n --line-number -t nat 查看是否成功,
# 可以通過 "iptables -t nat -D POSTROUTING 編號" 洗掉規則
iptables -t nat -A POSTROUTING -o eth0 -s 10.10.9.0/24 -j MASQUERADE
至此,服務器A和B上要做的事情都已做完,接下來是客戶端
四,客戶端
1,新建配置


五,說明
開機啟動的那些命令,還沒測驗過,先做個記錄,有機會再試,試完會把這句話刪掉
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/383063.html
標籤:其他
