PPP Server for Devolution (and other assorted questions)

Sylverant is a homebrew open source server for Phantasy Star Online. Dreamcast users still play PSO online with this server even today! This is the official forum for both the online game server as well as the open source project itself. Feel free to post and get a gathering started online! We can also show you how to get connected!

Moderators: BlueCrab, Aleron Ives

Post Reply
flannel
DCEmu Newbie
DCEmu Newbie
Posts: 8
https://www.artistsworkshop.eu/meble-kuchenne-na-wymiar-warszawa-gdzie-zamowic/
Joined: Sat Aug 09, 2014 9:28 pm
Location: Western NY
Has thanked: 0
Been thanked: 0

PPP Server for Devolution (and other assorted questions)

Post by flannel »

Welp, after 10+ years of lurking, I finally made a dcemu account. Guess I was overdue.

Anyway, specifically hoping for advice from BlueCrab or tueidj here, but if anyone at all can help out, it'd be much appreciated.
I host gaming events every now and then, and the next one is an entirely classic-console-gaming type of thing. Of course, my mind raced to PSO. So, I've been going through the long, arduous steps to getting PSO GCN going on LAN since our venue for this shindig, unfortunately, has no internet access. So far it's been somewhat successful; I've got khyller 3.1 running server duties at the moment, and connecting from Dolphin went well (albeit I can't seem to get Plus to connect to the server, and can't seem to figure out the config I need on khyller to allow it to).

Now, I'm working on getting a PPP emulator set up to do this on Wiis running Devolution. I've gotten as far as making a connection - my problem now seems to be getting it to communicate with anything once its connected. I'm using socat and slirp (patched to enable TCP_NODELAY) for the PPP emulation, and it's certainly connecting fine. I just need to figure out how to let the connected Wii see the server on the LAN.

So, two questions:
1. Any advice on getting devolution to connect to a LAN server using socat+slirp? (really hoping you might have some advice for this, tueidj!)
2. BlueCrab - I'm only going with khyller because I actually couldn't figure out how to compile sylverant ^^; I attempted on FreeBSD 10, but I'm actually not too entirely used to compiling from source, especially on *nix. Any tips?

Thanks so much in advance guys
User avatar
Aleron Ives
DCEmu Nutter
DCEmu Nutter
Posts: 870
Joined: Wed Jan 05, 2011 2:15 pm
Location: California
Has thanked: 0
Been thanked: 25 times
Contact:

Re: PSO Questions & Answers

Post by Aleron Ives »

PSO+ has protections to prevent the streaming exploit, which also prevents playing on a LAN. Some people say it won't connect to any server starting with 192.168 or 10.216, while other people say it only refuses to connect if the DNS server and game server are on the same machine. Either way, you would probably have to forward ports on your router and connect to yourself from the Internet in order for PSO+ to work.
"Fear the HUnewearl."
Image
flannel
DCEmu Newbie
DCEmu Newbie
Posts: 8
Joined: Sat Aug 09, 2014 9:28 pm
Location: Western NY
Has thanked: 0
Been thanked: 0

Re: PSO Questions & Answers

Post by flannel »

I had read that as well. I use an IP range on my test network that would make most network admins cringe (Starts with 12.29...), and was still having the issue with Plus, so I've a feeling the "DNS on the same box" rule applies, or it checks if the game server and DNS server are on the same subnet. I'll be trying a DNS server on a separate box sometime tonight.

Quick question, if you happen to know: would the list of hostnames from the Dr. DNS archive over at dc-talk have all the hosts I need to map for PSOGC? Just don't wanna go on a wild goose chase for them if I happen to miss one or two. QUICK EDIT: scratch that, peeked at the sylverant source for hostnames, i'll stop being lazy now
User avatar
BlueCrab
The Crabby Overlord
The Crabby Overlord
Posts: 5652
Joined: Mon May 27, 2002 11:31 am
Location: Sailing the Skies of Arcadia
Has thanked: 9 times
Been thanked: 69 times
Contact:

Re: PSO Questions & Answers

Post by BlueCrab »

Sylverant is a bit of a bear to compile and set up. At some point, I should probably clean a lot of that up, but I haven't really had the time/will/reason to do so. :wink:

Truth be told, you're probably better off using Khyller if you're trying to set things up on a LAN. It is much easier to set up and use for that purpose. Sylverant is a lot more work to deal with, and a lot of that has to do with the separation of all the components and the TLS connections between the ship and shipgate. Simply put, it is suitable for a production server, but not really for a small one that would be better served by something without such separation between the components (like a LAN party server or whatnot).
flannel
DCEmu Newbie
DCEmu Newbie
Posts: 8
Joined: Sat Aug 09, 2014 9:28 pm
Location: Western NY
Has thanked: 0
Been thanked: 0

