вот смотрите - в "Программировании сетевых приложений" Стивенса написано следующее:
A process can bind a specific IP address to its socket... For TCP server it restricts the socket to receive incoming client connections destined only to that IP address.
ОК, пишем такой код:
struct sockaddr_in servaddr;
...
inet_aton("192.168.134.178", &servaddr.sin_addr);
servaddr.sin_port = htons(5113);
bind(listenfd, (struct sockaddr *) &servaddr, sizeof(servaddr));
Компилируем, запускаем:
$ netstat -pla | grep 5113
tcp 0 0 192.168.134.178:5113 *:* LISTEN 27451/a.out
То есть как будто бы прибиндился нормально, больше никто не слушает порт 5113.
На машине несколько карточек:
eth0 с IP 192.168.133.178
eth1 с IP 192.168.134.178 (разница в 3 октете)
Делаем с этой машины коннект на себя:
telnet 192.168.133.178 5113 - connection refused
telnet 192.168.134.178 5113 - connection ok
А теперь фокус:
Винда, IP адрес 192.168.133.200, коннектимся к 192.168.133.178 (туда, где нас должны отшить) и получаем соединение!
$ netstat -pla | grep 5113
tcp 0 0 192.168.134.178:5113 *:* LISTEN 27451/a.out
tcp 0 0 192.168.134.178:5113 192.168.133.200:1149 TIME_WAIT -
Вот вывод tcpdump:
$ sudo tcpdump -nn host 192.168.133.178 and port 5113
12:38:00.752076 IP 192.168.133.200.1127 > 192.168.133.178.5113: S 2609228336:2609228336(0) win 65535 <mss 1460,nop,nop,sackOK>
12:38:00.752281 IP 192.168.133.178.5113 > 192.168.133.200.1127: S 754062038:754062038(0) ack 2609228337 win 5840 <mss 1460,nop,nop,sackOK>
12:38:00.752505 IP 192.168.133.200.1127 > 192.168.133.178.5113: . ack 1 win 65535
12:38:00.752613 IP 192.168.133.178.5113 > 192.168.133.200.1127: P 1:27(26) ack 1 win 5840
12:38:00.752624 IP 192.168.133.178.5113 > 192.168.133.200.1127: F 27:27(0) ack 1 win 5840
12:38:00.752955 IP 192.168.133.200.1127 > 192.168.133.178.5113: . ack 28 win 65509
12:38:00.756327 IP 192.168.133.200.1127 > 192.168.133.178.5113: F 1:1(0) ack 28 win 65509
12:38:00.756343 IP 192.168.133.178.5113 > 192.168.133.200.1127: . ack 2 win 5840
$ sudo iptables -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
Кто нибудь может мне объяснить происходящее? :)
Ответ на:
комментарий
от logIN
Ответ на:
комментарий
от BreadFan
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум вирусы шлют письма через чужие open relay (2004)
- Форум port forwarding (2010)
- Форум iptables не пропускает разрешённый трафик (2012)
- Форум ipv6 открыть порт 8082 (2021)
- Форум Проблема проброса порта DNAT (2011)
- Форум iptables: Политика по умолчанию для пользов цепочки (2007)
- Форум Что не так с IPTABLES? (2018)
- Форум не полу4ается настроит НАТ .. (2006)
- Форум Проброс порта iptables в одной сети. (2018)
- Форум Не понятные правила в iptables (2018)