|--------------| |--------------| |--------------|
| computer A | eth0| computer B | | computer C |internet
| (10.5.0.2) |----------| (10.5.0.1) | | (x.x.x.x) |--------
| | | | | ^ |
| | | NAT | | | NAT | |
| | | ˇ | tun0 | |
| | | (10.8.0.14) |----------| (10.8.0.1) |
|--------------| |--------------| |--------------|
Вот схема сети, которую я построил.
Моя проблема в том, что я пытаюсь настроить NAT на компьютере B
'баш
корень @ компьютерB # cat / proc / sys / net / ipv4 / ip_forward
1
root@computerB# iptables-save
*nat
:PREROUTING ACCEPT [13:1108]
:INPUT ACCEPT [10:600]
:OUTPUT ACCEPT [6708:457650]
:POSTROUTING ACCEPT [5782:389727]
-A POSTROUTING -o wlan0 -j MASQUERADE
COMMIT
# Completed on Sat Apr 27 23:56:29 2019
# Generated by iptables-save v1.6.0 on Sat Apr 27 23:56:29 2019
*filter
:INPUT ACCEPT [1235765:1640284761]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [759264:248481682]
-A FORWARD -i eth0 -j ACCEPT
COMMIT
# Completed on Sat Apr 27 23:56:29 2019
когда я хочу пинговать 10.8.0.1 с компьютера А, он не работает
Я беру своего друга wirehark и начинаю слушать tun0. Я вижу такие пакеты
Нет. время информация о длине протокола источника назначения для Mac 285 106.310258 Н / Д 10.5.0.2 10.8.0.1 ICMP 84 Идентификатор запроса эхо (ping) = 0x8114, seq = 0/0, ttl = 63 (ответа не найдено!)
Я не понимаю, почему я получаю ip 10.5 .0.2 на интерфейсе tun0
Как объясняется в комментариях, вам не следует использовать NAT здесь. Вам следует использовать только обычную IP-маршрутизацию.
Однако, чтобы решить проблему с NAT, измените
-A POSTROUTING -o wlan0 -j MASQUERADE
на
-A POSTROUTING -o tun0 -j MASQUERADE
в ваших правилах IPTables.