Re: PSO Questions & Answers

Post by flannel »

Had a feeling that would be the answer, haha. Yeah, khyller's doing the job for now - I'll probably take the time on attempting a sylverant setup if this event goes good, wouldn't mind showing off PSODC.

Now I just need to figure out this PPP emulator. -_-
User avatar
Aleron Ives
DCEmu Nutter
DCEmu Nutter
Posts: 870
Joined: Wed Jan 05, 2011 2:15 pm
Location: California
Has thanked: 0
Been thanked: 25 times
Contact:

Re: PSO Questions & Answers

Post by Aleron Ives »

It's worth noting that Kohle's software is mainly suitable for GC and basic BB testing. DC is supposed to work, but difficulty selection doesn't work at all on PC, so you can only play Normal mode. Whether DC shares the same limitation, I don't know.
"Fear the HUnewearl."
Image
tueidj
Insane DCEmu
Insane DCEmu
Posts: 115
Joined: Wed Aug 15, 2012 12:05 pm
Has thanked: 0
Been thanked: 0

Re: PSO Questions & Answers

Post by tueidj »

flannel wrote:Now, I'm working on getting a PPP emulator set up to do this on Wiis running Devolution. I've gotten as far as making a connection - my problem now seems to be getting it to communicate with anything once its connected. I'm using socat and slirp (patched to enable TCP_NODELAY) for the PPP emulation, and it's certainly connecting fine. I just need to figure out how to let the connected Wii see the server on the LAN.

So, two questions:
1. Any advice on getting devolution to connect to a LAN server using socat+slirp? (really hoping you might have some advice for this, tueidj!)
If the "modem" can dial and connect then it sounds like the PPP stuff is all working, you just need DNS set up properly so the game uses your server instead of trying to use sega's defunct servers. I don't know what slirp will supply for DNS if you don't explicitly set something, but it wouldn't matter if you manually override the DNS in the game's connection profile.
Patching in TCP_NODELAY probably wouldn't be needed for playing on a LAN but if you're using a 64-bit system make sure this patch is applied: https://bugs.debian.org/cgi-bin/bugrepo ... bug=685056
For reference this is the command line used on my server:
socat -d -d -lf sylverant.txt tcp-l:63335,reuseaddr,fork,keepalive,nodelay,keepcnt=5,keepidle=300,keepintvl=60 exec:'slirp -P +chap nozeros \"dns 67.222.144.120\"',pty,ctty,su-d=slirp
flannel
DCEmu Newbie
DCEmu Newbie
Posts: 8
Joined: Sat Aug 09, 2014 9:28 pm
Location: Western NY
Has thanked: 0
Been thanked: 0

Re: PSO Questions & Answers

Post by flannel »

Aleron Ives wrote:It's worth noting that Kohle's software is mainly suitable for GC and basic BB testing. DC is supposed to work, but difficulty selection doesn't work at all on PC, so you can only play Normal mode. Whether DC shares the same limitation, I don't know.
Yeah, that's why I was interested in getting sylverant compiled, wouldn't mind being able to show people the DC version. I've got no problems getting the Dreamcasts on the network, just need a game server that supports PSODC to show them off at the event.

tueidj: first, while I've got you here, I've never had the opportunity to tell you thanks for devolution, but uh... thanks!

Aware of the IPCP bug, came across it while I was going for TCP_NODELAY support (thinking I needed it). I'm running 1.0.17-7, so that should already be fixed - though I'm also hosting the PPP emu on a 32-bit debian box, so it's a non-issue.

Anyway, your command has definitely pushed me a step forward with this, I didn't have any chap-secrets set up and had a feeling I needed them, but I couldn't really find any info regarding them in the slirp manpages. So, I've got my start script up and going, and I'm authenticating using CHAP and getting a connection to slirp, but... no dice. PSO just hangs at "Connecting to the DNS server." and ends up spitting an error. Tried setting the DNS for both slirp and PSO to sylverant's DNS and had no luck with a connection either, so it doesn't seem like I'm out of the water yet!

I feel like I'm just missing one crucial component or setting somewhere. Should I be setting up any slirp port redirections with this? Any extra settings I should put in .slirprc? Also, do I have to set up any sort of proper PPP server, or am I right in assuming that the chap-secrets is all slirp needs for PPP emulation? (If me not setting up the chap-secrets up wasn't a clue, this is my first real foray into anything involving PPP in the slightest - kind of feeling my way around.) If I'm not missing anything, I must have some sort of weird network issue happening here.

