centos下服务器TCP转发配置

centos下服务器TCP转发配置,第1张

当客户无法访问我们的服务器或者访问很慢的时候,我们通常会用到cdn,但是cdn通常只支持>

首先需要将你的web服务器搭建好,然后需要做NAT,我这里有我的一个做NAT的笔记,分享给你

NAT

拓扑结构图:

要求:

1内网能够ping通外网地址,并且成功访问外网中的web服务;

2外网能够访问内网的ftp服务。

步骤:

一:内网服务器配置

1在内网中设置好ip地址,网关和DNS均为NAT服务器内网口地址,并搭建好ftp服务,此处略

二:NAT服务器配置

1在NAT只能中添加一块网卡作为 外网卡,并设置好ip地址

2开启NAT服务器的路由功能

[root@c2 ~]# vi /etc/sysctlconf

netipv4ip_forward = 1              //将0改为1

[root@c2 ~]# sysctl -p                //永久生效

3配置防火墙(必须按照以下循序配置,否则配置完成后不能拼通外网,需配置第二次)

#iptables-X

#iptables-t nat -X

#iptables --flush

#iptables -t nat --flush

//以上为重置链表的命令

#iptables-t nat -A POSTROUTING -s 19216810/24 -o eth1 -j SNAT --to 202101012

//这条命令是将内网19216810/24的源地址映射为NAT服务器的外网口地址,eth1为外网卡

# iptables -t nat -A PREROUTING -p tcp--dport 21 -j DNAT --to 192168111

# iptables -t nat -A PREROUTING -p tcp--dport 20 -j DNAT --to 192168111

//这两条命令是发布内务的ftp服务

或者:

# iptables -t nat -A PREROUTING -p tcp -d 202101012--dport 21 -j DNAT --to 192168111

# iptables -t nat -A PREROUTING -p tcp -d 202101012--dport 20 -j DNAT --to 192168111

#/etc/initd/iptablessave

#/etc/initd/iptablesrestart

验证:

内网访问外网的web服务:

[root@c1 ~]# curl 202101013

web

外网访问内网的ftp服务(外网的防火墙一定要关闭,否则ls查看目录时会出错,或者打开外网的20号端口新建链接的也可以)#

[root@c3 ~]# ftp 202101012

Connected to 202101012 (202101012)

220 (vsFTPd 222)

Name (202101012:root): ftp01

331 Please specify the password

Password:

230 Login successful

Remote system type is UNIX

Using binary mode to transfer files

ftp> ls

227 Entering Passive Mode(192,168,1,11,93,1)

ftp: connect: Network isunreachable     //列不出内容是因为进入了passive模式

ftp>passive                                                      //用passive命令切换passive模式和active模式

Passivemode off

ftp> ls

200 PORT command successful Consider usingPASV

150 Here comes the directory listing

226 Directory send OK

ftp>

补充:

删除防火墙中配置的记录

[root@c2 ~]# iptables -t nat  -L POSTROUTING -n --line-number   //列出记录和记录序号

[root@c2 ~]# iptables -t nat -D POSTROUTING1                 //根据序号删除记录

你将内网的ftp服务换成web服务就可以了,主要是弄懂NAT的原理,将内部服务通过DNAT发布到外网

大家都知道各类网络服务器程序的编写步骤,并且都知道网络服务器就两大类:循环服务和并发服务。这里附上源代码来个小结吧。
一、 循环服务
循环网络服务器编程实现的步骤是这样的:
建立socket(这里用到socket()函数及函数setsockopt())
|
|
\|/
把socket和IP地址及端口绑定(这里用到bind函数)
|
|
\|/
开始监听(这里用到listen()函数)
|
|
/\
/ \
\ / \
----------------------- | 有连接|
| / \ /
| \ /
| \ /
| |
| 接受新的连接(这里用到accept()函数)
| | /___________________________________________________
| | \ |
| \|/ |
| 从连接里读取数据(这里用到recv()系统函数,当然也可以是read()函数) |
| | |
| | |
| \|/ |
| 返回信息给连接(这里用到send()系统函数,当然也可以是write()函数) |
| | |
| | |
| /\ |
| / \ |
| / \ |
| | 还有数据 |-Y-------------------------------------------------------
| \ /
| \ /
| \ /
|_______________________________|
这种服务器模型是典型循环服务,如果不加上多进程/线程技术,此种服务吞吐量有限,大家都可以看到,如果前一个连接服务数据没有收发完毕后面的连接没办法处理。所以一般有多进程技术,对一个新连接启用一个新进程去处理,而监听socket继续监听。
/

