Linux系统防火墙配置及NAT转发

本文发布时间: 2019-Mar-21
今天新来了一台服务器,要做跳板机,把以前的代码粘贴复制,结果问题来了,怎么也转发不了,百思不明,后来只好一点点查找。首先查找网络,发现网络没有问题,内网 外网,双网卡 网关均没有问题,于是只好百度搜索问题,抓住根本 这里是我找到的对自己很有用的文章就贴了出来,供日后再出现这样的问题,以用来解决。CentOS下配置iptables防火墙linux NAT(iptables)配置CentOS下配置iptables1,vim /etc/sysconfig/network 这里可以更改主机名称。NETWORKING=yesNETWORKING_IPV6=noHOSTNAME=BGI-TJ.localdomainGATEWAY=192.168.11.1(超算网关)2.vim /etc/sysconfig/network-scripts/ifcfg-eth0 第一块网卡。Broadcom Corporation NetXtreme II BCM5709 Gigabit EthernetDEVICE=eth0BOOTPROTO=staticHWADDR=A4:BA:DB:43:XX:XXIPADDR=192.168.11.2(公网地址)NETMASK=255.255.255.0ONBOOT=yesGATEWAY=192.168.11.1 (可不设前面已经设置)3.vim /etc/sysconfig/network-scripts/ifcfg-eth1 网卡2,就是内网# Broadcom Corporation NetXtreme II BCM5709 Gigabit EthernetDEVICE=eth1BOOTPROTO=staticHWADDR=A4:BA:DB:43:XX:XXIPADDR=192.168.136.1(内网地址)NETMASK=255.255.255.0ONBOOT=yes4.vim /etc/sysctl.conf 这里是重点 配置路由转发,路由开启等都要用到。# Controls IP packet forwardingnet.ipv4.ip_forward = 0修改为# Controls IP packet forwardingnet.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 eth0iface eth0 inet static address 192.168.18.2 netmask 255.255.255.0 network 192.168.18.0 gateway 192.168.18.1auto eth1iface 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 -F9.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 save11.service iptables restart12.如果发现DNS无法解析,请输入下列命令 防火墙的问题 不用想。先都通过在根据配置更改。iptables -P FORWARD ACCEPTiptables -P OUTPUT ACCEPTiptables -P INPUT ACCEPT/etc/rc.d/init.d/iptables saveservice iptables restartiptables -A INPUT -i lo -j ACCEPTiptables -A FORWARD -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -p tcp --dport 22 -j ACCEPTiptables -A FORWARD -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -p udp --dport 53 -j ACCEPTiptables -A FORWARD -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -p udp --dport 110 -j ACCEPTiptables -A FORWARD -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -p udp --dport 143 -j ACCEPTiptables -A FORWARD -p tcp --dport 993 -j ACCEPTiptables -A FORWARD -p udp --dport 993 -j ACCEPTiptables -A FORWARD -p tcp --dport 995 -j ACCEPTiptables -A FORWARD -p udp --dport 995 -j ACCEPTservice iptables saveservice iptables restartiptables -A INPUT -i lo -j ACCEPTiptables -A INPUT -i lo -j ACCEPTiptables -A FORWARD -p tcp -j ACCEPTiptables -A FORWARD -p udp -j ACCEPTiptables -A FORWARD -p tcp --dport 1:65534 -j ACCEPTservice iptables saveservice iptables restartsysctl -pservice network restartiptables -Fiptables -t nat -A POSTROUTING -s 192.168.*.*/24 -o eth0 -j SNAT --to ip地址。iptables -P FORWARD ACCEPTiptables -P OUTPUT ACCEPTiptables -P INPUT ACCEPTservice iptables saveservice iptables restartiptables -A INPUT -i lo -j ACCEPTiptables -A FORWARD -p tcp --dport 1:65534 -j ACCEPTiptables -A FORWARD -p udp --dport 1:65534 -j ACCEPTservice iptables saveservice iptables restart默认为:iptables -P INPUT DROPiptables -P FORWARD DROPiptables -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.1dev eth0 (那个网卡必须能与你想跳的网络通) 比如 192.168.11.0/24 与 192.168.6.0/24 互通。说了这么多大家 新手很糊涂是吧呵呵。下面我们来实践一下吧 。1. 准备工作1.1 CentOS Final安装完毕,将不需要的服务停止1.2 修改主机名:1.2.1 /etc/sysconfig/network1.2.2 /etc/hosts1.3 网卡设置1.3.1 单个IP /etc/sysconfig/network-scripts/ifcfg-eth01.3.2 IP段#cd /etc/sysconfig/network-scripts/#cp -a ifcfg-eth0 ifcfg-eth0-range0#vi ifcfg-eth0-range0DEVICE=eth0-range0IPADDR_START=192.168.136.2 #设置地址段的起始IPIPADDR_END=192.168.136.100 #设置地址段的结束IPGATEWAY=192.168.136.1NETMASK=255.255.255.0CLONENUM_START=”20” #设置虚拟接口(CLONE–克隆)的起始“编号”在本例中,将从20开始,21,22,23……NO_ALIASROUTING=yes #该选项可以设置在主配置文件中(ifcfg-eth0)#虚拟接口可以继承主配置文件中的设置,其作用是避免虚拟接口在从新定义路由信息,导致路由访问缓慢的问题。1.2.3 命令方式ip addr add 192.168.136.0/24 dev $OUTGOING1.4 路由设置1.4.1#vi /etc/sysconfig/static-routeseth0(设备名) net(网络地址) 192.168.0.0 (子网)netmask 255.255.255.0 (网关地址)gw 192.168.0.1a. /usr/sysconfig/network-scripts/route-eth010.0.2.0/24 via 192.168.0.14410.0.3.0/24 via 192.168.0.14410.0.4.0/24 via 192.168.0.1441.4.2 给系统主路由表配置网关,这个网关是电信的网关ip route add 0/0 via 22.22.22.11.4.3 添加路由规则,让所有通向网通的数据查询标示为11的路由表,增加一个网通提供的默认网关。ip route add 0/0 via 11.11.11.1 table 11ip rule add to 60.0.0.0/13 table 11ip rule add to 60.8.0.0/15 table 11ip 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 forwardingnet.ipv4.ip_forward = 1net.ipv4.netfilter.ip_conntrack_max = 1048576net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 3001.6 resolv.confnameserver 10.0.0.12. iptables配置2.1 iptables初始化iptables -t nat -Fiptables -Fiptables -Xiptables -P INPUT ACCEPTiptables -P FORWARD ACCEPTiptables -P OUTPUT ACCEPTiptables -N NEWCONN2.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 masquerade2.1.2 SNAT 转换网络。iptables -t nat -A POSTROUTING -s 内部IP地址/子网 -o $OUTGOING -j SNAT --to $IPPOOL2.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.32.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 cache2.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 } donefi2.3 保存iptables-save -c >/etc/sysconfig/iptables1.5 转发设置 /etc/sysctl.conf# Controls IP packet forwardingnet.ipv4.ip_forward = 1net.ipv4.netfilter.ip_conntrack_max = 1048576net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 3002. iptables配置2.1 iptables初始化iptables -t nat -Fiptables -Fiptables -Xiptables -P INPUT ACCEPTiptables -P FORWARD ACCEPTiptables -P OUTPUT ACCEPTiptables -N NEWCONN2.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 masquerade2.1.2 SNATiptables -t nat -A POSTROUTING -s 内部IP地址/子网 -o $OUTGOING -j SNAT--to $IPPOOL2.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 --to218.62.3.32.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 -d222.222.5.0/15 -j MARK --set-mark 1# iptables -t mangle -A PREROUTING -i eth0 -s 192.168.0.0/24 -d222.240.0.0/13 -j MARK --set-mark 1# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d222.222.5.0/15 -j SNAT --to $DIANXIN# iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d222.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 ACCEPT2.关闭/开启/重启防火墙/etc/init.d/iptables stop#start 开启#restart 重启3.永久性关闭防火墙chkconfig --level 35 iptables off/etc/init.d/iptables stopiptables -P INPUT DROP4.打开主动模式21端口iptables -A INPUT -p tcp --dport 21 -j ACCEPT5.打开被动模式49152~65534之间的端口iptables -A INPUT -p tcp --dport 49152:65534 -j ACCEPTiptables -A INPUT -i lo -j ACCEPTiptables -A INPUT -m state --state ESTABLISHED -j ACCEPT注意:一定要给自己留好后路,留VNC一个管理端口和SSh的管理端口需要注意的是,你必须根据自己服务器的情况来修改这个文件。全部修改完之后重启iptables:service iptables restart你可以验证一下是否规则都已经生效:iptables -L通过文章的介绍,我们清楚的知道了CentOS 下配置iptables防火墙的过程,希望大家都能掌握它!好好学习,黄金万两不如一技之长。


(以上内容不代表本站观点。)
---------------------------------
本网站以及域名有仲裁协议。
本網站以及域名有仲裁協議。

2019-May-25 12:55pm
栏目列表