Linux за българи: Форуми

Linux секция за начинаещи => Настройка на програми => Темата е започната от: skuller в May 05, 2007, 19:28



Титла: пренасочване на портове
Публикувано от: skuller в May 05, 2007, 19:28
zдравеите
имам два компютъра единия с реално ип и дебиан на него а другото с частно ип и winXP
искам при опит да се свържа кам линукса даречем на порт 12345 да се пренасочва и да се свързвам със порт 12345 на winXP машината

на линукс пц-то
еth2 real IP
eth1 10.0.0.1

winXP
IP:10.0.0.2


Титла: пренасочване на портове
Публикувано от: angie_bg в May 05, 2007, 19:43
Виж Easy Firewall Generator


Титла: пренасочване на портове
Публикувано от: skuller в May 05, 2007, 20:06
това го гледах допреди малко и него схванах ;/


Титла: пренасочване на портове
Публикувано от: zzzzz в May 05, 2007, 20:17
iptables -t nat -A PREROUTING -p tcp -d (външно ип) --dport (porta) -j DNAT --to-destination (вътрешно ип)


Титла: пренасочване на портове
Публикувано от: Explisit в May 05, 2007, 20:19
iptables -A PREROUTING -t nat -i eth1 -p tcp  --dport 12345 -j DNAT --to 10.0.0.2:12345
iptables -A INPUT -p tcp -m state --state NEW --dport 12345 -i eth1 -j ACCEPT

E нещо такова ти трябва. Даже май баш същото  :)





Титла: пренасочване на портове
Публикувано от: skuller в May 05, 2007, 21:14
това ми дава като напиша  iptables -L -t nat -n
Примерен код
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       tcp  --  0.0.0.0/0            91.*       tcp dpt:5588 to:10.0.0.2:5588
DNAT       tcp  --  0.0.0.0/0            10.0.0.2            tcp dpt:5580 to:10.0.0.2:5580
DNAT       tcp  --  0.0.0.0/0            91*       tcp dpt:5585 to:10.0.0.2
DNAT       tcp  --  0.0.0.0/0            91.*       tcp dpt:5585 to:10.0.0.2:5585
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:12345 to:10.0.0.2:12345

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  0    --  10.0.0.0/24          0.0.0.0/0

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
m22-sux:~#


Примерен код
telnet 91.* 5588
Trying 91.*...
telnet: Unable to connect to remote host: Connection refused

това го дава за които и да е порт ;/

но препратката кам нито един от тези портове неработи


Титла: пренасочване на портове
Публикувано от: neter в May 05, 2007, 23:00
Какво има пуснато на тия портове на машината с win-а, че очакваш telnet да се върже? И защо, аджеба, в destination имаш зададени IP-та (освен в последното)? Изтрий съдържанието на PREROUTING и използвай първия ред на Explisit, като махнеш -i eth1 от него или сложиш -i eth2 на негово място. Вторият ред на Explisit не е задължителен. Дай все пак да ти видим и изхода от iptables -L да не би да има някакво объркване там. Сигурен ли си, че eth2 е с реалното IP и eth1 с частното? А нямаш ли нещо на eth0? И още нещо, как правиш рутирането към 10.0.0.2? Дай да видим и този ред.





Титла: пренасочване на портове
Публикувано от: skuller в May 06, 2007, 11:04
на машината с win съм пуснал
Примерен код
nc -l -p port -t -e cmd.exe

и това е само за да видя дали ще проработи . основната ми цел е да пренасоча порта на играта quake3 за да мога да правя сървър на вин машината .. (27960 е порта на играта )
iptables -L
Примерен код

iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     0    --  10.0.0.0/24          anywhere
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:12345
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:5511

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination


ifconfig
Примерен код

eth1      Link encap:Ethernet  HWaddr 00:06:7B:0B:6C:D2
          inet addr:10.0.0.1  Bcast:10.255.255.255  Mask:255.0.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:250571 errors:0 dropped:0 overruns:0 frame:0
          TX packets:284464 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:65580239 (62.5 MiB)  TX bytes:81675892 (77.8 MiB)
          Interrupt:11 Base address:0x9000

eth2      Link encap:Ethernet  HWaddr 00:*
          inet addr:91.92.*  Bcast:91.255.255.255  Mask:255.255.255.224
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:402862 errors:0 dropped:0 overruns:0 frame:0
          TX packets:283467 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:144546755 (137.8 MiB)  TX bytes:67868615 (64.7 MiB)
          Interrupt:11 Base address:0x9400



