在学习在Linux上打开端口之前,让我们了解什么是网络端口。 端口是通信端点。 在操作系统内,端口允许数据包特定的进程或网络服务。通常,端口标识分配给它们的特定网络服务。 可以通过手动将服务配置为使用其他端口来更改此设置,但是通常可以使用默认值。

前1024个端口(端口0-1023 )称为众所周知的端口号,并保留用于最常用的服务,包括SSH(端口22),HTTP和HTTPS(端口80和443)等。端口号大于1024的被称为临时端口。 在临时端口中,端口号1024-49151称为已注册/用户端口。 其余端口49152-65535被称为动态/专用端口。

在本教程中,我们将展示如何在Linux上打开临时端口,因为最常用的服务使用众所周知的端口。

1 列出所有打开的端口

在Linux上打开端口之前,让我们首先检查所有打开的端口的列表,然后从该列表中选择一个临时端口打开。 我们可以使用netstat命令列出所有打开的端口,包括TCP , UDP的端口 ,它们是网络层中用于数据包传输的最常见协议。

**注意 :**如果您的发行版没有netstat ,那不是问题。 您可以使用ss命令通过侦听套接字显示打开的端口。

netstat -lntu
复制代码

这将打印所有侦听套接字(-l)以及端口号(-n),并且输出中还将列出TCP端口( -t )和UDP端口( -u )。

为了确保我们获得一致的输出,让我们使用ss命令来验证这一点,以列出具有开放端口的侦听套接字。

这提供了几乎与netstat相同的开放端口,所以我们很高兴!

2 在Linux上打开端口以允许TCP连接

就本例而言,我们打开一个封闭的端口并使其侦听TCP连接。

由于系统中未使用端口4000 ,因此我选择打开端口4000 。 如果您的系统中该端口未打开,请随时选择另一个关闭的端口。 只要确保它大于1023即可

再次,只是要确保,请使用netstatss命令确保未使用端口4000。

netstat -na | grep :4000
ss -na | grep :4000
复制代码

输出必须保持空白,从而验证它当前未被使用,以便我们可以将端口规则手动添加到系统iptables防火墙。

2.1 对于Ubuntu用户和基于ufw防火墙的系统

Ubuntu有一个名为ufw的防火墙,它负责处理端口和连接的这些规则,而不是旧的iptables防火墙。 如果您是Ubuntu用户,则可以使用ufw直接打开ufw

sudo ufw allow 400
复制代码

您可以跳过接下来的几个步骤,直接测试您新打开的端口!

2.2 对于CentOS和基于Firewalld的系统

对于这些类型的系统,如果已将firewalld为主防火墙,则建议您使用firewall-cmd来更新防火墙规则,而不是旧的iptables防火墙。

firewall-cmd --add-port=4000/tcp
复制代码

您可以跳过接下来的几个步骤,直接测试您新打开的端口!

2.3 对于其他Linux发行版

因此,让我们使用iptables命令将此新端口添加到系统iptables规则中。如果尚未安装此命令,请使用软件包管理器获取它。

iptables -A INPUT -p tcp --dport 4000 -j ACCEPT
复制代码

这将防火墙设置为附加新规则( -A ),以通过协议( -p ) TCP接受输入数据包,其中目标端口( --dport )为4000 ,并将目标跳转 ( -j )规则指定为ACCEPT。

要更新防火墙规则,请重新启动iptables服务。

sudo service iptables restart
复制代码

或使用systemctl如果有)。

sudo systemctl restart iptables
复制代码

3 测试新打开的端口的TCP连接

现在我们已经成功打开了一个新的TCP端口(在我的情况下为Port 4000),让我们对其进行测试。

首先,我们将启动netcat( nc )并侦听端口4000,同时将ls的输出发送到任何已连接的客户端。 因此,客户端在端口4000上打开TCP连接后,他们将收到ls的输出。

ls | nc -l -p 4000
复制代码

这使得netcat在端口4000上进行侦听。暂时不进行此会话。

在同一台计算机上打开另一个终端会话。

由于打开了TCP端口,因此我将使用telnet来检查TCP连接。 如果该命令不存在,请再次使用程序包管理器进行安装。

telnet的格式:

telnet [hostname/IP address] [port number]
复制代码

因此,输入您的服务器IP和端口号(在我的情况下为4000) ,然后运行此命令。

telnet localhost 4000
复制代码

这会尝试在端口4000的localhost上打开TCP连接。

您将获得类似于此的输出,表明已与侦听程序( nc )建立了连接。

如您所见, ls (在我的情况下为while.sh )的输出也已发送到客户端,表明TCP连接成功!

为了告诉您端口确实是开放的,我们可以使用nmap进行检查。

 nmap localhost -p 4000
复制代码

确实,我们的港口已经开放! 我们已经在Linux系统上成功打开了一个新端口!

注意nmap仅列出具有当前监听应用程序的已打开端口。 如果您不使用任何监听应用程序(例如netcat),则会将端口4000显示为已关闭,因为当前没有任何应用程序在该端口上进行监听。 同样,telnet也不起作用,因为它还需要绑定监听应用程序。 这就是nc如此有用的工具的原因。 这在一个简单的命令中模拟了这种环境。

但这只是暂时的,因为更改将在每次重新引导系统时重置。

4 每次重启后都需要更新规则

本文介绍的方法只会临时更新防火墙规则,直到系统关闭/重新启动为止。 因此,必须重复类似的步骤才能在重新启动后再次打开同一端口。

4.1 对于ufw防火墙

