Титла: Snat и dnat през vpn Публикувано от: muffty в Jun 13, 2006, 15:23 Здравейте,
Имам следната конфигурация - gateway1 с три интерфейса: eth0 е за интернет, eth1 с ip 192.168.168.1 е към локална мрежа 192.168.168.0/24 и eth3 с ip 192.168.130.1 е свързан с eth0 (ip 192.168.130.2) на gateway2, който към втория си интрефейс eth1 (ip 10.1.10.1) има също локална мрежа 10.1.10.0/24. Между двете локални мрежи 192.168.168.0/24 и 10.1.10.0/24 има вдигнат VPN посредством OpenSwan на двата гейтуея. Със SNAT и DNAT от интернет (gateway1) към 192.168.168.0/24 няма проблеми. Проблемът е, че не мога да пусна нито SNAT нито DNAT към мрежа 10.1.10.0/24. Възможно ли е това да стане и ако да какво допълнително ми трябва? Титла: Snat и dnat през vpn Публикувано от: Hapkoc в Jun 13, 2006, 16:05 Аз не разбрах съвсем каква ти е целта.
Първо - защо искаш да пуснеш NAT от/към 10.1.10.0/24, и второ - защо не можеш, смисъл кое точно те спира? :) Титла: Snat и dnat през vpn Публикувано от: muffty в Jun 13, 2006, 18:03 Ами NAT трябва, защото имам нужда от port forwarding към някои ip-та. Също така ми трябва NAT и защото някои ip-ta трябва да излизат директно към нета (в момента ползват прокси).
А за второто - просто не тръгва. Това, което можах да проследя с tcpdump е, че пакетите излизат от eth1 на gateway2 към съответното ip от 10.1.10.0/24, но не се връщат. P.S. PC-тата в 10.1.10.0/24 имат за gateway gateway2. Предполагам, че тук е част от проблема... Незнам дали стана по-ясно. Титла: Snat и dnat през vpn Публикувано от: Hapkoc в Jun 14, 2006, 16:37 Понеже гледам няма много интерес към проблема, пък на мен ми е интересно, обаче нямам много опит с тия неща, затова пак ще разпитвам - можеш ли да дадеш някакъв конкретен пример да кажем за пренасочване на портове какво точно искаш да направиш и какво си опитал, та да се помъча да помогна с каквото мога? :)
Титла: Snat и dnat през vpn Публикувано от: muffty в Jun 15, 2006, 15:47 Ами например ако искам порт 80 на външното ip да сочи към порт 80 на например 192.168.168.35 от първата локална мрежа правя това като на gateway1 изпълнявам следното:
$iptables -A FORWARD -p TCP -i eth0 -o eth1 -d 192.168.168.35 --dport 80 -j ACCEPT $iptables -t nat -A PREROUTING -p tcp -d THE_EXTERNAL_IP --dport 80 -i eth0 -j DNAT --to-destination 192.168.168.35 Понеже от gateway1 мога да пингвам PC-та от втората локална мрежа (10.1.10.0/24), както и обратното, то имах надеждата, че същото ще тръгне и за нея. Само че не тръгва. Ако искам да направя същото за например порт 8080 за 10.1.10.99, то изпълнявам същите команди като само не указвам output интерфейс: $iptables -A FORWARD -p TCP -i eth0 -d 10.1.10.99 --dport 8080 -j ACCEPT $iptables -t nat -A PREROUTING -p tcp -d THE_EXTERNAL_IP --dport 8080 -i eth0 -j DNAT --to-destination 10.1.10.99 Ефект обаче няма. Опитвайки се отвън да достъпя порт 8080 на външното ip tcpdump на eth0 на gateway2 дава следното: arp who-has 10.1.10.99 tell 192.168.130.1 arp who-has 10.1.10.99 tell 192.168.130.1 arp who-has 10.1.10.99 tell 192.168.130.1 arp who-has 10.1.10.99 tell 192.168.130.1 arp who-has 192.168.130.2 tell 192.168.130.1 arp replay 192.168.130.2 is-at 00:0a:48:1b:42:fb (oui unknown) arp who-has 10.1.10.99 tell 192.168.130.1 а на eth1 пак на gateway2 не се случва нищо. Така че тук някъде връзката прекъсва. Титла: Snat и dnat през vpn Публикувано от: в Jun 15, 2006, 17:05 А обратен port-forwarding (SNAT) правиш ли?
Титла: Snat и dnat през vpn Публикувано от: в Jun 15, 2006, 17:08 ПС: Видях по-горе, че казваш, че правиш, но в правилата никъде не го видях.
Да не си объркал routing таблиците? Понеже и на arp не видях да отговаря 10.1....... мрежата Титла: Snat и dnat през vpn Публикувано от: muffty в Jun 15, 2006, 19:26 Не, обратен не правя, но ще пробвам и ще постна резултата.
Според мен проблема е или в рутинг таблиците или че поне от това, което виждам нат-а не минава през впн-а - gateway1 го хвърля на gateway2, но не през ESP и gateway2 се чуди какво да прави. В момента не съм при PC-тата, но утре ще постна какви са рутинг таблиците на двата gateway-a. Титла: Snat и dnat през vpn Публикувано от: в Jun 15, 2006, 22:57 Защо не сложиш 2 правила по статичните рутинг таблици (route add -net 10.1.10.0/24 gw 192.168.130.2 и реципрочно на другата щайга route add -net 102.168.168.0/24 gw 192.168.130.1) и не отебеш тоя ВПН между двете мрежи?
Смисъл, това най-вероятно ще ти реши проблема. Какво налага да ползваш ВПН между двете мрежи? Иначе гледайки този tcpdump лог имам някаква идея какво вероятно се случва, ама препих с бира и ме мързи да пиша дълги теории по въпроса ![]() Ако случайно малоумните ми предположения се окажат верни и като поизтрезнея ще дообясня проблема ![]() Титла: Snat и dnat през vpn Публикувано от: muffty в Jun 16, 2006, 10:38 @ VladSun
Пробвах и с обратен port forwarding: $iptables -A FORWARD -p TCP -i eth0 -d 10.1.10.99 --dport 8080 -j ACCEPT $iptables -t nat -A PREROUTING -p tcp -d THE_EXTERNAL_IP --dport 8080 -i eth0 -j DNAT --to-destination 10.1.10.99 $iptables -t nat -A POSTROUTING -o eth0 -s 10.1.10.99 -j SNAT --to-source THE_EXTERNAL_IP Няма ефект. @gat3way ВПН-а ми трябва от гледна точка на сигурността понеже двете мрежи между които тече ВПН-а са отдалечени физически и кабелът между тях минава свободно навън. Така или иначе ВПН-а върви перфектно. Както си писал и аз мислех за вариант да рутирам един път NAT-a на gateway1 и втори път на gateway2, като един вид прескоча ВПН-а (връзката между двата gateway-a не е криптирана, само между мрежиге), но се отказах понеже не ми стана ясно как ще стане това ако реша да натвам едни и същи портове на различни машини. В смисъл ако натна порт 8080 от gw1 към gw2 и после от gw2 натна 8080 към 10.1.10.99 може и да стане, но ако после реша да натна и 8080 към 10.1.10.12 невиждам как... Поствам рутинг таблиците на двата gw. gw1: Destination Gateway Genmask Flags Metric Ref Use Iface xxx.xx.xxx.224 * 255.255.255.240 U 0 0 0 eth0 192.168.130.0 * 255.255.255.0 U 0 0 0 eth2 10.1.10.0 * 255.255.255.0 U 0 0 0 eth2 localnet * 255.255.255.0 U 0 0 0 eth1 loopback * 255.0.0.0 U 0 0 0 lo default xxx.xx.xxx.225 0.0.0.0 UG 1 0 0 eth0 gw2: Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.130.0 * 255.255.255.0 U 0 0 0 eth0 10.1.10.0 * 255.255.255.0 U 0 0 0 eth1 192.168.168.0 * 255.255.255.0 U 0 0 0 eth0 loopback * 255.0.0.0 U 0 0 0 lo default 192.168.130.2 0.0.0.0 UG 1 0 0 eth0 P.S. PC-тата в 192.168.168.0/24 имат default gateway 192.168.168.1, а тези в 10.1.10.0/24 - 10.1.10.1 Титла: Snat и dnat през vpn Публикувано от: в Jun 16, 2006, 10:59 Можеш ли да пейстнеш ifconfig от двете гв-та?
Титла: Snat и dnat през vpn Публикувано от: в Jun 16, 2006, 11:23 не трябва ли да укажеш на gw1, че gateway-a за 10.1.... е 192.168.130.2.
т.е. gw1 ip route change 10.1.10.0/24 via 192.168.130.2 Титла: Snat и dnat през vpn Публикувано от: muffty в Jun 16, 2006, 12:19 @gat3way
gw1: root@gw1:~# ifconfig eth0 Link encap:Ethernet HWaddr 00:0A:5E:3C:E2:B7 inet addr:xxx.xx.xxx.226 Bcast:xxx.xx.xxx.239 Mask:255.255.255.240 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:6666983 errors:0 dropped:0 overruns:1 frame:0 TX packets:6125003 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1050364543 (1001.7 MiB) TX bytes:1042127149 (993.8 MiB) Interrupt:11 Base address:0xdc00 eth0:1 Link encap:Ethernet HWaddr 00:0A:5E:3C:E2:B7 inet addr:xxx.xx.xxx.227 Bcast:xxx.xx.xxx.239 Mask:255.255.255.240 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:11 Base address:0xdc00 eth0:2 Link encap:Ethernet HWaddr 00:0A:5E:3C:E2:B7 inet addr:xxx.xx.xxx.228 Bcast:xxx.xx.xxx.239 Mask:255.255.255.240 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:11 Base address:0xdc00 eth0:3 Link encap:Ethernet HWaddr 00:0A:5E:3C:E2:B7 inet addr:xxx.xx.xxx.229 Bcast:xxx.xx.xxx.239 Mask:255.255.255.240 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:11 Base address:0xdc00 eth0:4 Link encap:Ethernet HWaddr 00:0A:5E:3C:E2:B7 inet addr:xxx.xx.xxx.230 Bcast:xxx.xx.xxx.239 Mask:255.255.255.240 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:11 Base address:0xdc00 eth0:5 Link encap:Ethernet HWaddr 00:0A:5E:3C:E2:B7 inet addr:xxx.xx.xxx.231 Bcast:xxx.xx.xxx.239 Mask:255.255.255.240 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:11 Base address:0xdc00 eth0:6 Link encap:Ethernet HWaddr 00:0A:5E:3C:E2:B7 inet addr:xxx.xx.xxx.232 Bcast:xxx.xx.xxx.239 Mask:255.255.255.240 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:11 Base address:0xdc00 eth1 Link encap:Ethernet HWaddr 00:0A:5E:3C:EC:DC inet addr:192.168.168.1 Bcast:192.168.168.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:4344124 errors:0 dropped:0 overruns:0 frame:0 TX packets:6480875 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:913169533 (870.8 MiB) TX bytes:1159374496 (1.0 GiB) Interrupt:5 Base address:0xe400 eth2 Link encap:Ethernet HWaddr 00:A1:B0:FF:42:12 inet addr:192.168.130.1 Bcast:192.168.130.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:13628 errors:0 dropped:0 overruns:0 frame:0 TX packets:19874 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:3418281 (3.2 MiB) TX bytes:3811894 (3.6 MiB) Interrupt:12 Base address:0x2000 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:92301 errors:0 dropped:0 overruns:0 frame:0 TX packets:92301 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:165957728 (158.2 MiB) TX bytes:165957728 (158.2 MiB) gw2: root@gw2:~# ifconfig eth0 Link encap:Ethernet HWaddr 00:0A:48:1B:42:FB inet addr:192.168.130.2 Bcast:192.168.130.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:12909 errors:0 dropped:0 overruns:1 frame:0 TX packets:13659 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:3396440 (3.2 Mb) TX bytes:3422836 (3.2 Mb) Interrupt:5 Base address:0xc000 eth1 Link encap:Ethernet HWaddr 00:02:44:A8:A3:95 inet addr:10.1.10.1 Bcast:10.1.10.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:14382 errors:0 dropped:0 overruns:0 frame:0 TX packets:13004 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:2888311 (2.7 Mb) TX bytes:2713452 (2.5 Mb) Interrupt:11 Base address:0x9400 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:546 errors:0 dropped:0 overruns:0 frame:0 TX packets:546 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:41814 (40.8 Kb) TX bytes:41814 (40.8 Kb) @VladSun с "p route change 10.1.10.0/24 via 192.168.130.2" не става нищо. По принцип преди да постна тук пробвах какви ли не простотии по рутинг таблиците и iptables, но... Но и честно казано не съм толкова на "ти" с тези неща. Може би пропускам нещо очевидно... Титла: Snat и dnat през vpn Публикувано от: в Jun 16, 2006, 12:25 Хм, добре де с openswan-a не вдигаш ли един интерфейс на който да слагаш адрес на едната страна на тунела?
Как точно го вдигаш този тунел? Титла: Snat и dnat през vpn Публикувано от: muffty в Jun 16, 2006, 12:34 @gat
root@gw1:~# less /etc/ipsec.conf left=192.168.130.1 leftsubnet=192.168.168.0/24 leftid=@gw1.loc leftrsasigkey= right=192.168.130.2 rightsubnet=10.1.10.0/24 rightid=@gw2.loc rightrsasigkey= auto=start root@gw2:~# less /etc/ipsec.conf left=192.168.130.2 leftsubnet=10.1.10.0/24 leftid=@gw2.loc leftrsasigkey= right=192.168.130.1 rightsubnet=192.168.168.0/24 rightid=@gw1.loc rightrsasigkey= auto=start Тунела е между 10.1.10.0/24 и 192.168.168.0/24 и върви между 192.168.130.1 и 192.168.130.2 Титла: Snat и dnat през vpn Публикувано от: в Jun 16, 2006, 13:25 Хм, малоумна ми е била теорията верно
![]() Много интересно е защо пита за мак адреса на 10.1.10.99 след като не му е в сегмента, вижда ми се малко тъпо. Наистина нямам много идея. Бтв ако пробваш да вдигнеш proxy_arp за интерфейсите на 192.168.130.2 дали ще се получи нещо? echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp echo 1 > /proc/sys/net/ipv4/conf/eth1/proxy_arp Макар че ме съмнява.. Титла: Snat и dnat през vpn Публикувано от: muffty в Jun 16, 2006, 14:02 Цък, нищо не става с proxy_arp.
P.S. след "ip route change 10.1.10.0/24 via 192.168.130.2" tcpdump на eth0 на gw2 вече връща arp who-has 'ип-то-от-което-тествам-отвън' tell 192.168.130.2 |