iptables的nat网络转发

今天搞了个网络转发,将服务器中的一个虚拟机通过网络转发的方式让其他网络的主机访问虚拟机。

iptables传输数据包过程:

1.首先进入PREROUTING链,内核根据数据包目的ip判断是否转出。

2.数据包如果是本机数据包,则进入INPUT链,此时本机任何进程都可以收到数据包。同时,本机上的程序都可以发送数据包,并进入OUTPUT链,最后进入POSTROUTING链输出。

3.若是非本机数据包,并且内核判断允许转出,则进入FORWARD链,最后进入POSTROUTING链输出。

iptable有四个表,filter,nat,mangle和raw,用于实现包过滤,网络地址转换,包重构和数据跟踪处理。

filter表有三个链:INPUT,FORWARD和OUTPUT

nat表有三个链:PREROUTING,POSTROUTING和OUTPUT

managle表有五个链:PREROUTING,POSTROUTING,INPUT,OUTPUT和FORWARD

raw表有两个链:OUTPUT和PREROUTING

语法:

iptables -t [表名] 命令控制选项 [链名] [条件匹配规则]  -j [处理方式]

表名:filter,nat,mangle,raw

命令控制选项:

-A 在指定链末尾添加一条新规则

-D 删除指定链中的一条规则,可按照规则序号和内容删除

-I 在指定链中插入一条新的规则,默认添加在第一行

-R 修改,替换指定链中的一条规则,可按照规则序号和内容替换

-L 列出指定链中所有规则

-E 重命名用户定义的链,不改变链本身

-F 清空

-N 新建一条用户自定义的规则链

-X 删除指定表中用户自定义的规则链

-P 设置指定链的默认策略

-Z 将所有表的所有链的字节和数据包计数器清零

-n 使用数字形式显示输出结果

-v 查看规则表详细信息

-V 查看版本

-h 帮助

处理方式有四种:

ACCEPT 允许数据包通过

DROP    直接丢弃数据包,不给任何返回信息

REJECT  拒绝数据包通过,必要时会给数据发送端一个响应信息

LOG       在/var/log/messages文件中记录日志信息,并将数据包传递给下一条规则

网络转发shell脚本:

dest_ip=192.168.122.50

dest_port=8000

gatewat_public_ip=192.168.1.250

gateway_port=10050

gatewaty_private_ip=192.168.122.1

iptables -t nat -A PREROUTING -d $gateway_public_ip/32 -p tcp -m tcp --dport $gateway_port -j DNAT --to-destination $dest_ip:$dest_port

iptables -t nat -A POSTROUTING -d $dest_ip/32 -p tcp -m tcp --dport $dest_port -j SNAT --to-source $gateway_private_ip

获取nat表信息shell脚本:

#!/bin/bash

iptables -t nat -nL --line-number

删除nat表规则shell脚本:

#!/bin/bash

prerouting_num=$1

postrouting_num=$2

iptables -t nat -D PREROUTING $prerouting_num

iptables -t nat -D POSTROUTING $postrouting_num

ps:

添加网络转发遇到的一个小问题

在添加一条POSTROUTING规则时:

num        pkts          bytes         target             prot          opt            in         out           source                         destination

1               0               0      MASQUERADE        tcp            --              ×          ×           192.168.122.0/24        !192.168.122.0/24     masq ports: 1024-65535

iptables -t nat -A POSTROUTING -p tcp -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j MASQUERADE --to-posts 1024-65535

要设置destination为!192.168.122.0/24时,取反符号!放在-d前面。

时间: 2024-10-07 15:28:38

iptables的nat网络转发的相关文章

Linux服务--iptables之nat转发和构建简单的DMZ防火墙

iptables之nat转发和构建简单的DMZ防火墙 一.NAT iptables 中的nat表: nat:Network Address Translation:NAT不仅完美地解决了IP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机. nat有三种实现方式:SNAT,DNAT和端口多路复用OverLoad 在了解Nat工作原理之前先了解一下私网IP和公网IP.私网IP地址是指局域网内部网络或主机的IP地址,公网地址是指在因特尔网上全球唯一的IP地址. 私有

