В чем разница между этими двумя или они по сути одно и то же?
iptables -t filter -A FORWARD -s $EXTERNALNET -d $INTERNALNET -p tcp --dport 22 -j ACCEPT
iptables -t filter -A FORWARD -s $INTERNALNET -d $EXTERNALNET -p tcp --sport 22 -j ACCEPT
Первое правило принимает трафик, перенаправляемый от $EXTERNALNET
к $INTERNALNET
с участием место назначения порт 22 / TCP.
Второе правило принимает трафик, пересылаемый от $INTERNALNET
к $EXTERNALNET
с участием источник порт 22 / TCP.
В правильной конфигурации брандмауэра с отслеживанием состояния, такого как iptables, не должно быть необходимости в правилах, разрешающих трафик на основе исходного порта, поскольку разрешены оба направления правильно установленных TCP-потоков. В противном случае могут возникнуть бреши в безопасности - в данном случае разрешен весь исходящий трафик, если он имеет порт источника 22 / tcp.
Приведенный пример с конфигурацией без сохранения состояния, вероятно, является лучшим из возможных.
-s - источник, а -d - место назначения, поэтому эти правила относятся к потоку трафика в любом направлении.
$ INTERNALNET и $ EXTERNALNET - это переменные, скорее всего, из подсети или сетевого диапазона. Я предполагаю, что это из сценария bash, который у вас где-то есть?
--dport 22 ACCEPT
Эта директива указывает брандмауэру разрешить трафик, предназначенный для порта 22, проходить на ваш сервер.
--sport 22 ACCEPT
Эта директива сообщает брандмауэру разрешить трафик, отправленный с порта 22 внешних машин, проходить на ваш сервер.