今天新来了一台服务器,要做跳板机,把以前的代码粘贴复制,结果问题来了,怎么也转发不了, 百思不明,后来只好一点点查找。首先查找网络, 发现网络没有问题,内网 外网,双网卡 网关均没有问题, 于是只好百度搜索问题,抓住根本 这里是我找到的对自己很有用的文章就贴了出来,供日后再出现这样的问题,以用来解决。 CentOS下配置iptables防火墙 linux NAT(iptables)配置 CentOS下配置iptables 1,vim /etc/sysconfig/network 这里可以更改主机名称。 NETWORKING=yes NETWORKING_IPV6=no HOSTNAME=BGI-TJ.localdomain GATEWAY=192.168.11.1(超算网关) 2.vim /etc/sysconfig/network-scripts/ifcfg-eth0 第一块网卡。 Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet DEVICE=eth0 BOOTPROTO=static HWADDR=A4:BA:DB:43:XX:XX IPADDR=192.168.11.2(公网地址) NETMASK=255.255.255.0 ONBOOT=yes GATEWAY=192.168.11.1 (可不设前面已经设置) 3.vim /etc/sysconfig/network-scripts/ifcfg-eth1 网卡2,就是内网 # Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet DEVICE=eth1 BOOTPROTO=static HWADDR=A4:BA:DB:43:XX:XX IPADDR=192.168.136.1(内网地址) NETMASK=255.255.255.0 ONBOOT=yes 4.vim /etc/sysctl.conf 这里是重点 配置路由转发,路由开启等都要用到。 # Controls IP packet forwarding net.ipv4.ip_forward = 0 修改为 # Controls IP packet forwarding net.ipv4.ip_forward = 1 允许内置路由 5.sysctl -p 更新 6.service network restart 从启网卡 7, 如果找不到 另一块网卡 可以改 加载。 http://www.cngr.cn/article/63/390/2006/2006071812486.shtml /etc/network/interfaces 两块网卡 的内容 可以编辑 auto eth0 iface eth0 inet static address 192.168.18.2 netmask 255.255.255.0 network 192.168.18.0 gateway 192.168.18.1 auto eth1 iface eth1 inet static address 172.17.94.93 netmask 255.255.255.0 broadcast 172.17.94.255 gateway 172.17.94.254 默认是第一块网卡,可以设置两块同时开启 8.iptables -F 9.iptables -t nat -A POSTROUTING -s 192.168.136.0/24 -o eth0 -j SNAT --to 192.168.11.2 转发 到11网段。 10./etc/rc.d/init.d/iptables save 或者 service iptables save 11.service iptables restart 12.如果发现DNS无法解析,请输入下列命令 防火墙的问题 不用想。先都通过在根据配置更改。 iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -P INPUT ACCEPT /etc/rc.d/init.d/iptables save service iptables restart iptables -A INPUT -i lo -j ACCEPT iptables -A FORWARD -p tcp --dport 80 -j ACCEPT iptables -A FORWARD -p tcp --dport 22 -j ACCEPT iptables -A FORWARD -p tcp --dport 53 -j ACCEPT iptables -A FORWARD -p udp --dport 53 -j ACCEPT iptables -A FORWARD -p tcp --dport 25 -j ACCEPT iptables -A FORWARD -p tcp --dport 110 -j ACCEPT iptables -A FORWARD -p udp --dport 110 -j ACCEPT iptables -A FORWARD -p tcp --dport 143 -j ACCEPT iptables -A FORWARD -p udp --dport 143 -j ACCEPT iptables -A FORWARD -p tcp --dport 993 -j ACCEPT iptables -A FORWARD -p udp --dport 993 -j ACCEPT iptables -A FORWARD -p tcp --dport 995 -j ACCEPT iptables -A FORWARD -p udp --dport 995 -j ACCEPT service iptables save service iptables restart iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -A FORWARD -p tcp -j ACCEPT iptables -A FORWARD -p udp -j ACCEPT iptables -A FORWARD -p tcp --dport 1:65534 -j ACCEPT service iptables save service iptables restart sysctl -p service network restart iptables -F iptables -t nat -A POSTROUTING -s 192.168.*.*/24 -o eth0 -j SNAT --to ip地址。 iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -P INPUT ACCEPT service iptables save service iptables restart iptables -A INPUT -i lo -j ACCEPT iptables -A FORWARD -p tcp --dport 1:65534 -j ACCEPT iptables -A FORWARD -p udp --dport 1:65534 -j ACCEPT service iptables save service iptables restart 默认为: iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT 会影响许多功能的使用。 就是ip 跳板,从一个ip 调到你想给大家使用的机器(屏蔽你不想直接用的口)端口镜像 iptables -t nat -A PREROUTING -d x.x.x.x(公网IP) -p tcp --dport 2200(端口号) -j DNAT --to 192.168.3.202:22(内网ip:内网IP端口)NAT默认路由 ip route add 192.168.6.0/24 via 192.168.11.2 或者 加一条网关 默认给你 想跳的ip 网段ip route add -net 192.168.6.0/24 gw 192.168.11.1 dev eth0 (那个网卡必须能与你想跳的网络通) 比如 192.168.11.0/24 与 192.168.6.0/24 互通。 说了这么多大家 新手很糊涂是吧呵呵。下面我们来实践一下吧 。 1. 准备工作 1.1 CentOS Final安装完毕,将不需要的服务停止 1.2 修改主机名: 1.2.1 /etc/sysconfig/network 1.2.2 /etc/hosts 1.3 网卡设置 1.3.1 单个IP /etc/sysconfig/network-scripts/ifcfg-eth0 1.3.2 IP段 #cd /etc/sysconfig/network-scripts/ #cp -a ifcfg-eth0 ifcfg-eth0-range0 #vi ifcfg-eth0-range0 DEVICE=eth0-range0 IPADDR_START=192.168.136.2 #设置地址段的起始IP IPADDR_END=192.168.136.100 #设置地址段的结束IP GATEWAY=192.168.136.1 NETMASK=255.255.255.0 CLONENUM_START=”20” #设置虚拟接口(CLONE–克隆)的起始“编号”在本例中,将从20开始,21,22,23…… NO_ALIASROUTING=yes #该选项可以设置在主配置文件中(ifcfg-eth0) #虚拟接口可以继承主配置文件中的设置,其作用是避免虚拟接口在从新定义路由信息,导致路由访问缓慢的问题。 1.2.3 命令方式 ip addr add 192.168.136.0/24 dev $OUTGOING 1.4 路由设置 1.4.1 #vi /etc/sysconfig/static-routes eth0(设备名) net(网络地址) 192.168.0.0 (子网)netmask 255.255.255.0 (网关地址)gw 192.168.0.1 a. /usr/sysconfig/network-scripts/route-eth0 10.0.2.0/24 via 192.168.0.144 10.0.3.0/24 via 192.168.0.144 10.0.4.0/24 via 192.168.0.144 1.4.2 给系统主路由表配置网关,这个网关是电信的网关 ip route add 0/0 via 22.22.22.1 1.4.3 添加路由规则,让所有通向网通的数据查询标示为11的路由表,增加一个网通提供的默认网关。 ip route add 0/0 via 11.11.11.1 table 11 ip rule add to 60.0.0.0/13 table 11 ip rule add to 60.8.0.0/15 table 11 ip rule add to 60.10.0.0/16 table 11 要注意的是,在配置网卡的时候,先不要配置网关,不要使用老的ifconfig命令来配置网关,而要使用iproute2来配置网关,否则会造成冲突,或者 使用 ip route replace 命令来替换 ip route add 命令。 1.5 转发设置 /etc/sysctl.conf # Controls IP packet forwarding net.ipv4.ip_forward = 1 net.ipv4.netfilter.ip_conntrack_max = 1048576 net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 300 1.6 resolv.conf nameserver 10.0.0.1 2. iptables配置 2.1 iptables初始化 iptables -t nat -F iptables -F iptables -X iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -N NEWCONN 2.2 NAT转换 2.2.1 首先将从两个WAN口出去的数据包进行IP伪装masquerade,主要是不让对面知道你来自于哪里。 /sbin/iptables -t nat -A postrouting -o eth1 -j masquerade /sbin/iptables -t nat -A postrouting -o eth2 -j masquerade 2.1.2 SNAT 转换网络。 iptables -t nat -A POSTROUTING -s 内部IP地址/子网 -o $OUTGOING -j SNAT --to $IPPOOL 2.1.3 一个网段的电信网通自动切换 iptables -t nat -I POSTROUTING -s 192.168.0.0/24 -d $电信ip -j SNAT --to 222.168.1.3 *** *** *** iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 218.62.3.3 2.1.4 访问222.222.5.0/15和222.240.0.0/13走电信,其他默认网通 # echo "200 DIANXIN" >> /etc/iproute2/rt_table(这个是添加到文件,执行一次即可) # ip route replace default via 222.168.1.2 table DIANXIN # ip rule add fwmark 1 table DIANXIN(这个注意顺序,用ip rule可以查看) # iptables -t nat -F # iptables -t mangle -F # iptables -t mangle -A PREROUTING -i eth0 -s 192.168.0.0/24 -d 222.222.5.0/15 -j MARK --set-mark 1 # iptables -t mangle -A PREROUTING -i eth0 -s 192.168.0.0/24 -d 222.240.0.0/13 -j MARK --set-mark 1 # iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 222.222.5.0/15 -j SNAT --to $DIANXIN # iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 222.240.0.0/13 -j SNAT --to $DIANXIN # iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to $接网通线路网卡的地址 # ip route flush cache 2.1.6 添加相似路由 if [ "$ALLOW_ACCESS_CLIENT" != "" ] ; then for LAN in ${ALLOW_ACCESS_CLIENT}; do { iptables -A FORWARD -p tcp -m multiport -s ${LAN} -o $ETH_WAN --dport $PORT -j ACCEPT iptables -A FORWARD -p udp -m multiport -s ${LAN} -o $ETH_WAN --dport $PORT -j ACCEPT iptables -A FORWARD -p tcp -m multiport -i $ETH_WAN --sport $PORT -j ACCEPT iptables -A FORWARD -p udp -m multiport -i $ETH_WAN --sport $PORT -j ACCEPT } done fi 2.3 保存 iptables-save -c >/etc/sysconfig/iptables 1.5 转发设置 /etc/sysctl.conf # Controls IP packet forwarding net.ipv4.ip_forward = 1 net.ipv4.netfilter.ip_conntrack_max = 1048576 net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 300 2. iptables配置 2.1 iptables初始化 iptables -t nat -F iptables -F iptables -X iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -N NEWCONN 2.2 NAT转换 2.2.1 首先将从两个WAN口出去的数据包进行IP伪装masquerade /sbin/iptables -t nat -A postrouting -o eth1 -j masquerade /sbin/iptables -t nat -A postrouting -o eth2 -j masquerade 2.1.2 SNAT iptables -t nat -A POSTROUTING -s 内部IP地址/子网 -o $OUTGOING -j SNAT --to $IPPOOL 2.1.3 一个网段的电信网通自动切换 iptables -t nat -I POSTROUTING -s 192.168.0.0/24 -d $电信ip -j SNAT --to 222.168.1.3 *** *** *** iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to 218.62.3.3 2.1.4 访问222.222.5.0/15和222.240.0.0/13走电信,其他默认网通 # echo "200 DIANXIN" >> /etc/iproute2/rt_table(这个是添加到文件,执 行一次即可) # ip route replace default via 222.168.1.2 table DIANXIN # ip rule add fwmark 1 table DIANXIN(这个注意顺序,用ip rule可以查 看) # iptables -t nat -F # iptables -t mangle -F # iptables -t mangle -A PREROUTING -i eth0 -s 192.168.0.0/24 -d 222.222.5.0/15 -j MARK --set-mark 1 # iptables -t mangle -A PREROUTING -i eth0 -s 192.168.0.0/24 -d 222.240.0.0/13 -j MARK --set-mark 1 # iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 222.222.5.0/15 -j SNAT --to $DIANXIN # iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 222.240.0.0/13 -j SNAT --to $DIANXIN # iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to $接 网通线路网卡的地址 2.3 保存 iptables-save -c >/etc/sysconfig/iptables #——+——+——+——+——+——+——+——+——+——+——+——+——+—— 在CentOS下配置iptables防火墙,是非常必要的。来我们学习如何配置! 我的博客中有提到防火墙绝提配置哦。 在Linux中设置防火墙,以CentOS为例,打开iptables的配置文件: vi /etc/sysconfig/iptables 通过/etc/init.d/iptables status命令查询是否有打开80端口,如果没有可通过两种方式处理: 1.修改vi /etc/sysconfig/iptables命令添加使防火墙开放80端口 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT 2.关闭/开启/重启防火墙 /etc/init.d/iptables stop #start 开启 #restart 重启 3.永久性关闭防火墙 chkconfig --level 35 iptables off /etc/init.d/iptables stop iptables -P INPUT DROP 4.打开主动模式21端口 iptables -A INPUT -p tcp --dport 21 -j ACCEPT 5.打开被动模式49152~65534之间的端口 iptables -A INPUT -p tcp --dport 49152:65534 -j ACCEPT iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT 注意: 一定要给自己留好后路,留VNC一个管理端口和SSh的管理端口 需要注意的是,你必须根据自己服务器的情况来修改这个文件。 全部修改完之后重启iptables: service iptables restart 你可以验证一下是否规则都已经生效: iptables -L 通过文章的介绍,我们清楚的知道了CentOS 下配置iptables防火墙的过程,希望大家都能掌握它!好好学习,黄金万两不如一技之长。 (责任编辑:IT) |