当前位置:首页 » 密码管理 » iptables内网访问外网

iptables内网访问外网

发布时间: 2022-06-09 07:45:08

1. linux iptables 做内网访问规则,怎么做

行了,应该在/etc/network/下子文件夹中的某个配置文件,但是事实上,因为linux有防火墙,所以事实上需要在防火墙的forward链上做转发,因为数据包是先碰到防火墙过滤后才进入内核空间,如果在防火墙转发,那个设置内核的端口转发就没什么意义了。

补充回答:
声明:本人主要使用的是debian系统,对于红帽不是非常熟悉,所以在配置文件的路径及命名上和你的实际情况会有出入,请酌情更改!!

首先,你需要更改/etc/sysctl.conf这个文件,找到如下行:
net.ipv4.ip_forward = 0
把0改成1打开内核转发,然后用source命令重读该配置文件。

然后你需要用以下命令打开forward链上所有的转发,这里只给你简单的实现forward,并没实现保护LAN的防火墙功能,请参阅参考资料获得iptables的详细配置方法!
iptables -A FORWARD -i eth1 -j ACCEPT
iptables -A FORWARD -o eth1 -j ACCEPT
service iptables save
service iptables restart

附注:
man iptables
命令格式:

# iptables [-t 表名] 命令 [链] [规则号] [条件] [规则]

说明:⑴ -t 表名 指定规则所在的表。表名可以是 filter ,nat ,mangle (小写)

⑵ 命令 (iptables的子命令)

-A 在指定链中添加规则

-D 在指定链中删除指定规则

-R 修改指定链中指定规则

-I 在指定规则前插入规则

-L 显示链中的规则

-N 建立用户链

-F 清空链中的规则

-X 删除用户自定义链

-P 设置链的默认规则

-C 用具体的规则链来检查在规则中的数据包

-h 显示帮助

⑶ 条件

–i 接口名 指定接收数据包接口

-o 接口名 指定发送数据包接口

-p [!]协议名 指定匹配的协议 (tcp , udp , icmp , all )

-s [!]ip地址 [/mask] 指定匹配的源地址

--sport [!]端口号 [:端口号] 指定匹配的源端口或范围

-d [!]ip地址 [/mask] 指定匹配的目标地址

--dport [!]端口号 [:端口号] 指定匹配的目标端口或范围

--icmp –type [!]类型号/类型名 指定icmp包的类型

注:8 表示request 0 表示relay (应答)

-m port --multiport 指定多个匹配端口

limit --limit 指定传输速度

mac --mac-source 指定匹配MAC地址

sate --state NEW,ESTABLISHED,RELATED,INVALID 指定包的状态

注:以上选项用于定义扩展规则

-j 规则 指定规则的处理方法

⑷ 规则

ACCEPT :接受匹配条件的数据包(应用于I NPUT ,OUTPUT ,FORWARD )

DROP :丢弃匹配的数据包(应用于INPUT ,OUTPUT ,FORWARD )

REJECT :丢弃匹配的数据包且返回确认的数据包

MASQUERADE :伪装数据包的源地址(应用于POSTROUTING且外网地址

为动态地址,作用于NAT )

REDIRECT :包重定向 (作用于NAT表中PREROUTING ,OUTPUT,使用要加上--to-port 端口号 )

TOS : 设置数据包的TOS字段(应用于MANGLE,要加上--set-tos 值)

SNAT : 伪装数据包的源地址(应用于NAT表中POSTROUTING链,要加上--to-source ip地址 [ip地址] )

DNAT : 伪装数据包的目标地址(应用于NAT表中PREROUTING链,要加上--to-destination ip地址 )

LOG :使用syslog记录的日志

RETURN :直接跳出当前规则链

3. iptables子命令的使用实例

⑴ 添加规则

#iptables –A INPUT –p icmp –-icmp-type 8 –s 192.168.0.3 –j DROP

(拒绝192.168.0.3主机发送icmp请求)

# iptables –A INPUT –p icmp –-icmp-type 8 –s 192.168.0.0/24 –j DROP

(拒绝192.168.0.0网段ping 防火墙主机,但允许防火墙主机ping 其他主机)

