一、iptables简介

IPTABLES是与最新的3.5版本Linux内核集成的IP信息包过滤系统。假如Linux系统联接到因特网或LAN、服务器或联接LAN和因特网的代理服务器,则该系统有利于在Linux系统上更好地控制IP信息包过滤和防火墙配置。

防火墙在做数据包过滤决定时,有一套遵守和组成的规则,这种规则存贮在专用的数据包过滤表中,而这种表集成在Linux内核中。在数据包过滤表中,规则被分组置于我们所谓的链(chain)中。而netfilter/iptablesIP数据包过滤系统是一款功能强悍的工具,可用于添加、编辑和移除规则。

(源自百度)

二、背景

一个内部局域网中有多台服务器提供不同的服务linux 端口映射软件,如web服务、FTP服务、ssh、telnet等,通过服务器(或网段、防火墙)联接外部网路,假如外部网路上的主机和局域网设备进行相互通信,则须要中间设备转发。再转述成另一种应用场合,服务器有2个网卡,分别联接内外网。内网难以直接访问设备上的数据、服务。在服务器上实现转发后,则可达到目的。

三、原理

iptables的“四表五链”其实是对用户设置规则的管理,是看待用户设置的规则的两个维度。

表的处理优先级:raw>mangle>nat>filter

表(tables)

链(chains)

INPUT

FORWARD

OUPUT

PREROUTING

POSTROUTING

filter

nat

mangle

raw

要实现转发则数据包通过的流程为:PREROUTING->路由裁定->FORWARD->POSTOUTING这条链路,如右图所示:

linux 端口映射软件_映射端口软件_linux端口映射的几种方法

所以我们须要PREROUTING、FORWARD、POSTOUTING三条链上操作,路由裁定是内核按照IP地址进行手动判定包的去向,所以我们不用管这个。

四、实现环境搭建示意图:

映射端口软件_linux 端口映射软件_linux端口映射的几种方法

方案一1、配置(1)个人笔记本A配置

route  add -net 198.120.0.0/24 gw 100.100.100.100

(2)个人笔记本B配置注:配置笔记本A访问198.120.0.0/24网关的网段为100.100.100.100

route  add -net 100.100.100.0/24 gw 198.120.0.202

(3)arm设备配置注:配置笔记本B访问100.100.100.0/24网关的网段为198.120.0.202

linux 端口映射软件_映射端口软件_linux端口映射的几种方法

echo  "1" > /proc/sys/net/ipv4/ip_forwardiptables  -Fiptables  -t nat -Fiptables  -A FORWARD -j REJECTiptables  -I FORWARD -i eth3 -s 198.120.0.0/24 -p tcp --dport 12345 -j ACCEPTiptables  -I FORWARD -o eth3 -d 198.120.0.0/24 -p tcp --sport 12345 -j ACCEPTiptables  -I FORWARD -i eth11 -s 100.100.100.0/24 -p tcp --dport 12345 -j ACCEPTiptables  -I FORWARD -o eth11 -d 100.100.100.0/24 -p tcp --sport 12345 -j ACCEPT

注:默认的linux的包转发功能是关掉的,可通过命令cat/proc/sys/net/ipv4/ip_forward查看(0为关掉,1为打开),倘若要让我们的linux实现转发,则须要打开这个转发功能,可以改变它的一个系统参数,使用echo”1″>/proc/sys/net/ipv4/ip_forward命令打开转发功能,仅为临时打开,重启失效。永久生效,更改/etc/sysctl.conf文件,net.ipv4.ip_forward=1,更改配置文件后使用sysctl-p才生效

2、测试截图

测试一:

笔记本A为顾客端

linux端口映射的几种方法_映射端口软件_linux 端口映射软件

笔记本B为服务端

映射端口软件_linux端口映射的几种方法_linux 端口映射软件

映射端口软件_linux端口映射的几种方法_linux 端口映射软件

测试二:

笔记本A为服务端

linux 端口映射软件_linux端口映射的几种方法_映射端口软件

