iptables经典实例

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能使内外网都能访问公司的服务器?

A:# web
# 用DNAT作端口映射
iptables -t nat -A PREROUTING -d a.b.c.d -p tcp --dport 80 -j DNAT --to 192.168.1.10
# 用SNAT作源地址转换(关键),以使回应包能正确返回
iptables -t nat -A POSTROUTING -d 192.168.1.10 -p tcp --dport 80 -j SNAT --to 192.168.1.1
# 一些人经常忘了打开FORWARD链的相关端口,特此增加
iptables -A FORWARD -o eth0 -d 192.168.1.10 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i eth0 -s 192.168.1.10 -p tcp --sport 80 -m --state ESTABLISHED -j ACCEPT

# ftp
modprobe ip_nat_ftp ###加载ip_nat_ftp模块(若没有编译进内核),以使ftp能被正确NAT

modprobe ip_conntrack_ftp ###加载ip_conntrack_ftp模块

被动模式:

实施iptables

-A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT

-A INPUT -i eth0 -p tcp -m tcp --dport 7500 -j ACCEPT

-A INPUT -p tcp -m tcp --dport 3306 -j ACCEPT

-A INPUT -p tcp -m tcp --dport 7500 -j ACCEPT

-A FORWARD -p tcp -m tcp --dport 3306 -j ACCEPT

-A FORWARD -d 192.168.1.11 -o eth1 -p tcp -m tcp --dport 3306 -j ACCEPT

-A FORWARD -s 192.168.1.11 -i eth1 -p tcp -m tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT

nat:

-A PREROUTING -d a.b.c.d -p tcp -m tcp --dport 7500 -j DNAT --to-destination 192.168.1.11:7500

-A PREROUTING -d a.b.c.d  -p tcp -m tcp --dport 3606 -j DNAT --to-destination 192.168.1.11:3606

-A PREROUTING -d a.b.c.d -p tcp -m tcp --dport 2014:2024 -j DNAT --to-destination 192.168.1.11

主动模式

# 用DNAT作端口映射
iptables -t nat -A PREROUTING -d a.b.c.d -p tcp --dport 21 -j DNAT --to 192.168.1.11
iptables -A FORWARD -o eth0 -d 192.168.1.11 -p tcp --dport 21 -j ACCEPT
iptables -A FORWARD -i eth0 -s 192.168.1.11 -p tcp --sport 21 -m --state ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth0 -s 192.168.1.11 -p tcp --sport 20 -m --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -o eth0 -d 192.168.1.11 -p tcp --dport 20 -m --state ESTABLISHED -j ACCEPT
iptables -A FORWARD -o eth0 -d 192.168.1.11 -p tcp --dport 1024: -m --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth0 -s 192.168.1.11 -p tcp --sport 1024: -m --state ESTABLISHED -j ACCEPT
# 用SNAT作源地址转换(关键),以使回应包能正确返回
iptables -t nat -A POSTROUTING -d 192.168.1.11 -p tcp --dport 21 -i eth0 -j SNAT --to 192.168.1.1

Q:网络环境如上一问题,还在网关上用squid进行透明代理,也作了SNAT了,为什么内网还是不能访问公司的web服务器?iptables如下:
iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 80 -i eth0 -j REDIRECT --to 3128
iptables -t nat -A PREROUTING -d a.b.c.d -p tcp --dport 80 -j DNAT --to 192.168.1.10
iptables -t nat -A POSTROUTING -d 192.168.1.10 -p tcp --dport 80 -j SNAT --to 192.168.1.1
A:问题主要在PREROUTING链中REDIRECT和DNAT的顺序,由于先进行了REDIRECT(重定向),则到第二句DNAT时,端口已变为3128,不匹配第二句的目的端口80,DNAT也就不会执行,不能到达正确的目的地。解决的办法有两个:
1、把REDIRECT语句放到DNAT语句的后面,如下:
iptables -t nat -A PREROUTING -d a.b.c.d -p tcp --dport 80 -j DNAT --to 192.168.1.10
iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 80 -i eth0 -j REDIRECT --to 3128
2、在REDIRECT语句中增加匹配目的地址"-d ! a.b.c.d",如下:
iptables -t nat -A PREROUTING -s 192.168.1.0/24 -d ! a.b.c.d -p tcp --dport 80 -i eth0 -j REDIRECT --to 3128

