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

Linux секция за напреднали => Хардуерни и софтуерни проблеми => Темата е започната от: BuSteR в Nov 30, 2012, 20:27



Титла: NETMAP проблем
Публикувано от: BuSteR в Nov 30, 2012, 20:27
Здравейте,
сблъсках се със следния проблем ISP-то ми раздава 5 реални IP адреса по DHCP едния се ползва за NAT на мрежа 192.168.0.0/24 като за целта позлвам и ipset, ipmark (Flattc пакета - работи перфектно) и едно SNAT правило $IPT -t nat -A POSTROUTING -o $EXT_IF1 -j SNAT --to $EXT_IP,
-вдигам macvlan интерфейс на картата свързана към ISP-то
-взимам си адреса с dhcpcd
-добавям рутинг таблица (T1 примерно) за новия IP адрес и 2 default gw

*до тук всичко е ок, имам ping през macvlan интерфейса имам и traceroute до 2-я gw

Проблема е, че река ли да map-на моето IP да кажем (192.168.0.40) към новия IP адрес то от вътрешната мрежа нито имам ping до външни адреси нито  traceroute-а работи - абе кто цяло няма интернет :). Ако променя във FLattc външния интерфейс с новия интерфейс "macvlan0" и прекарам всички локални IP-та през него с 2 default гейта - нямам интернет в локалната мрежа през новия интерфейс, изтрия ли default gw-а за 1-я интерфейс и интернета тръгва, добавям вече 2 SNAT правила ест.

Код:
ip link add link eth1 name macvlan0 address 00:33:44:2a:3b:01 type macvlan
ip link set up macvlan0
ip route add 17x.12.48.0/21 dev macvlan0 src 17x.12.54.xxx table T1
ip route add default via 17x.12.48.x dev macvlan0 table T1
ip rule add from 17x.12.54.xxx/32 table T1
ip rule add to 17x.12.54.xxx/32 table T1
Всичко работи от локалната машина:

Код:
ping -I macvlan0 dir.bg
PING dir.bg (194.145.63.12) from 17x.12.54.xxx macvlan0: 56(84) bytes of data.
64 bytes from dir.bg (194.145.63.12): icmp_req=1 ttl=61 time=8.16 ms
64 bytes from dir.bg (194.145.63.12): icmp_req=2 ttl=61 time=6.85 ms


traceroute to dir.bg (194.145.63.12), 30 hops max, 60 byte packets
 1  xxxx  1.199 ms  1.425 ms  1.412 ms
 2  xxxx 7.833 ms  7.813 ms  7.901 ms
 3  xxxx  8.381 ms  8.565 ms  8.701 ms
 4  dir.bg (194.145.63.12)  8.185 ms  8.171 ms  8.159 ms

Код:
ip r show table Т1
default via 17x.12.48.x dev macvlan0
17x.12.48.0/21 dev macvlan0  scope link  src 17x.12.54.xxx

Код:
ip r show table main |grep eth1
default via 7x.83.32.x dev eth1  metric 204
7x.83.32.0/20 dev eth1  proto kernel  scope link  src 7x.83.38.xxx  metric 204

Добавям следните правила за NETMAP към IP 192.168.0.40:
Код:
iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.40 -j NETMAP --to 17x.12.54.xxx
iptables -t nat -A PREROUTING -i macvlan0 -s 17x.12.54.xxx -j NETMAP --to  192.168.0.40

И от IP 192.168.0.40 нямам никаква връзка с интернет, имам пинг към локалния gw (192.168.0.1). Предполагам, че проблема е някъде из default routing-а, но нещо не мога да го реша сам....или бъркам генерално нещо?


Титла: Re: NETMAP проблем
Публикувано от: Mitaka в Nov 30, 2012, 21:02
А пуснал ли си ip forwarding-a? Тове нещо доста често се забравя :)

cat /proc/sys/net/ipv4/ip_forward

Ако резултата е 0, трябва да го смениш с 1, за да работи.

За да има нат, трябва да е 1:

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

И за да стае постоянно:

echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf


Титла: Re: NETMAP проблем
Публикувано от: BuSteR в Nov 30, 2012, 21:07
Ами да колега пуснал съм го разбира се .... имам чустото, че тази дисрибуция която ползвам Gentoo има някакъв проблем със 2 default gataway-а и винаги се обръща към този зададен в main таблицата eth1 в случая, мисля си за split access, но аз не искам да правя load balancing.


Титла: Re: NETMAP проблем
Публикувано от: Mitaka в Dec 01, 2012, 01:11
Едното от правилата ти би трябвало да е в POSTROUTING веригата:


iptables -t nat -D POSTROUTING -i eth0 -s 192.168.0.40 -j NETMAP --to 17x.12.54.xxx
iptables -t nat -D PREROUTING -i macvlan0 -s 17x.12.54.xxx -j NETMAP --to  192.168.0.40




Титла: Re: NETMAP проблем
Публикувано от: BuSteR в Dec 01, 2012, 01:21
Имам напредък - оправих си routing таблицата, и подакарах със SNAT ip 192.168.0.40 да излиза през gw-a на 2-я IP адрес, но още ме мъчи NETMAP-а ....сега ще видя ако сменя веригата дали ще сработи...

Цитат
iptables -t nat -D POSTROUTING -i eth0 -s 192.168.0.40 -j NETMAP --to 17x.12.54.xxx
iptables -t nat -D PREROUTING -i macvlan0 -s 17x.12.54.xxx -j NETMAP --to  192.168.0.40

така тръгна само, че с -A, но тест от вън за отворен порт на машината, на която съм (192.168.0.40) показва, че е затворен, да не би да трябва да цъкна proxyarp?


Титла: Re: NETMAP проблем
Публикувано от: Mitaka в Dec 01, 2012, 02:37
Да, -A трябва да е... пф, така е като пиша по това време на денонощието :)


Титла: Re: NETMAP проблем
Публикувано от: BuSteR в Dec 02, 2012, 19:43
Забравих да кажа,че разнищих нещата....Всъщност за тези, които имат същия проблем да map-нат не цяла мрежа, а само едно IP това е работещия вариант:

Код:
iptables -t nat -A PREROUTING -d 17х.12.54.хх -j NETMAP --to 192.168.0.40
iptables -t nat -A POSTROUTING -s 192.168.0.40 -j NETMAP --to 17х.12.54.ххх

където 17х.12.54.ххx е външното IP.