1

У меня есть iptables, работающий на хосте (действующем как брандмауэр) в пространстве имен Linux только с одним сетевым интерфейсом: h2-eth1 (имеет IP-адрес и MAC-адрес)

Я настроил свой коммутатор для пересылки всех пакетов в брандмауэр, а пакеты возвращаются из брандмауэра во внутреннюю сеть. Теперь я перехожу к простой проверке работоспособности, чтобы посмотреть, все ли работает. Я запускаю эти команды на брандмауэре:

$sudo bash -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'
$iptables -P INPUT ACCEPT
$iptables -P FORWARD DROP
$iptables -P OUTPUT ACCEPT

$iptables -F INPUT 
$iptables -F FORWARD 
$iptables -F OUTPUT 
$iptables -F -t nat

$iptables -A FORWARD -i h2-eth1 -o h2-eth1 -j ACCEPT

Теперь я пингую внутренний хост снаружи. Я вижу, что ICMP-пакеты идут к брандмауэру, но от него не возвращаются Итак, я запустил iptables -nvL на брандмауэре и вижу, что все таблицы (INPUT, OUTPUT и FORWARD) имеют количество пакетов 0. Итак, пакеты не достигают iptables, потому что они не соответствуют IP-адресу NIC? Как мне это исправить?

1 ответ1

0

Установив DNAT. Все, что вы делаете в данный момент, это все передаете в цепочку INPUT вашего брандмауэра. Вы не можете просто "пропинговать внутренний хост извне", потому что снаружи ничего не знает о внутренней сети, потому что внутренние адреса не являются общедоступными.

Пример: размещение веб-сервера в локальной сети, которую вы хотите видеть в глобальной сети (Интернет)

iptables -t nat -A PREROUTING -p tcp -d <FIREWALL EXTERNAL IP> --dport 80 -j DNAT --to-destination <INTERNAL HOST IP>:80

Это создаст впечатление, что брандмауэр размещает веб-сервер, но на самом деле он перенаправляет все на внутренний сервер. Это необходимо сделать для каждой службы и протокола, которые вы хотите переслать во внутреннюю сеть.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .