iptables学习笔记:端口转发之“内网访问外网”
来源:互联网 发布:强行脱女朋友裤子知乎 编辑:程序博客网 时间:2024/06/07 00:00
先给出网络拓扑图如下:
服务器左边为“内网”,右边为“外网”。中间为服务器(工作站或网关,如无特别说明,下文提到的“服务器”都指这个服务器),服务器的eth1网卡连接内网的设备或PC,eth0连接外网(可以连接互联网),为了做演示,“外网”还添加其它服务器。
一、原理
由前文知道,通过服务器上的每个数据包,都会依次经过三个不同的机制,首先是PREROUTING(DNAT),再到路由表,最后到POSTROUTING(SNAT),如下图所示:
本文示例的数据包流方向是从eth1到eth0。
二、实验
首先要正确设置服务器IP信息。设置默认网关(仅做示例):
route add default gw 172.18.18.18并且要设置好服务器DNS。添加(或修改)/etc/resolv.conf文件,内容示例如下:
domain latelee.com.cnsearch latelee.com.cnnameserver 172.18.18.10
其次,在服务器上使能转发,命令如下:
echo "1" > /proc/sys/net/ipv4/ip_forward最后,在服务器上实现iptables地址转换:
iptables -t nat -A POSTROUTING -o eth0 -s 100.100.100.0/24 -j MASQUERADE意思是从eth0网卡传出的数据包并且源IP为100.100.100.0/24网段的,源地址都更改为服务器连接外网的IP(此处即为eth0的IP地址)。
此时服务器上iptables的NAT表如下:
root@localhost:test# iptables -t nat -LChain PREROUTING (policy ACCEPT)target prot opt source destination Chain INPUT (policy ACCEPT)target prot opt source destination Chain OUTPUT (policy ACCEPT)target prot opt source destination Chain POSTROUTING (policy ACCEPT)target prot opt source destination MASQUERADE all -- 100.100.100.0/24 anywhere
1、内网访问外网的其它服务器
内网设备的默认网关必须为服务器的eth1地址。以下的设备的路由表示例:
root@latelee:~# routeKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Iface255.255.255.255 * 255.255.255.255 UH 0 0 0 eth0100.100.100.0 * 255.255.255.0 U 0 0 0 eth0default 100.100.100.44 0.0.0.0 UG 0 0 0 eth0下面是ping测试:
root@latelee:~# ping 172.18.44.144PING 172.18.44.144 (172.18.44.144): 56 data bytes64 bytes from 172.18.44.144: seq=0 ttl=63 time=1.011 ms64 bytes from 172.18.44.144: seq=1 ttl=63 time=1.467 ms64 bytes from 172.18.44.144: seq=2 ttl=63 time=0.764 ms下面是telnet测试:
root@latelee:~# telnet 172.18.44.144Entering character modeEscape character is '^]'.Linux 3.13.0-32-generic (localhost) (pts/28)
2、内网PC访问互联网
内网PC中正确设置DNS(同上),然后可以ping域名了,测试如下:
root@latelee:~# ping www.latelee.orgPING www.latelee.org (183.60.158.197): 56 data bytes64 bytes from 183.60.158.197: seq=0 ttl=48 time=20.246 ms64 bytes from 183.60.158.197: seq=1 ttl=48 time=19.551 ms64 bytes from 183.60.158.197: seq=2 ttl=48 time=19.207 ms
再跟踪一下路由:
root@latelee:~# traceroute www.latelee.orgtraceroute to www.latelee.org.sudu-n7cd.com (183.60.18.107), 30 hops max, 38 byte packets 1 100.100.100.44 (100.100.100.44) 0.556 ms 0.193 ms 0.182 ms 2 172.18.18.18 (172.18.18.18) 0.652 ms 0.736 ms 0.768 ms 3 * * * 4 10.137.64.19 (10.137.64.19) 2.818 ms 2.475 ms 2.281 ms 5 10.137.41.210 (10.137.41.210) 16.211 ms 16.298 ms 15.815 ms 6 10.137.128.10 (10.137.128.10) 15.920 ms 15.668 ms 15.888 ms 7 10.137.128.13 (10.137.128.13) 37.466 ms 17.123 ms 16.766 ms(所有IP地址已做一定掩饰)
可以看到,内网设备已能成功连接外网。
四、其它
其实,“内”、“外”只是相对而言。事实上,如果在本文所用的网络拓扑图右边添加一台PC,并将其默认设置网关,在服务器上做好SNAT,就能直接使用“内网”设备IP进行访问了。
注意,本文的服务器所有IP都是静态IP,故默认网关、DNS都要手动设置正确的值才能达到实验目的。在服务器上使用dnsmasq搭建DNS、DHCP服务后,在内网PC上自动获取IP,而DNS配置文件(/etc/resolv.conf)内容为“nameserver 192.168.1.1”,这样可以通过firefox上网。不过那是另外的事了。
李迟 2016.9.25 周日
- iptables学习笔记:端口转发之“外网访问内网”
- iptables学习笔记:端口转发之“内网访问外网”
- iptables学习笔记:端口转发之“外网访问内网”
- iptables学习笔记:端口转发之“内网访问外网”
- 用IPTABLES的端口转发功能实现访问位于内网的MYSQL服务器
- 让外网访问内网的端口转发
- 端口转发访问内网ip
- 通过iptables实现端口转发和内网共享上网
- iptables学习笔记:端口转发命令优化
- iptables学习笔记:端口转发命令优化
- 内网渗透笔记-端口转发,内网代理
- 转发内网机器端口使其外网能访问
- iptables学习 03 端口转发
- 内网端口转发与内网映射外网的区别和应用,发布网站访问内网
- SSH端口转发内网
- 内网端口转发汇总
- 使用iptables实现外网转发内网
- 使用iptables实现外网转发内网
- Oracle怎么实现分页
- hdu 1058 Humble Numbers 丑数
- 查询某个文件夹下包含某字符的文件和所在行
- 从世界坐标系到相机坐标系(3D物体到2D图像的转变)
- 安卓ListView 数据分批加载
- iptables学习笔记:端口转发之“内网访问外网”
- Git实现从本地添加项目到远程仓库
- HBase写和读的机制
- Android之ViewHolder用法
- 设计模式--观察者模式
- java.io.File中一些函数的学习
- Po学校Mark老师教的打字母游戏
- android:inputType常用取值
- HDU 1506 City Game by Assassin