Thanks so much for the help, by the way!
tueidj
Insane DCEmu
Insane DCEmu
Posts: 115
Joined: Wed Aug 15, 2012 12:05 pm
Has thanked: 0
Been thanked: 0

Re: PSO Questions & Answers

Post by tueidj »

You don't need to setup chap-secrets, it's only used to verify the username and password. If it isn't specified slirp will just accept anything.
There is no extra setup needed (no .slirprc) with the command line I posted. You might need to hack up slirp to dump all input/output and then figure out how to import it into wireshark to get an idea of what's going wrong.
flannel
DCEmu Newbie
DCEmu Newbie
Posts: 8
Joined: Sat Aug 09, 2014 9:28 pm
Location: Western NY
Has thanked: 0
Been thanked: 0

Re: PSO Questions & Answers

Post by flannel »

Alright, cool, just figured I'd verify.
Additionally, you might be psychic, man - you pretty much recommended what my next step in mind was if I hit the wall here. Hahaha. If it's anything interesting, I might report back. Thanks again tueidj, really appreciate it!
tueidj
Insane DCEmu
Insane DCEmu
Posts: 115
Joined: Wed Aug 15, 2012 12:05 pm
Has thanked: 0
Been thanked: 0

Re: PSO Questions & Answers

Post by tueidj »

You're probably going to end up learning more about PPP/IPCP/LCP/IP/TCP than you ever wanted :P

Edit: BlueCrab: probably want to split this to a different thread, there's a chance we might go on for a while.
User avatar
BlueCrab
The Crabby Overlord
The Crabby Overlord
Posts: 5652
Joined: Mon May 27, 2002 11:31 am
Location: Sailing the Skies of Arcadia
Has thanked: 9 times
Been thanked: 69 times
Contact:

Re: PSO Questions & Answers

Post by BlueCrab »

tueidj wrote:Edit: BlueCrab: probably want to split this to a different thread, there's a chance we might go on for a while.
Done.
flannel
DCEmu Newbie
DCEmu Newbie
Posts: 8
Joined: Sat Aug 09, 2014 9:28 pm
Location: Western NY
Has thanked: 0
Been thanked: 0

Re: PPP Server for Devolution (and other assorted questions)

Post by flannel »

Welp, this is its own thread now, so I may as well make use of it. I'm alive after a busy week with only a couple of Still no success -_-

I'm just going to lay out what I have at the current moment, because I'm stumped.

The closest I can solidly place the problem is at the box running the PPP emulator. I have some clues as to what it may be, but it's kind of left me running in circles here. I've been watching the network traffic from both the PPP server and the Wii, to no avail - the Wii just talks to the PPP server for a second, connects, and then I'm seeing zero traffic between the two upon the "Connecting to the DNS Server" screen's arrival.

My startup script:
Spoiler!

Code: Select all

#!/bin/bash

# starts socat and begins listening for connections to spit into slirp
socat -d -d -lf /home/flannel/devoPPP.txt tcp-l:63335,reuseaddr,fork,keepalive,nodelay,keepcnt=5,keepidle=300,keepintvl=60 exec:'slirp -P +chap nozeros \"dns 172.28.92.11\"',pty,ctty,su-d=slirp &
Here's a transcript of the socat logfile:
Spoiler!

Code: Select all

2014/08/17 13:36:19 socat[1957] N listening on AF=2 0.0.0.0:63335
2014/08/17 13:37:04 socat[1957] N accepting connection from AF=2 172.28.92.45:55701 on AF=2 172.28.92.13:63335
2014/08/17 13:37:04 socat[1957] N forked off child process 2045
2014/08/17 13:37:04 socat[1957] N listening on AF=2 0.0.0.0:63335
2014/08/17 13:37:04 socat[2045] N forking off child, using pty for reading and writing
2014/08/17 13:37:04 socat[2045] N forked off child process 2046
2014/08/17 13:37:04 socat[2045] N forked off child process 2046
2014/08/17 13:37:04 socat[2045] N starting data transfer loop with FDs [5,5] and [4,4]
2014/08/17 13:37:04 socat[2046] W open("/dev/tty", O_NOCTTY, 0640): No such device or address
2014/08/17 13:37:04 socat[2046] W ioctl(6, TIOCSCTTY, NULL): Operation not permitted
2014/08/17 13:37:04 socat[2046] W tcsetpgrp(2046): Inappropriate ioctl for device
2014/08/17 13:37:04 socat[2046] N execvp'ing "slirp"
2014/08/17 13:37:32 socat[2045] W read(5, 0x6fce10, 8192): Connection reset by peer
2014/08/17 13:37:32 socat[2045] N socket 1 to socket 2 is in error
2014/08/17 13:37:32 socat[2045] N socket 1 (fd 5) is at EOF
2014/08/17 13:37:33 socat[2045] N exiting with status 0
2014/08/17 13:37:33 socat[2045] W waitpid(): child 2046 exited with status 15
Additionally, here are the two best wireshark captures I got of the process from today (realized yesterday that I was still running the loader.bin from r200, whoops).

