Sziasztok,
Van egy amazon-on bérelt instancom. Úgy alakult, hogy kellene hozzá még egy IP cím. Az amazon webes felületén össze is nyomkodtam. A VPS megkapta a 2. hálókártyát is és ahhoz hozzár rendeltem a tűzfal szabályokat és a külső IP-t is. Ennek ellenére nem akarja az igazságot és két hülyeséget produkál:
Mit és hogyan kell beállítani, gondolom a routing táblába, hogy mind a két IP címen elérhető legyen minden szolgáltatás, amit tűzfalon engedélyezek (pl: web mind a kettőn menjen, de SSH csak az egyiken)? Illetve debian esetében, hogyan lehet azt beállítani, hogy a reboot után is minden jó legyen?
Válaszotokat és a segítséget előre is köszönöm.
Ja és a de béna vagy, hogy még ezt sem tudod megcsinálni és hasonló okos kommentket kérjük hagyjuk ki. Azért jöttem ide segítségért, mert tényleg nem értem. Látom a neten a leírásokat a routing tábláról és a rule-ról, de nem értem, hogy mi és hogyan működik ilyen esetben, így akár hogy írom be, nem működik.
# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
link/ether 0a:71:41:e9:72:cc brd ff:ff:ff:ff:ff:ff
inet 172.31.7.187/20 brd 172.31.15.255 scope global dynamic ens5
valid_lft 3133sec preferred_lft 3133sec
inet6 fe80::871:41ff:fee9:72cc/64 scope link
valid_lft forever preferred_lft forever
3: ens6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP group default qlen 1000
link/ether 0a:d3:62:ff:6d:f4 brd ff:ff:ff:ff:ff:ff
inet 172.31.8.219/20 brd 172.31.15.255 scope global dynamic ens6
valid_lft 3421sec preferred_lft 3421sec
inet6 fe80::8d3:62ff:feff:6df4/64 scope link
valid_lft forever preferred_lft forever
# ip route
default via 172.31.0.1 dev ens5
172.31.0.0/20 dev ens5 proto kernel scope link src 172.31.7.187
172.31.0.0/20 dev ens6 proto kernel scope link src 172.31.8.219
# ip rule
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
# ifconfig
ens5: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9001
inet 172.31.7.187 netmask 255.255.240.0 broadcast 172.31.15.255
inet6 fe80::871:41ff:fee9:72cc prefixlen 64 scopeid 0x20<link>
ether 0a:71:41:e9:72:cc txqueuelen 1000 (Ethernet)
RX packets 1443 bytes 900201 (879.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 956 bytes 452276 (441.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens6: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9001
inet 172.31.8.219 netmask 255.255.240.0 broadcast 172.31.15.255
inet6 fe80::8d3:62ff:feff:6df4 prefixlen 64 scopeid 0x20<link>
ether 0a:d3:62:ff:6d:f4 txqueuelen 1000 (Ethernet)
RX packets 18 bytes 1870 (1.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 49 bytes 4410 (4.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 5 bytes 560 (560.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 5 bytes 560 (560.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
- 209 megtekintés
Hozzászólások
Az adott serviceknek meg tudod adni hogy milyen IP-n es milyen porton hallgassanak, ez altalaban pl egy httpd eseteben *:80.
Itt eldontheted, hogy megadsz neki fix IP-t vagy az iptables-el korlatozod hova johet be keres.
par tool a debugolashoz,
ss - regi netstat mostani megfeleloje, ezzel meg tudod nezni hogy ki milyen IP/port-on listenel
tcpdump - ezzel tudod debugolni, hogy meddig jut el a keresed
iptables-persistent - ezzel reboot utan is megmaradnak a tuzfal szabalyok, ha lementetted oket
routing tablat/tablakat ehhez szerintem nemnagyon kell basztatni, de majd meg ugyis kiderul ez az, hogy vegulis miert es hogyan szeretnel valamit:)
- A hozzászóláshoz be kell jelentkezni
kipróbáltam már azt, hogy SSH-nak megadtam a két belső IP-t figyelésre, de akkor sem értem el, csak az egyikről... de miért is értem volna el, logikusan végig gondolva
# netstat -lanp | grep LISTEN
tcp 0 0 0.0.0.0:55000 0.0.0.0:* LISTEN 547/sshd
# netstat -lanp | grep LISTEN
tcp 0 0 172.31.7.187:55000 0.0.0.0:* LISTEN 1284/sshd
tcp 0 0 172.31.8.219:55000 0.0.0.0:* LISTEN 1284/sshd
a felső a 0.0.0.0-val azt jelenti, hogy bárhonnan jöhet, az alsó esetben pedig korlátoztam erre a két ip-re... így hálózati szempontból nem látok a kettő között különbséget és nincs is, mert nem működik
- A hozzászóláshoz be kell jelentkezni
tcpdump-al megnezted meddig jut el? Egyebkent amit Zs irt az lesz a szep megoldas (-mark), rpfilter finomitas + ip forward engedes valoszinuleg meg mukodhet, de az szeritem csunya.
- A hozzászóláshoz be kell jelentkezni
igen, megnéztem... betalálnak a csomagok, mert ezt kaptam, amikor a másik ip-re próbáltam csatlakozni ssh-n, előtte és utána pedig csend volt a csatornán, tehát a csomag bejön, vagyis amazon oldaláról jól állítottam be a dolgokat
# tcpdump -i ens6
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens6, link-type EN10MB (Ethernet), capture size 262144 bytes
10:09:53.085557 IP 51B6AE43.dsl.pool.telekom.hu.62542 > ip-172-31-8-219.eu-central-1.compute.internal.55000: Flags [S], seq 419777996, win 64240, options [mss 1452,nop,wscale 8,nop,nop,sackOK], length 0
10:09:54.098371 IP 51B6AE43.dsl.pool.telekom.hu.62542 > ip-172-31-8-219.eu-central-1.compute.internal.55000: Flags [S], seq 419777996, win 64240, options [mss 1452,nop,wscale 8,nop,nop,sackOK], length 0
10:09:55.907499 IP6 fe80::8d3:62ff:feff:6df4.dhcpv6-client > ff02::1:2.dhcpv6-server: dhcp6 solicit
10:09:56.112715 IP 51B6AE43.dsl.pool.telekom.hu.62542 > ip-172-31-8-219.eu-central-1.compute.internal.55000: Flags [S], seq 419777996, win 64240, options [mss 1452,nop,wscale 8,nop,nop,sackOK], length 0
10:10:00.115817 IP 51B6AE43.dsl.pool.telekom.hu.62542 > ip-172-31-8-219.eu-central-1.compute.internal.55000: Flags [S], seq 419777996, win 64240, options [mss 1452,nop,wscale 8,nop,nop,sackOK], length 0
10:10:08.122481 IP 51B6AE43.dsl.pool.telekom.hu.62542 > ip-172-31-8-219.eu-central-1.compute.internal.55000: Flags [S], seq 419777996, win 64240, options [mss 1452,nop,wscale 8,nop,nop,sackOK], length 0
10:10:33.681527 ARP, Request who-has ip-172-31-8-219.eu-central-1.compute.internal tell ip-172-31-0-1.eu-central-1.compute.internal, length 28
10:10:33.681547 ARP, Reply ip-172-31-8-219.eu-central-1.compute.internal is-at 0a:d3:62:ff:6d:f4 (oui Unknown), length 28
- A hozzászóláshoz be kell jelentkezni
Alapértelmezetten csak egy default gw van, így a kimenő csomagok azon sunnyognak ki.
Két default gw esetén alapértelmezetten az elsőn fog kimenni a csomag - akkor is, ha a második lábon jött be a kapcsolathoz tartozó csomag. Ilyenkor kell iptables segítségével megjelölni, hogy ez a kapcsolat a 2. lábon épült fel, tehát a választ is a 2. lábon kell kiküldeni. Tehát jó felé keresgélsz, hogy a routing a hunyó, de itt már az iproute2 csomag kell, külön definiálandó a route az egyik láb esetén és külön a másik esetén, de a döntés, hogy mely routing tábla alkalmazandó, az az iptables által beállított jelölés alapján dől el.
- A hozzászóláshoz be kell jelentkezni
nem kell mark-olnod PBR eleg
- A hozzászóláshoz be kell jelentkezni
magyarul? :)
- A hozzászóláshoz be kell jelentkezni
Policy Based Routing
Fordítsd le magyarra ha gondolod :D
ui: egy link. https://osric.com/chris/accidental-developer/2019/03/linux-policy-based…
Fedora 41, Thinkpad x280
- A hozzászóláshoz be kell jelentkezni
https://serverfault.com/questions/999928/response-packet-on-the-same-in…
ez egy eleg jo osszefoglalo
- A hozzászóláshoz be kell jelentkezni
köszi, ez sokat segített megérteni
- A hozzászóláshoz be kell jelentkezni
És ha nincs is iptables használatban? A VPS szintjén nem használok tűzfalat, mert az amazon webes felületén mindent be lehet állítani precízen és mivel ott szabály csoportoket tudok létrehozni, így fel tudom venni külön csoportokbe a web szabályokat, a ssh szabályokat és minden VPS-hez azt, vagy azokat rendelem hozzá, amit szeretnék... így sokkal könnyebb ott kezelni egybe minden vps-t, mint a vps-en belül iptables használatával.
routing táblája ettől független ugye van a gépnek, csak nagyon nem látom át, hogy mi micsoda benne és miért nem találnak ki a csomagok... régen tanultam cisco routerek konfigurálását cli-ben, akkor értettem ezeket, illetve akkor fel tudtam húzni egy komoly környezetet, de ez 2009-be volt és ez sajnos nem olyan, mint a biciklizés
- A hozzászóláshoz be kell jelentkezni
# ip route
default via 172.31.0.1 dev ens5
172.31.0.0/20 dev ens5 proto kernel scope link src 172.31.7.187
172.31.0.0/20 dev ens6 proto kernel scope link src 172.31.8.219
vagyis ha jól értem, akkor itt az a gond, hogy bejön az adat ens5 csatolón és elmegy a 172.31.0.1 felé a válasz, ami oda is talál, ahova kell, de amikor az ens6-on jön be az adat, akkor is az ens5 "kártyán" megy vissza a válasz a 172.31.0.1 felé és ezért tűnik úgy mondjuk egy ssh kliensnek, hogy elérhetetlen a szerver?
- A hozzászóláshoz be kell jelentkezni
Az AWS-es setupról is kéne írjál. Elastic IP van vagy ELB?
zászló, zászló, szív
- A hozzászóláshoz be kell jelentkezni
Mindkét hálókártyára rárakod mindkét IP-t :^)
- A hozzászóláshoz be kell jelentkezni
Sikerült megoldani a problémát és írtam rá egy scriptet is. Mivel azt vettem észre, hogy az indításoknál random választ default gateway-t, ezért lekezeltem mind a két esetet.
A script itt kapott helyet: /etc/network/if-pre-up.d/route_multiple (így a gép indulás után, amikor felépült a network alrendszer, lefuttatja a debian magától). Futtatás után pedig már visszatalálnak a csomagok.
#!/bin/sh
CMD_IP=`which ip`
CMD_SED=`which sed`
DEVICE_1_NAME="ens5"
DEVICE_2_NAME="ens6"
DEVICE_1_ADDR=`${CMD_IP} -f inet addr show ${DEVICE_1_NAME} | ${CMD_SED} -En -e 's/.*inet ([0-9.]+).*/\1/p'`
DEVICE_2_ADDR=`${CMD_IP} -f inet addr show ${DEVICE_2_NAME} | ${CMD_SED} -En -e 's/.*inet ([0-9.]+).*/\1/p'`
DEFAULT_GW_DEVICE=`${CMD_IP} route show default | awk '{print $5}'`
DEFAULT_GW_ADDR=`${CMD_IP} route show default | ${CMD_SED} -En -e 's/.+ ([0-9.]+).*/\1/p'`
################################################################################
if [ "${DEFAULT_GW_DEVICE}" = "${DEVICE_1_NAME}" ]; then
${CMD_IP} rule add from ${DEVICE_2_ADDR} table default
${CMD_IP} route add default via ${DEFAULT_GW_ADDR} dev ${DEVICE_2_NAME} table default
fi
################################################################################
if [ "${DEFAULT_GW_DEVICE}" = "${DEVICE_2_NAME}" ]; then
${CMD_IP} rule add from ${DEVICE_1_ADDR} table default
${CMD_IP} route add default via ${DEFAULT_GW_ADDR} dev ${DEVICE_1_NAME} table default
fi
################################################################################
${CMD_IP} route flush cache
- A hozzászóláshoz be kell jelentkezni
köszi mindenkinek a segítséget és remélem a scriptem majd segítség lesz másoknak is
- A hozzászóláshoz be kell jelentkezni