iptables经典实例,布布扣,bubuko.com

时间: 2024-12-21 03:55:54

iptables经典实例的相关文章

php之复制文件——php经典实例

php之复制文件--php经典实例 <?php function dirCopy($dir1,$dir2){ //判断是否目录存在 if(!file_exists($dir2) || !is_dir($dir2)){ //不是文件或目录 就创建 mkdir($dir2); } //打开 $dd=opendir($dir1); //遍历 while(false !== ($f=readdir($dd))){ //过滤 if($f=="." || $f==".."

JavaScript 实现的checkbox经典实例分享

JavaScript 实现的checkbox经典实例分享 本文主要给大家分享的是JavaScript实现checkbox多项选择的经典代码,非常的简单实用,有需要的小伙伴可以参考下 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 5

常用iptables配置实例

常用iptables配置实例 iptables命令可用于配置Linux的包过滤规则,常用于实现防火墙.NAT.咋一看iptables的配置很复杂,掌握规律后,其实用iptables完成指定任务并不难,下面我们通过具体实例,学习iptables的详细用法. 1.删除已有规则 在新设定iptables规则时,我们一般先确保旧规则被清除,用以下命令清除旧规则: iptables -F (or iptables --flush) 2.设置chain策略 对于filter table,默认的chain策略

《C#并发编程经典实例》笔记

1.前言 2.开宗明义 3.开发原则和要点 (1)并发编程概述 (2)异步编程基础 (3)并行开发的基础 (4)测试技巧 (5)集合 (6)函数式OOP (7)同步 1.前言 最近趁着项目的一段平稳期研读了不少书籍,其中<C#并发编程经典实例>给我的印象还是比较深刻的.当然,这可能是由于近段日子看的书大多嘴炮大于实际,如<Head First设计模式><Cracking the coding interview>等,所以陡然见到一本打着"实例"旗号的

《PHP经典实例(第2版)》

PHP经典实例(第2版)能够为您节省宝贵的Web开发时间.有了这些针对真实问题的解决方案放在手边,大多数编程难题都会迎刃而解.<PHP经典实例(第2版)>将PHP的特性与经典实例丛书的独特形式组合到一起,足以帮您成功地构建跨浏览器的Web应用程序.在这个修订版中,您可以更加方便地找到各种编程问题的解决方案,<PHP经典实例(第2版)>中内容涵盖了:表单处理:Session管理:数据库交互:使用Web服务. 从初学者常见的问题到高级Web编程技术,这本包含了丰富的.具有实际应用价值的

c#初学-多线程中lock用法的经典实例

本文转载自:http://www.cnblogs.com/promise-7/articles/2354077.html 一.Lock定义     lock 关键字可以用来确保代码块完成运行,而不会被其他线程中断.它可以把一段代码定义为互斥段(critical section),互斥段在一个时刻内只允许一个线程进入执行,而其他线程必须等待.这是通过在代码块运行期间为给定对象获取互斥锁来实现的. 在多线程中,每个线程都有自己的资源,但是代码区是共享的,即每个线程都可以执行相同的函数.这可能带来的问

RedHat iptables配置实例

iptables配置实例 iptables 基本命令使用举例一.链的基本操作  1.清除所有的规则.  1)清除预设表filter中所有规则链中的规则.  # iptables -F  2)清除预设表filter中使用者自定链中的规则.  #iptables -X  #iptables -Z  2.设置链的默认策略.一般有两种方法.  1)首先允许所有的包,然后再禁止有危险的包通过放火墙.  #iptables -P INPUT ACCEPT  #iptables -P OUTPUT ACCEP

经典实例

综合实例 水仙花数(Narcissistic number): 也被称为超完全数字不变数(pluperfect digital invariant, PPDI).自恋数.自幂数.阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153). using System; using System.Collections.Generic; using System.

php简单文件管理器——php经典实例

<html> <head> <title>文件管理</title> <meta charset='utf-8' /> </head> <body> <?php //定义要查看的目录 $dir="/"; //先判断$_GET['a']是否已经传值 防止NOTICE错误 if(isset($_GET['a'])){ //选择判断要执行的操作 switch($_GET['a']){ case 'crea