I have set all tasks to Fixed duration and have the max-load % checked off. Tasks are opened for time-entry only when Start Date is coming up. Despite this, either the task does not show up on the resource's timesheet in PPM, or if the resource books time a day before or after the Start/Finish dates, the duration changes. If there is ETC (in PPM) remaining on the tasks, then the duration changes too.
For the issue with tasks not showing up on the timesheet at all even though they are open for time entry, do those tasks have any parent tasks? If yes, make sure all the parent tasks (not just the direct parent tasks, but any tasks in the hierarchy chain) are open for time entry. See: Timesheet Population (What determines tasks appear - CA Knowledge for other reasons tasks may not show up on the timesheet in case these help.
Regarding the issue if the resource books time a day before or after the Start/Finish dates, the duration changes, this can be by design in the following scenarios:
1. If time was entered prior to the task Start Date, the task Start Date will adjust to reflect that the task started earlier when work (actuals) was first entered on the task.
2. If time is entered after the Finish Date of the task, the Finish date will move out as well to reflect that the task was not yet completed by the task's Finish Date, since work (actuals) was entered after the Finish date.
If there is ETC remaining, this can impact the duration, depending on the loading pattern of the assignment. See Logic for Calculating ETC for Timesheets and Posti - CA Knowledge for more details, but one reason this can happen is if the loading pattern is not set to fixed loading pattern, then the finish date will be pushed out for the task one day after the actuals thru date.