博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
采用FreeBSD IPSec Tunnel方式连接两个局域网络(转)
阅读量:2496 次
发布时间:2019-05-11

本文共 2648 字,大约阅读时间需要 8 分钟。

采用FreeBSD IPSec Tunnel方式连接两个局域网络(转)[@more@]

  在实际的工作中,经常遇到需要将处在不同地点的两个局域网络连接起来的要求。采用FreeBSD IPSec Tunnel方式可以方便的将两个局域网络连接起来,且具有很好的安全性。下面将用一个案例来讲述如何采用这种方式连接两个局域网络。

  假设有如下的网络结构:

1143825200_ddvip_8072.gif

  两台FreeBSD机器都分别配置为两个子网的防火墙,并对内核配置增加IPSec支持,相关的内核配置参数如下:

  # IP security (crypto; define w/ IPSEC)

  options IPSEC

  options IPSEC_ESP

  options IPSEC_DEBUG

  # Generic tunnel interface

  pseudo-device gif 4

  # Berkeley packet filter used by dhcp server.

  pseudo-device bpf 4

  # Firewall flags

  options IPFIREWALL

  options IPDIVERT

  options IPFILTER

  options IPFILTER_LOG

  重新编译内核。

  为启动防火墙功能,/etc/rc.conf中加入如下的配置选项:

  gateway_enable="YES"

  defaultrouter="172.x.1.110" # 由接入服务商提供

  firewall_enable="YES"

  firewall_type="open"

  natd_enable="YES"

  natd_interface="rl0" # 根据机器网卡配置确定

  named_enable="YES"

  要进行两台FreeBSD机器之间的自动的IPSec key交换,必须安装port /usr/ports/.security/racoon,配置文件存储在/usr/local/etc/racoon/racoon.conf,key文件存储在/usr/local/etc/racoon/psk.txt。要在系统启动时启动/usr/local/sbin/racoon。

  不需要修改配置文件,只需修改key文件即可,如下:

  # /usr/local/etc/racoon/psk.txt

  # IPv4/v6 addresses

  #

  192.168.1.1 foobar

  192.168.2.1 foobar

  key文件必须设置存储权限为0600,否则racoon无法运行;

  #chown root.wheel /usr/local/etc/racoon/psk.txt

  #chmod 0600 /usr/local/etc/raccoon/psk.txt

  为了在启动时建立IPSec tunnel连接并添加两个内网的路由,可使用下面的shell脚本,存储在/usr/local/etc/rc.d/tunnel.sh

  #!/bin/sh

#

BSD1_IP="192.168.1.1"

BSD1_PUB_IP="172.16.1.254"

BSD1_NET="192.168.1.0/24"

BSD2_IP="192.168.2.1"

BSD2_PUB_IP="172.17.1.254"

BSD2_NET="192.168.2.0/24"

GIF0="gif0 inet"

GIFCONFIG="/usr/sbin/gifconfig"

IFCONFIG="/sbin/ifconfig"

HOSTNAME=`/bin/hostname`

NETMASK="255.255.255.0"

echo " Starting ipsec tunnel... "

case $HOSTNAME in

bsd1.test.com)

$GIFCONFIG $GIF0 $BSD1_PUB_IP $BSD2_PUB_IP

$IFCONFIG $GIF0 $BSD1_IP $BSD2_IP netmask $NETMASK

/usr/sbin/setkey -FP

/usr/sbin/setkey -F

/usr/sbin/setkey -c << EOF

spdadd $BSD1_NET $BSD2_NET any -P out ipsec

esp/tunnel/${BSD1_PUB_IP}-${BSD2_PUB_IP}/require;

spdadd $BSD2_NET $BSD1_NET any -P in ipsec

esp/tunnel/${BSD2_PUB_IP}-${BSD1_PUB_IP}/require;

EOF

/sbin/route add $BSD2_NET $BSD1_IP

;;

bsd2.test.com)

$GIFCONFIG $GIF0 $BSD2_PUB_IP $BSD1_PUB_IP

$IFCONFIG $GIF0 $BSD2_IP $BSD1_IP netmask $NETMASK

/usr/sbin/setkey -FP

/usr/sbin/setkey -F

/usr/sbin/setkey -c << EOF

spdadd $BSD2_NET $BSD1_NET any -P out ipsec

esp/tunnel/${BSD2_PUB_IP}-${BSD1_PUB_IP}/require;

spdadd $BSD1_NET $BSD2_NET any -P in ipsec

esp/tunnel/${BSD1_PUB_IP}-${BSD2_PUB_IP}/require;

EOF

/sbin/route add $BSD1_NET $BSD2_IP

;;

esac

基本的配置完成。这样在系统启动时,自动交换key,并建立tunnel。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10748419/viewspace-944531/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10748419/viewspace-944531/

你可能感兴趣的文章
构建之法阅读笔记03
查看>>
iPhone分辨率
查看>>
Another DRM driver develop guide - 还没进入kernel
查看>>
大话设计模式读书笔记(十四) 适配器模式
查看>>
linux 下eclipse配置apache服务器,选中server时server name为灰色状态
查看>>
实战:ASP.NET MVC中把Views下面的视图放到Views文件夹外
查看>>
发送邮件
查看>>
坏块管理(Bad Block Management,BBM)
查看>>
列表的设计
查看>>
python爬虫---从零开始(五)pyQuery库
查看>>
POJ2236(KB5-A)
查看>>
Centos MySQL数据库迁移详细步骤
查看>>
L2-001. 紧急救援---(Dijkstra,记录路径)
查看>>
2初出茅庐--初级篇2.1
查看>>
新建 WinCE7.0 下的 Silverlight 工程
查看>>
腾讯的张小龙是一个怎样的人?
查看>>
jxl写入excel实现数据导出功能
查看>>
linux文件目录类命令|--cp指令
查看>>
.net MVC 404错误解决方法
查看>>
linux系统目录结构
查看>>