PDA

Виж пълна версия : nat


the_black_wind
23.02.05 г., 17:19
Здравейте,искам да попитам дали някой може да ми каже как да си рутирам нета с iptables на определени ип-та(така че все едно всички заявки идват само от рутера),които съм задал на съответните машини чрез dhcp,а на машината с линукс има:
eth0-на нея слуша dhcp-то
eth1-през нея идва интернет връзката (с pppoe)
В dhcpd.conf съм задал на option domain-name-servers - двата dns-а на доставчика ми,но не съм сигурен дали е нужно.
Благодаря!

savaman
23.02.05 г., 17:42
a DHCP-то на рутера ли е?при мен понеже DHCP-то е друга машина и цялата далавера със разпределянето на нета я прави койота скрипта ми изглежда различничко но ти го давам все пак.

the_black_wind
23.02.05 г., 18:10
DHCP-то е на рутера и е на eth0 а нета ми идва от eth1.А има ли някъква възможност доставчика ми да е направил така че да не мога да правя nat ?

Sertys
23.02.05 г., 18:29
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.x.x/24 -o eth0 -j DNAT --to-source $externap_ip



Оттам нататъка - дерзай със скриптинга :)

JoZ
23.02.05 г., 20:36
Само лека добавка към това което е написал Sertys.

Когато аз ползвах adsl с pppoe ip-то ми се сменяше редовно щом дропне линията и ползвах

-A POSTROUTING -s 172.17.0.0/20 -o eth1 -j MASQUERADE

вместо -j DNAT --to-source $externap_ip

Пиша го просто като улеснение и гледна точка. Мисля, че при условие, че Интернет му идва от eth1 е редно eth1 да е output interface.

the_black_wind
24.02.05 г., 00:19
Само лека добавка към това което е написал Sertys.

Когато аз ползвах adsl с pppoe ip-то ми се сменяше редовно щом дропне линията и ползвах

-A POSTROUTING -s 172.17.0.0/20 -o eth1 -j MASQUERADE

вместо -j DNAT --to-source $externap_ip

Пиша го просто като улеснение и гледна точка. Мисля, че при условие, че Интернет му идва от eth1 е редно eth1 да е output interface.

Не ми стана ясно от скрипта "$EXT_IF" трябва да бъде вътрешното ип на лан-а в която влиза нет-а?И ако може да ми кажете в dhcpd.conf за "option ruters"-кое ип трябва да напиша,на лан-а с нета ли?
"-s 172.17.0.0/2о"-предполагам че и това е вътрешното ип на ланкартата в която влиза интернета?

savaman
24.02.05 г., 01:11
Не ми стана ясно от скрипта "$EXT_IF" трябва да бъде вътрешното ип на лан-а в която влиза нет-а?
икзактли :claps:

И ако може да ми кажете в dhcpd.conf за "option ruters"-кое ип трябва да напиша,на лан-а с нета ли?
предполагам че да

"-s 172.17.0.0/2о"-предполагам че и това е вътрешното ип на ланкартата в която влиза интернета?
майче и тука си прав

JoZ
24.02.05 г., 02:13
Не ми стана ясно от скрипта "$EXT_IF" трябва да бъде вътрешното ип на лан-а в която влиза нет-а?И ако може да ми кажете в dhcpd.conf за "option ruters"-кое ип трябва да напиша,на лан-а с нета ли?
"-s 172.17.0.0/2о"-предполагам че и това е вътрешното ип на ланкартата в която влиза интернета?
Виж ако ползваш онази мрежа 192.168.2.0/24 и тя ти е закачена на eth0, а Интернет ти е закачен на eth1 трябва да напишеш:

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth1 -j DNAT --to-source $externap_ip

където $externap_ip ти е ip адреса на eth1,

но може да напишеш и:

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth1 -j MASQUERADE

и ще има аналогичен ефект. Просто ще се закача за ip-то на eth1 независимо какво е то.

Ползвай едно от двете. При втория пример при промяна на ip адреса MASQUERADE опцията винаги ще насочва всичко към промененото ip. Ако пък адреса на eth1 ти е статичен т.е. не се променя, ползвай примера на Sertys.

В '/etc/dhcpd.conf' трябва да сложиш ip адреса на eth0 в 'option rоuters'.

the_black_wind
24.02.05 г., 20:54
Здравейте,
значи имам проблем с рутирането на нет-а и немога да разбера от каде идва,моля ви ако можете покажете ми каде греша.
Значи поради проблеми с конфигърацията на eth1 съм я спрял и оставих само eth0.На нея съм пуснал dhcp server както и през нея влиза pppoe нет-а.Незнам дали е правилно в dhcpd.conf за "option domain-name-servers" съм написъл двата днс-а на на доставчика ми (моля ви кажете дали това е правилно).
След това в шела написах echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.2.0 -o eth0 -j MASQUERADE
в този фаил ip_forward изписа вместо 0 -1-ца.
След това въведох пак в шела
iptables -t nat -A POSTROUTING -s 192.168.2.6 -o eth0 -j MASQUERADE
Нo dhcp клиента не получава интернет :(
Благодаря!

JoZ
24.02.05 г., 21:12
Покажи резултат от команди:

netstat -rn
ifconfig -a
iptables -nL -t filter
iptables -nL -t nat

и файла

/proc/sys/net/ipv4/ip_forward

задължително трябва да е със съдържание '1'. Команда

echo 1 > /proc/sys/net/ipv4/ip_forward

прави точно това, променя го от '0' на '1' т.е. активира ip forward.

the_black_wind
25.02.05 г., 10:36
Пратих ти ги като съобщение.

the_black_wind
26.02.05 г., 03:06
Здравейте,
разбрах откаде е бил проблема вместо eth0 е трябвало да се пише ppp0.
Много ви благодаря за информацията.

JoZ
26.02.05 г., 03:20
Видях ти съобщението, но също така виждам, че си се справил. Между другото eth0 и eth1 са ти с един и същ ip адрес т.е. между тях не може да има рутиране, а също така се създава ip conflict. Трябва да са с различни ip адреси. Пример: 192.168.2.122 за eth0 и 192.168.2.123 за eth1

the_black_wind
26.02.05 г., 04:55
Аз затова втората я бях "down"
JoZ сега има ли възможност да ми кажеш как като има домейн domain.com мога да направя пс-то ми да излиза в нета не с реалното ип което имам ами с pc.domain.com ?

JoZ
26.02.05 г., 06:03
Трябва да си хостнеш някъде домейна и да кажеш, че твоето реално ip отговаря на "pc.domain.com". Освен това трябва при твоето isp в техния dns да запишат, че back resolve за твоя адрес отговаря на "pc.domain.com". Това е.

the_black_wind
26.02.05 г., 13:09
JoZ БЛАГОДАРЯ!!! :) :) :)