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

Програмиране => Общ форум => Темата е започната от: samiboy в May 25, 2009, 21:54



Титла: bash script
Публикувано от: samiboy в May 25, 2009, 21:54
Код:
IPCLIENT="10.18.5.2 10.18.5.3 10.18.5.4 10.18.5.5"
IPNAT="93.155.162.202"

for IPCLIENT in $IPCLIENT; do
iptables -t nat -A POSTROUTING -s $IPCLIENT -o $DEVOUT -j SNAT --to $IPNAT
tc filter add dev $DEVIN parent 1: protocol ip prio 1 u32 match ip dst $IPCLIENT classid 1:1
iptables -t mangle -A FORWARD -s $IPCLIENT -j MARK --set-mark 0x1
done

До тук всичко работи добре, но има ли начин 10.18.5.2 да е зад NAT точно на 93.155.162.202 и 10.18.5.3 да е зад NAT на 93.155.162.203. Аз си го представям така. В един текстов файл създаваме редица с един разделител между двата ип адреса, пример:
Код:
10.18.5.2:93.155.162.202
10.18.5.3:93.155.162.203
10.18.5.4:93.155.162.204
10.18.5.5:93.155.162.202

Като първата промелнлива ще е $IPCLIENT а втората след двуеточието е $IPNAT. Нямам представа с каква ключова дума да потърся  в google. Ако някой насочи или даде решение благодарности.


Титла: Re: bash script
Публикувано от: Hapkoc в May 25, 2009, 22:39
Код:
#!/bin/sh

net=10.18.5.
conf=/etc/ipnat.conf
client=$( seq 2 5 )

for suffix in $client; do
ip=$net$suffix
nat=$( awk -F : "/^$ip:/ { print \$2 }" $conf )
iptables -t nat -A POSTROUTING -s $ip -o $devout -j SNAT --to $nat
tc filter add dev $devin parent 1: protocol ip prio 1 u32 match ip dst $ip classid 1:1
iptables -t mangle -A FORWARD -s $ip -j MARK --set-mark 0x1
done


Титла: Re: bash script
Публикувано от: samiboy в May 25, 2009, 23:30
Получих точно това което търсих  :D
Код:
iptables -nvL -t nat
    0     0 SNAT       all  --  *      vlan149  10.18.5.2            0.0.0.0/0           to:93.155.162.202
    0     0 SNAT       all  --  *      vlan149  10.18.5.3            0.0.0.0/0           to:93.155.162.203
515 31948 SNAT       all  --  *      vlan149  10.18.5.4            0.0.0.0/0           to:93.155.162.204
   46  3936 SNAT       all  --  *      vlan149  10.18.5.5            0.0.0.0/0           to:93.155.162.205

Благодаря за бързия и точен отговор. Надявам се, че може още един въпрос. Във файла /etc/ipnat.conf не мога да слагам коментари след ип адресите от рода на:
Код:
10.18.5.2:93.155.162.202 # pesho
10.18.5.3:93.155.162.203 # kiro
Има ли начин и това да стане ?


Титла: Re: bash script
Публикувано от: Hapkoc в May 26, 2009, 06:45
Код:
#!/bin/sh

net=10.18.5.
conf=/etc/ipnat.conf
client=$( seq 2 5 )

for suffix in $client; do
ip=$net$suffix
nat=$( awk -F : "/^$ip:/ { sub(/ *#.*$/, '', \$2); print \$2 }" $conf )
iptables -t nat -A POSTROUTING -s $ip -o $devout -j SNAT --to $nat
tc filter add dev $devin parent 1: protocol ip prio 1 u32 match ip dst $ip classid 1:1
iptables -t mangle -A FORWARD -s $ip -j MARK --set-mark 0x1
done