<p>iptables学习手记<br /> iptables外面的文章太多了,我这里就把我自己的过程记录一下。<br /> iptables的应用场合太多。我这里的使用是。<br /> 国外vps,安装iptables,<br /> 1:需要允许ssh远程访问,<br /> 2:开放常用的端口,web,mail等端口。打开1194 vpn端口。<br /> 3:希望openvpn,启用NAT的功能。<br /> 安装iptables<br /> yum install iptables<br /> 安装完后<br /> # ll /etc/sysconfig/<br /> total 60<br /> -rw-r--r-- 1 root root 291 Aug 1 06:55 authconfig<br /> drwxr-xr-x 2 root root 4096 Aug 1 06:54 cbq<br /> drwxr-xr-x 2 root root 4096 Mar 11 14:12 console<br /> -rw-r--r-- 1 root root 1068 Nov 13 2008 init<br /> -rw------- 1 root root 1740 May 24 2008 iptables-config<br /> drwxr-xr-x 2 root root 4096 Mar 11 14:12 modules<br /> -rw-r--r-- 1 root root 634 Nov 13 2008 netconsole<br /> -rw-r--r-- 1 root root 112 Aug 1 06:55 network<br /> drwxr-xr-x 2 root root 4096 Aug 1 06:55 network-scripts<br /> drwxr-xr-x 4 root root 4096 Mar 11 14:12 networking<br /> -rw-r--r-- 1 root root 544 Nov 13 2008 readonly-root<br /> drwxr-xr-x 2 root root 4096 Aug 1 06:54 rhn<br /> -rw-r--r-- 1 root root 513 Jan 22 2008 rsyslog<br /> -rw-r--r-- 1 root root 610 May 24 2008 syslog<br /> -rw-r--r-- 1 root root 47 Apr 17 19:45 udev-stw<br /> 你会发现/etc/sysconfig/ 目录下,并没有iptables这个文件<br /> 查看当前规则<br /> #iptables -L -n<br /> Chain INPUT (policy ACCEPT)<br /> target prot opt source destination<br /> Chain FORWARD (policy ACCEPT)<br /> target prot opt source destination<br /> Chain OUTPUT (policy ACCEPT)<br /> target prot opt source destination<br /> 应该就是没有任何的限制。<br /> 保存当前的规则<br /> # /etc/rc.d/init.d/iptables save<br /> Saving firewall rules to /etc/sysconfig/iptables: [ OK ]<br /> 这个时候,/etc/sysconfig/iptables这个文件就有了。<br /> # cat /etc/sysconfig/iptables<br /> # Generated by iptables-save v1.3.5 on Sat Aug 1 07:08:03 2009<br /> *filter<br /> :INPUT ACCEPT [141:21585]<br /> :FORWARD ACCEPT [0:0]<br /> :OUTPUT ACCEPT [14:5380]<br /> COMMIT<br /> # Completed on Sat Aug 1 07:08:03 2009<br /> 添加SSH端口<br /> # iptables -A INPUT -p tcp --dport 22 -j ACCEPT<br /> # iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT<br /> 查看一下设置的规则<br /> # iptables -L -n<br /> Chain INPUT (policy ACCEPT)<br /> target prot opt source destination<br /> ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22<br /> Chain FORWARD (policy ACCEPT)<br /> target prot opt source destination<br /> Chain OUTPUT (policy ACCEPT)<br /> target prot opt source destination<br /> ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22<br /> 不过这个规则,没有保存,重新启动机器,就会消失。<br /> 这个时候,你查看一下/etc/sysconfig/iptables<br /> cat /etc/sysconfig/iptables<br /> # Generated by iptables-save v1.3.5 on Sat Aug 1 07:08:03 2009<br /> *filter<br /> :INPUT ACCEPT [141:21585]<br /> :FORWARD ACCEPT [0:0]<br /> :OUTPUT ACCEPT [14:5380]<br /> COMMIT<br /> # Completed on Sat Aug 1 07:08:03 2009<br /> 保存规则<br /> # service iptables save<br /> Saving firewall rules to /etc/sysconfig/iptables: [ OK ]<br /> 这个时候<br /> cat /etc/sysconfig/iptables<br /> # Generated by iptables-save v1.3.5 on Sat Aug 1 07:14:27 2009<br /> *filter<br /> :INPUT ACCEPT [554:85824]<br /> :FORWARD ACCEPT [0:0]<br /> :OUTPUT ACCEPT [107:21008]<br /> -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT<br /> -A OUTPUT -p tcp -m tcp --dport 22 -j ACCEPT<br /> COMMIT<br /> # Completed on Sat Aug 1 07:14:27 2009<br /> 设定预设规则<br /> 这是关键的一步,防火墙的规则,一般做法,拒绝所有,然后开放相应的服务。<br /> 不过我们拒绝所有前,必须把ssh端口打开,否则就无法ssh访问,除非你只机器前面<br /> iptables -P INPUT DROP<br /> iptables -P OUTPUT ACCEPT<br /> iptables -P FORWARD DROP<br /> 这个时候,服务器上,就只打开了22端口,别的都禁止访问。<br /> /etc/rc.d/init.d/iptables save<br /> Saving firewall rules to /etc/sysconfig/iptables: [ OK ]<br /> 这个时候,就把规则保存起来。<br /> NAT转发<br /> iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to 66.160.197.199<br /> 这条规则是给openvpn用的。记录一下。<br /> 参考文章<br /> <a href="http://www.qudong.com/OS/Linux/2009/0728/42174.html">http://www.qudong.com/OS/Linux/2009/0728/42174.html</a><br /> <a href="http://www.redflag-linux.com/bbs/read.php?15,53207">http://www.redflag-linux.com/bbs/read.php?15,53207</a><br /> <a href="http://blog.chinaunix.net/u/22249/showart_154578.html">http://blog.chinaunix.net/u/22249/showart_154578.html</a><br /> Q:一局域网192.168.1.0/24,有web和ftp服务器192.168.1.10、192.168.1.11,网关linux,内网eth0,IP为192.168.1.1,外网eth1,IP为a.b.c.d,怎样作NAT能使内外网都能访问公司的服务器?<br /> A:# web<br /> # 用DNAT作端口映射<br /> iptables -t nat -A PREROUTING -d a.b.c.d -p tcp --dport 80 -j DNAT --to 192.168.1.10<br /> # 用SNAT作源地址转换(关键),以使回应包能正确返回<br /> iptables -t nat -A POSTROUTING -d 192.168.1.10 -p tcp --dport 80 -j SNAT --to 192.168.1.1<br /> # 一些人经常忘了打开FORWARD链的相关端口,特此增加<br /> iptables -A FORWARD -o eth0 -d 192.168.1.10 -p tcp --dport 80 -j ACCEPT<br /> iptables -A FORWARD -i eth0 -s 192.168.1.10 -p tcp --sport 80 -m --state ESTABLISHED -j ACCEPT</p> <p># ftp<br /> modprobe ip_nat_ftp ###加载ip_nat_ftp模块(若没有编译进内核),以使ftp能被正确NAT<br /> modprobe ip_conntrack_ftp ###加载ip_conntrack_ftp模块<br /> # 用DNAT作端口映射<br /> iptables -t nat -A PREROUTING -d a.b.c.d -p tcp --dport 21 -j DNAT --to 192.168.1.11<br /> iptables -A FORWARD -o eth0 -d 192.168.1.11 -p tcp --dport 21 -j ACCEPT<br /> iptables -A FORWARD -i eth0 -s 192.168.1.11 -p tcp --sport 21 -m --state ESTABLISHED -j ACCEPT<br /> iptables -A FORWARD -i eth0 -s 192.168.1.11 -p tcp --sport 20 -m --state ESTABLISHED,RELATED -j ACCEPT<br /> iptables -A FORWARD -o eth0 -d 192.168.1.11 -p tcp --dport 20 -m --state ESTABLISHED -j ACCEPT<br /> iptables -A FORWARD -o eth0 -d 192.168.1.11 -p tcp --dport 1024: -m --state ESTABLISHED,RELATED -j ACCEPT<br /> iptables -A FORWARD -i eth0 -s 192.168.1.11 -p tcp --sport 1024: -m --state ESTABLISHED -j ACCEPT<br /> # 用SNAT作源地址转换(关键),以使回应包能正确返回<br /> iptables -t nat -A POSTROUTING -d 192.168.1.11 -p tcp --dport 21 -i eth0 -j SNAT --to 192.168.1.1</p>
T:0.024738s,M:251.98 KB
返回顶部 留言