Назад | Перейти на главную страницу

Ограничение исходного IP-адреса с помощью пересылки в iptables на CentOS 7 не работает

У меня есть машина CentOS 7 с настройкой единого интерфейса с NAT. У меня есть машина с Windows 8.1 с одним интерфейсом в качестве клиента NAT. Обе машины находятся в одной IP-сети.

Ниже приведены соответствующие записи iptables.

Конфиг 1 (рабочий)

-A POSTROUTING -o eth0 -j MASQUERADE
-A FORWARD -i eth0 -j ACCEPT

Конфиг 2 (рабочий)

-A POSTROUTING -o eth0 -j MASQUERADE
-A FORWARD -s 0.0.0.0/0 -i eth0 -j ACCEPT

Конфиг 3 - желаемый конфиг (не работает)

-A POSTROUTING -o eth0 -j MASQUERADE
-A FORWARD -s x.x.x.x/32 -i eth0 -j ACCEPT

Конфиг 1 и 2 работает. И whatismyipaddress.com показывает адрес NAT-машины из браузера на машине Win8.1. Итак, я знаю, что NAT работает, и этот шлюз и т. Д. Правильно настроен на машине Win8.1.

Но когда я пытаюсь ограничить исходный IP-адрес в соответствии с конфигурацией 3, я теряю Интернет на машине Win8.1. И, да, я уверен, что исходный IP-адрес правильный.

Любые идеи? Нужна дополнительная информация?

-A FORWARD -s x.x.x.x/32 -i eth0 -j ACCEPT

Это означает, что x.x.x.x IP-адрес будет разрешен для пересылки из Интернета eth0.

+ Изменить eth0 к интерфейсу, который подключен к вашей локальной сети. Таблица пересылки применяется перед таблицей постмаршрутизации.

Если в случае 3 вашей политикой FORWARD является DROP, вы не разрешаете пересылать возвращаемый поток обратно на клиентский компьютер. Я бы сказал добавить -A FORWARD -d x.x.x.x/32 -j ACCEPT . Я не могу быть уверенным, не зная всех ваших правил.

И, кстати, использовать только один интерфейс - не лучшая идея, но вы уже должны это знать.