Двойная сетевая карта для обратного доступа NAT
Нужна помощь с этой целью:
Internet
<-- TP_LINK Router(192.168.0.1)
<-- PC1(eth0:192.168.0.8)
<-- PC2(eth0:192.168.0.81)
Когда я использую кабель для подключения ПК2 eth1 к ПК3 eth0 и настраиваю настройки IP2 для ПК2 eth1 на "общий доступ к другим компьютерам", то ПК2 и ПК3 получают IP-адреса ниже:
PC2(eth1:10.42.0.1)
<-- PC3(eth0: 10.42.0.169)
Теперь я хочу сделать что-нибудь на маршруте или iptables, чтобы я мог "пинговать 10.42.0.169" на ПК1.
Это возможно? Ниже я попробовал:
- Сконфигурируйте таблицу статических маршрутов маршрутизатора TP_LINK: 10.42.0.0(цель) - 255.255.255.0(маска сети) - 192.168.0.81(шлюз).
Теперь я получаю результат на ПК1:
$ traceroute 10.42.0.169
traceroute to 10.42.0.169 (10.42.0.169), 64 hops max, 52 byte packets
1 192.168.0.1 (192.168.0.1) 4.018 ms 0.905 ms 0.768 ms
2 ay11 (192.168.0.81) 1.140 ms 1.273 ms 1.482 ms
3 ay11 (192.168.0.81) 1.104 ms 1.041 ms 1.127 ms
Мы видим, что если PC2 может пересылать пакеты на 10.42.0.0/24, может быть, все будет идеально?
Вот конфигурации на ПК2:
$ route
default 192.168.0.1 0.0.0.0 UG 100 0 0 eth1
10.42.0.0 * 255.255.255.0 U 100 0 0 eth0
link-local * 255.255.0.0 U 1000 0 0 eth1
192.168.0.1 * 255.255.255.255 UH 100 0 0 eth1
$ sudo iptables -L
[sudo] password for mlhch:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT udp -- anywhere anywhere udp dpt:bootps
ACCEPT tcp -- anywhere anywhere tcp dpt:bootps
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT tcp -- anywhere anywhere tcp dpt:domain
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere 10.42.0.0/24 state RELATED,ESTABLISHED
ACCEPT all -- 10.42.0.0/24 anywhere
ACCEPT all -- anywhere anywhere
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Что мне делать с маршрутом или iptables?
Спасибо!
2 ответа
Попробуйте это установить PC2
Первое, что нужно сделать, это включить IP-пересылку. Это делается либо с помощью
echo "1" > /proc/sys/net/ipv4/ip_forward
Затем мы добавим правило, указывающее переадресацию трафика.
sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
Спасибо за ваши старания.
Для /proc/sys/net/ipv4/ip_forward это уже было "1", и я настроил net.ipv4.ip_forward=1 в /etc/sysctl.conf
Я выполнил ваши команды iptables, они просто добавляются ниже 2 строк в разделе "Цепочка FORWARD":
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
Тогда чуда не происходит. Но это заставляет меня заметить 2 линии ОТКЛОНИТЬ
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable
REJECT all -- anywhere anywhere reject-with icmp-port-unreachable
Я их удаляю и все работает отлично! На самом деле я также удаляю только что добавленные строки и сохраняю только 1 строку "ПРИНЯТЬ все - где угодно".