先说一个场景,我由于在开发环境中须要链接linux服务器的memcache服务,但服务器确定是开了iptables的,因此直接连确定是连不上。但我自己有服务器的root帐号密码,因此能登陆服务器而且有权限。如今我面临一个问题,我直接使用命令把iptables所有关掉我以为很危险,由于服务器上毕竟仍是有项目在跑。而我如今的开发环境是用的普通宽带,ip是不固定的,因此个人问题来了,修改服务器的iptables配置,让我本机能连上,但不须要永久连上,不用了还能够删掉,并且还须要能简单的测试下配置是否生效,本机肯定能连上。说完场景,咱们开始:linux
我通常经常使用的办法是直接登陆www.ip138.com网站,首页就能显示IPwindows
也有对李彦宏有爱的,直接在百度里面输入“个人IP”,也同样能查到bash
在服务器上直接执行命令服务器
iptables -nvL
就能看到iptables目前的状况,大概样子以下:网络
原理我就不讲了,假设服务器上memcache服务的端口是默认的11211,咱们本机的外网IP地址是123.119.110.11,那么让iptables容许咱们访问的命令以下:tcp
iptables -A INPUT -s 123.119.110.11 -ptcp --dport 11211 -j ACCEPT
简单说下参数的意义:测试
-A 表示我这个规则是跟在上图这一堆的防火墙规则后面的,排队尾,若是以为我这条规则要插队,排第一,用 -I,可是不少时候你的规则排队尾很容易被前面的规则挡掉,若是是临时性的,我都是用-I 直接插到第一位。网站
INPUT 表示是我要访问服务器,我是要进去(input)服务器的spa
-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,完事。
弄完后咱们还须要验证本地机器是否真的能够访问了,这时候我用的是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就是端口号,执行后若是不能访问,就会显示失败:
若是成功了,会这个样子
到此为止,整个的过程就结束了,就能开心的连上服务器了,若是是临时性的,记得最后删掉那条规则哦。