使用CentOS搭建网关路由器

前一段时间办公室的宽带接入突然变得很不稳定,换了三个百元价位的路由器都没法稳定运行,跑个5分钟到一天就挂了。不知道是公网上有人DOS还是办公室里客户端数量太多了。最终决定在戴尔服务器里搭一台虚拟机作为网关路由器。

使用软件

操作系统:CentOS 6.4

安装组件:rp-pppoe(pppoe拨号程序),dnsmasq(用于轻量化实现dhcp和dns服务器)

CentOS使用net install,所有组件使用yum install。傻瓜式安装,不详述。

配置步骤

配置pppoe

pppoe-setup

根据向导配置完毕,注意在问是否要按需拨号的步骤里选no,不要按需拨号,即一直在线。

大多数网上教程里面都说使用adsl-setup命令,但是在我使用的这个版本中没有,于是使用pppoe-setup

最后/etc/sysconfig/network-scripts/ifcfg-ppp0中的内容如下:

USERCTL=yes
BOOTPROTO=dialup
NAME=DSLppp0
DEVICE=ppp0
TYPE=xDSL
ONBOOT=yes
PIDFILE=/var/run/pppoe-adsl.pid
FIREWALL=MASQUERADE
PING=.
PPPOE_TIMEOUT=80
LCP_FAILURE=3
LCP_INTERVAL=20
CLAMPMSS=1412
CONNECT_POLL=6
CONNECT_TIMEOUT=60
DEFROUTE=yes
SYNCHRONOUS=no
ETH=eth0
PROVIDER=DSLppp0
USER=???
PEERDNS=no
DEMAND=no

配置iptables

vi /etc/sysconfig/iptables

# Generated by iptables-save v1.4.7 on Wed Jul 24 19:52:51 2013
*nat
:PREROUTING ACCEPT [2021:172401]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -i ppp0 -p tcp -m tcp --dport 443 -j DNAT --to-destination 172.16.1.x:443   #对外发布443端口
-A POSTROUTING -o ppp0 -s 172.16.1.0/24 -j MASQUERADE    #NAT的内网IP为172.16.1.0/24网段,外网IP为默认网关对应的interface
COMMIT
# Completed on Wed Jul 24 19:52:51 2013
# Generated by iptables-save v1.4.7 on Wed Jul 24 19:52:51 2013
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [63:5610]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth1 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth1 -p tcp -m state --state NEW -m tcp --dport 53 -j ACCEPT
-A INPUT -i eth1 -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT
-A INPUT -i eth1 -p udp -m state --state NEW -m udp --dport 67:68 -j ACCEPT    #注意对于dhcpd服务无需在iptables中开通端口(iptables拦不掉),但是对于dnsmasq需要开通(被坑得折腾了好几个小时)
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT    #允许转发443端口协议
-A FORWARD -i eth1 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Wed Jul 24 19:52:51 2013

配置dnsmasq

一开始安装并配置了dhcp和bind,后来发现对于这么简单的网络环境(dhcp只需要自动配置网关、IP、掩码、DNS,bind只需要配置转发器),用dnsmasq即方便又轻量。

只需要修改如下配置:

vi /etc/dnsmasq.conf

interface=eth1    #内网网卡
dhcp-range=172.16.1.200,172.16.1.254,12h    #内网IP地址池的范围

其他诸如dhcp-option等也可以配置,但其实默认就是把网关、DNS指向自己的IP

如果需要指定特定域名的解析结果,只需要把相应的条目加到/etc/hosts文件中,然后使用如下命令更新:(直接重启服务也可)

killall -s SIGHUP dnsmasq


最后记得把iptables和dnsmasq相应的服务都重启,使配置生效。

你可能感兴趣的:(Linux,网络)