dostęp do Internetu poprzez kilka adresów publicznych
|
andoros |
Dodano 15-07-2010 10:01
|
User
Posty: 21
Dołączył: 06/07/2010 17:26
|
WRT54GL + Tomato v.1.21
Standardowo wejscie WAN routera skonfigurowane jest jako jeden publiczny nr IP. zatem wszyscy użytkownicy wewnetrznej sieci LAN dzięki NAT-owaniu widziani będą w internecie jako ten jeden, wspólny IP.
Posiadając kilka publicznych nr IP, czy można wyizolowac ruch dowolnego uzytkownika LAN (ze stałym wewnetrznym nr IP) do indywidualnego publicznego nr IP? Krótko mówiąc chciałbym danemu aresowi wewnetrznemu przypisać indywidualny publiczny nr IP, którym afiszuje sie w Internecie i ponosi za swoje działania odpowiedzialność.
Czy jest na tym sprzęcie taka możliwość?
Zapewne pomocne będzie iptables, ale jak to stworzyć? |
|
|
|
shibby |
Dodano 15-07-2010 10:29
|
SysOp
Posty: 17110
Dołączył: 15/01/2009 20:30
|
http://openlinksys.info/forum/viewthr...post_67423
w razie pytan pokaz ifconfig, /etc/iptables oraz powiedz jakie ip publiczne do jakiego ip prywatnego chcesz zbindowac to dostaniesz rozwiazanie, przetestujesz i opiszemy to wkoncu jako tutorial bo temat czesto powraca, tylko nikt (jak np w ww temacie) nie daje info ze dziala ten sposob napewno
Edytowany przez shibby dnia 15-07-2010 10:32
Router: Unifi Cloud Gateway Max
Switch: Netgear MS510TXPP
Switch: Unifi USW-Flex-Mini - szt. 2
Wi-Fi: Unifi U6-Lite - szt. 2
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD, Intel X710-DA2 SFP+
VM #1: Synology SA6400
VM #2: Debian, WWW
VM #3: Home Assistant OS
|
|
|
|
andoros |
Dodano 15-07-2010 12:27
|
User
Posty: 21
Dołączył: 06/07/2010 17:26
|
Połaczyłem sie telnetem do WRT i mam pytanie.
Czy jest gdzieś jakiś szerszy opis funkcji i komend tu udostepnianych? Wywołanie helpa zwraca tylko mizerną informację (i do tego niekompletną)
Mając do czynienia z DEC-UNIX zawsze był pod ręką man, a tu wygląda, że niczego nie ma :-)
andoros załączono następujące plik:
Nie masz uprawnień, by zobaczyć załączniki w tym wątku.
Edytowany przez andoros dnia 15-07-2010 12:27
|
|
|
|
shibby |
Dodano 15-07-2010 12:45
|
SysOp
Posty: 17110
Dołączył: 15/01/2009 20:30
|
bo to linux
wydaj komende ifconfig to ci zwroci liste interfejsów.
pozniej wydaj komende cat /etc/iptables to pokaze ci firewalla i maskarade.
podaj ip publiczne i prywatne
podam ci komendy i zobaczysz czy dziala. Jak bedzie ok to wrzucasz do skryptu firewall przez ww i gotowe
Router: Unifi Cloud Gateway Max
Switch: Netgear MS510TXPP
Switch: Unifi USW-Flex-Mini - szt. 2
Wi-Fi: Unifi U6-Lite - szt. 2
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD, Intel X710-DA2 SFP+
VM #1: Synology SA6400
VM #2: Debian, WWW
VM #3: Home Assistant OS
|
|
|
|
andoros |
Dodano 15-07-2010 13:42
|
User
Posty: 21
Dołączył: 06/07/2010 17:26
|
OK, widzę, że to coś linuksowego. Te elementy o których pisałeś już wcześniej wydłubałem z systemu. Ale ich nie prezentuję, ponieważ muszę się najpierw zastanowić jak to ma być poukładane. Pozwolisz, że do tematu wrócimy w poniedziałek (rozumiesz, inne obowiązki)?
Pytanie dotyczyło raczej elementu poznawczego całego systemu. Człowiek sie uczy całe zycie .
Zakres komend wyświetlany w helpie ani nie jest kompletny ani nie ma żadnych informacji szczegółowych jak ich użyć i co ważniejsze jaki jest skutek ich użycia. Stąd pytanie o coś w rodzaju man'a
Jeszcze jedno pytanie na marginesie poprzedniego wpisu. Czy dokonując zmian w skryptach firewall aby one zaistniały, muszę koniecznie robić reboot routera? Sam save nie wystarczy? |
|
|
|
shibby |
Dodano 15-07-2010 14:30
|
SysOp
Posty: 17110
Dołączył: 15/01/2009 20:30
|
info uzycia jest do kazdej komendy np
ifconfig --help
lista momend w duzym skrocie to
ls /bin
oraz
ls /sbin
typowego manuala usunieto by zaoszczedzis miejsce. W pelnym linuxie jest manual
man
btw zamiast telnetu, uzywaj ssh - bezpieczniejsze
co do samego problemu to to jest raptem 4 linijki kodu
Edytowany przez shibby dnia 15-07-2010 14:47
Router: Unifi Cloud Gateway Max
Switch: Netgear MS510TXPP
Switch: Unifi USW-Flex-Mini - szt. 2
Wi-Fi: Unifi U6-Lite - szt. 2
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD, Intel X710-DA2 SFP+
VM #1: Synology SA6400
VM #2: Debian, WWW
VM #3: Home Assistant OS
|
|
|
|
shibby |
Dodano 15-07-2010 14:46
|
SysOp
Posty: 17110
Dołączył: 15/01/2009 20:30
|
oto przykład
Założenia:
interfejs WAN - vlan1
adresy publiczne - 83.0.0.49 - 83.0.0.54
adres sieci - 83.0.0.48
adres rozgloszeniowy - 83.0.0.55
maska - 255.255.255.248, czyli 29bit
Załóżmy że chcemy adres 83.0.0.50 przydzielić komputerowi 192.168.1.5.
Dodajemy alias sieciówki
ifconfig vlan1:1 83.0.0.50 netmask 255.255.255.248
Konfigurujemy routing
iptables -t nat -I POSTROUTING -s 192.168.1.5 -j SNAT --to 83.0.0.50
iptables -t nat -I PREROUTING -d 83.0.0.50 -j DNAT --to 192.168.1.5
Oraz firewall
iptables -I FORWARD -s 83.0.0.50 -d 192.168.1.5 -j ACCEPT
Gotowe.
Te cztery pogrubione linijki wklejamy do skryptu firewall przez gui, zapisujemy i robimy restart routera i powinno działać.
czekam na potwierdzenie.
Router: Unifi Cloud Gateway Max
Switch: Netgear MS510TXPP
Switch: Unifi USW-Flex-Mini - szt. 2
Wi-Fi: Unifi U6-Lite - szt. 2
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD, Intel X710-DA2 SFP+
VM #1: Synology SA6400
VM #2: Debian, WWW
VM #3: Home Assistant OS
|
|
|
|
andoros |
Dodano 16-07-2010 11:55
|
User
Posty: 21
Dołączył: 06/07/2010 17:26
|
Przetestowałem dziś Twoje rozwiązanie i z przyjemnością stwierdzam, że to działa.
Kolejne przypisanie adresu publicznego do prywatnego jako vlan1:1, vlan1:2, vlan1:3, itd funkcjonuje prawidłowo. Pozostałe adresy prywatne, którym nie przydzielono osobistego adresu publicznego komunikują się z Internetem poprzez wspólny adres publiczny zdefiniowany w vlan1 (to ten, który jest wpisany w nastawach WAN routera). I o to chudziło.
Jest super, czapki z głów
Ale... zaistniał pewnien problem.
Ponieważ mam aktualnie 32 adresy publiczne (pomijając podsieć, bradcast i gateway to faktycznie jest ich 29) próbowałem przypisać wszystkie. Przy próbie załadowania tego skryptu do pola firewall dostałem komunikat, że skrypt jest za długi i dopuszczalne jest tylko 8192 bytes. W praktyce skrypt pomieścił tylko powiazanie dla 20 adresów
Aktualnie skrypt przypisuje w następujący sposób:
ifconfig vlan1:1 93.159.52.227 netmask 255.255.255.224
iptables -t nat -I POSTROUTING -s 172.16.7.227 -j SNAT --to 93.159.52.227
iptables -t nat -I PREROUTING -d 93.159.52.227 -j DNAT --to 172.16.7.227
iptables -I FORWARD -s 93.159.52.227 -d 172.16.7.227 -j ACCEPT
ifconfig vlan1:2 93.159.52.228 netmask 255.255.255.224
iptables -t nat -I POSTROUTING -s 172.16.7.228 -j SNAT --to 93.159.52.228
iptables -t nat -I PREROUTING -d 93.159.52.228 -j DNAT --to 172.16.7.228
iptables -I FORWARD -s 93.159.52.228 -d 172.16.7.228 -j ACCEPT
ifconfig vlan1:3 93.159.52.229 netmask 255.255.255.224
iptables -t nat -I POSTROUTING -s 172.16.7.229 -j SNAT --to 93.159.52.229
iptables -t nat -I PREROUTING -d 93.159.52.229 -j DNAT --to 172.16.7.229
iptables -I FORWARD -s 93.159.52.229 -d 172.16.7.229 -j ACCEPT
itd
Czy nie ma tu możliwości agregacji tych numerów, czyli przypisanie grupy publicznych do grupy prywatnych?
Bo to jest problem, ponieważ skrypt firewall zawiera juz podział pasma internetowego (które zapewne będzie ulegało modyfikacji), a czeka jeszcze do zrobienia sztywne powiąznie MAC z IP. To się może znowu nie zmieścić. |
|
|
|
shibby |
Dodano 16-07-2010 12:28
|
SysOp
Posty: 17110
Dołączył: 15/01/2009 20:30
|
Cytat dostałem komunikat, że skrypt jest za długi i dopuszczalne jest tylko 8192 bytes
Standartowy komunikat. Firewall zapisywany jest we flashu i nie pomiesci wiecej niz 8KB danych w zmiennej.
rozwiazan jest pare.
najkrotsze to zastosowac petle, wtedy calosc zmiesci sie w pary linijkach
kolejne rozwiazanie to skrocic firewall czyli np iptables -t nat -I POSTROUTING zapisac do krotsej zmiennej np
Cytat POST="iptables -t nat -I POSTROUTING"
PRE="iptables -t nat -I PREROUTING"
i wtedy stosujesz
Cytat $POST -s 172.16.7.228 -j SNAT --to 93.159.52.228
$PRE -d 93.159.52.228 -j DNAT --to 172.16.7.228
a wiec skutecznie zmniejszasza wielkosc skryptu.
Kolejne wyjscie to zapisac calość w pliku np na /jffs a w firewallu dac wywolanie tego skryptu. Wtedy nie jestes ograniczony wielkoscia firewalla.
Router: Unifi Cloud Gateway Max
Switch: Netgear MS510TXPP
Switch: Unifi USW-Flex-Mini - szt. 2
Wi-Fi: Unifi U6-Lite - szt. 2
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD, Intel X710-DA2 SFP+
VM #1: Synology SA6400
VM #2: Debian, WWW
VM #3: Home Assistant OS
|
|
|
|
shibby |
Dodano 16-07-2010 12:46
|
SysOp
Posty: 17110
Dołączył: 15/01/2009 20:30
|
proste rozwiązanie w petli
Załorzenia
adresy użytkowe 93.159.52.225-93.159.52.254 z czego adres 93.159.52.225 jest globalny.
przypisujemy hostom 172.16.7.XXX adresy 93.159.52.XXX
gdzie XXX to ta sama cyfra.
Petla może wyglącać tak:
Cytat min=226;
max=254;
while [ $min -le $max ]; do
ifconfig vlan1:$min 93.159.52.$min netmask 255.255.255.224
iptables -t nat -I POSTROUTING -s 172.16.7.$min -j SNAT --to 93.159.52.$min
iptables -t nat -I PREROUTING -d 93.159.52.$min -j DNAT --to 172.16.7.$min
iptables -I FORWARD -s 93.159.52.$min -d 172.16.7.$min -j ACCEPT
min=$((min+1))
done
wklej to i kazdy prywatny adres ip dostanie swoj odpowiednik adresu publicznego tym ktorzy maja wychodzic przez glowny adres x.225 daj prywatny adres z poza adresacji 226-254
Edytowany przez shibby dnia 16-07-2010 13:25
Router: Unifi Cloud Gateway Max
Switch: Netgear MS510TXPP
Switch: Unifi USW-Flex-Mini - szt. 2
Wi-Fi: Unifi U6-Lite - szt. 2
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD, Intel X710-DA2 SFP+
VM #1: Synology SA6400
VM #2: Debian, WWW
VM #3: Home Assistant OS
|
|
|
|
shibby |
Dodano 16-07-2010 12:50
|
SysOp
Posty: 17110
Dołączył: 15/01/2009 20:30
|
Cytat Bo to jest problem, ponieważ skrypt firewall zawiera juz podział pasma internetowego (które zapewne będzie ulegało modyfikacji),
nie jestem pewien ale moze i dzialac podzial po adresach prywatnych bez wzgledu czy maja wlasny publiczny ip czy wychodza glownym ipkiem.
Cytat a czeka jeszcze do zrobienia sztywne powiąznie MAC z IP. To się może znowu nie zmieścić.
tu w sumie tez mozna petle zastosowac wyciagajac dane z pliku dnsmasq.conf. Tylko najpierw trzeba tą regulkę iptables wyczaic jak ma wygladac.
Router: Unifi Cloud Gateway Max
Switch: Netgear MS510TXPP
Switch: Unifi USW-Flex-Mini - szt. 2
Wi-Fi: Unifi U6-Lite - szt. 2
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD, Intel X710-DA2 SFP+
VM #1: Synology SA6400
VM #2: Debian, WWW
VM #3: Home Assistant OS
|
|
|
|
shibby |
Dodano 16-07-2010 13:40
|
SysOp
Posty: 17110
Dołączył: 15/01/2009 20:30
|
dla potomnych zrobiłem tutorial
http://openlinksys.info/forum/viewthr...d_id=10852
Router: Unifi Cloud Gateway Max
Switch: Netgear MS510TXPP
Switch: Unifi USW-Flex-Mini - szt. 2
Wi-Fi: Unifi U6-Lite - szt. 2
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD, Intel X710-DA2 SFP+
VM #1: Synology SA6400
VM #2: Debian, WWW
VM #3: Home Assistant OS
|
|
|
|
andoros |
Dodano 18-07-2010 19:58
|
User
Posty: 21
Dołączył: 06/07/2010 17:26
|
Jeszcze mała dygresja
Może się zdarzyć, że będziemy chcieli wykorzystać adresy nie będące kolejnymi liczbami (np: 83.0.0.50, 83.0.0.53, ...57, ...60)
Proponuję wtedy zastosować pętlę for
for var in 50 53 57 60 (i kolejne rodzielone spacją)
do
ifconfig vlan1:$var 83.0.0.$var netmask 255.255.255.224
iptables -t nat -I POSTROUTING -s 172.16.7.$var -j SNAT --to 83.0.0.$var
iptables -t nat -I PREROUTING -d 83.0.0.$var -j DNAT --to 172.16.7.$var
iptables -I FORWARD -s 83.0.0.$var -d 172.16.7.$var -j ACCEPT
done
w wyniku otrzymamy:
ifconfig vlan1:50 83.0.0.50 netmask 255.255.255.224
iptables -t nat -I POSTROUTING -s 172.16.7.50 -j SNAT --to 83.0.0.50
iptables -t nat -I PREROUTING -d 83.0.0.50 -j DNAT --to 172.16.7.50
iptables -I FORWARD -s 83.0.0.50 -d 172.16.7.50 -j ACCEPT
ifconfig vlan1:53 83.0.0.53 netmask 255.255.255.224
iptables -t nat -I POSTROUTING -s 172.16.7.53 -j SNAT --to 83.0.0.53
iptables -t nat -I PREROUTING -d 83.0.0.53 -j DNAT --to 172.16.7.53
iptables -I FORWARD -s 83.0.0.53 -d 172.16.7.53 -j ACCEPT
ifconfig vlan1:57 83.0.0.57 netmask 255.255.255.224
iptables -t nat -I POSTROUTING -s 172.16.7.57 -j SNAT --to 83.0.0.57
iptables -t nat -I PREROUTING -d 83.0.0.57 -j DNAT --to 172.16.7.57
iptables -I FORWARD -s 83.0.0.57 -d 172.16.7.57 -j ACCEPT
ifconfig vlan1:60 83.0.0.60 netmask 255.255.255.224
iptables -t nat -I POSTROUTING -s 172.16.7.60 -j SNAT --to 83.0.0.60
iptables -t nat -I PREROUTING -d 83.0.0.60 -j DNAT --to 172.16.7.60
iptables -I FORWARD -s 83.0.0.60 -d 172.16.7.60 -j ACCEPT
Edytowany przez andoros dnia 19-07-2010 06:59
|
|
|
|
andoros |
Dodano 19-07-2010 06:58
|
User
Posty: 21
Dołączył: 06/07/2010 17:26
|
Dla jasności zagadnienia sprawdziłem jeszcze wpływ powiązania prywatnego z publicznym adresem IP na podział pasma.
Otóż nie ma zadnego wpływu.
Można się było tego spodziewać ponieważ podzial pasma jest definiowany tylko na adresach prywatnych i z tego punktu widzenia nie jest istotne jakim adresem publicznym wychodzą pakiety do internetu.
Pozostała jeszcze kwestia powiązania MAC z IP, ale to już mamy w innym wątku. |
|
|
|
shibby |
Dodano 19-07-2010 07:42
|
SysOp
Posty: 17110
Dołączył: 15/01/2009 20:30
|
dzięki, uzupelniłem tutorial
Router: Unifi Cloud Gateway Max
Switch: Netgear MS510TXPP
Switch: Unifi USW-Flex-Mini - szt. 2
Wi-Fi: Unifi U6-Lite - szt. 2
Proxmox VE: i5-13400T, 64GB RAM, 2x 512GB NVMe, 3x 2TB SSD, Intel X710-DA2 SFP+
VM #1: Synology SA6400
VM #2: Debian, WWW
VM #3: Home Assistant OS
|
|
|
|
andoros |
Dodano 19-07-2010 08:03
|
User
Posty: 21
Dołączył: 06/07/2010 17:26
|
To ja bardzo dziękuję za pomoc
Możemy zatem uznać temat za rozwiązany i pozwolę sobie jako inicjator uznać wątek za zakończony.
Pozdrawiam, Andrzej |
|
|
|
PartyBOY |
Dodano 12-05-2014 09:10
|
User
Posty: 36
Dołączył: 23/05/2006 15:37
|
Hej,
Wczoraj w środowisku laboratoryjnym testowałem ten skrypt.
WAN zew IP
router1 (dawca Internetu)
LAN 10.0.1.254/24
|
|
WAN 10.0.1.100
router2 (Tomato)
LAN 192.168.1.254/24
|
|
2-3 PCty
Adresy chciałem zbindować w ten sposób
PC1 192.168.1.1/24 <-> 10.0.1.1/24
PC2 192.168.1.2/24 <-> 10.0.1.2/24
PC3 192.168.1.3/24 <-> 10.0.1.3/24
Problem w tym, że na PC2 i PC3 nie działał Internet.
Przekierowanie ruchu działało - PC2 był osiągalny pod 10.0.1.2/24, PC3 był osiągalny pod 10.0.1.3/24
Na PC1 działało wszystko bez problemu (Internet + przekierowanie ruchu). Jedyna różnica w skrypcie była taka, że u mnie WAN był na vlan2, więc robiłem vlan2:1, vlan2:2, vlan2:3.
Czy ktoś wie, czemu tak się działo?
Połączony z 13 maj 2014 18:15:16:
UPDATE
Spraw się wyjaśniła - wszystko działa jak należy - po prostu router1 (dawca internetu) nie ogarniał znatoanych pakietów. TECHNICOLOR z UPC to jednak gówno. Jak tylko postawiłem za nim jeszcze jeden "normalny" router to już internet działa...
Edytowany przez PartyBOY dnia 13-05-2014 18:15
|
|
|