Салют камрады! Что-то неладное с натом...
Есть серв с одним IP, на нем виртуалки. К виртуалкам нужен доступ из вне, делаю проброс портов по мануалу
cat /proc/sys/net/ipv4/ip_forward
1
iptables -n -v -L -t nat --line-number
Chain PREROUTING (policy ACCEPT 9 packets, 836 bytes)
num pkts bytes target prot opt in out source destination
1 1 52 DNAT tcp -- enp2s0 * 0.0.0.0/0 148.25.46.100 tcp dpt:2203 to:192.168.0.3:22
2 0 0 DNAT tcp -- enp2s0 * 0.0.0.0/0 148.25.46.100 tcp dpt:2203 to:192.168.0.3:22
3 2 104 DNAT tcp -- enp2s0 * 0.0.0.0/0 148.25.46.100 tcp dpt:13389 to:192.168.0.2:3389
4 0 0 DNAT tcp -- enp2s0 * 0.0.0.0/0 148.25.46.100 tcp dpt:5269 to:192.168.0.3:5269
5 0 0 DNAT tcp -- enp2s0 * 0.0.0.0/0 148.25.46.100 tcp dpt:5222 to:192.168.0.3:5222
6 0 0 DNAT tcp -- enp2s0 * 0.0.0.0/0 148.25.46.100 tcp dpt:5223 to:192.168.0.3:5223
7 1 60 DNAT tcp -- enp2s0 * 0.0.0.0/0 148.25.46.100 tcp dpt:80 to:192.168.0.4:80
8 0 0 DNAT tcp -- enp2s0 * 0.0.0.0/0 148.25.46.100 tcp dpt:2204 to:192.168.0.4:22
9 0 0 DNAT tcp -- enp2s0 * 0.0.0.0/0 148.25.46.100 tcp dpt:8083 to:192.168.0.4:8083
10 0 0 DNAT tcp -- enp2s0 * 0.0.0.0/0 148.25.46.100 tcp dpt:8080 to:192.168.0.2:8080
11 0 0 DNAT tcp -- enp2s0 * 0.0.0.0/0 148.25.46.100 tcp dpt:8090 to:192.168.0.2:8090
12 0 0 DNAT tcp -- enp2s0 * 0.0.0.0/0 148.25.46.100 tcp dpt:80 to:192.168.0.4:80
13 0 0 DNAT tcp -- enp2s0 * 0.0.0.0/0 148.25.46.100 tcp dpt:2204 to:192.168.0.4:22
14 0 0 DNAT tcp -- enp2s0 * 0.0.0.0/0 148.25.46.100 tcp dpt:2203 to:192.168.0.3:22
15 0 0 DNAT tcp -- enp2s0 * 0.0.0.0/0 148.25.46.100 tcp dpt:1701 to:192.168.0.2:1701
16 0 0 DNAT tcp -- enp2s0 * 0.0.0.0/0 148.25.46.100 tcp dpt:4500 to:192.168.0.2:4500
17 0 0 DNAT tcp -- enp2s0 * 0.0.0.0/0 148.25.46.100 tcp dpt:500 to:192.168.0.2:500
18 0 0 DNAT tcp -- enp2s0 * 0.0.0.0/0 148.25.46.100 tcp dpt:1723 to:192.168.0.2:1723
19 0 0 DNAT tcp -- enp2s0 * 0.0.0.0/0 148.25.46.100 tcp dpt:47 to:192.168.0.2:47
Chain INPUT (policy ACCEPT 6 packets, 328 bytes)
num pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 4 packets, 240 bytes)
num pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 5 packets, 292 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 MASQUERADE all -- * enp2s0 192.168.0.0/24 0.0.0.0/0
Видно, что PREROUTING срабатывает, и трафик перенаправляет. А вот маскарад не срабатывает, и обратно пакеты не идут
Делал по мануалу https://pve.proxmox.com/wiki/Network_Model
cat /etc/network/interaces
source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
iface lo inet6 loopback
auto enp2s0
iface enp2s0 inet static
address 148.25.46.100
netmask 255.255.255.224
gateway 148.251.46.97
iface enp2s0 inet6 static
address 2a01:4f8:202:172::2
netmask 64
gateway fe80::1
auto vmbr0
iface vmbr0 inet static
address 192.168.0.1
netmask 255.255.255.0
bridge_ports none
bridge_stp off
bridge_fd 0
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up iptables -t nat -A POSTROUTING -s '192.168.0.0/24' -o eth0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '192.168.0.0/24' -o eth0 -j MASQUERADE