一、双网卡网络共享
具体描述:服务器eth0连接外网,eth1连接笔记本,笔记本能够上网。

*** 作步骤
修改网卡信息
外网

内网

Linux系统启用端口转发(NAT)功能

修改防火墙设置,将网卡eth1改成trusted区域:

配置 NAT 规则:将所有发送到192168100的数据包转发到eth0(外网网卡)

允许端口转发,执行命令

配置连接内网的主机ip信息

shell脚本

share-ethsh

transsh

注意:执行shell脚本方式配置的话,执行完share-ethsh之后还需再执行一次transsh
当eth0和eth1处于同一个网段的时候会出现什么情况?

这时连接的主机的ip也和它们处于同一网段,相互之间并不连通。

怎么解决?

服务器网卡信息:

连接的主机:

解决方法:将连接的主机ip加入服务器的路由表

转发内网服务器,简单说就是想实现在远程外网环境下访问局域网搭建的服务应用,比如个人网站、博客、NAS私有云、企业的OA、ERP办公系统、FTP/SVN/MAC服务器、还有Windows远程桌面等等,因为没有公网IP(购买昂贵),远程外网就无法访问。。。
这种情况可以试试花生壳内网穿透,不需要公网IP,也不用路由器做映射,直接用花生壳把局域网应用或设备进行映射发布到外网,通过域名就能实现外网访问了,花生壳有免费版可以先测试看看,具体服务搭建可以进空间查看,上述列举的局域网应用都可以实现远程访问