127.28.92.13 is the PPP server, and 127.28.92.45 is the Wii. For the PSO server, 127.28.92.10 is assigned to khyller and 127.28.92.11 is mapped to the same box as khyller, for the DNS server. Unfortunately, as I mentioned, there's just no activity in between the PPP server and the PSO server box.

Another thing I've been having a bad gut feeling about: am I supposed to have an interface for PPP (ie. ppp0) that's supposed to bridge with my NIC (eth0)?

Just really confused; I don't wanna waste your time if it's me just making a stupid mistake, but I'm out of ideas as to what's keeping it from directing the traffic from the Wii.
tueidj
Insane DCEmu
Insane DCEmu
Posts: 115
Joined: Wed Aug 15, 2012 12:05 pm
Has thanked: 0
Been thanked: 0

Re: PPP Server for Devolution (and other assorted questions)

Post by tueidj »

Just a hunch from looking at the packet captures, I think PSO doesn't like the IP address being offered by slirp. I'll check closer later.
flannel
DCEmu Newbie
DCEmu Newbie
Posts: 8
Joined: Sat Aug 09, 2014 9:28 pm
Location: Western NY
Has thanked: 0
Been thanked: 0

Re: PPP Server for Devolution (and other assorted questions)

Post by flannel »

I just got it! (After a lot of frustration) I figured out that the problem was with my ppp setup for slirp.

So, after poking around through random documentation on it around the web, I ran slirp with the flag -dppp flag for PPP debug output. The debug file ended up showing me that it wasn't allowing the client (ie the Wii) to use the 10.0.2.15 address it was supposed to. So, after a lot of googlin', I got to editing my chap-secrets again for some reason. The old one looked something like this:

Code: Select all

DEVO        devoppp        gc        *
Slirp didn't appreciate that. So I changed the * to 10.0.2.15 and it finally connected. I also did some fiddling in my /etc/hosts file, but that was to address slirp giving it the loopback IP (devoppp was assigned 127.0.1.1 in there for some reason). I might do a full writeup on how to set this up once I'm done tinkering with it myself - pretty sure I need to assign a range of IPs to the DEVO user in chap-secrets for this to work with multiple systems at once. I'll know later tonight probably :D So very, very happy I got this going.
tueidj
Insane DCEmu
Insane DCEmu
Posts: 115
Joined: Wed Aug 15, 2012 12:05 pm
Has thanked: 0
Been thanked: 0

Re: PPP Server for Devolution (and other assorted questions)

Post by tueidj »

Weird, I don't remember needing to do that. Perhaps there's something different in my slirp source.
It should be ok for all the clients to have the same IP, I don't think they communicate directly i.e. all communication is done through the PSO server. Direct communication wouldn't work with people behind NATs etc.
flannel
DCEmu Newbie
DCEmu Newbie
Posts: 8
Joined: Sat Aug 09, 2014 9:28 pm
Location: Western NY
Has thanked: 0
Been thanked: 0

Re: PPP Server for Devolution (and other assorted questions)

Post by flannel »

We may just have completely different network configurations; distro difference, maybe? I'm running on Debian jessie at the moment for this. Who knows - computers really do seem temperamental when they feel like it. Haha
User avatar
Aleron Ives
DCEmu Nutter
DCEmu Nutter
Posts: 870
Joined: Wed Jan 05, 2011 2:15 pm
Location: California
Has thanked: 0
Been thanked: 25 times
Contact:

Re: PPP Server for Devolution (and other assorted questions)

Post by Aleron Ives »

Networking is annoying enough most of the time, but where PSO is concerned, it tends to get even worse. I remember having to set up a proxy for PSO under Linux in order for it to communicate properly with the Hunter's License server when Sega started letting everyone connect for free. PSO's so picky about hop counts that it wouldn't authenticate unless you tricked it with a proxy that would make all destinations appear only one hop away. :roll:
"Fear the HUnewearl."
Image
tueidj
Insane DCEmu
Insane DCEmu
Posts: 115
Joined: Wed Aug 15, 2012 12:05 pm
Has thanked: 0
Been thanked: 0

Re: PPP Server for Devolution (and other assorted questions)

Post by tueidj »

I'm not sure what distro my VPS has, surely some old as fuck thing that can't be upgraded without breaking OpenVZ. But slirp was built from slirp_1.0.17-4.debian.tar.gz.
Post Reply