iptables проброс порта 2 провайдера
Требуется открыть доступ к одному из компьютеров в локальной сети снаружи.
Поставил VNC на оффтопик и прописал iptables отправление пакетов с сервера на локальный хост.
Которые жирным, те добавил.
С локалки все работает. Когда пробую снаружи, пакет не перенаправляется. Приходит на внешний интерфейс и все.
То есть в первом случае в браузере указываю http://x.x.x.x:5800 и оно работает
когда пытаюсь снаружи wget http://x.x.x.x:5800
получаю
Connecting to 212.57.145.18:5800...
и висит.
Еще один момент, который я не упомянул.
Может быть дело в нем и поэтому не работает.
внешний ip указан один, а routing на сервере настроен через другой интерфейс, когда он обратно будет отдавать не запутается?
смотрел tcpdump и точно, дальше не идет.
Как отладить а еще лучше подскажите что исправить, не пойму что неправильно сделал.
Могу все убрать и поставить рабочие правила если у кого есть и лень разбираться.
Пожжалуйста помогите!!
mail# iptables-save # Generated by iptables-save v1.4.0 on Fri Feb 13 13:36:39 2009 *nat :PREROUTING ACCEPT [4795314:261225744] :POSTROUTING ACCEPT [7010315:506903079] :OUTPUT ACCEPT [11925079:859297137] -A PREROUTING -d x.x.x.x/32 -p tcp -m tcp --dport 5900 -j DNAT --to-destination 192.168.3.7 -A PREROUTING -d x.x.x.x/32 -p tcp -m tcp --dport 5800 -j DNAT --to-destination 192.168.3.7 -A PREROUTING -s 192.168.3.0/27 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128 -A POSTROUTING -d 192.168.3.7/32 -p tcp -m tcp --dport 5900 -j SNAT --to-source 192.168.3.1 -A POSTROUTING -d 192.168.3.7/32 -p tcp -m tcp --dport 5800 -j SNAT --to-source 192.168.3.1 -A POSTROUTING -o usi -j MASQUERADE -A POSTROUTING -o tunusi -j MASQUERADE -A OUTPUT -d x.x.x.x/32 -p tcp -m tcp --dport 5800 -j DNAT --to-destination 192.168.3.7 -A OUTPUT -d x.x.x.x/32 -p tcp -m tcp --dport 5900 -j DNAT --to-destination 192.168.3.7 COMMIT # Completed on Fri Feb 13 13:36:39 2009 # Generated by iptables-save v1.4.0 on Fri Feb 13 13:36:39 2009 *filter :INPUT ACCEPT [95520328:95028101274] :FORWARD DROP [9228:413226] :OUTPUT ACCEPT [192904730:79386293631] -A INPUT -d x.x.x.x/32 -p tcp -m tcp --dport 5800 -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -i local -j ACCEPT -A INPUT -i ! local -p tcp -m tcp --dport 0:1023 -j DROP -A INPUT -i ! local -p udp -m udp --dport 0:1023 -j DROP -A FORWARD -i tunusi -o local -j ACCEPT -A FORWARD -i local -o tunusi -j ACCEPT -A FORWARD -d 192.168.3.7/32 -p tcp -m tcp --dport 5800 -j ACCEPT -A FORWARD -s 192.168.3.7/32 -p tcp -m tcp --sport 5800 -j ACCEPT -A FORWARD -s 192.168.3.7/32 -p tcp -m tcp --sport 5900 -j ACCEPT -A FORWARD -d 192.168.3.7/32 -p tcp -m tcp --dport 5900 -j ACCEPT -A FORWARD -d 192.168.3.0/27 -i local -j DROP -A FORWARD -s 192.168.3.0/27 -i local -j ACCEPT -A FORWARD -d 192.168.3.0/27 -i usi -j ACCEPT COMMIT # Completed on Fri Feb 13 13:36:39 2009
- Для комментирования войдите или зарегистрируйтесь
-A PREROUTING -d x.x.x.x/32
пакет отправляется снаружи на локальный хост.
принимается решение о маршруте
пакет идет с локального адреса сервера
а это на случай отправки пакета с сервера
это по идее лишнее - политика ACCEPT
разрешаем транзит пакета до локального хоста и с локального хоста по номеру порта.
У меня глаза замыты, вроде все по инструкции сделал - но не работает.
Может какие-то правила выполняются раньше или до них не доходит - подскажите, что делать?
Анализировать всё лениво но
Анализировать всё лениво но ошибки очевидны
Как должно было быть
1) -t nat PREROUTING -d my.inet.ip.addr -p tcp --dport 5800 -j DNAT --to-destination 192.168.3.7
После этого пакет с инет имеет адрес отправителя инетовский адрес и адрес получателя - локальный адрес 3.7
2) FORWARD -d 192.168.3.7 -p tcp --dport 5800 -j ACCEPT
это правило пропустит пакет с адресом получаетя 3.7
Далее клиент примет пакет, отошлет ответный на адрес с инет адресом. ты должен его корректно занатить назад. для этого должно быть
1)-t nat POSTROUTING -s 192.168.3.7 -j SNAT --to-source my.inet.ip.addr
2)FORWARD должен пропускать ответные пакеты. Не уверен, но по-моему -m state --state ESTABLISHED должно быть достаточно. но думай какие порты в таком случае нужно указывать, тут уже
FORWARD -p tcp --sport 5800 -s 192.168.3.7 -j ACCEPT (а не dport, как у тебя написано)
этого должно быть достаточно. проверь чтоб форвардинг был включен
Сделал работу над ошибками не помогло
Это есть
а я добавил
POSTROUTING -d 192.168.3.7 -j SNAT --to-source my. local .ip.addr
чтобы в пакете поменялось src снаружи<=>192.168.3.1 dst (мой внешний)<=>192.168.3.7
иначе с локальной сети не будет работать.
Попробовал поменять local на inet не помогло.
Ему недостаточно.
mail ~ # lynx 192.168.3.7:5800
mail ~ # lynx x.x.x.x:5800
с сервера работает нормально.
С локальной сети работает.
Снаружи не идет FORWARD.
Там 4 правила - есть dport и sport, смотрите выше написано также. И без -m state --state ESTABLISHED то есть точно должно работать.
форвардинг включен - потому что в локалке работает.
не отправляется пакет, который пришел снаружи.
Еще один момент, который я не упомянул.
Может быть дело в нем и поэтому не работает.
внешний ip указан один, а routing на сервере настроен через другой интерфейс, когда он обратно будет отдавать не запутается?