iptables nat 技术转发

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

Docker NAT iptables实现 及网络配置

Docker NAT iptables实现 默认情况下,容器可以主动访问到外部网络的连接,但是外部网络无法访问到容器 容器访问外部实现 容器所有到外部网络的连接,源地址都会被 NAT 成本地系统的 IP 地址(即docker0地址).这是使用 iptables 的源地址伪装操作实现的 查看主机的 NAT 规则 [[email protected] sshd_dockerfile]# iptables -t nat -vnL Chain POSTROUTING (policy ACCEPT 0 p

iptables之nat转发

主要分为路由前转发PREROUTING,和路由后转发POSTROUTING. 何为路由前?也就是从外部传入数据,在到达主机网卡,还未进入网卡的瞬间. 何为路由后?也就是从外部传入数据,进入并经过主机某个网卡后,向外传出数据的瞬间. 一个简单的模型如下: 外部数据------>主机网卡(如eth0.eth1等)------>目的地 路由前                           路由后 首先把转发策略打开 [[email protected]~]# vi /etc/sysctl.co

Linux版VMware使用DHCP为虚拟机分配固定IP及实现NAT网络端口转发

首先介绍一下环境: 1. Host(宿主计算机)的操作系统是Scientific Linux,内核版本2.6.18,主机名SPVM02,IP地址135.100.101.102,部署的是VMware Workstation 8. 2. Guest(虚拟机)这边安装的操作系统是Windows 7. 3. Guest使用vmnet8这块网卡,通过NAT协议实现上网. 需要实现的功能是Host网络中的其他计算机使用Microsoft Remote Desktop远程登录Guest桌面.所以探索如何通过配

iptables nat表转发

1.上外网 环境 nat表具有转发的功能,让服务器具有路由器的功能. 两台机器A和B. A有两块网卡,网卡a:192.168.88.130   网卡b:192.168.100.2 B有一块网卡,网卡c:192.168.100.2 192.168.88.130是可以上外网的,网卡c只能连通网卡b,并不能上网. 1.1 目标: 让机器B通过机器A转发,达到可以上网的功能. 1.2  nat转发 上外网 1.给两台机器都添加1块网卡,自定义lan段 2.设置机器A新网卡的IP地址 # ifconfig

linyux iptables SNAt NAT 【原创】

rpm -ql iptables 查看安装的模块 iptables -t filter -L –n iptables -L –n这两个命令的效果是一样的 iptables -t nat -L –n查nat表 iptables -t mangle -L –n查mangle表 ============================================== [[email protected] ~]# iptables -help Usage: iptables -[AD] chain 

Linux主机上通过iptables实现NAT功能

实验:如下模型,node1为内网主机,IP地址为192.168.10.2:node3为外网主机,IP地址为10.72.37.177(假设此地址为公网地址),node3上提供web server和FTP Server的功能:内网主机node2主机有2块网卡,地址分别为eth0:192.168.10.1和eth2:10.72.37.91(假设此地址为公网地址): 现要求在node2上通过iptables配置实现SNAT功能,并做如下限制: 1.node1可以访问node3提供的web服务和ftp服务

iptables之NAT实现

nat的优点:      防护内网中的主机,保护主机的安全      解决c类地址短缺的情况 SNAT和DNAT的区分是根据请求的源地址转换还是目标地址转换而决定的 以下实验中,内网的主机,将网关指向192.168.100.1这个地址 SNAT:源地址转换 拓扑: 过程解析: 报文的源地址为192.168.100.2,目标地址为外面主机地址211.70.160.16 但是到达nat服务器的eth0后,将报文的源地址改变成eth0的地址211.70.160.1 这个地址是一个公网地址 外网的web