eth0  е ланкартата която е вградена в дъното но нея нея ползам
рутирането на нета го правя със
Примерен код

iptables -I INPUT -s 10.0.0.0/24 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j MASQUERADE


Титла: пренасочване на портове
Публикувано от: bnight в May 28, 2007, 10:40
интересно и аз искам да пренасоча два порта по-точно 5900 29760 единият е VNC другият е именно Qukae 3 ползвам ядро 2.6.20 вътрешната ми мрежа е от рода 192.168.0.0/24 и се намира на eth0 външното ми ИП е динамично и се пренасочва към eth1 което е с ИП 192.168.1.2 бих бил благодарен ако ми кажете какви правила да ползвам.
ето и изхода от iptables -L -t nat -n
Примерен код

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:5900 to:192.168.0.2:5900
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:5900 to:192.168.0.2:5900

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  0    --  0.0.0.0/0            0.0.0.0/0

но когато от другия компютър се опитам да се свържа с този порт минавайки през първият компютър ми дава connection refused. Явно някъде бъркам но къде ?


Титла: пренасочване на портове
Публикувано от: KPETEH в May 28, 2007, 12:33
Ето ти правила които можеш да ползваш за определени портове:
Цитат

iptables -A INPUT -i eth1 -p tcp --dport 5900 -j ACCEPT
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 5900 -j DNAT --to 192.168.0.2
iptables -A FORWARD -i eth1 -p tcp -d 192.168.0.2 --dport 5900 -j ACCEPT


Упс щях да забравя много е ваюно каква ти е политиката за OUTPUT т.е трябва да е примерно ACCEPT.

Примерен код
iptables -P OUTPUT ACCEPT






Титла: пренасочване на портове
Публикувано от: VladSun в May 28, 2007, 13:34
Цитат на: KPETEH,Май 28 2007,12:33
Цитат

iptables -A INPUT -i eth1 -p tcp --dport 5900 -j ACCEPT


Защо?

Цитат

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 5900 -j DNAT --to 192.168.0.2


ОК, но трябва и в обратната посока да се направи НАТ - т.е. SNAT на изходящите пакети от 192.168.0.2

Цитат

iptables -A FORWARD -i eth1 -p tcp -d 192.168.0.2 --dport 5900 -j ACCEPT


ОК, но трябва и в обратната посока да се разрешат пакетите ОТ 192.168.0.2

Цитат

Упс щях да забравя много е ваюно каква ти е политиката за OUTPUT т.е трябва да е примерно ACCEPT.

Примерен код
iptables -P OUTPUT ACCEPT



Защо?


Титла: пренасочване на портове
Публикувано от: VladSun в May 28, 2007, 13:37
Цитат (bnight @ Май 28 2007,10:40)
Примерен код

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:5900 to:192.168.0.2:5900
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:5900 to:192.168.0.2:5900

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  0    --  0.0.0.0/0            0.0.0.0/0

но когато от другия компютър се опитам да се свържа с този порт минавайки през първият компютър ми дава connection refused. Явно някъде бъркам но къде ?

1. Пробва ли от рутера да се вържеш към порта на втората машина (т.е. дали изобщо е пусната)?
2.Сложи FORWARD веригата на -P ACCEPT и виж дали става.
3. Сложи в DNAT правилото и match за интерфейса.
3. Сложи в MASQUERADE  правилото и match за интерфейса.


Титла: пренасочване на портове
Публикувано от: KPETEH в May 28, 2007, 13:44
Добре де vladsun защо да не е на ACCEPT,политиката за
OUTPUT ?! А и би трябвало да ползва MASQUERADE нали е рутер машината му то това е ясно.Само може да си спориме тук с теб заради глупости само защото човека не си е постнал целия firewall тук.
Дадох идея при мен как работи безотказно при положение че даже ползвам TOS за различните портове.
Както и да е.  ;)





Титла: пренасочване на портове
Публикувано от: VladSun в May 28, 2007, 13:51
Цитат (KPETEH @ Май 28 2007,13:44)
Добре де vladsun защо да не е на ACCEPT,политиката за
OUTPUT ?! А и би трябвало да ползва MASQUERADE нали е рутер машината му то това е ясно.Само може да си спориме тук с теб заради глупости само защото човека не си е постнал целия firewall тук.
Дадох идея при мен как работи безотказно при положение че даже ползвам TOS за различните портове.
Както и да е.  ;)

