
Iptables实现共享上网方法
iptables常用企业案例
1.linux主机防火墙(表:FILTER 链:INPUT)
2.局域网机器共享上网(表:NAT 链:POSTROUTING)iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 10.0.0.73.外部地址和端口,映射为内部地址和端口(表:NAT 链:PREROUTING)
iptables -t nat -A PREROUTING -d 10.0.0.7 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.8:9000
1.实现共享上网架构图规划
实际企业办公上网场景逻辑图:
对应实际IDC内网机器上网场景逻辑图:
2.实验环境的配置需求准备
服务器网关需具备如下条件
1)物理条件是具备双网卡,
建议eth0配置外网地址(这里是10.0.0.52,gw 10.0.0.254)
建议eth1配置内网地址(这里是172.16.1..52,内网卡不配GW)eth0:10.0.0.52 MASK:255.255.255.0 gw:10.0.0.254 eth1:172.16.1..52 MASK:255.255.255.0 gw:不配2)确保服务器网关要可以上网(上网才能代理别的机器上网)。可以通过ping baidu.com或ping 223.5.5.5测试
3)内核文件/etc/sysctl.conf里开启转发功能
在服务器网关 172.16.1..52机器上开启路由转发功能。编辑/etc/sysctl.conf修改内容为net.ipv4.ip_forward = 1,然后执行sysctl -p使修改生效。[root@x86cloud ~]# sysctl -p net.ipv4.ip_forward = 14)iptables的filter表的FORWARD链允许转发(防止策略iptables -P FORWARD DROP)
[root@x86cloud ~]# iptables -P INPUT ACCEPT [root@x86cloud ~]# iptables -P FORWARD ACCEPT5)不要filter防火墙功能,共享上网,因此,最好暂时停掉防火墙测试
3.防火墙内核模块确认加载
1)载入iptables内核模块,执行并放入rc.local中
[root@x86cloud ~]# lsmod | egrep ^ip iptable_filter 2793 1 ip_tables 17831 2 iptable_nat,iptable_filter ipt_REJECT 2351 2 ipv6 336282 290 bridge,lockd 载入内核模块 modprobe ip_tables modprobe iptable_filter modprobe iptable_nat modprobe ip_conntrack modprobe ip_conntrack_ftp modprobe ip_nat_ftp modprobe ipt_state <- centos6版本系统中可忽略此模块的加载 # 模块加载完成后,在进行查看 [root@x86cloud ~]# lsmod | egrep ^ip iptable_nat 5923 0 iptable_filter 2793 1 ip_tables 17831 2 iptable_nat,iptable_filter ipt_REJECT 2351 2 ipv6 336282 290 bridge,lockd 说明:实现共享上网必须要有iptables_nat模块
4.共享上网局域网机器配置
- 局域网的机器有一块网卡即可,确保局域网的机器,默认网关设置了网关服务器的eth1内网卡IP(172.16.1..52)。把局域网机器的gateway设置为B的内网卡172网段的网卡IP,即172.16.1.53
- 检查手段
分别ping网关服务器的内外网卡IP,都应该是通的就对了- 出公网检查除了PING网站域名外,也要PING下外网IP,排除DNS故障。
- ping 10.0.0.254 网关也是不通的
如上,请准备两台虚拟机A和B,其中A要有双网卡。A的内网卡的网段和B的网段一样。
网关服务器A:假设10.0.0.0/24为外部IP,172.16.1.0/24为内部IPeth0:10.0.0.52 MASK:255.255.255.0 gw:10.0.0.254 eth1:172.16.1..52 MASK:255.255.255.0 gw:不配 内部服务器B: eth1:172.16.1.53 MASK:255.255.255.0 gw:172.16.1..52 <- 网关B的内网卡IP1.准备工作:
01)将内部服务器主机的外网网卡关闭ifdown eth0
2.部署共享上网环境
2.1 内网服务器配置:
1) 添加默认网关路由:172.16.1..52 eth1
- a 开启NetworkManage -- nmtui
- b 修改网卡配置文件
- c 临时添加:
centos7: ip route add default via 172.16.1..52 centos6: route add default gw 172.16.1..52
- 检查确认网关是否能够访问
ping 172.16.1..52
2.2 iptables服务器配置:
- 修改内核信息,让不同网段数据包可以穿过
[root@iptables ~]# vim /etc/sysctl.conf net.ipv4.ip_forward = 1 [root@iptables ~]# sysctl -p net.ipv4.ip_forward = 12)实现nat映射配置(SNAT)
方法0:指定某个IP进行共享iptables -t nat -A POSTROUTING -s 172.16.1.53 -o eth0 -j SNAT --to-source 10.0.0.52
方法1:适合于有固定外网地址的环境iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth0 -j SNAT -to-source 10.0.0.52 -s 192.168.1.0/24 指定办公室或IDC内网网段 -o eth0 为网关的外网卡接口 -j SNAT --to-source 10.0.0.52 是网关外网卡IP地址方法2:适合变化外网地址(ADSL)
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth0 -j MASQUERADE <- 伪装补充:搞破坏
iptables -P FORWARD DROP -- 修改链上面默认策略
问题:到底默认策略怎么改INPUT FORWARD 默认策略都配置为白名单 都改为DROP OUTPUT 默认策略都配置为黑名单 都改为ACCEPT解决问题方式:
#对角线方式允许策略 iptables -A FORWARD -s 172.16.1.53 -i eth1 -j ACCEPT iptables -A FORWARD -d 172.16.1.53 -i eth0 -j ACCEPT iptables -A FORWARD -s 172.16.1.53 -o eth0 -j ACCEPT iptables -A FORWARD -d 172.16.1.53 -o eth1 -j ACCEPT3.实验部署的测试步骤记录
- 登录B主机172.16.1.53看是否能访问外部页面(配好DNS)。如ping www.baidu.com
正确结果:当前情况不通- 在笔记本上分别测试telnet 172.16.1..52 22 看是否能连通。
- 在笔记本上分别测试ping 172.16.1..52 看是否能连通。
- 测试登录10.0.0.52看是否能访问外部页面。如ping www.baidu.com
- 在笔记本上分别测试telnet B 主机 172.16.1.53 22
- 在笔记本上分别测试ping 172.16.1.53 看是否能连通
4.根据逻辑图实现如下要求
1)实现B可经过A,通过A主机访问互联网
提示:注意主机防火墙功能的影响。可以尝试在GW上先/etc/init.d/iptables stop后再加命令
2)实际处理的局域网共享上网的NAT命令
网关服务器A实现局域网共享上网的两条命令
方法1:适合于有固定外网地址的环境iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth0 -j SNAT -to-source 10.0.0.52 -s 192.168.1.0/24 指定办公室或IDC内网网段 -o eth0 为网关的外网卡接口 -j SNAT --to-source 10.0.0.52 是网关外网卡IP地址方法2:适合变化外网地址(ADSL)
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth0 -j MASQUERADE <- 伪装
- 为什么用POSTROUTING?
企业共享上网:
- 办公网共享上网(网关要有外网IP,否则用路由(zebra))
- IDC内网机器上网
- 企业上网到底需要不需要linux网关?
- 如果企业里有企业级路由器的情况下,可以不需要上网网关。使用网关只是解决路由器无法解决的需要(如 上网行为,IP及端口的映射 网关杀毒)
- IDC机房,大厦有固定外网IP的宽带,直接用网关解决上网及控制问题。
5.iptables实现端口映射访问
企业应用场景:
1)把访问外网IP及端口的请求映射到内网某个服务器及端口(企业内部)
2)硬件防火墙,把访问LVS nginx 外网VIP及80端口的请求映射到IDC负载均衡服务器内部IP及端口上(IDC机房的操作)
实现外网访问内网IP地址主机的方法:
- a 给内网主机设置一个公网IP
- b 利用vpn技术
- c 利用nat映射技术
实现 访问 10.0.0.81:9000 == 172.16.1.51:22
把外部IP地址及端口映射到内部服务器地址及端口(和共享上网环境一样)在10段主机可以通过访问A 10.0.0.7:80,即访问到172.16.1.19:9000,B提供的web服务,也可SSH(10.0.0.7:222--->172.16.1.7:52113),利用PREROUTING
B服务器配置web服务
1)在172.16.1.19服务器上开启http服务监听9000端口,然后在网关服务器A上可以访问curl http://172.16.1.19:9000 x86cloudedu2)具体转换命令
iptables -t nat -A PREROUTING -d 10.0.0.52 -p tcp --dport 9000 -j DNAT --to-destination 172.16.1.53:22 -d 10.0.0.7 指定提供访问的网关服务器外网接口地址 -dport eth0 为网关的外网卡接口 -j DNAT --to-destination 10.0.0.7 将访问目标地址做映射何清老师可执行命令 iptables nat映射策略 iptables -t nat -A PREROUTING -d 10.0.0.52 -p tcp --dport 9000 -i eth0 -j DNAT --to-destination 172.16.1.53:226.iptables实现地址一对一映射
实现10网段外网IP和内网192段IP一对一映射
老男孩教育企业内部局域网生产映射案例:实现外部IP 124.42.34.112 一对一映射到内部server 10.0.0.8
网关服务器地址:eth0_124.42.60.109 eth1_10.0.0.254
a)在路由器网关上绑定124.42.34.112,可以是别名的方式# 配置别名IP实践: ifconfig eth0:1 124.42.34.112 netmask 255.255.255.0 up ifconfig eth0:1 124.42.34.112/24 up b)在路由器网关上配置地址映射策略 -A PREROUTING -d 124.42.34.112 -j DNAT --to-destination 10.0.0.8 -A POSTROUTING -s 10.0.0.8 -o eth0 -j SNAT --to-source 124.42.34.112 -A POSTROUTING -s 10.0.0.0/255.255.240.0 -d 124.42.34.112 -j SNAT --to-source 10.0.0.254 # linux网关路由器实践操作 iptables -t nat -A PREROUTING -d 10.0.0.29 -j DNAT --to-destination 192.168.1.8 iptables -t nat -A POSTROUTING -s 192.168.1.8 -o eth0 -j SNAT --to-source 10.0.0.29 telnet 10.0.0.29 多端口测试 说明:实现192端机器和10网段机器互相访问iptables实现跨不同网段通讯
1)生产环境大于254台机器网段划分及路由解决方案详解01
http://v.youku.com/v_show/id_XNTAyMjAwMzI0.html
2)linux router命令深入浅出与实战案例精讲
http://oldboy.blog.51cto.com/2561410/1119453
http://oldboy.blog.51cto.com/2561410/9741947.iptables防火墙生产应用场景总结
1)局域网共享上网
适合做企业内部局域网上网网关,以及IDC机房内网的上网网关(nat POSTROUTING)
2)服务器主机防火墙
适合IDC机房具有外网IP的服务器(主要是fileter INPUT的控制)
3)把外部IP地址及端口映射到局域网内部
可以一对一IP映射,也可以针对某一个端口映射
也可能是IDC把网站的外网VIP及网站端口映射到负载均衡器上(硬件防火墙nat PERROUTING)
4)办公路由器+网关功能(zebra路由+iptables过滤及NAT+squid正向透明代理80+ntop/iftop/iptraf流量查看+tc流量控制限速)
5)邮件的网关问题1:生产环境应用
a)用于办公网PC共享上网,所有内部电脑地址通过网关公网IP或PPPOE共享上网
局域网共享上网的两种方法:
方法1:适合于有固定外网地址进行共享上网:iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth0 -j SNAT -to-source 10.0.0.7 -s 192.168.1.0/24 指定办公室或IDC内网网段 -o eth0 为网关的外网卡接口 -j SNAT --to-source 10.0.0.7 是网关外网卡IP地址方法2:适合变化外网地址(ADSL),当然有固定地址也可以用
iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth0 -j MASQUERADE <- 伪装
b)IDC机房内网服务器通过网关出网
内部服务器时间同步及出网抓取内容等问题2:生产环境应用
用于没有外网地址的内网服务器,映射为公网IP后对外提供服务,也包括端口的映射
问题3:IP地址一对一映射
用于没有外网地址的内网服务器,映射为公网IP后对外提供服务。例如:ftp服务需要一对一映射
共享上网封IP方法:iptables -I FORWARD -s 10.0.0.26 -j DROP iptables ${deal} FORDWARD -m mac --mac-source ${strIPmac} -j DROPiptables防护墙应用:
1)主机防火墙
2)网关的应用(IP映射,端口映射)
3)过滤信息,监控限制流量及员工上网行为(squid正向代理缓存加过滤+ntop图形流量监控+tc流量限制+iptraf/iftop流量查看)
如果IPTABLES的服务器升级内核可以实现类似squid的过滤的功能
4)网关装杀毒软件监听9999端口(网关杀毒)-A PREROUTING -i eth0 -d 211.167.253.109 -p tcp -m tcp --dport 25 -j DNAT --to-destination 192.168.10.6:9025
5)结合zebra配置企业级路由器8. iptables映射多个外网IP上网
iptables -t nat -A POSTROUTING -s 10.0.1.0/255.255.240 -o eth0 -j SNAT --to-source 124.42.60.11-124.42.60.16 iptables -t nat -A POSTROUTING -s 172.16.1.0/255.255.240 -o eth0 -j SNAT --to-source 124.42.60.103-124.42.60.106 iptables -t nat -A POSTROUTING -s 192.168.1.0/22 -o eth0 -j SNAT --to-source 10.0.0.241-10.0.0.249解决问题:
- 2000人访问可能被封
- 65535 端口资源有限