(1)简单实现DHCP多作用域
对于多作用域的配置,必须保证DHCP服务器能够侦听所有子网客户机的请求信息,下面将讲解配置多作用域的基本方法,为DHCP添加多个网卡连接每个子网,并发布多个作用域的声明。
注意:划分子网时,如果选择直接配置多作用域实现动态IP分配的任务,则必须要为DHCP服务器添加多块网卡,并配置多个IP地址,否则DHCP服务器只能分配与其现有网卡IP地址对应网段的作用域。
采用双网卡实现两个作用域
1)网卡配置IP地址
DHCP服务器有多块网卡时,需要使用ifconfig命令为每块网卡配置独立的IP地址,但要注意,IP地址配置的网段要与DHCP服务器发布的作用域对应哈~
ifconfig eth0 19216821 netmask 2552552550
ifconfig eth1 19216831 netmask 2552552550
2)编辑dhcpdconf主配置文件
当DHCP服务器网络环境搭建完毕后,可以编辑dhcpdconf主配置文件完成多作用域的设置。
ddns-update-style none;
ignore client-updates;
subnet 19216820 netmask 2552552550 {
# --- default gateway
option routers 19216821;
option subnet-mask 2552552550;
option nis-domain "domainorg";
option domain-name "domainorg";
option domain-name-servers 19216822;
option time-offset -18000; # Eastern Standard Time
# option ntp-servers 19216811;
# option netbios-name-servers 19216811;
# --- Selects point-to-point node (default is hybrid) Don't change this unless
# -- you understand Netbios very well
# option netbios-node-type 2;
range dynamic-bootp 192168250 1921682250;
default-lease-time 21600;
max-lease-time 43200;
# we want the nameserver to appear at a fixed address
host ns {
next-server marvinredhatcom;
hardware ethernet 12:34:56:78:AB:CD;
fixed-address 20717542254;
}
}
subnet 19216830 netmask 2552552550 {
# --- default gateway
option routers 19216831;
option subnet-mask 2552552550;
option nis-domain "domainorg";
option domain-name "domainorg";
option domain-name-servers 19216822;
option time-offset -18000; # Eastern Standard Time
# option ntp-servers 19216811;
# option netbios-name-servers 19216811;
# --- Selects point-to-point node (default is hybrid) Don't change this unless
# -- you understand Netbios very well
# option netbios-node-type 2;
range dynamic-bootp 192168350 1921683250;
default-lease-time 21600;
max-lease-time 43200;
max-lease-time 43200;
}
保存退出。
3)测试验证
重启DHCP服务后检查系统日志,检测配置是否成功,使用tail命令动态显示日志信息。
tail -F /etc/log/messages
经过设置,对于DHCP服务器将通过eth0和eth1两块网卡侦听客户机的请求,并发送相应的回应。
Jan 19 16:02:51 rhel5 dhcpd: DHCPDISCOVER from 00:19:21:bd:a3:da via eth1
Jan 19 16:02:51 rhel5 dhcpd: DHCPDISCOVER from 00:19:21:bd:a3:da via eth0
Jan 19 16:02:52 rhel5 dhcpd: DHCPOFFER 1921683250 to 00:19:21:bd:a3:da (mis) via eth1
Jan 19 16:02:52 rhel5 dhcpd: DHCPOFFER 1921682250 to 00:19:21:bd:a3:da (mis) via eth0
Jan 19 16:02:52 rhel5 dhcpd: DHCPREQUEST for 1921683250 (19216831) from 00:19:21:bd:a3:da (mis) via eth1
Jan 19 16:02:52 rhel5 dhcpd: DHCPACK 1921683250 to 00:19:21:bd:a3:da (mis) via eth1
Jan 19 16:02:52 rhel5 dhcpd: DHCPREQUEST for 1921683250 (19216831) from 00:19:21:bd:a3:da (mis) via eth0: ignored (not authoritative)
Jan 19 16:02:53 rhel5 dhcpd: DHCPDISCOVER from 00:19:21:bd:a3:da (mis) via eth1
Jan 19 16:02:53 rhel5 dhcpd: DHCPOFFER 1921683250 to 00:19:21:bd:a3:da (mis) via eth1
Jan 19 16:02:53 rhel5 dhcpd: DHCPDISCOVER from 00:19:21:bd:a3:da (mis) via eth0
Jan 19 16:02:53 rhel5 dhcpd: DHCPOFFER 1921682250 to 00:19:21:bd:a3:da (mis) via eth0
Jan 19 16:02:53 rhel5 dhcpd: DHCPREQUEST for 1921683250 (19216831) from 00:19:21:bd:a3:da (mis) via eth1
Jan 19 16:02:53 rhel5 dhcpd: DHCPACK 1921683250 to 00:19:21:bd:a3:da (mis) via eth1
Jan 19 16:02:53 rhel5 dhcpd: DHCPREQUEST for 1921683250 (19216831) from 00:19:21:bd:a3:da (mis) via eth0: ignored (not authoritative)
Jan 19 16:02:54 rhel5 dhcpd: DHCPDISCOVER from 00:19:21:bd:a3:da (mis) via eth1
Jan 19 16:02:54 rhel5 dhcpd: DHCPOFFER 1921683250 to 00:19:21:bd:a3:da (mis) via eth1
Jan 19 16:02:54 rhel5 dhcpd: DHCPDISCOVER from 00:19:21:bd:a3:da (mis) via eth0
Jan 19 16:02:54 rhel5 dhcpd: DHCPOFFER 1921682250 to 00:19:21:bd:a3:da (mis) via eth0
Jan 19 16:02:54 rhel5 dhcpd: DHCPREQUEST for 1921683250 (19216831) from 00:19:21:bd:a3:da (mis) via eth1
Jan 19 16:02:54 rhel5 dhcpd: DHCPACK 1921683250 to 00:19:21:bd:a3:da (mis) via eth1
Jan 19 16:02:54 rhel5 dhcpd: DHCPREQUEST for 1921683250 (19216831) from 00:19:21:bd:a3:da (mis) via eth0: ignored (not authoritative)
Jan 19 16:02:55 rhel5 dhcpd: DHCPDISCOVER from 00:19:21:bd:a3:da (mis) via eth1
Jan 19 16:02:55 rhel5 dhcpd: DHCPOFFER 1921683250 to 00:19:21:bd:a3:da (mis) via eth1
Jan 19 16:02:55 rhel5 dhcpd: DHCPDISCOVER from 00:19:21:bd:a3:da (mis) via eth0
Jan 19 16:02:55 rhel5 dhcpd: DHCPOFFER 1921682250 to 00:19:21:bd:a3:da (mis) via eth0
Jan 19 16:02:55 rhel5 dhcpd: DHCPREQUEST for 1921683250 (19216831) from 00:19:21:bd:a3:da (mis) via eth1
Jan 19 16:02:55 rhel5 dhcpd: DHCPACK 1921683250 to 00:19:21:bd:a3:da (mis) via eth1
Jan 19 16:02:55 rhel5 dhcpd: DHCPREQUEST for 1921683250 (19216831) from 00:19:21:bd:a3:da (mis) via eth0: ignored (not authoritative)

1、网站服务器其实就是我们通常说的web主机,对应不同的编程语言,单间网站服务器的软件不同,一般情况下,在windows环境下,一般以aspnethtml为主,在这种情况下,搭建网站服务器就主要用到微软系统自带的iis(互联网信息服务)就可以了,Linux环境下就是php了,相对应搭建的软件就是apache+mssql了。

