У меня есть топология, где Linux является маршрутизатором, который соединяет два Linux, и я хочу использовать iptables для фильтрации ssh и HTTP в одном направлении. Я использовал код ниже, но он не работает! Я действительно ценю любую помощь, которую вы можете оказать.
iptables -A FORWARD -i ens33 -o ens38 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i ens38 -o ens33 -p tcp --sport 80 -j ACCEPT
iptables -A FORWARD -i ens38 -o ens33 -p tcp --dport 80 -j DROP
решение1
Ваш скрипт должен работать для http, но он не очень хорош. Я бы использовал что-то вроде этого:
IPTABLE=/sbin/iptables
$IPTABLE -P INPUT ACCEPT
$IPTABLE -P FORWARD DROP
$IPTABLE -P OUTPUT ACCEPT
$IPTABLE -F
$IPTABLE -X
$IPTABLE -F -t nat
$IPTABLE -X -t nat
$IPTABLE -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
#http
$IPTABLE -A FORWARD -i ens33 -o ens38 -p tcp --dport 80 -j ACCEPT
#https
$IPTABLE -A FORWARD -i ens33 -o ens38 -p tcp --dport 443 -j ACCEPT
# ssh
$IPTABLE -A FORWARD -i ens33 -o ens38 -p tcp --dport 22 -j ACCEPT
# icmp
$IPTABLE -A FORWARD -p icmp -j ACCEPT
После того, как правила заработали, я рекомендую сделать iptables-save > /etc/iptables/rules.v4
. С iptables-persistent
пакетом правила загружаются при загрузке.
В дополнение к правилам iptables вам нужно
- На вашем шлюзе включена IP-переадресация.
- маршрут для внешней сети на вашем внутреннем хосте
- маршрут для внутренней сети на вашем внешнем хосте