Linux网络转发和端口映射的笔记
最近研究了一下Linux平台的网络IP转发和端口映射方面的东西,作了一点笔记。在学习时,查了很多资料,有的写的不是很清楚明白,而自己对这方面了解又不多,花的时间还是不少的。
一、网络转发
环境:某设备,双网卡,Fedora 18系统(即Linux路由器,IP都是网关),
网络环境:A网段为172.17.X.X,B网段为100.100.100.X。
目的:直接使用IP地址的形式来访问到跨网段的IP。比如,在A网段的172.17.17.168上访问到100.100.100.101。
配置:将Linux配置成为一台路由器,即可实现跨网段访问。
1、“路由器”的配置
在该设备上配置IP地址、网关(即作为路由器的机器)。
第一个网口连接到A网,地址如下(连此网口的设备网关为下面的IP):
ifconfig em1 172.17.17.188 netmask 255.255.0.0
第二个网口连接到B网,地址如下(连此网口的设备网关为下面的IP):
ifconfig p1p1 100.100.100.254 netmask 255.255.255.0
route add -net 100.100.100.0/24 gw 100.100.100.254 dev em1
route add -net 172.17.0.0/16 gw 172.17.17.188 dev p1p1
使能转发:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables转发:
iptables -A FORWARD -p ip -s 100.100.100.0/24 -j ACCEPT
保存:
service iptables save
重启
service iptables restart
2、客户端配置
B网络为其它的Linux设备,其IP配置为100.100.100.X网络,网关IP为100.100.100.254。路由信息如下:
root@latelee:~# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
255.255.255.255 * 255.255.255.255 UH 0 0 0 eth0
100.100.100.0 * 255.255.255.0 U 0 0 0 eth0
100.100.101.0 100.100.100.254 255.255.255.0 UG 0 0 0 eth0
default 100.100.100.254 0.0.0.0 UG 0 0 0 eth0
A网络有一台虚拟机,其IP配置为172.17.X.X网络,网关为172.17.17.188。
如下:
latelee@ubuntu:~$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:0c:29:cd:22:76
inet addr:172.17.17.168 Bcast:172.17.17.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fecd:2276/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:290610 errors:0 dropped:0 overruns:0 frame:0
TX packets:1600 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:25810466 (25.8 MB) TX bytes:173097 (173.0 KB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:339 errors:0 dropped:0 overruns:0 frame:0
TX packets:339 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:31654 (31.6 KB) TX bytes:31654 (31.6 KB)
在A网络的虚拟机上测试B网络的连通性:
latelee@ubuntu:~$ ping 100.100.100.101
PING 100.100.100.101 (100.100.100.101) 56(84) bytes of data.
64 bytes from 100.100.100.101: icmp_req=1 ttl=128 time=2.16 ms
64 bytes from 100.100.100.101: icmp_req=2 ttl=128 time=2.41 ms
^C
--- 100.100.100.101 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 2.165/2.289/2.414/0.133 ms
可以ping通,说明已经完成了路由功能。至于telnet、ftp、web界面,只要系统支持,当然也是正常的。
3、其它
fedora不知从什么版本开始,把经典的网卡设备eth0改名了(不专门使用fedora,没去研究,但ubuntu是没有变化的),从我的测试情况看,第一个(eth0)网络设备叫em1,第二个设备叫p1p1。
起初测试时,并不能实现跨网段访问,后来发现,是因为我的笔记本电脑同时开了wifi连接公网(为了方便上网、找资料)。一旦开了wifi就不能访问了。可能是同时有2个网关,ping的时候跑到另外一个去了。不是网络专业的,没研究那么深。
二、端口映射
环境:某设备,双网卡,ubuntu 14.04系统(要实现映射功能),第一个网卡连公网,IP为172.17.17.188。
网络环境:A网段是公网,172.17.X.X,B网段为内网,IP段:100.100.100.X。
目的:实现端口映射。比如,在A网段的172.17.17.168虚拟机上访问上面提到的设备(称“转发机器”)172.17.17.188的8080端口,则可以直接访问到IP为100.100.100.101的80端口。
查看Linux转发是否使能:
cat /proc/sys/net/ipv4/ip_forward
如显示0,则不使能,需要使能
echo 1 > /proc/sys/net/ipv4/ip_forward
上面命令只是临时生效,要永久生效,在ubuntu系统修改/etc/sysctl.conf文件,把ip_forward的注释打开就行了
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
将转发机器8080映射到设备的80端口
iptables -t nat -A PREROUTING -d 172.17.17.188 -p tcp --dport 8080 -j DNAT --to-destination 100.100.100.101:80
iptables -t nat -A POSTROUTING -d 100.100.100.101 -p tcp --dport 80 -j SNAT --to 172.17.17.188
iptables -A FORWARD -o eth0 -d 100.100.100.101 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i eth0 -s 100.100.100.101 -p tcp --sport 80 -j ACCEPT
(
注,只用下面2条命令好像也可以:
iptables -t nat -A PREROUTING -m tcp -p tcp -d 172.17.17.188 --dport 8022 -j DNAT --to 100.100.100.101:80
iptables -A FORWARD -m tcp -p tcp -d 100.100.100.101 --dport 80 -j ACCEPT
)
保存iptables配置(注:好像不要这步也行,网上说这步是保存配置,重启时生效,但我试了是不生效的)
iptables-save
查看效果
iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere 100.100.100.101 tcp dpt:http
ACCEPT tcp -- 100.100.100.101 anywhere tcp spt:http
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
如果要清空iptables,可以使用下面的几个命令:
iptables -F
iptables -X
iptables -Z
上面提到的是web端口,测试时在浏览器中输入转发机器的IP地址(而不是最终的目的机器的IP地址)和端口即可访问。如果是映射telnet的23端口,则可以用telnet命令去连接设备。
李迟,记于2014年10月20日中午
Linux网络转发和端口映射的笔记相关推荐
- linux设置mysql防火墙端口映射_Linux防火墙默认是关闭3306端口,iptables实现端口转发、端口映射及双向通路...
iptables实现端口转发.端口映射及双向通路其实不难配置,看下文: 允许数据包转发: #echo 1 > /proc/sys/net/ipv4/ip_forward 转发TCP 8081到x ...
- linux 防火墙 443端口映射,linux防火墙实现端口转发、端口映射及双向通路
iptables实现端口转发.端口映射及双向通路其实不难配置,看下文: 允许数据包转发: #echo 1 > /proc/sys/net/ipv4/ip_forward 转发TCP 8081到x ...
- windwos 端口转发、端口映射(PassPort Control)
windwos 端口转发.端口映射 有的vpn只能在windows上运行,所以使用mac时,需要安装虚拟机,在虚拟机中运行vpn然后进行开发. 这时,如果想要在mac端进行开发,则需要虚拟机windw ...
- Linux系列——VMware虚拟机配置端口转发(端口映射),实现远程访问
前言 先赞后看,此生必赚! 本文所写的远程为各个电脑在同一个网段内: 本文主要详细介绍如何远程访问虚拟机里面的项目! 机器:虚拟机(装在电脑1里).电脑1(宿主机).电脑2.电脑3.电脑4.电脑n.. ...
- LINUX用iptable完成端口映射
用iptable完成端口映射 问:一局域网192.168.1.0/24,有web和ftp服务器192.168.1.10.192.168.1.11,网关linux,内网eth0,IP为192.168.1 ...
- java实现端口映射_Java BIO实现TCP端口转发(端口映射)功能源码
开发环境及开发目标说明: 开发背景:为了网络的安全,工作的网络环境的变得比较复杂,很多主机的端口一定程度上的受到了保护,需要从能访问到的中间机器做跳转. 开发环境:JDK1.6 + Eclipse4. ...
- Linux批量加连续端口映射,批量端口映射
内网ip 10.199.2.12 虚拟机网络 192.168.10.0/24 内网访问示例,如访问ip为192.168.10.20的虚拟机, 远程桌面 10.199.2.12:6020 vnc 10. ...
- XShell远程连接LInux服务器(地址端口映射方法)
所实现的功能: 这篇文章主要是记录我在非同一局域网下用win10系统的Xshell去连接Linux系统服务器. 环境:一台win10主机,已安装好Xshell7,局域网ip:192.168.0.132 ...
- linux下ftp防火墙端口映射,centos6利用iptables用DNAT实现端口映射并解决ftp列表错误问题...
之前写了centos7下利用firewall防火墙实现了端口映射的功能来达到加速80端口的目的,但是如果同时也要转发ftp流量的话就会一直出现ftp连接列表错误问题,查询了下相关资料,这是由于源IP通 ...
最新文章
- 复杂系统设计 企业开发的困境
- 使用Google App Engine、Google Closure Library与Clojure编写HTML5应用
- of python检索文献 science web_硕博士都在学的Python神技,有大神带!
- C语言数据库公共知识,全国计算机二级C语言公共基础知识数据库设计基础
- 电脑编程用户注册界面java_用JSP/Servlet开发简单的用户注册系统
- PHP-02.文件上传、php保存/转移上传的文件、常见的网络传输协议、请求报文及属性、响应报文及属性...
- 实体类 接口_spring-boot-route(五)整合Swagger生成接口文档
- 广度优先搜索——USACO08FEB(洛谷 P2895)
- 服务器配置文件设计,IM配置服务器概要的设计文件.doc
- 《Windows游戏编程大师技巧》(第二版)
- 计算机系统存储器 分类,存储器的分类
- minicom - 友好易用的串口通信程序
- [ipsec][crypto] 什么是AEAD加密算法中的AAD 及aad length
- 基于OBS超低延迟直播实测(400毫秒左右)超多组图
- spring Mvc中的适配器模式
- 奥维地图显示所有标注
- 前端框架比比看:bootstrap, bulma, foundation, material-design-lite, materialize-css, semantic-ui
- 硬件PM系列(二):硬件产品经理需要熟知的设计流程
- 如何调换手机桌面位置_如何改变华为手机桌面三个方向按键的位置?
- Excel怎么导出百万级数据
热门文章
- 400是什么错误_Spring Boot的REST API错误处理
- 500块钱买一个手机壳,为什么年轻人如此上头?
- 卢伟冰为Redmi K50电竞版预热:相机拍照效果越来越出色
- 《长津湖之水门桥》定档大年初一 想看热度跻进春节档TOP3
- 只卖男人,年赚5.6亿!全网最火“爱情骗子”,被戳穿了
- 《英雄联盟:双城之战》全球首映 沉浸式观影打造追剧新潮流
- 得益于iPad 苹果二季度在平板电脑应用处理器市场份额接近60%
- 小米MIX 4屏幕细节曝光:首发柔性曲面屏下前摄
- 曾比海底捞还牛,如今关店1200家!肯德基的猪队友,快被中国人抛弃了?
- 华为Mate40 RS保时捷设计推8+256GB版本:起售价便宜1000元