iptables转发技术(NAT)

1|1二. 什么是nat

NAT(Network Address Translation)译为网络地址转换。通常路由器在转发我们的数据包时,仅仅会将源MAC地址换成自己的MAC地址,但是NAT技术可以修改数据包的源地址、目的地址以及源端口、目的端口等信息。

1|2二. NAT的作用

NAT技术最常见的应用就是通过修改源IP地址实现内网多主机使用一个公网地址接入互联网。NAT技术通常用于端口和流量的转发、重定向,实现如端口映射、跨网络访问、流量代理等功能。

1|3二. iptables实现NAT转发

1.语法及参数介绍
iptables  [-t TABLE]  COMMAND  CHAIN  [num]  匹配条件  -j  处理动作

要使用iptables的NAT功能,我们首先需要启用网卡的IP转发功能

echo 1 > /proc/sys/net/ipv4/ip_forward

如果想要永久生效,我们要编辑/etc/sysctl.conf文件,设置net.ipv4.ip_forward = 1,然后用sysctl -p命令使配置文件生效。

我们使用-t nat参数指明使用nat表,因为iptables默认使用filter表。
nat表同filter表一样有三条缺省的"链"(chains):

POSTROUTING:定义进行源地址转换规则,重写数据包的源IP地址
PREROUTING:定义进行目的地址转换的规则,可以把外部访问重定向到其他主机上
OUTPUT:定义对本地产生的数据包的目的转换规则。

我们要利用iptables进行NAT转换时,使用的动作主要为SNAT、DNAT和REDIRECT:

SNAT:源地址转换
DNAT:目的地址转换
REDIRECT:端口重定向

(1)规则操作

-A:在链的尾部添加一条规则
-D CHAIN [num]: 删除指定链中的第num条规则
-I CHAIN [num]:在指定链内第num条位置插入一条规则
-R CHAIN [num]: 替换链内指定位置的一条规则

(2)源/目的IP地址

-s:指定源地址
--dst:指定目的地址

(3)网络接口

-i:入站接口。对于`PREROUTING`链,只能用-i指定进来的网络接口
-o:出站接口。对于POSTROUTING和OUTPUT,只能用-o指定出去的网络接口

(4)动作

 ACCEPT:放行
 DROP:丢弃
 REJECT:拒绝
 MASQUERADE:地址伪装
 LOG:日志
 MARK:标记

1|4三. 源/目的转发实例

1.源NAT(SNAT)
更改所有来自192.168.1.0/24的数据包的源IP地址为123.4.5.100

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to 123.4.5.100

2.目的NAT(DNAT)
更改所有来自192.168.1.0/24的数据包的目的ip地址为123.4.5.100

iptables -t nat -A PREROUTING -s 192.168.1.0/24 -i eth1 -j DNAT --to 123.4.5.100

3.IP映射实例
假设有这样的情况:A、B单位给自内网中部分用户要求建立自己的Web服务器对外发布信息。我们可以在防火墙的外部网卡上绑定多个合法公网IP地址,然后通过ip映射使发给其中某一个IP地址的包转发至内部某一用户的Web服务器上,并将该内部Web服务器的响应包伪装成该公网IP发出的包。

在进行NAT之前,我们需要先将分配给A、B单位的公网ip绑定到防火墙的外网接口:

ifconfig eth0 add 123.4.5.100 netmask 255.255.255.0
ifconfig eth0 add 123.4.5.200 netmask 255.255.255.0

对防火墙接收到的目的ip为123.4.5.100和123.4.5.200的所有数据包进行目的NAT(DNAT):

iptables -A PREROUTING -i eth0 -d 123.4.5.100 -j DNAT --to 192.168.1.100
iptables -A PREROUTING -i eth0 -d 123.4.5.200 -j DNAT --to 192.168.1.200

其次,对防火墙接收到的源ip地址为192.168.1.100和192.168.1.200的数据包进行源NAT(SNAT):

iptables -A POSTROUTING -o eth0 -s 192.168.1.100 -j SNAT --to 123.4.5.100
iptables -A POSTROUTING -o eth0 -s 192.168.1.200 -j SNAT --to 123.4.5.200

这样,所有目的ip为123.4.5.100和123.4.5.200的数据包都将分别被转发给192.168.1.100和192.168.1.200;
而所有来自192.168.1.100和192.168.1.200的数据包都将分别被伪装成由123.4.5.100和123.4.5.200,从而也就实现了ip映射。

iptables -t nat -A PREROUTING -d 公网ip -p tcp --dport 公网端口 -j DNAT --to 内网ip:内网服务端口
iptables -t nat -A POSTROUTING -d 内网ip -p tcp --dport 内网服务端口 -j SNAT --to-source 网关外网IP

例:把内网ssh服务映射到外网。iptables规则配置如下:

iptables -t nat -A PREROUTING -d 123.4.5.100 -p tcp --dport 2222 -j DNAT --to-destination 10.0.0.20:22
iptables -t nat -A POSTROUTING -d 10.0.0.20 -p tcp --dport 22 -j SNAT --to-source 123.4.5.100

把访问公网123.4.5.100:2222的数据包转发到了内网10.0.0.20:22

1|5四.端口转发实例