# iptables –A OUTPUT –p icmp –-icmp-type 0 –d 192.168.0.0/24 –j DROP

(拒绝防火墙主机向192.168.0.0网段发送icmp应答,等同于上一条指令)

# iptables –A FORWARD –d -j DROP

(拒绝转发数据包到,前提是必须被解析)

# iptables –t nat –A POSTROUTING –s 192.168.0.0/24 –j SNAT –-to-source 211.162.11.1

(NAT,伪装内网192.168.0.0网段的的主机地址为外网211.162.11.1,这个公有地址,使内网通过NAT上网,前提是启用了路由转发)

# iptables –t nat –A PREROUTING –p tcp --dport 80 –d 211.162.11.1 –j DNAT -–to-destination 192.168.0.5
(把internet上通过80端口访问211.168.11.1的请求伪装到内网192.168.0.5这台WEB服务器,即在iptables中发布WEB服务器,前提是启用路由转发)

# iptables –A FORWARD –s 192.168.0.4 –m mac --mac-source 00:E0:4C:45:3A:38 –j ACCEPT
(保留IP地址,绑定 IP地址与MAC地址)

⑵删除规则
# iptables –D INPUT 3
# iptables –t nat –D OUTPUT –d 192.168.0.3 –j ACCEPT
⑶插入规则
# iptables –I FORWARD 3 –s 192.168.0.3 –j DROP
# iptables –t nat –I POSTROUTING 2 –s 192.168.0.0/24 –j DROP
⑷修改规则
# iptables –R INPUT 1 –s 192.168.0.2 –j DROP
⑸显示规则
# iptables –L (默认表中的所有规则)
# iptables –t nat –L POSTROUTING
⑹清空规则
# iptables –F
# iptables –t nat –F PREROUTING
⑺设置默认规则
# iptables –P INPUT ACCEPT
# iptables –t nat –P OUTPUT DROP
(注:默认规则可以设置为拒绝所有数据包通过,然后通过规则使允许的数据包通过,这种防火墙称为堡垒防火墙,它安全级别高,但不容易实现;也可以把默认规则设置为允许所有数据包通过,即鱼网防火墙,它的安全级别低,实用性较差。)
⑻建立自定义链
# iptables –N wangkai
⑼删除自定义链
# iptables –X wangkai
⑽应用自定义链
# iptables –A wangkai –s 192.168.0.8 –j DROP
# iptables –A INPUT –j wangkai
(注:要删除自定义链,必须要确保该链不被引用,而且该链必须为空,如要删除上例定义的自定义链方法为:
# iptables –D INPUT –j wangkai
# iptables -F wangkai
# iptables -X wangkai
另外,团IDC网上有许多产品团购,便宜有口碑

2. iptables 如何把外网端口全部映射到内网一台主机上

网上肯定能找到答案的,只是你没找到或不细心。照我说的做吧,我尽量解释清楚。
/etc/init.d/iptables start 启动iptables

初始化iptables,删除之前的规则,
iptables -F
iptables -X
iptables -Z
iptables -F -t nat
iptables -X -t nat
iptables -Z -t nat
允许SSH进入,要不然等下就连不上去了
iptables -A INPUT -p TCP --dport 22 -j ACCEPT
设置默认出入站的规则
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
载入相应的模块
modprobe ip_tables
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ip_conntrack
modprobe ip_conntrack_ftp
配置默认的转发规则
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
允许内网连接
iptables -A INPUT -i 内网网卡名(比如eth1) -j ACCEPT
启用转发功能
echo "1" > /proc/sys/net/ipv4/ip_forward
配置源NAT,允许内网通过主机nat上网,即所谓的网络共享
iptables -t nat -A POSTROUTING -s 内网网卡名 -o 外网网卡名 -j MASQUERADE
把FTP服务器映射到外网
iptables -t nat -A PREROUTING -p tcp -d 58.222.1.3 --dport 21 -j DNAT --to 192.168.0.211:21

结束,别忘了保存
service iptables save
192.168.0.211的网关应该设成这成主机192.168.0.1。这样就行了。iptables -t nat -A PREROUTING -d XXX.XXX.XXX.XXX -p tcp --dport 8767 -j dnat --to 192.168.1.3:?? OUTPUT 二个 chain 作用。

iptables -A INPUT -i eth1 -j ACCEPT
iptables -A OUTPUT -o eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -j ACCEPT
iptables -A FORWARD -o eth1 -j ACCEPT

IP 伪装
使内部网路的封包经过伪装之后,使用对外的 eth0 网卡当作代表号,对外连线。作法如下∶

###-----------------------------------------------------###
# 启动内部对外转址
###-----------------------------------------------------###

iptables -t nat -A POSTROUTING -o eth0 -s 172.16.0.0/16 -j SNAT --to-source $FW_IP

上述指令意指∶把 172.16.0.0/16 这个网段,伪装成 $FW_IP 出去。

虚拟主机
利用转址、转 port 的方式,使外部网路的封包,可以到达内部网路中的伺服主机,俗称虚拟主机。这种方式可保护伺服主机大部份的 port 不被外界存取,只开放公开服务的通道(如 Web Server port 80),因此安全性甚高。

作法如下∶

###-----------------------------------------------------###
# 启动外部对内部转址
###-----------------------------------------------------###
# 凡对 $FW_IP:80 连线者, 则转址至 172.16.255.2:80
iptables -t nat -A PREROUTING -i eth0 -p tcp -d $FW_IP --dport 80 -j DNAT --to-destination 172.16.255.2:80

开放内部主机可以 telnet 至外部的主机
开放内部网路,可以 telnet 至外部主机。

作法如下∶(预设 policy 为 DROP)

###-----------------------------------------------------###
# open 外部主机 telnet port 23
###-----------------------------------------------------###

iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 23 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 23 -d $FW_IP --dport 1024:65535 -j ACCEPT

开放邮包转递通道
开放任意的邮件主机送信包给你的 Mail Server,而你的 Mail Server 也可以送信包过去。

作法如下∶(预设 policy 为 DROP)

###-----------------------------------------------------###
# open SMTP port 25
###-----------------------------------------------------###

# 以下是∶别人可以送信给你
iptables -A INPUT -i eth0 -p tcp -s any/0 --sport 1024:65535 -d $FW_IP --dport 25 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp ! --syn -s $FW_IP --sport 25 -d any/0 --dport 1024:65535 -j ACCEPT

# 以下是∶你可以送信给别人
iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 25 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 25 -d $FW_IP --dport 1024:65525 -j ACCEPT

开放对外离线下载信件的通道
开放内部网路可以对外部网路的 POP3 server 取信件。

作法如下∶(预设 policy 为 DROP)

###-----------------------------------------------------###
# open 对外部主机的 POP3 port 110
###-----------------------------------------------------###

iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 110 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 110 -d $FW_IP --dport 1024:65535 -j ACCEPT

开放观看网页的通道
开放内部网路可以观看外部网路的网站。

作法如下∶(预设 policy 为 DROP)

###-----------------------------------------------------###
# open 对外部主机的 HTTP port 80
###-----------------------------------------------------###

iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 80 -d $FW_IP --dport 1024:65535 -j ACCEPT

开放查询外部网路的 DNS 主机
开放内部网路,可以查询外部网路任何一台 DNS 主机。

作法如下∶(预设 policy 为 DROP)

###-----------------------------------------------------###
# open DNS port 53
###-----------------------------------------------------###

# 第一次会用 udp 封包来查询
iptables -A OUTPUT -o eth0 -p udp -s $FW_IP --sport 1024:65535 -d any/0 --dport 53 -j ACCEPT
iptables -A INPUT -i eth0 -p udp -s any/0 --sport 53 -d $FW_IP --dport 1024:65535 -j ACCEPT

# 若有错误,会改用 tcp 封包来查询
iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 53 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 53 -d $FW_IP --dport 1024:65535 -j ACCEPT

# 开放这台主机上的 DNS 和外部的 DNS 主机互动查询∶使用 udp
iptables -A OUTPUT -o eth0 -p udp -s $FW_IP --sport 53 -d any/0 --dport 53 -j ACCEPT
iptables -A INPUT -i eth0 -p udp -s any/0 --sport 53 -d $FW_IP --dport 53 -j ACCEPT
# 开放这台主机上的 DNS 和外部的 DNS 主机互动查询∶使用 tcp
iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 53 -d any/0 --dport 53 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp ! -y -s any/0 --sport 53 -d $FW_IP --dport 53 -j ACCEPT

开放内部主机可以 ssh 至外部的主机
开放内部网路,可以 ssh 至外部主机。

作法如下∶(预设 policy 为 DROP)

###-----------------------------------------------------###
# open 外部主机 ssh port 22
###-----------------------------------------------------###

iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 22 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 22 -d $FW_IP --dport 1024:65535 -j ACCEPT

# 以下是 ssh protocol 比较不同的地方
iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1020:1023 -d any/0 --dport 22 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 22 -d $FW_IP --dport 1020:1023 -j ACCEPT

开放内部主机可以 ftp 至外部的主机
开放内部网路,可以 ftp 至外部主机。

作法如下∶(预设 policy 为 DROP)

###-----------------------------------------------------###
# open 对外部主机 ftp port 21
###-----------------------------------------------------###

# 以下是打开命令 channel 21
iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 21 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 21 -d $FW_IP --dport 1024:65535 -j ACCEPT

# 以下是打开资料 channel 20
iptables -A INPUT -i eth0 -p tcp -s any/0 --sport 20 -d $FW_IP --dport 1024:65535 -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp ! --syn -s $FW_IP --sport 1024:65535 -d any/0 --dport 20 -j ACCEPT

# 以下是打开 passive mode FTP 资料通道
iptables -A OUTPUT -o eth0 -p tcp -s $FW_IP --sport 1024:65535 -d any/0 --dport 1024:65535 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp ! --syn -s any/0 --sport 1024:65535 -d $FW_IP --dport 1024:65535 -j ACCEPT

开放 ping
可以对外 ping 任何一台主机。

作法如下∶(预设 policy 为 DROP)

iptables -A OUTPUT -o eth0 -p icmp -s $FW_IP --icmp-type 8 -d any/0 -j ACCEPT
iptables -A INPUT -i eth0 -p icm -s any/0 --icmp-type 0 -d $FW_IP -j ACCEPT 、
http://www.linuxsir.org/bbs/forumdisplay.php?s=&daysprune=-1&f=32

3. linux 能访问内网,但不能访问外网。(我是菜鸟)求助,怎么配置!

用iptables就可以了
iptables -F
iptables -t nat -F
iptables -A INPUT -s 192.168.0.0/16 -d 192.168.0.0/16 -j ACCEPT
iptables -A INPUT -d 192.168.0.0/16 -j DROP
iptables-save
除了192.168.0.0/16 网段之外的都不能访问。
按照这个写就可以了

4. iptables 静态ip映射 内网主机ping不同转换后的地址,但能ping通其他外网主机ip

第一看你的公网IP映射的那台电脑上是否启用了防火墙,邮箱防火墙是禁止ping的

5. 如何把iptables外网端口全部映射到内网一台主

利用iptables把外网端口全部映射到内网一台主机上,有具体的操作过程:etc/init.d/iptables start 启动iptables初始化iptables,
利用iptables把外网端口全部映射到内网一台主机上,有具体的操作过程:
etc/init.d/iptables start 启动iptables
初始化iptables,删除之前的规则,
iptables -F
iptables -X
iptables -Z
iptables -F -t nat
iptables -X -t nat
iptables -Z -t nat
允许SSH进入,要不然等下就连不上去了
iptables -A INPUT -p TCP --dport 22 -j ACCEPT
设置默认出入站的规则
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
载入相应的模块
modprobe ip_tables
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ip_conntrack
modprobe ip_conntrack_ftp
配置默认的转发规则
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
允许内网连接
iptables -A INPUT -i 内网网卡名(比如eth1) -j ACCEPT
启用转发功能
echo "1" > /proc/sys/net/ipv4/ip_forward
配置源NAT,允许内网通过主机nat上网,即所谓的网络共享
iptables -t nat -A POSTROUTING -s 内网网卡名 -o 外网网卡名 -j MASQUERADE
把FTP服务器映射到外网
iptables -t nat -A PREROUTING -p tcp -d 58.222.1.3 --dport 21 -j DNAT --to 192.168.0.211:21
结束,别忘了保存
service iptables save
192.168.0.211的网关应该设成这成主机192.168.0.1。这样就行了。iptables -t nat -A PREROUTING -d XXX.XXX.XXX.XXX -p tcp --dport 8767 -j dnat --to 192.168.1.3:?? OUTPUT 二个 chain 作用。
iptables -A INPUT -i eth1 -j ACCEPT
iptables -A OUTPUT -o eth1 -j ACCEPT
iptables -A FORWARD -i eth1 -j ACCEPT
iptables -A FORWARD -o eth1 -j ACCEPT

6. 路由器中iptables的部分代码如下,只有10.36.25.58这个IP可以访问内网和外网。如何添加IP段实现访问内外网

iptables -t filter -A lan2wan -s 10.36.25.58 -j ACCEPT
你上面不是有吗,添加一个网段iptables -t filter -A lan2wan -d 74.128.0.0/16 -j ACCEPT

7. Linux下的iptable实现nat网关。(DNS,DHCP,外网,内部局域网)

本文主要介绍如何使用iptbales实现linux2.4下的强大的NAT功能。关于iptables的详细语法请参考“用iptales实现包过虑型防火墙”一文。需要申明的是,本文绝对不是 NAT-HOWTO的简单重复或是中文版,在整个的叙述过程中,作者都在试图用自己的语言来表达自己的理解,自己的思想。
一、概述
1. 什么是NAT
在传统的标准的TCP/IP通信过程中,所有的路由器仅仅是充当一个中间人的角色,也就是通常所说的存储转发,路由器并不会对转发的数据包进行修改,更为确切的说,除了将源MAC地址换成自己的MAC地址以外,路由器不会对转发的数据包做任何修改。NAT(Network Address Translation网络地址翻译)恰恰是出于某种特殊需要而对数据包的源ip地址、目的ip地址、源端口、目的端口进行改写的操作。
2. 为什么要进行NAT
我们来看看再什么情况下我们需要做NAT。
假设有一家ISP提供园区Internet接入服务,为了方便管理,该ISP分配给园区用户的IP地址都是伪IP,但是部分用户要求建立自己的WWW服务器对外发布信息,这时候我们就可以通过NAT来提供这种服务了。我们可以在防火墙的外部网卡上绑定多个合法IP地址,然后通过NAT技术使发给其中某一个IP地址的包转发至内部某一用户的WWW服务器上,然后再将该内部WWW服务器响应包伪装成该合法IP发出的包。
再比如使用拨号上网的网吧,因为只有一个合法的IP地址,必须采用某种手段让其他机器也可以上网,通常是采用代理服务器的方式,但是代理服务器,尤其是应用层代理服务器,只能支持有限的协议,如果过了一段时间后又有新的服务出来,则只能等待代理服务器支持该新应用的升级版本。如果采用NAT来解决这个问题,
因为是在应用层以下进行处理,NAT不但可以获得很高的访问速度,而且可以无缝的支持任何新的服务或应用。
还有一个方面的应用就是重定向,也就是当接收到一个包后,不是转发这个包,而是将其重定向到系统上的某一个应用程序。最常见的应用就是和squid配合使用成为透明代理,在对http流量进行缓存的同时,可以提供对Internet的无缝访问。
3. NAT的类型
在linux2.4的NAT-HOWTO中,作者从原理的角度将NAT分成了两种类型,即源NAT(SNAT)和目的NAT(DNAT),顾名思义,所谓SNAT就是改变转发数据包的源地址,所谓DNAT就是改变转发数据包的目的地址。
二、原理
在“用iptales实现包过虑型防火墙”一文中我们说过,netfilter是Linux 核心中一个通用架构,它提供了一系列的"表"(tables),每个表由若干"链"(chains)组成,而每条链中可以有一条或数条规则(rule)组成。并且系统缺省的表是"filter"。但是在使用NAT的时候,我们所使用的表不再是"filter",而是"nat"表,所以我们必须使用"-t nat"选项来显式地指明这一点。因为系统缺省的表是"filter",所以在使用filter功能时,我们没有必要显式的指明"-t filter"。
同filter表一样,nat表也有三条缺省的"链"(chains),这三条链也是规则的容器,它们分别是:
PREROUTING:可以在这里定义进行目的NAT的规则,因为路由器进行路由时只检查数据包的目的ip地址,所以为了使数据包得以正确路由,我们必须在路由之前就进行目的NAT;
POSTROUTING:可以在这里定义进行源NAT的规则,系统在决定了数据包的路由以后在执行该链中的规则。
OUTPUT:定义对本地产生的数据包的目的NAT规则。

三、操作语法
如前所述,在使用iptables的NAT功能时,我们必须在每一条规则中使用"-t nat"显示的指明使用nat表。然后使用以下的选项:
1. 对规则的操作
加入(append) 一个新规则到一个链 (-A)的最后。
在链内某个位置插入(insert) 一个新规则(-I),通常是插在最前面。
在链内某个位置替换(replace) 一条规则 (-R)。
在链内某个位置删除(delete) 一条规则 (-D)。
删除(delete) 链内第一条规则 (-D)。
2. 指定源地址和目的地址
通过——source/——src/-s来指定源地址(这里的/表示或者的意思,下同),通过——destination/——dst/-s来指定目的地址。可以使用以下四中方法来指定ip地址:
a. 使用完整的域名,如“www.linuxaid.com.cn”;
b. 使用ip地址,如“192.168.1.1”;
c. 用x.x.x.x/x.x.x.x指定一个网络地址,如“192.168.1.0/255.255.255.0”;
d. 用x.x.x.x/x指定一个网络地址,如“192.168.1.0/24”这里的24表明了子网掩码的有效位数,这是 UNIX环境中通常使用的表示方法。
缺省的子网掩码数是32,也就是说指定192.168.1.1等效于192.168.1.1/32。
3. 指定网络接口
可以使用——in-interface/-i或——out-interface/-o来指定网络接口。从NAT的原理可以看出,对于PREROUTING链,我们只能用-i指定进来的网络接口;而对于POSTROUTING和OUTPUT我们只能用-o指定出去的网络接口。
4. 指定协议及端口
可以通过——protocol/-p选项来指定协议,如果是udp和tcp协议,还可——source-port/——sport和 ——destination-port/——dport来指明端口。
四、准备工作
1. 编译内核,编译时选中以下选项,具体可参看“用iptales实现包过虑型防火墙”一文:
Full NAT
MASQUERADE target support
REDIRECT target support
2. 要使用NAT表时,必须首先载入相关模块:
modprobe ip_tables
modprobe ip_nat_ftp
iptable_nat 模块会在运行时自动载入。
五、使用实例
1. 源NAT(SNAT)
比如,更改所有来自192.168.1.0/24的数据包的源ip地址为1.2.3.4:
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT ——to 1.2.3.4
这里需要注意的是,系统在路由及过虑等处理直到数据包要被送出时才进行SNAT。
有一种SNAT的特殊情况是ip欺骗,也就是所谓的Masquerading,通常建议在使用拨号上网的时候使用,或者说在合法ip地址不固定的情况下使用。比如
# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
可以看出,这时候我们没有必要显式的指定源ip地址等信息。
2. 目的SNAT(DNAT)
比如,更改所有来自192.168.1.0/24的数据包的目的ip地址为1.2.3.4:
iptables -t nat -A PREROUTING -s 192.168.1.0/24 -i eth1 -j DNAT ——to 1.2.3.4
这里需要注意的是,系统是先进行DNAT,然后才进行路由及过虑等操作。
有一种DNAT的特殊情况是重定向,也就是所谓的Redirection,这时候就相当于将符合条件的数据包的目的ip地址改为数据包进入系统时的网络接口的ip地址。通常是在与squid配置形成透明代理时使用,假设squid的监听端口是3128,我 们可以通过以下语句来将来自192.168.1.0/24,目的端口为80的数据包重定向到squid监听
端口:
iptables -t nat -A PREROUTING -i eth1 -p tcp -s 192.168.1.0/24 ——dport 80
-j REDIRECT ——to-port 3128

六、综合例子
1. 使用拨号带动局域网上网
小型企业、网吧等多使用拨号网络上网,通常可能使用代理,但是考虑到成本、对协议的支持等因素,建议使用ip欺骗方式带动区域网上网。
成功升级内核后安装iptables,然后执行以下脚本:
#载入相关模块
modprobe ip_tables
modprobe ip_nat_ftp
#进行ip伪装
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
2. ip映射
假设有一家ISP提供园区Internet接入服务,为了方便管理,该ISP分配给园区用户的IP地址都是伪IP,但是部分用户要求建立自己的WWW服务器对外发布信息。我们可以再防火墙的外部网卡上绑定多个合法IP地址,然后通过ip映射使发给其中某一 个IP地址的包转发至内部某一用户的WWW服务器上,然后再将该内部WWW服务器响应包伪装成该合法IP发出的包。
我们假设以下情景:
该ISP分配给A单位www服务器的ip为:
伪ip:192.168.1.100
真实ip:202.110.123.100
该ISP分配给B单位www服务器的ip为:
伪ip:192.168.1.200
真实ip:202.110.123.200
linux防火墙的ip地址分别为:
内网接口eth1:192.168.1.1
外网接口eth0:202.110.123.1
然后我们将分配给A、B单位的真实ip绑定到防火墙的外网接口,以root权限执行以下命令:
ifconfig eth0 add 202.110.123.100 netmask 255.255.255.0
ifconfig eth0 add 202.110.123.200 netmask 255.255.255.0
成功升级内核后安装iptables,然后执行以下脚本:
#载入相关模块
modprobe ip_tables
modprobe ip_nat_ftp
首先,对防火墙接收到的目的ip为202.110.123.100和202.110.123.200的所有数据包进行目的NAT(DNAT):
iptables -A PREROUTING -i eth0 -d 202.110.123.100 -j DNAT ——to 192.168.1.100
iptables -A PREROUTING -i eth0 -d 202.110.123.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 202.110.123.100
iptables -A POSTROUTING -o eth0 -s 192.168.1.200 -j SNAT ——to 202.110.123.200
这样,所有目的ip为202.110.123.100和202.110.123.200的数据包都将分别被转发给192.168.1.100和192.168.1.200;而所有来自192.168.1.100和192.168.1.200的数据包都将分 别被伪装成由202.110.123.100和202.110.123.200,从而也就实现了ip映射。

8. 请问关于一条iptables规则配置,实现web地址跳转

假设: 内网是172.16.0.0/16这个网络, WEB服务器是172.16.0.1,策略如下:
iptables -t nat PREROUTING -s 172.16.0.0/16 -p tcp --dport 80 -j DNAT --to 172.16.0.1
这样的话,访问任何网站都会转到172.16.0.1这台服务器上。
注意,要在iptables主机上开启路由转发。
如果不行,可以再加上以下策略:
iptables -t nat -A POSTROUTING -j MASQUERADE
不过一般不需要的。

9. 请教,如果对内网某IP限制只能访问某公网IP,iptables应怎样设置

您可以采用VPN(Virtual Private Network)也就是虚拟专用网络技术。所谓虚拟是指用户不需要拥有实际的长途数据线路,而是使用Internet公众数据网络的长途数据线路。所谓专用网络指用户可以为自己制定一个最符合自己需求的网络,关键要看自己主要做什么用途,类似推广,玩玩游戏之类的都可以使用双鱼IP转换器,可选线路比较多,效果还是不错!不妨去看看。

热点内容
qq系统头像文件夹 发布:2024-10-18 14:14:55 浏览:234
安卓手机请输入密码在哪里 发布:2024-10-18 14:13:28 浏览:645
设计编译程序注意的问题 发布:2024-10-18 14:08:43 浏览:254
传智播客android视频 发布:2024-10-18 14:04:42 浏览:904
手机版安卓吃鸡哪个好 发布:2024-10-18 14:01:40 浏览:491
编程自学入门教程 发布:2024-10-18 13:50:58 浏览:141
伊迪阿明访问中国 发布:2024-10-18 13:49:54 浏览:10
人三琳外传脚本 发布:2024-10-18 13:38:16 浏览:839
电脑发件箱服务器错误怎么弄 发布:2024-10-18 13:30:36 浏览:914
evm部署solc编译文件 发布:2024-10-18 13:29:47 浏览:835