SNAT和DNAT
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SNAT和DNAT相关的知识,希望对你有一定的参考价值。
一、SNAT
SNAT作用
-
实现局域网共享IP实现上网
- 隐藏内部主机
SNAT原理
- 通过修改数据包的源IP地址(修改为公网IP)
SNAT实现方式
-
硬件级路由器
-
硬件级防火墙
- 软件级防火墙:vim /etc/sysctl.conf --> net.ipv4.ip_forward = 1(开启路由转发) --> sysctl -p
SNAT规则
iptables -t nat -A POSTROUTING -s 内网IP -j SNAT --to-source 公网IP //适用于静态公网IP地址
iptables -t nat -A POSTROUTING -s 内网IP -j MASQUERADE //适用于动态公网IP地址
二、SNAT案例
二台服务器,一台内网(vmnet1)、一台Linux网关服务器(两块网卡、vmnet1、桥接)
1.部署内网服务器
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
NM_CONTROLLED="no"
ONBOOT="yes"
BOOTPROTO="static"
IPADDR=192.168.1.10
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=114.114.114.114
/etc/init.d/iptables stop
/etc/init.d/network restart
rm -rf /etc/yum.repos.d/*
vim /etc/yum.repos.d/local.repo
[local]
name=local
baseurl=file:///mnt
gpgcheck=0
mount /dev/cdrom /mnt
yum -y install elinks
2.部署Linux网关
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
NM_CONTROLLED="no"
ONBOOT="yes"
BOOTPROTO="static"
IPADDR=192.168.1.1
NETMASK=255.255.255.0
cp /etc/sysconfig/network-scripts/ifcfg-eth1
vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE="eth1"
NM_CONTROLLED="no"
ONBOOT="yes"
BOOTPROTO="dhcp"
/etc/init.d/iptables stop
/etc/init.d/network restart
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p
iptables -t nat -I POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 192.168.10.34
3.测试
内网服务器:elinks www.baidu.com || ping www.baidu.com
二、DNAT
DNAT作用
-
发布内部主机,使公网客户端可访问内网
- 隐藏内部主机
注:DNAT需配合DNS使用,将域名解析到公网IP
DNAT原理
- 通过修改数据包的目的IP地址(修改为公网IP)
DNAT实现方式
-
硬件级路由器
-
硬件级防火墙
- 软件级防火墙:vim /etc/sysctl.conf --> net.ipv4.ip_forward = 1(开启路由转发) --> sysctl -p
四、DNAT案例
二台服务器,一台内网(vmnet1)、一台Linux网关服务器(两块网卡、vmnet1、桥接)、实现公网访问内网的ssh
1.部署内网服务器
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
NM_CONTROLLED="no"
ONBOOT="yes"
BOOTPROTO="static"
IPADDR=192.168.1.10
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=114.114.114.114
/etc/init.d/iptables stop
/etc/init.d/network restart
2.部署Linux网关
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
NM_CONTROLLED="no"
ONBOOT="yes"
BOOTPROTO="static"
IPADDR=192.168.1.1
NETMASK=255.255.255.0
cp /etc/sysconfig/network-scripts/ifcfg-eth1
vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE="eth1"
NM_CONTROLLED="no"
ONBOOT="yes"
BOOTPROTO="dhcp"
/etc/init.d/iptables stop
/etc/init.d/network restart
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p
iptables -t nat -I PREROUTING -d 192.168.10.231 -p tcp --dport 2333 -j DNAT --to-destination 192.168.1.10:22
3.测试
公网client:ssh [email protected] -p 2333
以上是关于SNAT和DNAT的主要内容,如果未能解决你的问题,请参考以下文章
iptables中实现内外网相互访问 SNAT与DNAT的原理与应用
防火墙——SNAT和DNAT策略的原理及应用防火墙规则的备份和还原