ufw规则不会在重启时重置,因此,如果您是Ubuntu用户,则不必担心这部分!这是因为它已集成到引导过程中,并且内核使用ufw通过适当的配置文件保存了防火墙规则。

4.2 对于防火墙

如前所述, firewalld也存在相同的问题,但是在打开端口或设置任何其他规则时,可以通过在初始命令后附加--permananent标志来避免此问题。

例如,您可以使用以下命令永久打开TCP端口4000

 firewall-cmd --zone=public --add-port=400/tcp --permanent
复制代码

4.3 对于iptables

对于iptables防火墙,尽管无法避免这种不便,但我们可以将麻烦降到最低。我们可以将iptables规则保存到配置文件中,例如/etc/iptables.conf

 sudo iptables-save | sudo tee -a /etc/iptables.conf
复制代码

重新启动后,我们可以使用以下命令从配置文件中检索它:

 sudo iptables-restore < /etc/iptables.conf
复制代码

现在, iptables规则现在已更新,我们的端口再次打开!

5 结论

在本教程中,我们向您展示了如何在Linux上打开新端口并将其设置为传入连接。

作者:abvlcy
链接:https://juejin.cn/post/6934952605227417614

在Linux上打开端口相关推荐

  1. linux打开端口_在Linux上打开端口

    linux打开端口 Before we learn about opening a port on Linux, let's understand what network ports are. A ...

  2. linux怎么进入root文件,在Linux上打开具有Root访问权限的程序

    由于平台上的安全性,有时需要在Linux上打开具有root权限的程序,事实上,常规用户无法进行某些操作(例如管理Root文件夹中的文件,格式化硬盘驱动器或编辑系统文件等).有几种方法可以在Linux上 ...

  3. linux 测试本地端口是否打开,有效地测试Linux上的端口是否打开?

    从bash脚本中,如何快速查明端口445是否在服务器上打开/侦听. 我尝试了几种选择,但我想要一些快速的东西: 1. lsof -i:445(需要几秒钟) 2. netstat -an | grep ...

  4. 如何在Linux上使用端口敲门(以及为什么不应该这样做)

    Photographee.eu/ShutterstockPhotographee.eu/Shutterstock Port knocking is a way to secure a server b ...

  5. linux上打开psd格式图片--gimp

    psd格式,是Adobe Photoshop的图片格式,在windows上打开编辑当然没有问题,但是在linux上怎么打开呢,对于我这个linux菜鸟来说,还真是个问题.之前只熟悉png格式的图片,知 ...

  6. 如何在linux上打开fit文件,FIT 文件扩展名: 它是什么以及如何打开它?

    FIT 疑难解答 频繁的 FIT 打开问题 Garmin Connect 已删除 如果您尝试加载 FIT 文件,则会收到 "无法打开 FIT 文件" 等消息. 如果是这样,这通常意 ...

  7. 怎样在linux上打开项目,如何在Linux平台运行HelloWorld及测试项目

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Cocos2d-x引擎自Cocos2d-1.0.1-x-0.9.2版本以来支持Linux平台. 本文介绍如何在Linux及Android模拟器中运行Hel ...

  8. linux上容器端口映射,MacOS下的docker端口映射

    本人是macos,不能提供docker的运行环境,所以需要用boot2docker,问题就出在这,因为boot2docker其实是使用VBOX虚拟机的,所以实际上外部如果想要访问到容器的话,需要两层层 ...

  9. 465端口发邮件php,在centos上打开端口465 for smtp的问题

    我正在使用 phpMailer使用谷歌应用程序地址/ smtp发送购买确认.整个事情在开发盒上工作得很好,但现在它已经存在,似乎我正在使用的端口(465)被阻止了. 所以我编辑iptables: -A ...

最新文章

  1. Java如何拆分字符串
  2. python round函数_python中round函数如何使用
  3. 【Android游戏开发十八】解放手指,利用传感器开发游戏!
  4. python程序员专用壁纸_代码没写完,哪里有脸睡觉!17 张程序员壁纸推荐
  5. window.open不重复打开同一个名称的窗口_干货满满|Ctrl键的正确打开方式
  6. Graphviz 入口
  7. 吴恩达深度学习5.3笔记_Sequence Models_序列模型和注意力机制
  8. 台式电脑怎么截屏_台式电脑怎么使用无线网卡
  9. SQL Server 2012 T-SQL 新特性
  10. 轻轻松松的记住Linux系统目录结构
  11. origin游戏下载一直显示准备中的解决方法
  12. sockscap+Bitvise Tunnelier 做内网渗透
  13. 干了十多年SAP顾问,聊聊从SAP最佳业务实践看企业管理
  14. Java字符流拷贝/复制文本文件,字节流拷贝文本文件乱码,很经典简便
  15. 【软件工具】--- 软件安装管家目录
  16. Java抽象类与接口详解
  17. 设计模式03 行为型模式
  18. 影视账号涨粉10w,反套路营销获赞百万,小红内容趋势是什么?
  19. 秋招冲刺:网络安全工程师入围成功之旅!!
  20. 《数据库系统概论》学习总结

热门文章

  1. 浅谈“自动化技术对世界的影响”
  2. 全国计算机等级三级Linux应用与开发技术考试大纲(2021年版)
  3. swoole入门4-初识swoole
  4. mongodb启动成功连不上_mongoDB启动服务提示已存在连接的问题
  5. 常用的simulink控制工具箱的函数
  6. vim编译器替换命令
  7. 破圈冲刺,零跑、哪吒低端电动车品牌,未来破局的关键在农村?
  8. Java 程序员这个职业赚钱吗?能赚多少钱?
  9. QLExpress规则引擎介绍
  10. python分支语句