svn 通过127.0.01能访问 但通过公网IP不能访问,这是什么原因?
连接失败的提示如下
1、SVN的启动方法
方法一:
svnserve -d -r /mnt/svn
方法二:
svnserve -d --listen-port 3690 -r /mnt/svn
方法三:
svnserve -d -r /mnt/svn --listen-host 0.0.0.0
2、首先检查svn服务器是否启动
方法一:
netstat -tunlp | grep svn
演示如下
如上状态,说明已启动
方法二:
svnserve --version
演示如下:
方法三:
直接本地拉一个项目试下,命令如下:
svn checkout svn://127.0.0.1/51daimajz/pc ./
本地可以拉取,但换成外网的IP就不行了,这可能是防火墙的问题
3、检查防火墙状态
方法一:
sudo systemctl status firewalld
如果防火墙正在运行,输出中会显示Active: active (running)
;如果防火墙未运行,输出中会显示Active: inactive (dead)
。
方法二:
sudo firewall-cmd --state
此命令会直接返回running
(运行中)或not running
(未运行)。
4、启动、停止和重启防火墙
启动防火墙:
sudo systemctl start firewalld
停止防火墙:
sudo systemctl stop firewalld
重启防火墙:
sudo systemctl restart firewalld
设置防火墙开机自启:
sudo systemctl enable firewalld
禁止防火墙开机自启:
sudo systemctl disable firewalld
开放端口
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
--zone=public:指定防火墙区域为public,这是最常用的区域。
--add-port=80/tcp:表示开放TCP协议的80端口。如果是UDP端口,将/tcp替换为/udp。
--permanent:表示此配置会永久保存,下次重启防火墙后依然生效。
配置完成后,需要重新加载防火墙规则:
sudo firewall-cmd --reload
关闭端口
关闭某个端口的命令与开放端口类似,只需将--add-port
替换为--remove-port
:
sudo firewall-cmd --zone=public --remove-port=80/tcp --permanent
sudo firewall-cmd --reload
查看开放的端口
使用以下命令查看当前开放的端口:
sudo firewall-cmd --zone=public --list-ports
开放服务
除了开放端口,还可以直接开放预定义的服务。例如,开放SSH服务:
sudo firewall-cmd --zone=public --add-service=ssh --permanent
sudo firewall-cmd --reload
查看当前开放的服务:
sudo firewall-cmd --zone=public --list-services