2、java是跨平台的,哪个都可以。对于初学者来说,建议使用asp方面服务器,一方面是asp程序比较简单易懂,在修改过程中,还可以借助Dreamweaver等可视化编程工具,进行可视化编辑,另一方面windows环境下iis安装极其简单,在控制面板中——添加删除程序——windows组建,下拉找到iis,放入系统盘即可安装,无需下载任何东西。

3、在我们网站编程实际应用过程中,我们其实还用到一个简易的iis服务器,百度一下就能找到“简易iis服务器”,这是一些热心的网友开发出来的网站服务应用程序,同样可以起到iis的作用,但是支持的范围有限,对于一些高端的iis服务不支持,但是作为日常测试网站程序已经是足够了。

4、如果准备搭建的网站服务器是准备支持php的,推荐安装“一键php集成调试环境”,安装极其简单,下载后,下一步就可以,这个集成环境,融合了,php解释器,mssql服务器,phpadmin,Apache服务器,php加速等。可以说是一个完美的php服务器环境。

5、下面还需要对网站服务器就行设置,设置网站的路径,使其指向你网站程序的存放目录,设置网站首页例如:indexasp,indexphp等。然后测试一下自己的ip地址是多少,如果你的这台网站服务器是放置在局域网环境当中的,那还需要你再路由器上设置一下端口映射,否则外网的电脑是访问不了你这台电脑的,路由器就由于一道墙,他阻隔了你与外界的交流,也就是说保护着你这台电脑。

6、但是你现在想让外部的电脑访问你,就必须让外部电脑了解你的位置,所以做一个端口映射就可以实现,具体如果做,请查看你所使用的路由器的型号来设置了,切记一定把80端口映射就可以,网站服务器默认的端口是80端口。

(1)你上网没有用路由,运营商单独分给你一个ip地址,那你直接可以用你的ip让外网的同学来访问你的网站,我们这里用的8080端口,所以形式为:xxxxxxxxxx:8080为了让多的同学了解,我在_嗦一下,怎么知道自己的ip地址,你不必用在cmd命令输入ipconfig这种略显专业的方法去获取,其实哦重要在百度搜素“ip查询”,第一个就是。

(2)用了路由器,一个路由器呆了好几台电脑,比如说跟室友,这就需要你去路由管理页面设置一下,端口映射,让被人访问你们的ip地址时,映射到你的电脑,在浏览器中输入19216811(以你的路由为准),进入路由管理页面, *** 作,

转发规则-----虚拟服务器-------添加新条目

端口我们没改,所以填8080,IP地址为你的电脑在局域网中的地址,怎么样知道自己的局域网中的地址,很简单自己百度一下,只要局域网里的电脑不是太多,一般为1921681XXX,我这里为1921681101,然后点击保存,OK,然后外网就可以用你们IP去访问你的网站了。

效果图如下:

这时可以把这个网址发给你的同学,试一下,他能不能访问你的网站,答案是肯定的!

3、但是又有新问题了,你第二天打开路由,或者再次上网时,运营商会重新分配给你一个新的IP地址,难道你让你同学访问时,再次把这个IP地址发给他吗?显然这是不合理了。

我们就想有一个动态域名多好。这里给大家介绍一款软件“花生壳”,下载安装,然后注册后,你就会获得一个免费的二级域名,每次开机自启后,就会将花生壳服务端中的IP数据更新成你新的IP地址,然后你每次用你固定的域名来访问时,就会解析到你新的IP地址。

双击你的域名,看有没有显示出“经检测,您的域名已激活并指向正确”!

OK,到这里,没有路由的同学,就可以直接用你的域名访问了!

有路由的同学,还得多 *** 作一步:

再次进入路由管理页面, *** 作:

点击“动态DNS”,这时如果你的上述 *** 作都没问题的话,服务提供者那一栏已经自动填充成花生壳的网址了,然后输入用户名,密码,点击登录,如果显示为“连接成功”,那点击“保存”。到这里,终于大功告成,看一下最终效果图:

可以看到,我用我的域名成功的访问到了我的网站。

PS:有时显示“验证成功”时也是个假象,一点击“保存”时,又显示为“验证失败”,再点击“登录”,多点击几次“保存”,直到它一直显示为“验证成功”即可,反正就是多试几次。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/12770475.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-27
下一篇 2023-05-27

发表评论

登录后才能评论

评论列表(0条)

保存