使用debian配置网关服务器及内网连入IPV6
http://mail.ustc.edu.cn/~lixuebai/GNU/GatewayServer.html
copyright(c) 李雪白 2007年
本文遵从自由软件基金会发布的GNU自由文档许可证(GNU Free Document License), 任何组织和个人都有在此条款下的复制,转载,修改的权限。
首先要求电脑有两块网卡,一个连接到外网,一个连接到switch,而switch与内网其他电脑相连。
安装linux操作系统,这里选择了debian stable版本(目前是sarge版)只需要安装基本部分,不需要安装x(比如xorg)和wm(比如fvwm)以及desktop environment(比如gnome,kde)
选择eth0作为主网卡(若eth0不能连接,则对调两个网线,或着把eth1作为对外网卡)
修改ip,不用
iface eth0 inet dhcp
并增加eth1的设置
vi /etc/network/interfaces
比如我这里是
auto eth0 iface eth0 inet static address 202.38.68.148 netmask 255.255.255.128 network 202.38.68.0 broadcast 202.38.68.255 gateway 202.38.68.254 dns-nameservers 202.38.64.1 auto eth1 iface eth1 inet static address 192.168.2.1 netmask 255.255.255.0 network 192.168.2.0 broadcast 192.168.2.255
aptitude安装resolvconf使得dns-nameservers有效。
aptitude安装emacs,vim做编辑器,安装lftp做ftp客户工具,安装ssh来远程管理。
重启网络
/etc/init.d/network restart
配置iptables,在shell下执行
echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
现在内网(设置好192.168.2.*等)就能够上网了(ipv4)。 当然这样做比较麻烦,请看下面的dhcp自动分配ip服务的设置。
配置dhcp服务
如果子网内电脑很多,一个一个手动分配ip就给管理员带来 很大的麻烦的,dhcp服务可以给内网的电脑自动分配ip, 可以大大减轻管理员的工作。
aptitude安装dhcp 这里的dhcp是版本2,当然也可以选择版本3,版本3叫做dhcp3-server 不过dhcp3软件包使用/etc/dhcp3/dhcpd.conf作为其配置文件, 而不像dhcp2使用/etc/dhcpd.conf
写配置文件/etc/dhcpd.conf
subnet 192.168.2.0 netmask 255.255.255.0 { option routers 192.168.2.1; option subnet-mask 255.255.255.0; option domain-name "domain.org"; option domain-name-servers 202.38.64.1; option broadcast-address 192.168.2.255; option time-offset -18000; range 192.168.2.11 192.168.2.250; default-lease-time 216000; max-lease-time 432000; }
设置提供dhcp的网卡 修改/etc/default/dhcp
INTERFACES="eth1"
重新启动dhcp服务
/etc/init.d/dhcp restart
下面配置ipv6
去网络中心板申请外网ip的ipv6,以及分配在此之下的一段给内网。
(根据jameszhang提供的方法)
aptitude安装iproute
如果是2.4的内核需要加载ipv6模块,若是2.6内核就不需要。
modprobe ipv6
把申请的ipv6设置上,并设置缺省路由。
ip addr add 2001:da8:d800:68:202:38:68:148/64 dev eth0 ip addr add 2001:da8:d800:6800::1/64 dev eth1 ip route add 2000::/3 via 2001:da8:d800:68::1 dev eth0
查看
/sbin/ifconfig
能够看到ipv6了。
把原来的ipv6可以删掉了
ip addr del ?????????? dev eth0
在网关上测试
ping6 bbs6.ustc.edu.cn
可以了。
给内网自动分配ipv6,需要安装radvd
aptitude安装radvd
cp /usr/share/doc/radvd/examples/simple-radvd.conf /etc/radvd.conf
编辑
emacs -nw /etc/radvd.conf
修改为如下内容
interface eth1 { AdvSendAdvert on; MinRtrAdvInterval 30; MaxRtrAdvInterval 100; prefix 2001:da8:d800:6800::/64 { AdvOnLink on; AdvAutonomous on; AdvRouterAddr on; }; };
重启radvd
/etc/init.d/radvd restart
现在在内网测试
ping6 bbs6.ustc.edu.cn
现在测试看ipv6的在线影视
mplayer mms://tv6.ustc.edu.cn/tv7这样就作好了。
使内网能够上科大video服务器的ftp
modprobe ip_conntrack_ftp modprobe ip_nat_ftp
以上命令开机自动启动
在/etc/init.d/建立一个脚本比如叫做startnetgate.sh
#!/bin/sh # lixuebai PATH=/sbin:/bin:/usr/sbin:/usr/bin echo 1 > /proc/sys/net/ipv4/ip_forward #iptables -F iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE modprobe ip_conntrack_ftp modprobe ip_nat_ftp ip addr add 2001:da8:d800:68:202:38:68:148/64 dev eth0 ip addr add 2001:da8:d800:6800::1/64 dev eth1 ip route add 2000::0/3 via 2001:da8:d800:68::1 dev eth0 /etc/init.d/radvd restart echo "OK"
若是2.4内核,则需要在脚本中的ip命令之前加入
modprobe ipv6
修改这个脚本的权限
chmod -v 755 startnetgate.sh
设定为启动服务
/usr/sbin/update-rc.d startnetgate.sh defaults
这样就会开机自动启动了。
这里顺便多说一下/usr/sbin/update-rc.d的用法 其实只要
emacs -nw /usr/sbin/update-rc.d
就能看到用法了。
update-rc.d会自动在/etc/init.d/找文件,所以如前所示,startnetgate.sh不需要写路径.
一些常用的方法:
设定为启动服务 #/usr/sbin/update-rc.d startnetgate.sh defaults 将其删除 #/usr/sbin/update-rc.d -f startnetgate.sh remove 根据运行级别设定,如 #/usr/sbin/update-rc.d startnetgate.sh start 20 1 2 3 . stop 20 4 5 .