Имах предвид, че INPUT/OUTPUT веригите нямат нищо общо с port forwarding. Няма нужда човекът да си "чупи" безмислено firewall-a.
А и нали трябва да научи нещо покрай тази тема ;)


Титла: пренасочване на портове
Публикувано от: KPETEH в May 28, 2007, 13:54
Vladsun знаеш много добре че при такава политика на OUTPUT му остава само да забрани портове,които не му трябват пък и от къде да знаеш може да реши да си браузва през links от рутера :-) Аз от време на време го правя защото моята щайга постоянно има проблеми а пък рутерченцето ми милото си бачка на шест. :)


Титла: пренасочване на портове
Публикувано от: VladSun в May 28, 2007, 14:01
Цитат (KPETEH @ Май 28 2007,13:54)
Vladsun знаеш много добре че при такава политика на OUTPUT му остава само да забрани портове,които не му трябват пък и от къде да знаеш може да реши да си браузва през links от рутера :-) Аз от време на време го правя защото моята щайга постоянно има проблеми а пък рутерченцето ми милото си бачка на шест. :)

За по-голяма сигурност обикновено се прави обратното - забранява се целия трафик и се разрешава само този от/към определени портове.

А и "портове,които не му трябват" обикновено са над 65'000 ;)


Титла: пренасочване на портове
Публикувано от: KPETEH в May 28, 2007, 14:05
Като го гледам момчето е начинаещ в което няма лошо  :)
Та ако си сложи политика за OUTPUT на DROP ще стане мазало той сам обясни че му е динамично IP-то.Не стана ясно по какъв протокол си получава адреса дали е фиксиран по MAC адрес и още много питанки останаха  ;)
На мен ми е лесно да си постна целия firewall ама не на всеки ше свърши работа :) Пък и хайде всеки сам да си стигне до собствената си истина :)


Титла: пренасочване на портове
Публикувано от: sdr в May 28, 2007, 14:18
Нямаше ли един тънък момент че трябва да се разреши пакет-форвардинга за да заработи изобщо нат таблицата? Или инфото ми е от няколко десетки кернела назад?


Титла: пренасочване на портове
Публикувано от: KPETEH в May 28, 2007, 14:36
Цитат (sdr @ Май 28 2007,14:18)
Нямаше ли един тънък момент че трябва да се разреши пакет-форвардинга за да заработи изобщо нат таблицата? Или инфото ми е от няколко десетки кернела назад?

Да трябва :) Ако иска да си го сложи в скрипта за iptables
или пък в някой конфигурационен файл :)
Примерен код
echo 1 > /proc/sys/net/ipv4/ip_forward


Титла: пренасочване на портове
Публикувано от: bnight в May 28, 2007, 17:14
Примерен код

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     0    --  anywhere             anywhere
ACCEPT     0    --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     0    --  anywhere             anywhere            state NEW
ACCEPT     tcp  --  anywhere             anywhere            state NEW tcp dpt:5900
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:5900

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
ACCEPT     0    --  anywhere             anywhere            state RELATED,ESTABLISHED
ACCEPT     0    --  anywhere             anywhere
REJECT     0    --  anywhere             anywhere            reject-with icmp-port-unreachable
ACCEPT     tcp  --  anywhere             192.168.0.2         tcp dpt:5900

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

ето ми го целият IPTables въпреки това тая пущина неще да работи. Естествено че съм разрешил пренасочването на портовете още когато съм си правил рутера Какво да направя за да заработи ? Някой да ми каже точно какви правила да добавя за да стане. Предварително благодаря.


Титла: пренасочване на портове
Публикувано от: Hapkoc в May 28, 2007, 18:35
Е не е целият. :)

Дай в добавка това:

iptables -nvL -t nat





Титла: пренасочване на портове
Публикувано от: bnight в May 28, 2007, 19:06
Примерен код

