admin管理员组

文章数量:1530012

先说一个场景,我因为在开发环境中需要连接linux服务器的memcache服务,但服务器肯定是开了iptables的,所以直接连肯定是连不上。但我本身有服务器的root账号密码,所以能登录服务器并且有权限。现在我面临一个问题,我直接使用命令把iptables全部关掉我觉得很危险,因为服务器上毕竟还是有项目在跑。而我现在的开发环境是用的普通宽带,ip是不固定的,所以我的问题来了,修改服务器的iptables配置,让我本机能连上,但不需要永久连上,不用了还可以删掉,而且还需要能简单的测试下配置是否生效,本机确定能连上。说完场景,我们开始:

1、知道本机的外网IP

我一般常用的办法是直接登录www.ip138网站,首页就能显示IP

 

 

也有对李彦宏有爱的,直接在百度里面输入“我的IP”,也一样能查到

 

 

2、到linux服务器上修改防火墙(iptables)

在服务器上直接执行命令

iptables -nvL

就能看到iptables目前的情况,大概样子如下:

 

 

原理我就不讲了,假设服务器上memcache服务的端口是默认的11211,我们本机的外网IP地址是123.119.110.11,那么让iptables允许我们访问的命令如下:

iptables -A INPUT -s 123.119.110.11 -ptcp --dport 11211 -j ACCEPT

简单说下参数的意义:

-A 表示我这个规则是跟在上图这一堆的防火墙规则后面的,排队尾,如果觉得我这条规则要插队,排第一,用 -I,但是很多时候你的规则排队尾很容易被前面的规则挡掉,如果是临时性的,我都是用-I 直接插到第一位。

INPUT 表示是我要访问服务器,我是要进去(input)服务器的

-s 这个猜都能猜到,表示后面的ip是要访问服务器的ip,就是现在场景下我本机的ip

-p 表示我打算用什么协议访问服务器,最常用的用tcp就行了

-d 又是一个好猜到的,我要访问服务器的那个端口,我需要访问的是11211,如果是访问页面,用80的多

-j 表示这条规则是打算允许访问还是拒绝访问,允许用ACCEPT,拒绝用REJECT,还一个选项是DROP,这个参数就像被女神当备胎,它不拒绝你,但是也不接纳你,它晾着你,等你自个觉得没回应而自己退出。

-----------------------------------------我是已经勾搭完了的分割线----------------------------------------

看完上面,我们就能访问服务器的指定端口了,但是如果我配错了咋办,我用完了需要删除这个规则咋办,下面是事后烟的说明时间:

先要查下我们的这条规则是什么编号,用这个命令

iptables --line -vnL

看到的界面如下:

 

 

前面的num就是--line 参数弄出来的,我们需要看到我们自己的规则是哪个num,比如我们的命令num是1,执行这个命令:

iptables -D INPUT 1

这个参数就简单多了,-D 就是删除这条规则,1就是规则的num,完事。

3、windows下的验证

弄完后我们还需要验证本地机器是否真的可以访问了,这时候我用的是telnet,本来呢它为用户提供了在本地计算机上完成远程主机工作的能力的,但就像百度的主要工作是为了验证网络通不通,telnet很多时候也是为了验证一个远程服务是不是通,下面我们用下telnet。

但默认我们是用不了,我们用win+r呼出运行框,输入cmd打开命令框,输入telnet命令是没啥用的,提示这个命令不存在。

 

 

我们需要把telnet命令启动起来才行,跟着我做(提醒一下,我用的是win10)。打开设置->应用

 

 

打开相关设置的程序和功能

 

 

打开启动或关闭windows功能

 

 

勾选里面的telnet client即可

 

 

再回到命令行,输入telnet,可以用啦。

 

 

但我们不是为了登录telnet搞事情,我们是为了验证远程服务器能不能访问,我知道你手脚快,已经进去了telnet,按q退出telnet。我们要执行的是下面这行命令

telnet 111.222.11.11 11211

这个111.222.11.11就是远程服务器ip,11211就是端口号,执行后如果不能访问,就会显示失败:

 

 

如果成功了,会这个样子

 

 

到此为止,整个的过程就结束了,就能开心的连上服务器了,如果是临时性的,记得最后删掉那条规则哦。

 

本文标签: 粗暴命令简单iptablesWindows