采用FreeBSD IPSec Tunnel方式连接两个局域网络

施永新 编译,原文引自:http://www.freebsddiary.org/ipsec-tunnel.php



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



假设有如下的网络结构:

vpn
两台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 "/nStarting 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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值