To ask for particular addresses, you generally provide pppd with the following option:
local addr:remote addrwhere local_addr and remote_addr may be specified either in dotted quad notation, or as hostnames. This makes pppd attempt to use the first address as its own IP-address, and the second as the peer's. If the peer rejects either of them during IPCP negotiation, no IP-link will be established.
If you want to set only the local address, but accept any address the peer uses, you simply leave out the remote_addr part. For instance, to make vlager use the IP-address 18.104.22.168 instead of its own, you would give it 22.214.171.124: on the command line. Similarly, to set the remote address only, you would leave the local_addr field blank. By default, pppd will then use the address associated with your hostname.
Some PPP servers that handle a lot of client sites assign addresses dynamically: addresses are assigned to systems only when calling in, and are claimed after they have logged off again. When dialing up such a server, you must make sure that pppd doesn't request any particular IP-address from the server, but rather accept the address the server asks you to use. This means that you mustn't specify a local_addr argument. In addition, you have to use the noipdefault option, which makes pppd wait for the peer to provide the IP-address instead of using the local host's address.