Есть две машинки. Одна: вин98 ip 192.168.1.36
Другая --- линукс. На линухе две сетевухи:
0. eth0 ip 192.168.1.33 соединена с adsl модемом, настроенным каk
роутер. ip модема 192.168.1.32
1. eth1 ip 192.168.1.35 соединена с виндовой сетевухой.
Включаю маскарадинг
iptables -A FORWARD -i eth0 -m state --state NEW,INVALID -j REJECT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -P FORWARD ACCEPT
echo "1" >! /proc/sys/net/ipv4/ip_forward
Подсоединяюсь к сети
ifconfig eth0 down
ifconfig eth1 down
ifconfig eth1 up 192.168.1.35
ifconfig eth0 up
dhcpcd -dnCRYN eth0
route add default gw 192.168.1.32 eth0
В результате на линухе сеть есть. Винда пингует eth0 и eth1,
но если с винды пинговать внешний ip, то получаю сообщение
Ответ от 192.168.1.35: Заданный порт недоступен. Где глюк?
Попробовал развести интерфейсы по разным подсетям.
Теперь модем --- 192.168.2.1, а eth0 --- 192.168.2.2
После этого поднимаю сеть так:
# echo "1" >! /proc/sys/net/ipv4/ip_forward
# ifconfig eth0 down
# ifconfig eth1 down
# ifconfig eth1 up 192.168.1.35
# ifconfig eth0 up
# dhcpcd -dnCRYN eth0
# route add default gw 192.168.2.1 eth0
Результат тот же. Тоесть пинг с виндовой машинки на внешний ip выдаёт: ,,Ответ от 192.168.1.35: Заданный порт недоступен".
Если же сказать
# route add -net 192.168.1.0/24 gw 192.168.2.2 eth0
То ничего вообще не пингуется. ;(
А какой дистрибутив и какие стоят еще правила в iptables?
У меня, к примеру, ничего не получалось пока использовал Федору. Судя по всему мешались дефолтные РедХатовские настройки фаервола.
Как только перешёл на слаку все заработало в 2 строчки.
первая разрешает форвардинг (если не глючу:
echo "1" >/proc/sys/net/ipv4/ip_forward
)
а вторая добавляет правило на НАТ'инг (опять же, если не глючу:
iptables -t nat -A POSTROUTING -o $IF_INET -j SNAT --to-source $IP_INET
)
Ну и естейственно не забыть проверить таблицу маршрутизации на серваке и виндовой машинке (дефолтные роутеры и т.п.)
Не совсем так. Внешний IP может быть и фальшивым 192.168.х.х, если пров сам активно юзает SNAT. Есно, этот "внешний" адрес должен не попадать в диапазон "внутренних"
Здесь же - таки да, конкретная ошибка: автор не вкурил, что в --to-source надо указывать именно "внешний" IP.