home-gate
操作系统版本:Ubuntu server 9.04
1 硬件
配置3块网卡,分别映射到/dev/vmnet1、/dev/vmnet3、/dev/vmnet2。
2 初始安装
语言选择english。
手工设置eth0静态IP地址。
只安装openssh server。
3 配置网络
设置eth1和eth2网卡参数。
编辑/etc/network/interfaces:
... auto eth0 eth1 eth2 iface eth0 inet static address 10.10.10.1 netmask 255.255.255.0 network 10.10.10.0 broadcast 10.10.10.255 # dns-* options are implemented by the resolvconf package, if installed dns-search copyleft.net iface eth1 inet static address 172.16.0.10 netmask 255.255.255.0 network 172.16.0.0 broadcast 172.16.0.255 gateway 172.16.0.1 # dns-* options are implemented by the resolvconf package, if installed dns-search copyleft.net iface eth2 inet static address 10.10.20.1 netmask 255.255.255.0 network 10.10.20.0 broadcast 10.10.20.255 # dns-* options are implemented by the resolvconf package, if installed dns-search copyleft.net
其他相关文件:
- /etc/hostname
- /etc/hosts
- /etc/resolv.conf
- /etc/udev/rules.d/70-persistent-net.rules
4 配置软件源
这里使用本地服务器上的镜像。
首先备份原来的配置文件:
$ cd /etc/apt $ sudo cp sources.list sources.list-bak
编辑sources.list,将原有的网址替换为本地服务器地址,如:
... deb ftp://10.20.10.199/pub/ubuntu/ jaunty main restricted deb-src ftp://10.20.10.199/pub/ubuntu/ jaunty main restricted ...
5 更新系统
$ sudo aptitude update $ sudo aptitude upgrade
6 安装lftp
$ sudo aptitude install lftp
7 配置iptables防火墙
这里不使用缺省安装的ufw,而是使用Iptables脚本中提供的模板rc.iptables-gate-novpn.ref。
$ sudo cp rc.iptables-gate-novpn.ref /etc/init.d/iptables $ sudo update-rc.d iptables start 39 S . $ cd /etc/init.d $ sudo chmod 755 iptables
编辑/etc/init.d/iptables,去掉相关注释,使得:
- 内网可以访问外网的服务:ping、http(s)和ftp。
- 内网可以访问dmz。
- 外网可以访问dmz的服务:http(s)和ftp。
- 打开SNAT。
- 打开DNAT,重定向到home-server(10.10.20.20)。
其中DNAT只重定向http(s)和ftp:
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport http -j DNAT --to 10.10.20.20 iptables -t nat -A PREROUTING -i eth1 -p tcp --dport https -j DNAT --to 10.10.20.20 iptables -t nat -A PREROUTING -i eth1 -p tcp --dport ftp -j DNAT --to 10.10.20.20
8 配置ip6tables防火墙
同样使用Iptables脚本中提供的模板rc.ip6tables.ref。
$ sudo cp rc.ip6tables.ref /etc/init.d/ip6tables $ sudo update-rc.d ip6tables start 39 S . $ cd /etc/init.d $ sudo chmod 755 ip6tables
9 配置内核参数
编辑/etc/sysctl.conf,打开转发:
net.ipv4.ip_forward=1
10 配置bind域名服务
这里网关只作为一个forward服务器,本身不负责域名解析。
10.1 安装软件包
$ sudo aptitude install bind9
10.2 配置
编辑/etc/bind/named.conf.options,修改:
... forward only; forwarders { 172.18.0.30; }; ...
10.3 防火墙修改
编辑/etc/init.d/iptables,允许内网用户DNS查询:
# enalbe dns query in eth0 iptables -A in-IN -p udp --dport domain -m state --state NEW -j ACCEPT