У меня есть программа (написанная мной), которая создает устройство tun0 и устанавливает маршрут, чтобы пакеты, предназначенные для подсети 172.16.1.0/24, могли быть прочитаны с этого устройства. Сейчас я пытаюсь пойти в другом направлении и записывать пакеты на устройство tun, которые могут быть получены
Моя первая попытка, просто изменение адреса источника и назначения и портов, работала нормально. Я могу запустить следующее:
nc -u -s MY_IP -p 4001 172.16.1.3 4000
и мой вклад повторяется.
Моя вторая попытка по созданию выходных пакетов с нуля в настоящее время терпит неудачу.
Я могу бегать tcpdump -i tun0
и посмотрите пакеты, которые я написал:
11:30:14.433489 IP (tos 0x0, ttl 32, id 0, offset 0, flags [none], proto UDP (17), length 56) 172.16.1.2.54167 > Ubuntu-dbacher.local.4011: [udp sum ok] UDP, length 28
Но мой слушатель (nc -l -u -s MY_IP -p 4011
) ничего не видит.
Я подозреваю, что что-то не так, что мешает устройству tun0 маршрутизировать свои пакеты, но я не знаю, как получить представление о том, куда отбрасываются пакеты.
$ ifconfig tun0
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:172.16.1.1 P-t-P:172.16.1.1 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
172.16.1.0 172.16.1.1 255.255.255.0 UG 0 0 0 tun0
10.10.48.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0
0.0.0.0 10.10.48.1 0.0.0.0 UG 0 0 0 eth0
$ cat /proc/sys/net/ipv4/ip_forward
1
Как мне отладить, где отбрасываются пакеты tun?
(Кстати, все пакеты UDP.)
просто догадка - разрешает ли Linux маршрутизацию пакетов?
бегать кошка / proc / sys / net / ipv4 / ip_forward - вы ожидаете увидеть 1. Если это 0, выполните:
echo 1 > /proc/sys/net/ipv4/ip_forward
также проверьте свои iptables - вначале вы, вероятно, захотите иметь ACCEPT для цепочки FORWARD:
iptables -P FORWARD ACCEPT
iptables -F FORWARD
при устранении проблем с маршрутизацией / межсетевыми экранами я чаще всего использую tcpdump [о котором вы упомянули].
Может, это поможет:
ip route get 198.51.100.1
или:
ip route get to 198.51.100.1 from 192.168.0.2 iif eth0
Источник этого: http://www.microhowto.info/troubleshooting/troubleshooting_the_routing_table.html