CentOS7搭建网关、DHCP服务

网络拓扑

我们要搭建网关的网络拓扑如下,将centos服务器搭建成网关

 

图1

说明:

  1. eth1是内网网卡接口,ip是:192.168.1.1/24

  2. eth0是外网网卡接口,ip是:10.10.90.107/24

使用工具

如果系统有自带防火墙 firewalld,需要关闭,并禁止开机自启动

systemctl stop firewalld        # 停止 firewalld 服务
systemctl disable firewalld     # 禁止开机自启动服务

安装 iptables 防火墙和 dhcp 服务

yum -y install iptables-services    # 安装 iptables
yum -y install dhcp                # 安装 dhcp

iptables介绍

iptalbes的构架如图

 

图2

一共有五个环节 PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING,两条路线。

  1. 发给本主机的数据包:入口==》PREROUTING ==》INPUT ==》主机 ==》OUTPUT ==》POSTROUTING ==》出口

  2. 需要经过服务器转发的数据包: 入口 ==》PREROUTING ==》FORWARD ==》POSTROUTING ==》出口

每个关节都可以实现如上图所示的功能,一共有四个:

  1. raw :高级功能,如网址装换,一般不用

  2. mangle:高级功能,数据包的修改,一般不用

  3. nat:地址转换,对源地址或者目的地址进行修改

  4. filter:过滤器,过滤不符合要求的包

iptables的简单指令

-t<表>:指定要操纵的表;
-A:向规则链中添加条目;
-D:从规则链中删除条目;
-I:向规则链中插入条目;
-R:替换规则链中的条目;
-L:显示规则链中已有的条目;
-F:清楚规则链中已有的条目;
-Z:清空规则链中的数据包计算器和字节计数器;
-N:创建新的用户自定义规则链;
-P:定义规则链中的默认目标;
-h:显示帮助信息;
-p:指定要匹配的数据包协议类型;
-s:指定要匹配的数据包源ip地址;
-j<目标>:指定要跳转的目标;
-i<网络接口>:指定数据包进入本机的网络接口;
-o<网络接口>:指定数据包要离开本机所使用的网络接口。

我们来介绍一下怎么添加 iptables 的规则:

首先看看我的设置的规则表以及注释:

[root@localhost ~]# cat /etc/sysconfig/iptables
# Generated by iptables-save v1.4.21 on Sat Apr 21 17:49:38 2018
*nat                              # nat 表,即转发表
:PREROUTING ACCEPT [94:4332]        # 在 PREROUTING 环节中默认是通过所有包
:INPUT ACCEPT [3:400]               # 在 INPUT 环节中默认是通过所有包
:OUTPUT ACCEPT [0:0]        # 在 OUTPUT 环节中默认是通过所有包
:POSTROUTING ACCEPT [0:0]   # 在 POSTROUTING 环节中默认是通过所有包-A PREROUTING -d 10.10.90.107/32 -i eth0 -p tcp -m tcp --dport 21 -j DNAT --to-destination 192.168.1.254    
# 在 PREROUTING 环节中,将目的地址是 10.10.90.107(也就是图1中的eth0)、目的端口是21的采用 tcp 链接的数据包的目的地址转换成目的地址是 192.168.1.254。其中 -m tcp --dport 21 是连用的,意思是匹配 tcp 连接的21号端口。-A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 10.10.90.107   
# 在 POSTROUTING 环节中,将原地址是 192.168.1.0/24 网络中的地址装换成 10.10.90.107 并通过网卡 eth0 传送出去
​
COMMIT
# Completed on Sat Apr 21 17:49:38 2018
# Generated by iptables-save v1.4.21 on Sat Apr 21 17:49:38 2018
*filter                 # filter 表,即过滤表
:INPUT DROP [0:0]        # 在 INPUT 环节,默认拒绝所有输入数据包(除下面规则允许的数据包外)
:FORWARD DROP [0:0]      # 在 FORWARD 环节,默认拒绝所有输入数据包(除下面规则允许的数据包外)
:OUTPUT ACCEPT [0:0]     # 在 OUTPUT 环节,默认允许所有输入数据包-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# 这个很重要,意思是在 INPUT 环节允许已经建立连接的网络连接的数据包通过,就是说如果内网的 192.168.1.10 和 外网的 10.10.90.108 如果已经通信了,那么在 INPUT 环节直接放行-A INPUT -i eth1 -p udp -m udp --dport 67:68 -j ACCEPT
# 在 INPUT 环节,从端口 eth1 进入的 udp 连接的端口号为 67 到 68 的数据包放行。-A INPUT -i eth1 -p tcp -m tcp --dport 22 -j ACCEPT
# 在 INPUT 环节,从端口 eth1 进入的 tcp 连接的端口号为 22 的数据包放行。-A INPUT -i eth0 -j ACCEPT
# 在 INPUT 环节,从端口 eth0 进入的数据包放行。-A INPUT -s 192.168.1.0/24 -i eth1 -j ACCEPT
# 在 INPUT 环节,从端口 eth1 进入的源地址是 192.168.1.0/24 网络的数据包放行。-A INPUT -s 10.10.90.107/32 -d 192.168.1.1/32 -j ACCEPT
# 在 INPUT 环节,源地址是 10.10.90.107,目的地址是 192.168.1.1 的数据包放行,就是说允许从 eth0 到 eth1的传送。-A FORWARD -s 192.168.1.0/24 -j ACCEPT
# 在 FORWARD 环节,源地址是 192.168.1.0/24 网络的数据包放行。-A FORWARD -d 192.168.1.254/32 -p tcp -m tcp --dport 21 -j ACCEPT
# 在 FORWARD 环节,源地址是 192.168.1.254 的主机,采用 tcp 连接,并且端口是 21 的数据包放行。
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
# 这个很重要,意思是在 FORWARD 环节允许已经建立连接的网络连接的数据包通过,和 INPUT 的意思一样
COMMIT
# Completed on Sat Apr 21 17:49:38 2018

