IPTABLES 是否可以通過 NAME (如 ssh)或僅通過 PORT 接受服務?
我的網路中有一臺本地機器,我
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 aservice
,以便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
僅錨定到一個埠號。它不能按您的意願工作。