iptables项目案例1:局域网共享上网

准备:

1、内网172.16.1.51

ifdown eth0

route add default gw 172.16.1.51

测试:

ping www.baidu.com

ping 203.81.19.1

结果应该是不通。

2、网关服务器 172.16.1.8

eth0:10.0.0.8

eth1:172.16.1.8

gw: 10.0.0.254

修改内核转发:

内核文件/etc/sysctl.conf里开启转发功能。

在服务器网关B 172.16.1.8机器上开启路由转发功能。

编辑/etc/sysctl.conf修改内容为net.ipv4.ip_forward = 1,然后执行sysctl -p使修改生效。

[root@oldboy ~]# sysctl -p

net.ipv4.ip_forward = 1

测试:ping www.baidu.com 结果通。

调整iptables环境

iptables -P INPUT ACCEPT

iptables -P FORWARD ACCEPT

iptables -F

3、生产案例:

iptables -t nat -A POSTROUTING -o eth0 -s 172.16.1.0/24 -j SNAT --to-source 10.0.0.8

局域网共享的两种方法:

方法1:适合于有固定外网地址的:

iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth0 -j SNAT --to-source 10.0.0.8

(1)-s 172.16.1.0/24 办公室或IDC内网网段。

(2)-o eth0 为网关的外网卡接口。

(3)-j SNAT --to-source 10.0.0.8 是网关外网卡IP地址。

方法2:适合变化外网地址(拨号上网):

iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -j MASQUERADE    ##伪装。

老男孩教育iptables项目案例2:外网IP的端口映射到内网IP的端口

需求:将网关的IP和9000端口映射到内网服务器的22端口

端口映射 10.0.0.8:9000 -->172.16.1.51:22

实现命令:

iptables -t nat -A PREROUTING -d 10.0.0.8 -p tcp --dport 9000 -j DNAT --to-destination 172.16.1.51:22

(1)-d 10.0.0.8目标地址。

(2)-j DNAT 目的地址改写。

老男孩教育iptables项目案例3:IP一对一映射

辅助IP:

ip addr add 10.0.0.81/24 dev eth0 label eth0:0  #<==辅助IP

iptables  -t nat -I PREROUTING -d 10.0.0.81 -j DNAT --to-destination 172.16.1.51

iptables  -t nat -I POSTROUTING -s 172.16.1.51 -o eth0 -j SNAT --to-source 10.0.0.81

#适合内网的机器访问NAT外网的IP

iptables  -t nat -I POSTROUTING -s 172.16.1.0/255.255.240.0 -d 10.0.0.81 -j SNAT --to-source 172.16.1.8

检查:

ping 10.0.0.81 -t

tcpdump|grep -i icmp(两台机器上分别监测)

telnet 10.0.0.81 873(51上提前配好)

映射多个外网IP上网

方法1:

iptables -t nat -A POSTROUTING -s 10.0.1.0/255.255.240.0 -o eth0 -j SNAT --to-source 124.42.60.11-124.42.60.16

三层交换机或路由器,划分VLAN。

方法2:

iptables -t nat -A POSTROUTING -s 10.0.1.0/22 -o eth0 -j SNAT --to-source 124.42.60.11

iptables -t nat -A POSTROUTING -s 10.0.2.0/22 -o eth0 -j SNAT --to-source 124.42.60.12

扩大子网,增加广播风暴。

课外阅读:

(1)生产环境大于254台机器网段划分及路由解决方案详解01

http://v.youku.com/v_show/id_XNTAyMjAwMzI0.html

(2) linux route命令深入浅出与实战案例精讲

http://oldboy.blog.51cto.com/2561410/1119453

http://oldboy.blog.51cto.com/2561410/974194

必看3遍以上。

有关iptables的内核优化

调整内核参数文件/etc/sysctl.conf

以下是我的生产环境的某个服务器的配置:

------------解决time-wait过多-------------

net.ipv4.tcp_fin_timeout = 2

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_keepalive_time = 600

net.ipv4.tcp_max_tw_buckets = 36000

----------------------------------

net.ipv4.ip_local_port_range = 4000  65000

net.ipv4.tcp_max_syn_backlog = 16384

net.ipv4.route.gc_timeout = 100

net.ipv4.tcp_syn_retries = 1

net.ipv4.tcp_synack_retries = 1

----------------------------------

#dmesg里面显示 ip_conntrack: table full, dropping packet.的错误提示,什么原因?如何解决?

#iptables优化

net.nf_conntrack_max = 25000000

net.netfilter.nf_conntrack_max = 25000000

net.netfilter.nf_conntrack_tcp_timeout_established = 180

net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120

net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60

net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120

iptables做局域网网关(网络管理、NAT转发):

1、局域网有一个外网IP(包括动态)的前提下。

2、例:企业级路由器的配置

路由连接地址为10.1.34.81/24

默认路由:10.1.34.1

分配的公网ip地址:110.233.24.96/27 255.255.255.224

要求购买企业级路由器:

用zebra(quagga)替代企业级路由器:

Linux上配置zebra(quagga)路由:

client(config)#int eth0

client(config-if)#ip add 10.1.34.81 255.255.255.0

client(config-if)#int eth1

client(config-if)#ip add 110.233.24.96 255.255.255.224

client(config)#ip route 0.0.0.0 0.0.0.0 10.1.32.1

client(config)#ip route 110.233.24.96/27 eth1

重点:

1、老男孩教育iptables项目案例1:局域网共享上网:

2、老男孩教育iptables项目案例2:外网IP的端口映射到内网IP的端口

3、老男孩教育iptables项目案例3:IP一对一映射

4、有关iptables的内核优化

下节课:

1、mysql介绍

2、安装方式,安装

3、多实例安装。

4、常用管理命令。

你可能感兴趣的:(iptables项目案例1:局域网共享上网)