升级到 Fedora 18 后,Synergy 键盘共享系统默认被阻止。罪魁祸首是防火墙,它欣然忽略了我之前在 Fedora GUI 中所做的设置,并由 iptables 支持。
~]$ ps aux | grep firewall
root 3222 0.0 1.2 22364 12336 ? Ss 18:17 0:00 /usr/bin/python /usr/sbin/firewalld --nofork
david 3783 0.0 0.0 4788 808 pts/0 S+ 20:08 0:00 grep --color=auto firewall
~]$
好的,那么如何解决这个问题呢?我这样做sudo killall firealld
了几个星期,但每次重启时都很烦人。是时候寻找一些线索了。有几个单行代码,但对我不起作用。他们不停地吐出帮助文本。例如:
~]$ sudo firewall-cmd --zone=internal --add --port=24800/tcp
[sudo] password for auser:
option --add not a unique prefix
此外,声称此命令有效的帖子也指出它是临时的,无法在重启后继续存在。我最终在配置目录中添加了一个文件,以便在启动时加载。
有人能看看这个并看看我是否遗漏了什么吗?虽然 synergy 有效,但当我运行 list 命令时,我没有得到任何结果:
~]$ sudo firewall-cmd --zone=internal --list-services
ipp-client mdns dhcpv6-client ssh samba-client
~]$ sudo firewall-cmd --zone=internal --list-ports
~]$
答案1
看完man firewall-cmd
我就跑;
sudo firewall-cmd --permanent --add-port=24800/tcp
重启对我来说很有效
答案2
这是使用firewalld打开端口的方法。我没有找到像旧防火墙程序那样的GUI,并且意识到firewalld忽略了我之前的协同规则。
Firewalld 安装了一些默认配置文件,可用于允许服务或端口通过系统。
~]$ sudo ls -l /usr/lib/firewalld/zones
total 36
-rw-r-----. 1 root root 256 Feb 20 10:37 block.xml
-rw-r-----. 1 root root 293 Feb 20 10:37 dmz.xml
-rw-r-----. 1 root root 226 Feb 20 10:37 drop.xml
-rw-r-----. 1 root root 319 Feb 20 10:37 external.xml
-rw-r-----. 1 root root 400 Feb 20 10:37 home.xml
-rw-r-----. 1 root root 415 Feb 20 10:37 internal.xml
-rw-r-----. 1 root root 340 Feb 20 10:37 public.xml
-rw-r-----. 1 root root 179 Feb 20 10:37 trusted.xml
-rw-r-----. 1 root root 367 Feb 20 10:37 work.xml
我决定试用一下 internal.xml,将它从安装目录复制到 /etc/firewalld/ 中的加载目录,然后对其进行编辑以添加我的端口以实现协同作用。
~]$ sudo cp /usr/lib/firewalld/zones/internal.xml /etc/firewalld/zones
~]$ sudo vi /etc/firewalld/zones/internal.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Internal</short>
<description>For use on internal networks. You mostly trust the other computers
on the networks to not harm your computer. Only selected incoming connections
are accepted.</description>
<service name="ssh"/>
<service name="ipp-client"/>
<service name="mdns"/>
<service name="samba-client"/>
<service name="dhcpv6-client"/>
<port port="24800" protocol="tcp"/> <-- Here is my addition.
</zone>
我保存了文件,重新启动了防火墙,然后我的协同应用程序重新上线。
~]$ sudo service firewalld restart
我并不经常使用其他服务,但我确实在这里有共享文件夹,并且可能偶尔登录一次,所以我没费心删除其他服务。
为了使其坚持下去,我还将firewalld.conf默认设置为内部。
~]$ sudo vi /etc/firewalld/firewalld.conf
# firewalld config file
# default zone
# The default zone used if an empty zone string is used.
# Default: public
DefaultZone=internal <-- changed this line
总而言之,我认为这是一个相当容易编辑的配置。对于像我这样的新手来说,比 iptables 规则更容易理解。
我希望它能帮助您熟悉新版 Fedora。
更新:事实证明我输入了错误的添加命令。要使用临时添加端口或服务,请按如下方式操作:
~]$ sudo firewall-cmd --add-port=24800/tcp
~]$ sudo firewall-cmd --list-all
internal
interfaces: eth0
services: ipp-client mdns dhcpv6-client ssh samba-client
ports: 24800/tcp
forward-ports:
icmp-blocks:
您想要添加的内容,以 - 结尾附加到 --add 命令中。
现在我在手册页中还看到了一个永久选项。所以我尝试了一下:
~]$ sudo firewall-cmd --permanent --add-port=24800/tcp
~]$ sudo firewall-cmd --complete-reload
~]$ sudo firewall-cmd --list-all
internal
interfaces: eth0
services: ipp-client mdns dhcpv6-client samba-client ssh
ports: 24800/tcp
forward-ports:
icmp-blocks:
到目前为止一切顺利。重启后,我将看到我拥有的内容。同时,我发现区域目录中发生了变化:
~]$ sudo ls /etc/firewalld/zones
internal.xml internal.xml.old
~]$ sudo cat /etc/firewalld/zones/internal.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Internal</short>
<description>For use on internal networks. You mostly trust the other computers on the networks to not harm your computer. Only selected incoming connections are accepted.</description>
<service name="ipp-client"/>
<service name="mdns"/>
<service name="dhcpv6-client"/>
<service name="samba-client"/>
<service name="ssh"/>
<port protocol="tcp" port="24800"/>
</zone>