ルーターの背後にサーバーをセットアップしようとしていますが、次の問題に減らすことができました。
私が使う:
- シーメンスSL2-141ルーター。
- Python2.7を搭載したWindows764ビット。
走る:
server.py:
import socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind((IP, 8080)) sock.listen(1) sock.accept() print 'success' sock.close()
client.py:
import socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((IP, 8080)) sock.close()
- IP = '127.0.0.1'の場合、機能します。
静的IPを設定しました:
> Network And Sharing Center > Change Adaper Settings > Local Area Connection > Properties > Internet Protocol Version 4 (TCP/IPv4) > Properties > Use The Following IP Address: IP Address: 10.0.0.200 Subnet Mask: 255.0.0.0 Default Gateway: 10.0.0.138 > Use The Following DNS Server Addresses: Preferred DNS Server: 10.0.0.138 Alternate DNS Server: - - - -
そして、IP = '10.0.0.200'の場合、それは機能します。
ルーターにポートフォワーディングを設定しました。
> http://10.0.0.138/ > Username: Admin > Password: Admin > Advanced > Virtual Server > Port Forwarding > Add: User Defined: Test From Internal Host IP Address: ALL Forward to Internal Host IP Address: 10.0.0.200 Protocol: TCP External Packet Port Start: 8080 External Packet Port End: 8080 Forward To Internal Host Port Start: 8080 Forward To Internal Host Port End: 8080 > Apply (and reboot router, just in case).
私の理解では、サーバーIPを「10.0.0.200」のままにしてクライアントIPをパブリックIPに設定すると、機能するはずですが、機能しません(「ターゲットマシンがアクティブに拒否したため、接続できませんでした」)。 。
Apacheサーバーで同じことを試してみたところ、結果は似ていました。ローカルホストの参照は機能し、静的IPの参照は機能しましたが、パブリックIPの参照は機能しませんでした(ポート80でルーターのセットアップページが表示され、ポート8080ではできませんでした)接続しない)。
最後の注意:
- ファイアウォールをオフにしました。
- ポートが開いていることを確認しました(http://www.canyouseeme.org/)。
- サーバーがリッスンしていることを確認し(netstat -na | find / i "8080")、リッスンしています。
問題は何ですか?