Duangw

home-gate

操作系统版本:Slackware 11.0

 

1 硬件

配置3块网卡,分别映射到/dev/vmnet1、/dev/vmnet3、/dev/vmnet2。

 

2 安装基础系统

只安装a/目录下的软件包,采用expert模式,全部安装。

配置lilo,安装在MBR中。

 

3 安装库文件

 

4 安装基本网络包

 

5 安装bind域名包

 

6 安装nfs包

 

7 配置网络

执行netconfig配置网络:

# netconfig

netconfig只能配置第一块网卡,其余2块编辑/etc/rc.d/rc.inet1.conf手工设置。

 

8 设置文件缺省权限

系统初始的umaks为0022,将其修改为0027。

编辑/etc/profile,将umask一行修改为:

umask 027

 

9 安装补丁

使用nfs从develop获取更新包:

# mount -t nfs -o nolock 10.10.10.250:/newpkg /mnt
# cd /mnt/packages
# upgradepkg *.tgz
# umount /mnt

 

10 防火墙配置

有关各个iptables脚本的详细内容见:Iptables脚本

这里使用网关脚本rc.iptables-gate-novpn.ref,使用nfs从develop获取:

# mount -t nfs -o nolock 10.10.10.250:/newpkg /mnt
# cd /etc/rc.d
# cp /newpkg/rc.iptables-gate-novpn.ref rc.iptables
# chmod a+x rc.iptables

修改/etc/rc.d/rc.S文件,把/newpkg/rc.S.ref模板内容粘贴到rc.S的末尾。

# umount /mnt

修改/etc/rc.d/rc.iptables脚本,去掉相关注释,使得:

其中DNAT只重定向http(s)和ftp:

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport http -j DNAT --to 10.10.20.10
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport https -j DNAT --to 10.10.20.10
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport ftp -j DNAT --to 10.10.20.10

 

11 设置内核参数

有关脚本的详细内容见:Sysctl脚本

# mount -t nfs -o nolock 10.10.10.250:/newpkg /mnt
# cd /etc/rc.d
# cp /newpkg/rc.sysctl.ref rc.sysctl
# chmod a+x rc.sysctl

编辑/etc/rc.d/rc.M,把/newpkg/rc.M.ref模板内容粘贴到rc.inet2的前面。

# umount /mnt

打开ip转发功能:

# chmod +x /etc/rc.d/rc.ip_forward

 

12 配置域名服务

这里网关只作为一个缓存服务器,本身不负责域名解析。

编辑/etc/named.conf,增加如下内容:

options {
...
        forward only;
        forwarders {
                172.18.0.20;
        };
...

启动bind服务:

# cd /ec/rc.d/
# chmod a+x rc.bind

编辑/etc/rc.d/rc.iptables,允许内网用户DNS查询:

# enalbe dns query in eth0
iptables -A in-IN -p udp --dport domain -m state --state NEW -j ACCEPT

 

13 配置openvpn server

使用openvpn实现home网络和away网络之间的vpn连接。其中home-gate作为server,away-gate作为client。

从develop获得编译好的软件包并安装:

# mount -t nfs -o nolock 10.10.10.250:/newpkg /mnt
# cd /mnt
# installpkg lzo-2.02-i486-2_SBo.tgz
# installpkg openvpn-2.0.9-i486-1_SBo.tgz
# umount /mnt

根据openvpn提供的INSTALL文件中的指示完成测试。

详细的配置过程可参见openvpn.net,这里只列出步骤:

生成CA:

# cd /usr/doc/openvpn-2.0.9/easy-rsa
# . ./vars
# ./clean-all
# ./build-ca  (其中Common Name输入:sk11-home-gate)

生成server端的key:

# ./build-key-server sk11-home-server
其中(Common Name: sk11-home-server)

生成client端的key,可生成多个:

# ./build-key sk11-home-client1 (Common Name: sk11-home-client1)
# ./build-key sk11-home-client2 (Common Name: sk11-home-client2)
# ./build-key sk11-home-client3 (Common Name: sk11-home-client3)
...

生成Diffie Hellman parameters:

# ./build-dh

将生成的各个key拷贝到需要的地方,这里放在/etc/openvpn/server下:

# mkdir /etc/openvpn/server
# cd keys
# cp * /etc/openvpn/server/

编写server端配置文件,首先复制一份模板作为起点:

# cd /usr/doc/openvpn-2.0.9/sample-config-files
# cp server.conf /etc/openvpn/server

修改配置:

# key文件名:
cert sk11-home-server.crt
key sk11-home-server.key  # This file should be kept secret

# 使用10.10.30.0/24作为vpn接口的地址空间:
server 10.10.30.0 255.255.255.0

# 允许client访问home-work子网:
push "route 10.10.10.0 255.255.255.0"

# 允许client端的away-work子网访问vpn:
client-config-dir ccd
route 10.20.10.0 255.255.255.0

创建ccd目录和配置文件:

# cd /etc/openvpn/server
# mkdir ccd
# cd ccd
# echo "iroute 10.20.10.0 255.255.255.0" > sk11-home-client1

针对openvpn,这里使用新的iptables脚本:

# cd /etc/rc.d
# mv rc.iptables rc.iptables-gate-novpn
# mount -t nfs -o nolock 10.10.10.250:/newpkg /mnt
# cp /mnt/rc.iptables-gate-openvpn.ref rc.iptables-gate-openvpn
# chmod a+x rc.iptables-gate-openvpn
# ln -s rc.iptables-gate-openvpn rc.iptables
# umount /mnt

编辑/etc/rc.d/rc.iptables,打开前面配置的各个规则,并增加:

启动测试:

# cd /etc/openvpn/server
# openvpn server.conf

相应的客户端配置请参见away-get的配置。