环境介绍
实现目标:
1、ADSL拨号
2、没有固定IP 地址
3、想实现SNAT和DNAT
条件:
由于之前不知道谁采购的cisco路由器当出口,用着很不爽,CPU经常负载到99%,查看原因是因为nat表过多,路由器扛不住导致的。没办法,换服务器吧。
想法:
1、rp-pppoe 实现拨号
2、MASQUERADE 实现SNAT
3、DNAT的实现稍微复杂一点,不想花钱,注册一个花生壳域名,然后解析到PPPOE的公网地址。
实时解析的,也就是说公网地址变了,这里也会变。做DNAT的时候是使用 -i参数 指定网卡而不是IP 地址
下面是iptables的简单配置:
[root@iptables iptables]# cat base_iptables.sh
#!/bin/bash
IPT=/sbin/iptables
# init iptables
modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_state
# clean all iptables
$IPT -F
$IPT -Z
$IPT -X
# set base iptables rules
$IPT -t filter -A INPUT -s 内网ip地址段 -j ACCEPT
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -t filter -P FORWARD ACCEPT
$IPT -t filter -P OUTPUT ACCEPT
$IPT -t filter -P INPUT DROP
# ADSL dialing
$IPT -t nat -A POSTROUTING -s 内网ip地址段 -j MASQUERADE
#################
### BT & p2p ####
#################
#$IPT -A FORWARD -m layer7 --l7proto bittorrent -j DROP
################################################# DNAT
$IPT -t nat -A PREROUTING -i ppp0 -p tcp --dport 18080 -j DNAT --to 内网服务ip地址:80
# 注意 这里的DNAT经过测试需要使用高端口进行映射才可以正常使用