Chain PREROUTING (policy ACCEPT 880 packets, 76583 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 DNAT       tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0           tcp dpt:5900 to:192.168.0.2

Chain POSTROUTING (policy ACCEPT 4 packets, 192 bytes)
 pkts bytes target     prot opt in     out     source               destination
  591 40879 MASQUERADE  0    --  *      eth1    0.0.0.0/0            0.0.0.0/0  

Chain OUTPUT (policy ACCEPT 37 packets, 2362 bytes)
 pkts bytes target     prot opt in     out     source               destination

ето го целият


Титла: пренасочване на портове
Публикувано от: gat3way в May 28, 2007, 22:31
Бе Vladsun е обяснил много точно проблема малко по-нагоре. Нещата  са много прости и очевидни и това  между другото е често срещан проблем. Който лесно се намира, стига човек да може да си представи малко как върви една проста TCP комуникация при това положение, нека ви опиша картинката (щото много обичам :)  ):

Машина от вътрешната мрежа с адрес 192.168.0.5 (например) се опитва да върже vlc до "външна" машина (x.x.x.x) на порт 5900. SYN пакетът се препраща през рутера, 192.168.0.1.  Оттам се ДНАТ-ва към машината 192.168.0.2. Тя вижда SYN пакет идващ от 192.168.0.5 и му връща SYN-ACK потвърждение. Машината 192.168.0.5 получава потвърждението SYNACK, но то не идва от x.x.x.x - идва от 192.168.0.2 -  съответно не е асоцирано с никоя конекция и не се взема предвид. Установяването на сесията пропада.

За да се реши проблема е необходимо на рутера да  се сложи и правило, което SNAT-ва всичко от вътрешната мрежа към порт 5900 със "собствения"  си адрес - 192.168.0.1. Така логически схемата е завършена. SNAT правилото ТРЯБВА да е преди MASQUERADE правилото в POSTROUTING, иначе ще се появи друг проблем (пакетите към 192.168.0.2 ще се опитват да излязат през "външния" интерфейс - съответно пак проблем).

Що се отнася до quake там има друг проблем - не знам дали комуникацията не минава по UDP. Освен това, не знам дали не се работи с multicasting (поне ако се води "локален" сървър - не съм геймър и не знам как е там, но това беше случая с counterstrike май). Ако искате да си правите "локални" игри в рамките на вашето ISP - тогава се налага да се прави и multicast routing - това е една много дълга, широка и сложна тема в линукс света. Не се наемам да помагам в този случай...


Титла: пренасочване на портове
Публикувано от: bnight в May 28, 2007, 22:40
добре дай само правилата за VNC-то че ми е приятно като съм далеч от комп-а да си ползвам VNC на домашния комп. Всъщност с IPTables не съм си играл за това моля те напиши ми правилата. Предварително благодаря.


Титла: пренасочване на портове
Публикувано от: gat3way в May 28, 2007, 22:48
Имаш всичко на всичко 3 правила, 2-те вече са ти готови. Сигурно ще ме намразиш като го прочетеш, ама си имам някакви собствени  разбирания за нещата и не обичам да сервирам на някого наготово нещата, не е честно. Може да е глупаво, но ще ти дам джокер - след като вече имаш правило в POSTROUTING, новото правило не трябва да го добавяш "-А", а да го "вмъкнеш" на първа       позиция "-I 1". SNAT таргета работи само в POSTROUTING chain-a. Има минимална разлика в синтаксиса на DNAT и SNAT правилата, за която си пише в manpage-a на iptables. Кое се СНАТ-ва вече писах. Сигурно щеше да ми е по-лесно да ти напиша директно едната команда, която ти трябва, но нямаше да е поучително. Приемам псувни, само недей за майка ми, тя не е виновна. И да, правя се на интересен, съжалявам :)


Титла: пренасочване на портове
Публикувано от: bnight в May 28, 2007, 23:31
абе пробвах ма може и аз някъде да бъркам търсих какви ли не варианти пробвах ето това
Примерен код

iptables -t nat -i 1 POSTROUTING -p tcp --dport 5900 -j SNAT--to-source 192.168.0.2-192.168.1.2:5900-5900

но за съжеление пак не става къде бъркам ?


Титла: пренасочване на портове
Публикувано от: gat3way в May 28, 2007, 23:33
-I POSTROUTING 1, не -i 1.

--to-source има малко по-различен синтаксис - точно като на --to-destination при DNAT


Титла: пренасочване на портове
Публикувано от: bnight в May 28, 2007, 23:42
да това с I то го открих че е само I --to-source обаче си остава загатка така и не разбрах какво точно да му задам за да сработи ?


Титла: пренасочване на портове
Публикувано от: bnight в May 29, 2007, 00:21
както и да е оправих се всичко си работи добре благодаря много на всички.