准备:
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、常用管理命令。