规则上面说的很清楚了,那么我们来试试怎么创建规则:

# 基本语法
iptables -t 表名 【选项名】{-A|D|I|..} 【环节】{INPUT|FORWARD|..} 【需要的操作】
# 例如
iptables -t nat -A INPUT .....
# 在 nat 表中加入一条在 INPUT 环节的规则,其中 filter 没有表名,直接省略 '-t 表名'  的输入,如
iptables -A FORWARD ...
# 在 filter 表中加入一条 FORWORD 环节的规则。

规则加好了后需要如下操作

# 打开系统的ip转发功能,并不用重启,立即生效
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p# 保存你添加的规则,并重启 iptables 服务,当然,每次你修改规则后都要保存和重启服务
iptables-save > /etc/sysconfig/iptables     # 保存修改规则
systemctl start iptables        # 启动服务,适合你第一次运行 iptables
systemctl enable iptables       # 允许开机自启动
systemctl restart iptables      # 重启服务

规则的查看和删除

iptables -t 表名(省略时为 filter 表)-L -n --line-numbers
iptables -t 表名(省略时为 filter 表)-D 环节 规则id

DHCP服务搭建

当规则建立成功后我们来看看 dhcp 的搭建,dhcp 服务很简单,只要配置指定文件就行

[root@localhost ~]# cat /etc/dhcp/dhcpd.conf 
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.example
#   see dhcpd.conf(5) man page# 网络和子网掩码
subnet 192.168.1.0 netmask 255.255.255.0 {
​
    range 192.168.1.2 192.168.1.253;            # 分配地址范围
    option broadcast-address 192.168.1.255;      # 网络广播地址  
    option routers 192.168.1.1;                 # 网关,这里是本主机ip,因为网关和dhcp服务都在本主机
    option domain-name-servers 159.226.39.1;     # dns 服务器ip,可以写多个,但不要写 8.8.8.8
    option netbios-name-servers 192.168.1.1;     # win 服务器ip
    option domain-name lan;                     # 搜索域
    default-lease-time 86400;                   # 默认租用期,单位为s
    max-lease-time 86400;                       # 最长租用期
}
​
# 下面是指定特定的主机为特定ip,如ftp
host ftp_server {
    hardware ethernet 52:54:00:6f:f9:63;        # 指定主机 mac 地址
    fixed-address 192.168.1.254;               # 为指定主机分配的ip 
}

搭建完成后

# 重启 dhcp 服务就行了
systemctl enable dhcpd      # 启动
systemctl start dhcpd       # 允许开机自启动
systemctl restart dhcpd     # 重启
  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值