uscr 18.02.2011 17:54
Есть проблема! — [РЕШЕНО] Iptables виноват?
Здравствуйте. Буду краток. Есть debian 6. Нужно сделать из него шлюз.eth1 - 192.168.0.254/24
eth2 - 192.168.1.1/24
Пишу скрипт с правилами:
eth1 смотрит во "внешку" (на время теста в офисную сеть).
В eth2 втыкаю ноут. 192.168.1.1 с ноута пингуется, а 8.8.8.8, например, нет.
С самой машинки всё работает исправно.
P.S.
route -n
cat /proc/sys/net/ipv4/ip_forward показывает "1".
Скрипт взял отсюда, исправив в нём ряд очевидных ошибок.
Как быть?
Решение:
Я не первый раз задаю вопросы здесь, в которых спрашиваю элементарные вещи. Как правило, решением является "выспаться" или на худой конец "выпить кофе". В данном случае у ноутбука стоял адрес 192.168.1.1. После установки корректного адреса всё заработало.
ребят, пожалуйста, поясните тайный смысл этой строчки. "не пускать наружу трафик, который пришел снаружи"?
iptables -A FORWARD -i eth1 -o eth1 -j REJECT
в случае, если интерфейс получения eth1 и исходящий интерфейс eth1 отказать в прохождении.Вроде так переводится. А вот смысла в таком правиле я не вижу и прошу объяснить.
в случае, если интерфейс получения eth1 и исходящий интерфейс eth1 отказать в прохождении.Вроде так переводится. А вот смысла в таком правиле я не вижу и прошу объяснить.
Что то я не понял.
у тебя твоя машина имеет адрес wan 192.168.0.1, правильно?
Исходя из route -n шлюз у тебя тоже 192.168.0.1
Т.е. Сам для себя шлюз. Если так, то действительно, ничего работать не будет, пропиши шлюз по умолчанию, который у тебя в офисе.
у тебя твоя машина имеет адрес wan 192.168.0.1, правильно?
Исходя из route -n шлюз у тебя тоже 192.168.0.1
Т.е. Сам для себя шлюз. Если так, то действительно, ничего работать не будет, пропиши шлюз по умолчанию, который у тебя в офисе.
я к тому, что сначала нужно его включить, а только потом ставить маскарад
Бросай костыли, есть отличный готовый скрипт. Просто правишь его и кидаешь запуск в /etc/rc.local
У меня дома вот так, все работает.
iptables -t nat -F POSTROUTING
iptables -t nat -A POSTROUTING -s $P0_NET -o $IF1 -j SNAT --to-source $IP_GATEWAY
Где $P0_NET - локальная сеть, $IP_GATEWAY - ip адрес твоей внешней карточки.
Дальше уже можно накручивать всякие прибомбасы для безопасности.
iptables -t nat -F POSTROUTING
iptables -t nat -A POSTROUTING -s $P0_NET -o $IF1 -j SNAT --to-source $IP_GATEWAY
Где $P0_NET - локальная сеть, $IP_GATEWAY - ip адрес твоей внешней карточки.
Дальше уже можно накручивать всякие прибомбасы для безопасности.
что-то мне подсказывает, что
должно хватить. а может и нет ;)
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE
должно хватить. а может и нет ;)
Почему? Что вы понимаете под "статикой". В боевом варианте адреса будут по DHCP, если вы об этом.
Нельзя. В холодную воду нужно с разбегу.
Да и потом я не могу назвать себя "начинающим" в вопросах настройки фаерволла. Просто я до этого только с ipfw дело имел.
Да и потом я не могу назвать себя "начинающим" в вопросах настройки фаерволла. Просто я до этого только с ipfw дело имел.
Если вы незнакомы с iptables и вам нужен результат, то используйте готовые решения. Посмотреть и по изучать текущие правила можно выгрузив их через iptables-save.
Чуть попозже, могу скинуть пример как можно просто и изящно все настроить с помощью firehol.
Чуть попозже, могу скинуть пример как можно просто и изящно все настроить с помощью firehol.
Тогда уж реквестирую полноценную статью. Только полноценную, а не "Установите firehol. Теперь напишите нужные правила. Видите как всё просто?!".
Вы раз решили задачку, то оформите пожалуйста решение в пост, чтобы потом народ в поисках решения не лазил по куче комментариев.
# Don't forward from the outside to the inside.
iptables -A FORWARD -i eth1 -o eth1 -j REJECT
А у вас написано:
Don't forward from the outside to the inside.
iptables -A FORWARD -i eth1 -o eth2 -j REJECT
Пакеты из инета вообще в локалку не попадают. В инет уходят а обратно их не пускают...