У всех нас есть пользователь, которому нужен доступ только к определенному диапазону IP-адресов в сети, где у всех есть доступ к Интернету, поэтому...
# IP вперед
эхо "1" > /proc/sys/net/ipv4/ip_forward
# Очистка
iptables-F
iptables -X
iptables -F -t физ
iptables -X -t физ
# Давай бросим
iptables -P ВХОД DROP
iptables -P ВЫХОД DROP
iptables -P ПЕРЕДАЧА.
iptables -A INPUT -m состояние --state УСТАНОВЛЕНО,СВЯЗАННО -j ПРИНЯТЬ
iptables -A ВЫВОД -m состояние --state УСТАНОВЛЕНО,СВЯЗАННО,НОВОЕ -j ПРИНЯТЬ
iptables -A ВПЕРЕД -m состояние --state УСТАНОВЛЕНО,СВЯЗАННО,НОВОЕ -j ПРИНЯТЬ
# Маскировка
iptables -A POSTROUTING -t nat -o $IF_EXTERNAL -j MASQUERADE
# РАЗРЕШИТЬ ТОЛЬКО СПИСОК ДОСТУПА К 192.168.10.10 ОСТАЛЬНЫЙ ИНТЕРНЕТ БЛОКИРОВАН
ALLOW_IP_RANGE="8.8.4.0/24 8.8.8.0/24 8.34.208.0/20 8.35.192.0/20 23.236.48.0/20"
iptables -N РАЗРЕШИТЬ РАЗРЕШЕНИЕ
для IPLIST в $ALLOW_IP_RANGE; делать
iptables -I FORWARD -m tcp -p tcp --destination $IPLIST -j ALLOWEDIPS
сделано
iptables -I ALLOWEDIPS -s 192.168.10.10 -j ПРИНЯТЬ
iptables -A ВПЕРЕД -s 192.168.10.10 -j ОТКЛОНИТЬ
# Перенаправить остальную часть Интернета всем остальным
iptables -A FORWARD -i @IF_INTERNAL -j ПРИНЯТЬ
Это не работает, и я попытался переместить:
iptables -A ВПЕРЕД -s 192.168.10.10 -j ОТКЛОНИТЬ
от начала до конца, но IP все равно получает полный интернет.