笔记本B为顾客端

linux 端口映射软件_映射端口软件_linux端口映射的几种方法

linux端口映射的几种方法_映射端口软件_linux 端口映射软件

方案二1、配置(1)个人笔记本A配置

笔记本A的网段设置为

100.100.100.100

(2)个人笔记本B配置

笔记本B的网段设置为

198.120.0.202

(3)arm设备配置

echo  "1" > /proc/sys/net/ipv4/ip_forwardiptables  -Fiptables  -t nat -Fiptables  -A FORWARD -j REJECTiptables  -t nat -A POSTROUTING -s 198.120.0.0/24 -j SNAT --to 100.100.100.100iptables  -t nat -A POSTROUTING -s 100.100.100.0/24 -j SNAT --to 198.120.0.202 iptables  -I FORWARD -i eth3 -s 198.120.0.0/24 -p tcp --dport 12345 -j ACCEPTiptables  -I FORWARD -o eth3 -d 198.120.0.0/24 -p tcp --sport 12345 -j ACCEPTiptables  -I FORWARD -i eth11 -s 100.100.100.0/24 -p tcp --dport 12345 -j ACCEPTiptables  -I FORWARD -o eth11 -d 100.100.100.0/24 -p tcp --sport 12345 -j ACCEPT

方案三1、配置(1)个人笔记本A配置

IP地址需与eth11在同一公网,网段可不设置

(2)个人笔记本B配置

IP地址需与eth3在同一公网,网段可不设置

(3)arm设备配置

echo  "1" > /proc/sys/net/ipv4/ip_forwardiptables  -Fiptables  -t nat -Fiptables  -A FORWARD -j REJECT iptables  -t nat -A PREROUTING -d 198.120.0.202 -p tcp --dport 12345 -j DNAT --to  100.100.100.8:5678iptables  -t nat -A PREROUTING -d 100.100.100.100 -p tcp --dport 5678 -j DNAT --to  198.120.0.8:12345iptables  -t nat -I POSTROUTING -j MASQUERADE iptables  -I FORWARD -i eth3 -s 198.120.0.0/24 -p tcp --dport 5678 -j ACCEPTiptables  -I FORWARD -o eth3 -d 198.120.0.0/24 -p tcp --sport 5678 -j ACCEPTiptables  -I FORWARD -i eth11 -s 100.100.100.0/24 -p tcp --dport 12345 -j ACCEPTiptables  -I FORWARD -o eth11 -d 100.100.100.0/24 -p tcp --sport 12345 -j ACCEPT

第一行:默认的linux的包转发功能是关掉的,可通过命令cat/proc/sys/net/ipv4/ip_forward查看(0为关掉,1为打开),假如要让我们的linux实现转发,则须要打开这个转发功能,可以改变它的一个系统参数,使用echo”1″>/proc/sys/net/ipv4/ip_forward命令打开转发功能,仅为临时打开,重启失效。永久生效,更改/etc/sysctl.conf文件(装置可能不存在这个文件),net.ipv4.ip_forward=1,更改配置文件后使用sysctl-p才生效

第二、三行指令:删掉系统中存在的规则

第六行:表明在路由转发前linux vi,将目的地址为198.120.0.202,目的端口为12345的tcp包的目的地址转化为100.100.100.8,端口映射为5678

第七行:表明在路由转发前,将目的地址为100.100.100.100,目的端口为5678的tcp包的目的地址转化为198.120.0.8,端口映射为12345

第八行:表示手动获取当前网卡的IP地址进行源地址转换

第十~十二行:白名单功能,降低容许转发

2、备注

iptables --line -nvL

iptables -D chain num

(本例中chain仅为FORWARDlinux 端口映射软件,num数为上述指令查看filter表中规则对应的num数)

iptables --line -t nat -nvL

iptables -t nat -D chain num

(本例中chain仅为POSTROUTINGlinux vps,num数为上述指令查看nat表中规则的对应num数)

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复