我的网络中有一台本地机器,我192.168.0.30
在ssh
我port 12121
的sshd_config
文件中设置。
我对以下内容进行了更改iptables
:
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 12121 -j ACCEPT
/sbin/iptables -P INPUT DROP
所以我的机器从现在开始只接受输入port 12121
,这个工作我可以通过 ssh 进入它
在这台机器上,我运行一个autossh script
from a service
,以便remote port forwarding
从外部访问。
我的脚本中的命令:
/usr/bin/autossh -f -NT -o "ExitOnForwardFailure=yes" -R 20000:localhost:12121 \
-l [REMOTE-USER] [REMOTE-IP] -p 11111 -i [REMOTE-KEY]
当我尝试连接时它不起作用,正常我只接受12121
iptables
所以我将它添加到我的 iptables 中:
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 20000 -j ACCEPT
即使我不需要这个,因为它是远程机器的输入端口:
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 11111 -j ACCEPT
本地 ssh 不能远程 ssh。
当我检查我的服务时:
systemctl status mysshservice
我看到了所有内容exited status codes
,并且restart
从服务中看到了我的autossh
命令和我的选项,但我确实看到第二行带有-L
一个不同的端口,autossh
就像48328
我做的那样。
/sbin/iptables -A INPUT -i eth0 -p tcp --dport 48328 -j ACCEPT
现在我可以再次从外部 ssh。
我现在有 2 个关于iptables
.
是否可以按名称接受服务,而没有像
ACCEPT ALL SSH CONNECTIONS
?这样的给定端口,所以只有 ssh 可以在没有我需要的ACCEPT
情况下工作。PORT
我的问题是远程端口每天都在变化,所以我必须生成新的ACCEPT RULES every day
.
当我使用 autossh 时,do i need a script to grep/awk/sed
是否-R and -L ports every day
有其他解决方案?
您可以使用服务名称,
/etc/services
但在内部iptables
使用port numbers
, 仅从该文件翻译,因为tcp/udp
协议标头使用数字而不是字符串作为端口。此外,所有端口号都没有名称,因为服务名称只是惯例http://www.iana.org/assignments/port-numbers
此外,a 一次
service name
仅锚定到一个端口号。它不能按您的意愿工作。