1.本机端口转发

把发往本机80端口的数据重定向到8080端口

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
2.远程端口转发

把访问123.4.5.100:8080的数据包转发到123.4.5.200:80

iptables -t nat -A PREROUTING -d 123.4.5.100 -p tcp --dport 8080 -j DNAT --to-destination 123.4.5.200:80

原文地址:https://www.cnblogs.com/LiuChang-blog/p/12310352.html

时间: 2024-10-08 12:11:28

iptables转发技术(NAT)的相关文章

iptables转发技术

1|0NAT 1|1一. 什么是 NAT NAT(Network Address Translation)译为网络地址转换.通常路由器在转发我们的数据包时,仅仅会将源MAC地址换成自己的MAC地址,但是NAT技术可以修改数据包的源地址.目的地址以及源端口.目的端口等信息. 1|2二. NAT的作用 NAT技术最常见的应用就是通过修改源IP地址实现内网多主机使用一个公网地址接入互联网.NAT技术通常用于端口和流量的转发.重定向,实现如端口映射.跨网络访问.流量代理等功能. 1|3二. iptabl

CentOS下配置iptables防火墙 linux NAT(iptables)配置

CentOS下配置防火墙 配置nat转发服务CentOS下配置iptables防火墙 linux NAT(iptables)配置 CentOS下配置iptables 1,vim /etc/sysconfig/network   这里可以更改主机名称. NETWORKING=yesNETWORKING_IPV6=noHOSTNAME=BGI-TJ.localdomain GATEWAY=192.168.11.1(超算网关) 2.vim /etc/sysconfig/network-scripts/

Linux服务器集群架构部署搭建(二)linux防火墙iptables使用及NAT共享

第一章 外网防火墙部署企业应用 1.1 生产中iptables的实际应用 ①iptables是基于内核的防火墙,功能非常强大,基于数据包的过滤!特别是可以在一台非常低的硬件配置下跑的非常好.iptables主要工作在OSI七层的2.3.4层.七层的控制可以使用squid代理+iptables. ②iptabes:生产中根据具体情况,一般,内网关闭,外网打开.大并发的情况不能开iptables,影响性能,iptables是要消耗CPU的,所以大并发的情况下,我们使用硬件防火墙的各方面做的很仔细.s

利用servlet转发技术实现统计form表单中字母次数

需求是利用servlet转发技术,实现对html网页中用户输入的内容进行统计,统计每个字母出现的次数,忽略大小写.其中统计功能在一个servlet中,转发功能在另一个servlet中. 1.新建dynamic web project,命名为CounterCharacter 2.在webContent目录中新建index.html文件,设置form表单 <!DOCTYPE html> <html> <head> <meta charset="UTF-8&q

docker iptables 端口映射 nat

docker  iptables  端口映射  nat #!/bin/bash pro='tcp' NAT_Host='Host_A' NAT_Port=8080 Dst_Host='Host_B' Dst_Port=80 iptables -t nat -A PREROUTING -m $pro -p $pro --dport $NAT_Port -j DNAT --to-destination $Dst_Host:$Dst_Port iptables -t nat -A POSTROUTIN

k8s实践4:kube-proxy问题iptables转发规则不显示

1.今天想看看kube-proxy的iptables转发规则,执行命令iptables-save,见下: [root@k8s-master1 test]# iptables-save |grep "^-A KUBE" -A KUBE-FIREWALL -m comment --comment "kubernetes firewall for dropping marked packets" -m mark --mark 0x8000/0x8000 -j DROP -

Linux内核转发技术

前言 在linux内核中,通常集成了带有封包过滤和防火墙功能的内核模块, 不同内核版本的模块名称不同, 在2.4.x版本及其以后的内核中, 其名称为iptables, 已取代了早期的ipchains和远古时期的ipfwadm. 在命令行中可以通过lsmod | grep -i iptable来查看当前加载的相关模块信息. iptables作为内核模块, 由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集. 与此同时, iptables也作为用户空间(userspace)的一个管

五分钟彻底学会iptables防火墙--技术流ken

iptables简介 IPTABLES 是与最新的 3.5 版本 Linux内核集成的 IP 信息包过滤系统.如果 Linux 系统连接到因特网或 LAN.服务器或连接 LAN 和因特网的代理服务器, 则该系统有利于在 Linux 系统上更好地控制 IP 信息包过滤和防火墙配置. iptables 组件是一种工具,也称为用户空间(userspace),它使插入.修改和除去信息包过滤表中的规则变得容易.除非您正在使用 Red Hat Linux 7.1 或更高版本,否则需要下载该工具并安装使用它.

iptables 共享上网 (NAT表的使用)

机房内网服务器无外网IP上不了网怎么办? 比如,机房有A B 两台服务器,A有外网IP地址,B没有外网IP地址,那B如何上网呢? 思路就是,把B的网关指向A服务器的内网地址,通过A服务器代理上网 iptables的高级应用 共享上网 举例如下: 网关服务器B: ech0 10.0.0.51    外网地址   配上级网关 ech1 172.16.1.51  内网地址   不配网关 内网服务器C: ech1 172.16.1.52 网关172.16.1.51 网关服务器B需要具备的条件 1 物理条