Маскарадированная сеть CentOS с не подключенными клиентами iptables: Невозможно пропинговать
Я начинающий системный администратор, работающий в системе с сервером CentOS, маскирующей трафик на клиентских компьютерах, на которых также работает CentOS. Что-то с таблицами испортилось, и у моих клиентов больше нет подключения к интернету.
Я пытаюсь получить ping
запросы работают в качестве первого шага и точно определяют, где происходит сбой потока трафика, но я недостаточно разбираюсь в конфигурации, чтобы знать, что делать дальше. Для более опытных системных администраторов, быстрый взгляд на мои столы показывает что-нибудь ненормальное?
Пинг провал.
1. Сервер.
IP=98.139.183.24 ; _ tcpdump -i any "dst host $IP or src host $IP"
2. Клиент.
» IP=98.139.183.24; ping $IP
PING 98.139.183.24 (98.139.183.24) 56(84) bytes of data
3. Сервер.
Для нормальной работы я должен видеть ответы, что заставляет меня подозревать, что что-то не так с конфигурацией iptable на главном узле.
Замечания: b6
сопоставлен с 10.0.2.6
в /etc/hosts
,
» IP=98.139.183.24 ; _ tcpdump -i any "dst host $IP or src host $IP"
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes
20:07:38.553547 IP b6 > ir2.fp.vip.bf1.yahoo.com: ICMP echo request, id 3120, seq 1, length 64
20:07:38.553580 IP b6 > ir2.fp.vip.bf1.yahoo.com: ICMP echo request, id 3120, seq 1, length 64
20:07:39.552969 IP b6 > ir2.fp.vip.bf1.yahoo.com: ICMP echo request, id 3120, seq 2, length 64
20:07:39.552983 IP b6 > ir2.fp.vip.bf1.yahoo.com: ICMP echo request, id 3120, seq 2, length 64
20:07:40.552963 IP b6 > ir2.fp.vip.bf1.yahoo.com: ICMP echo request, id 3120, seq 3, length 64
20:07:40.552975 IP b6 > ir2.fp.vip.bf1.yahoo.com: ICMP echo request, id 3120, seq 3, length 64
^C
6 packets captured
6 packets received by filter
Конфигурация.
Примечание: я изменил это для конфигурации, работающей для меня, чтобы, возможно, помочь кому-либо с той же проблемой в будущем.
Сервер.
IP-адрес
~ » ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: p2p1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether 90:e2:ba:21:b8:10 brd ff:ff:ff:ff:ff:ff
inet 10.0.1.0/8 brd 10.255.255.255 scope global p2p1
inet6 fe80::92e2:baff:fe21:b810/64 scope link
valid_lft forever preferred_lft forever
3: p2p2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether 90:e2:ba:21:b8:11 brd ff:ff:ff:ff:ff:ff
inet <ext IP>/24 brd <ext ip prefix>.255 scope global p2p2
inet6 2001:468:c80:2106:92e2:baff:fe21:b811/64 scope global dynamic
valid_lft 2591809sec preferred_lft 604609sec
inet6 fe80::92e2:baff:fe21:b811/64 scope link
valid_lft forever preferred_lft forever
4: p2p3: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN qlen 1000
link/ether 90:e2:ba:21:b8:14 brd ff:ff:ff:ff:ff:ff
5: p2p4: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN qlen 1000
link/ether 90:e2:ba:21:b8:15 brd ff:ff:ff:ff:ff:ff
6: em1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN qlen 1000
link/ether d4:ae:52:99:8c:29 brd ff:ff:ff:ff:ff:ff
7: em2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN qlen 1000
link/ether d4:ae:52:99:8c:2a brd ff:ff:ff:ff:ff:ff
IP-маршрут
~ » ip route
<ext ip prefix>.0/24 dev p2p2 proto kernel scope link src <ext ip>
<prefix 1>.0.0/16 dev p2p1 scope link metric 1002
<prefix 1>.0.0/16 dev p2p2 scope link metric 1003
10.0.0.0/8 dev p2p1 proto kernel scope link src 10.0.1.0
default via <ext ip prefix>.1 dev p2p2 proto static
Iptables.
~ » _ iptables -t filter -L -v -n
Chain INPUT (policy ACCEPT 3715K packets, 531M bytes)
pkts bytes target prot opt in out source destination
76M 111G fail2ban-SSH tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
151M 183G ACCEPT all -- p2p2 * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
38M 6612M ACCEPT all -- p2p1 * 0.0.0.0/0 0.0.0.0/0
1604K 101M ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
1923 142K ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
755K 62M ACCEPT all -- p2p1 p2p2 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- p2p2 p2p1 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT 171M packets, 35G bytes)
pkts bytes target prot opt in out source destination
Chain fail2ban-SSH (1 references)
pkts bytes target prot opt in out source destination
76M 111G RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
~ » _ iptables -t mangle -L -v -n
Chain PREROUTING (policy ACCEPT 1733K packets, 974M bytes)
pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 1722K packets, 973M bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 10956 packets, 892K bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 1989K packets, 201M bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 2001K packets, 202M bytes)
pkts bytes target prot opt in out source destination
~ » _ iptables -t nat -L -v -n
Chain PREROUTING (policy ACCEPT 26992 packets, 6507K bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 10234 packets, 954K bytes)
pkts bytes target prot opt in out source destination
532K 54M MASQUERADE all -- * p2p2 10.0.0.0/8 0.0.0.0/0
Chain OUTPUT (policy ACCEPT 3229 packets, 394K bytes)
pkts bytes target prot opt in out source destination
ipforward: да
"Cat /proc/sys/net/ipv4/ip_forward 1
"Cat /etc/sysctl.conf | grep ip_forward net.ipv4.ip_forward = 1
Клиент: 10.0.2.6
,
IP-адрес
~ » ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: em1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether 18:03:73:0d:89:15 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.6/8 brd 10.0.0.255 scope global em1
inet6 fe80::1a03:73ff:fe0d:8915/64 scope link
valid_lft forever preferred_lft forever
3: em2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 18:03:73:0d:89:17 brd ff:ff:ff:ff:ff:ff
IP-маршрут.
~ » ip route
<prefix 1>.0.0/16 dev em1 scope link metric 1002
10.0.0.0/8 dev em1 proto kernel scope link src 10.0.2.6
default via 10.0.1.0 dev em1
Iptables.
» _ iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
~ » _ iptables -t filter -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
~ » _ iptables -t mangle -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
3 ответа
Начиная с вывода tcpdump, пакеты пересылаются в пункт назначения, но ответов нет. Это неудивительно, так как правило в вашей цепочке POSTROUTING нарушено:
Chain POSTROUTING (policy ACCEPT 10234 packets, 954K bytes)
pkts bytes target prot opt in out source destination
532K 54M all -- * * 10.0.0.0/8 0.0.0.0/0
Цель для правила отсутствует. Это должно быть "SNAT" или "MASQUERADE". Без этого адрес источника пакетов не будет переписан. Это заставит проверенный сервер ответить на 10.0.2.6
(который не маршрутизируемый) вместо IP-адреса сервера.
Если я правильно понимаю: проблема двоякая
1: ящик, который вы хотите паттировать / пересылать, не имеет настроенного iptables masquardade. на роат / пэт / макинторе интернет-факс:
iptbales -A PORTROUTING -t NAT -o eth0 -j МАСКАРАД
echo 1> / proc / sys / net / ip4v / ip_forward
2) клиенты хотят, чтобы весь трафик был получен от удаленного маршрутизатора masq'ing, и поэтому все клиенты должны использовать этот интернет-маршрутизатор в качестве шлюза по умолчанию. у клиентов может быть весь трафик, который кажется исходящим оттуда, но им нужен маршрут, говорящий им об этом, маршрут по умолчанию должен быть установлен на клиентах, говорящих затем об отправке трафика туда \
ip route del default
ip route добавить по умолчанию через ip-of-masq'ing-router
Я не могу оставлять комментарии, чтобы запросить разъяснение вашего вопроса, поэтому я поставлю эти вопросы здесь. В любом случае, вы не предоставили достаточно информации, чтобы ответить на этот вопрос. Я подозреваю, что маскарад не работает, но не уверен.
Во-первых, в выводе tcpdump есть имя "b6", что это? Поскольку я не ожидаю, что это будет имя в Интернете, это может быть ваш частный IP-адрес, просочившийся в Интернет, и если это правда, то ваш MASQUERADE не работает. В любом случае, было бы лучше использовать параметр -n, чтобы IP-адреса не преобразовывались в DNS-имена, которые в этом контексте не имеют смысла.
Далее, ваши списки iptables неполные. Используйте опцию -v, чтобы получить дополнительную информацию, которая очень поможет. Потому что с помощью этой опции я смогу подтвердить или опровергнуть предположение, что ваши частные IP-адреса просочились в Интернет. А также используйте опцию -n, чтобы не выполнять обратные DNS-запросы.
Наконец, вы удалили IP-адреса из таблиц маршрутизации и не объяснили свою топологию. Таким образом, вы также удалили потенциальную информацию, которая может помочь отладить вашу проблему.
И, как отступление, команда ip гораздо лучше подходит для Linux, чем комбинация ifconfig/route.