
내 Fedora 시스템에 SIP TCP 요청을 서버로 보내는 애플리케이션이 있습니다. 애플리케이션은 요청을 보낼 임의의 소스 포트를 선택합니다. 애플리케이션이 특정 포트(예: 15000)를 사용하도록 강제할 수 있는 방법이 있습니까? 어쩌면 응용 프로그램이 다른 모든 포트를 사용하지 못하게 할 수도 있습니다(그러면 소스 포트를 선택해야 합니다).
소켓의 사전 정의된 소스 포트를 사용하도록 SIP 애플리케이션의 코드를 변경할 수는 없습니다.
답변1
socat
다양한 연결(TCP, UDP 등)을 시뮬레이션하기 위한 명령줄 도구를 살펴볼 수도 있습니다 . 다음은 상당히 광범위한 socat
예시 목록입니다.socat(및 filan) 사용 예
.
예
$ socat - TCP:www.google.com:80 | head
GET /
HTTP/1.0 200 OK
Date: Tue, 26 Aug 2014 13:22:09 GMT
Expires: -1
Cache-Control: private, max-age=0
Content-Type: text/html; charset=ISO-8859-1
Set-Cookie: PREF=ID=31cc21da7fe930ae:FF=0:TM=1409059329:LM=1409059329:S=w1SmnrWq9nT2Ear-; expires=Thu, 25-Aug-2016 13:22:09 GMT; path=/; domain=.google.com
Set-Cookie: NID=67=PU8zfz-m-jwq17Jm2aixtDA1zi4H9JLpp6fXYAMS9V8xWpjBquGtng88Lf8wO-n8dUTjtneA2zon405GDYiqzsss_-HT44S5WgExWu7IrsEcqfBeguWB_oUEqlblJICL; expires=Wed, 25-Feb-2015 13:22:09 GMT; path=/; domain=.google.com; HttpOnly
P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info."
Server: gws
X-XSS-Protection: 1; mode=block
2014/08/26 09:22:09 socat[28871] E write(1, 0x7f1c063ad9b0, 1418): Broken pipe
위의 내용은 포트 80에서 www.google.com의 웹 서버에 연결하고 이를 전송하는 것을 보여줍니다 GET /
. 이는 동일한 작업을 수행할 때 브라우저에서 발행하는 표준 쿼리입니다.
클라이언트가 특정 포트를 사용하도록 강제하는 경우 이것이 가능해야 하며 이것이 어떤 애플리케이션인지 구체적으로 알아야 합니다. 대부분의 서비스 데몬에는 -p 5000
이를 수행하기 위한 cli 스위치나 구성 파일(있는 경우)의 행이 포함되어 있습니다.
이 특정 도구의 사용법을 살펴보고 그것이 제공하는 기능을 결정하거나 해당 도구가 있는 경우 맨페이지를 확인하겠습니다.