개발환경 네트워크 문제 개선

This commit is contained in:
2026-02-03 10:18:38 +09:00
parent ccd25bb491
commit 3e874fb863
8 changed files with 1214 additions and 0 deletions

View File

@@ -0,0 +1,163 @@
# Connection Failure Troubleshooting Guide
## Problem: "Failed to connect to server" error
### Quick Fixes to Try
1. **Add NetworkDebugger to scene**
- Add `NetworkDebugger` component to NetworkManager
- Check Console for detailed connection logs
- Look for:
- Connection approval status
- Transport binding errors
- Timeout messages
2. **Add NetworkConnectionFixer to scene**
- Add `NetworkConnectionFixer` component to NetworkManager
- Right-click component → "Fix All Known Issues"
- This auto-fixes common transport timeout issues
3. **Check Firewall (Most Likely Cause)**
Even with port forwarding, Windows Firewall may block connections:
**Windows:**
- Windows Security → Firewall & network protection → Allow an app through firewall
- Add Unity Editor AND your built executable
- Allow on both Private and Public networks
- Add exception for port 7777 (or your port)
**Command Line (Quick Fix):**
```
netsh advfirewall firewall add rule name="Unity Network" dir=in action=allow protocol=TCP localport=7777
```
4. **Verify Transport Settings**
In Play mode, on NetworkManager → UnityTransport:
- ConnectionData.Address should be `0.0.0.0` for Host/Server
- ConnectionData.Port should be 7777 (or your forwarded port)
- ServerListenAddress can be left default
5. **Test Port Forwarding**
- Use online tool: https://www.yougetsignal.com/tools/open-ports/
- Enter your public IP and port
- Should show "Open" (not "Closed" or "Timed out")
6. **Disable IPv6 (Temporary Fix)**
Some network configurations have IPv6 issues:
```
Control Panel → Network and Internet → Network Connections
→ Right-click adapter → Properties → Uncheck Internet Protocol Version 6
```
(Reboot required)
7. **Increase Network Timeouts**
- On UnityTransport component:
- Connect Timeout MS: 15000 (15 seconds)
- Max Connect Attempts: 10
## Debug Steps
### 1. Check Server Side
```
Add NetworkDebugger → Play → Start Host
Check Console for:
✓ "Server Started Successfully"
✓ "Listening on: 0.0.0.0:7777"
✗ Any binding errors
```
### 2. Check Client Side
```
Add NetworkDebugger → Play → Connect to PUBLIC IP
Check Console for:
✓ "Connection Approval Request from Client"
✓ "Approval Response: Approved: true"
✗ "TRANSPORT FAILURE"
✗ "Failed to connect to server"
```
### 3. Common Error Patterns
**Error: "Failed to connect to server" + "TRANSPORT FAILURE"**
- Cause: Firewall blocking
- Fix: Allow Unity through firewall, check port forwarding
**Error: Connection approval never happens**
- Cause: NetworkManager configuration issue
- Fix: Check NetworkConfig → Connection Approval = true
**Error: Client shows "Connected" but no player spawns**
- Cause: ConnectionApproval returning false or spawn point issues
- Fix: Check NetworkConnectionHandler logs
## Advanced Troubleshooting
### Log Network State
```csharp
// Add this component and right-click → "Log Current Network State"
public void CheckConnection()
{
Debug.Log("IsServer: " + NetworkManager.Singleton.IsServer);
Debug.Log("IsClient: " + NetworkManager.Singleton.IsClient);
Debug.Log("IsConnectedClient: " + NetworkManager.Singleton.IsConnectedClient);
}
```
### Test Local Connection First
1. Host: Connect to 127.0.0.1 (should always work)
2. If fails: Project setup issue, not network issue
3. If works: Network/Firewall issue with public IP
### Check NetworkManager Configuration
Ensure:
- Player Prefab assigned
- Network Prefabs list populated
- Connection Approval enabled
- Scene Management enabled (if using scenes)
- Transport is Unity Transport (UTP)
## Alternative Solutions
### Option 1: Use LAN instead of Internet
If possible, use VPN or Hamachi:
- Creates virtual LAN
- Both players appear on same network
- No port forwarding needed
### Option 2: Use Relay Service
Unity Relay bypasses NAT/Firewall:
- Requires Unity Services account
- Free tier available
- More reliable for internet play
### Option 3: Dedicated Server
- Host on cloud server (AWS, Azure, etc.)
- No port forwarding needed on client side
- Better performance and reliability
## Quick Checklist
- [ ] Port forwarded correctly (verify with online tool)
- [ ] Firewall allows Unity/Build executable
- [ ] Using public IP (not 127.0.0.1 or 192.168.x.x)
- [ ] Same Unity version and Netcode version on both sides
- [ ] Same port on both client and server
- [ ] NetworkManager has Player Prefab assigned
- [ ] Host started BEFORE client tries to connect
- [ ] No antivirus/security software blocking
- [ ] Both using Release builds (not Debug)
## When to Ask for Help
If you've tried:
1. All firewall fixes
2. Verified port forwarding with online tool
3. Tested local connection (127.0.0.1) works
4. Checked NetworkManager configuration
5. Added NetworkDebugger and NetworkConnectionFixer
Then share:
- Full Console logs from BOTH host and client
- NetworkManager inspector screenshot
- UnityTransport settings screenshot
- Port forwarding confirmation (screenshot or online tool result)