Друзья выручайте.Ситуация такая: Поменял материнскую плату на Убунту сервер. Все заработало кроме проброса портов, которые работают как то не так как нужно.
На сервере настроен NAT, на натом стоит сервер с RDP, на него делался проброс портов.
Делалось это так:
sudo iptables -A FORWARD -i eth0 -p tcp --dport 3389 -j ACCEPT
sudo iptables -t nat -A PREROUTING -p tcp -d 123.123.123.123 --dport 3389 -j DNAT --to-destination 192.168.0.100:3389
sudo iptables -t nat -A POSTROUTING -p tcp --dst 192.168.0.100 --dport 3389 -j SNAT --to-source 123.123.123.123Теперь ситуация такая что если из под нат постучаться на внешний адрес 123.123.123.123 и порт 3389 то все работает. А если сделать это снаружи то нет.
Если запустить tcpdump и послушать - то при подключении изнутри пакеты бегают, а при подключении снаружи запрос проиходит и далее во внутрь нет.
14:56:26.793428 IP 46.211.146.228.18598 > 123.123.123.123.3389: Flags [S], seq 1191622352, win 65535, options [mss 1410,nop,wscale 4,nop,nop,TS val 193727049 ecr 0,sackOK,eol], length 0
Подобную тему тут на форуме поднимал пользователь, но решения нет. Но ему написали интересное замечание, какое касается видно и меня.
Ему написали:
"> -A FORWARD -i eth0 -p tcp -m tcp --dport 8000 -j ACCEPT
но в форварде нет разрешающего правила , которое бы разрешало трафик извне на внутренний ip/порт"
У меня такое же правило судя по iptables-save:
# Generated by iptables-save v1.4.21 on Sun Mar 22 15:01:20 2015
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -m state --state NEW -j ACCEPT
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 1234 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 2345 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p gre -j ACCEPT
-A INPUT -p tcp -m tcp --dport 1723 -j ACCEPT
-A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth1 -o eth0 -j ACCEPT
-A FORWARD -i eth0 -o eth1 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -p udp -m udp --sport 1701 -j ACCEPT
-A FORWARD -i eth0 -p tcp -m tcp --dport 3389 -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -p gre -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -j ACCEPT
COMMIT
# Completed on Sun Mar 22 15:01:20 2015
# Generated by iptables-save v1.4.21 on Sun Mar 22 15:01:20 2015
*mangle
:PREROUTING ACCEPT [1164363:1182988541]
:INPUT ACCEPT [1120962:1154843012]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [568929:549337025]
:POSTROUTING ACCEPT [612457:577497932]
-A FORWARD -j ACCEPT
COMMIT
# Completed on Sun Mar 22 15:01:20 2015
# Generated by iptables-save v1.4.21 on Sun Mar 22 15:01:20 2015
*nat
:PREROUTING ACCEPT [61:7854]
:INPUT ACCEPT [61:7854]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -d 123.123.123.123/32 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.100:3389
-A POSTROUTING -o eth0 -j MASQUERADE
-A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
-A POSTROUTING -d 192.168.0.100/32 -p tcp -m tcp --dport 3389 -j SNAT --to-source 123.123.123.123
COMMIT
# Completed on Sun Mar 22 15:01:20 2015
Друзья выручайте.
sysctl -a |grep forward?
> sysctl -a |grep forward
> ?Если честно у меня только что сдали уже нервы и я не стал продолжать эксперименты так как утром нужна рабочая система и поставил старую плату назад. И все заработало.
Смотрите еще какая ситуация.
На старой плате у меня было 3 сетевые карты. Этот сервер на который делался проброс висел на одной из них и небыл доступен из офиса. Только снаружи. А в новой материнской плате только одно гнездо посадочное для сетевой, итого карт стало две. Изначально я сделал виртуальный интерфейс, и все стало визуально как было. На сервере RDP появился интернет, заработал проброс (как потом выяснилось только для меня). Потом я этот виртуальный интерфейс удалил, сервер перевел в туже подсеть, где нашел в настройка iptables поменял все упоминания на новый адрес. И опять же все заработало только для меня.
Сейчас я вернул все назад, чтоб уже не рисковать сегодня. И оно без проблем заработало моментально.
Ответ то что вы просили на данный момент:
net.ipv4.conf.all.forwarding = 1
net.ipv4.conf.all.mc_forwarding = 0
net.ipv4.conf.default.forwarding = 1
net.ipv4.conf.default.mc_forwarding = 0
net.ipv4.conf.eth0.forwarding = 1
net.ipv4.conf.eth0.mc_forwarding = 0
net.ipv4.conf.eth1.forwarding = 1
net.ipv4.conf.eth1.mc_forwarding = 0
net.ipv4.conf.eth2.forwarding = 1
net.ipv4.conf.eth2.mc_forwarding = 0
net.ipv4.conf.lo.forwarding = 1
net.ipv4.conf.lo.mc_forwarding = 0
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
net.ipv6.conf.all.mc_forwarding = 0
net.ipv6.conf.default.forwarding = 1
net.ipv6.conf.default.mc_forwarding = 0
net.ipv6.conf.eth0.forwarding = 1
net.ipv6.conf.eth0.mc_forwarding = 0
net.ipv6.conf.eth1.forwarding = 1
net.ipv6.conf.eth1.mc_forwarding = 0
net.ipv6.conf.eth2.forwarding = 1
net.ipv6.conf.eth2.mc_forwarding = 0
net.ipv6.conf.lo.forwarding = 1
net.ipv6.conf.lo.mc_forwarding = 0
во всех цепочках дефолтная политика ACCEPT. Какой смысл в разрешающих правилах?
>> Теперь ситуация такая что если из под нат постучаться на внешний адрес 123.123.123.123 и порт 3389 то все работает.
> из под NAT на внешний адрес? Это как?Ну как, сижу я на 192.168.0.10, а сервер на 192.168.0.100 - если так на 192.168.0.100 зайти то как бы я считаю изнутри и без всяких пробросов, но если я постучусь 123.123.123.123 то как бы на внешний же адрес пробую зайти и все работает, проброс порта есть. Я даже его отключал чтоб удостовериться что проброс есть или нет в зависимости от того включил я его или нет.
> во всех цепочках дефолтная политика ACCEPT. Какой смысл в разрешающих правилах?Если честно я не очень большой специалист по iptables, сам как бы там не лазал никогда, сервер уже работает лет 5. Все что я делал если настраиваил по статьям, и так оно и вышло видимо. Причин не знаю о чем вы говорите.
> Ситуация такая: Поменял материнскую платуПроверьте названия сетевых интерфейсов, наверняка они поменялись местами.
>> Ситуация такая: Поменял материнскую плату
> Проверьте названия сетевых интерфейсов, наверняка они поменялись местами.Проверял, да, изначально новая карта определась неверно. Но я в /etc/udev/rules.d/70-persistent-net.rules исправил это. Стало как и было eth0 в мир eth1 внутрь.
>[оверквотинг удален]
> :POSTROUTING ACCEPT [0:0]
> -A PREROUTING -d 123.123.123.123/32 -p tcp -m tcp --dport 3389 -j DNAT
> --to-destination 192.168.0.100:3389
> -A POSTROUTING -o eth0 -j MASQUERADE
> -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
> -A POSTROUTING -d 192.168.0.100/32 -p tcp -m tcp --dport 3389 -j SNAT
> --to-source 123.123.123.123
> COMMIT
> # Completed on Sun Mar 22 15:01:20 2015
> Друзья выручайте.Важен порядок правил у Вас стоит:
-A FORWARD -i eth0 -o eth1 -j REJECT --reject-with icmp-port-unreachable - отбрасывает все пакеты не попавшие под правила выше.
-A FORWARD -p udp -m udp --sport 1701 -j ACCEPT
-A FORWARD -i eth0 -p tcp -m tcp --dport 3389 -j ACCEPT - до сюда пакеты не доходят
Надо поменять местами. Или написать:
iptables -I FORWARD -i eth0 -p tcp -m tcp --dport 3389 -j ACCEPT
> Друзья выручайте.Уберите:
sudo iptables -t nat -A POSTROUTING -p tcp --dst 192.168.0.100 --dport 3389 -j SNAT --to-source 123.123.123.123затем настройте правильно маршрутизацию в сети, firewall на Windows который 192.168.0.100, а может и так заработает.
У вас случаем не две сети на одном интерфейсе?